Конференция "Media" » Как вывести картинку из буфера в DirectDraw?
 
  • Nikki (28.02.08 14:06) [0]
    Картинка хранится в буфере, есть указатель на нее и данные о ее параметрах. Самое главное, что она формата YUV. Нужно вывести серию таких картинок. Желательно еще использовать оверлей. Я использовала StretchDIBits, но он не работает с YUV 12-ти битным.
    Ознакомившись с DD за пару дней в голове путанница, не знаю, с какого конца вообще начать. Есдинственная мысль сделать оверлейную поверхность и в ее структуру в lpSurface записать адрес моего буфера... Но как-то не работаить. Подскажите, пожалуйста, что можно сделать?
  • Sapersky (28.02.08 20:03) [1]
    Проще всего отконвертировать в RGB и вывести стандартными средствами:

    http://www.efg2.com/Lab/Graphics/Colors/YUV.htm

    Единственное преимущество оверлея - аппаратное масштабирование, ну и то, что при поддержке нужного формата не нужно ничего конвертировать.

    http://www.delphimaster.ru/articles/directx/index.html

    В этом примере используются 16-битные UYVY/YUY2. Не знаю, есть ли карты с поддержкой 12-битного YUV; если это planar формат, в том виде, в каком это описано по первой ссылке - то вряд ли. Так что конвертировать, возможно, всё-таки придётся.
    А аппаратное масштабирование можно при желании задействовать и с RGB.
  • Nikki (29.02.08 10:24) [2]
    Спасибо!)
  • Sapersky (29.02.08 14:21) [3]
    Не знаю, есть ли карты с поддержкой 12-битного YUV

    Похоже что есть: Radeon 9000 и интегрированная на i915 выдают YV12 в списке FourCC-форматов (смотрел DXCapsViewer'ом из состава DX SDK).
  • Nikki (29.02.08 15:06) [4]
    Карточка у меня поддерживает такой формат)
    Просто я пыталась создать оверлей и указателю на его поверхность присвоить адрес своего буфера(это работает, но с обычными поверхностями),
    но оверлейная, созданная в видеопамяти, не позволяет ставить себе флаги, вынуждающие учитывать эти параметры (что я использую указатель), к ней можно обращаться только залочив и пересылая биты какой-нить memcopy вроде, а это не очень удобно)
 
Конференция "Media" » Как вывести картинку из буфера в DirectDraw?
Есть новые Нет новых   [133929   +472][b:0][p:0]