Как получить Pixel Aspect Ratio(PAR) из клипа WMV в DShow Graph?
По вики для Pixel Aspect Ratio:
DAR = SAR x PAR
(Display Aspect Ratio, Storage Aspect Ratio, Pixel Aspect Ratio)
У меня есть видео WMV с разрешением 2048x1080(256:135). Windows Media Player (WMP) может извлечь PAR, 15:16
, чтобы WMP
может сделать этот клип как 16:9(= 256:135 * 15:16)
,
В настоящее время я могу получить только dwPictAspectRatioX/dwPictAspectRatioY из VIDEOINFOHEADER2 как 256/135. Это значение выглядит как SAR по разрешению или DAR игнорирует PAR.
Как я могу получить PAR
информация от DShow
график?
я использую [ASF Reader]-[DMO]-[VMR7]
в качестве компонентов фильтра в граф.
PotPlayer также не может прочитать PAR, поэтому он отображает этот клип с соотношением сторон 256:135
вместо 16:9
,
Обновлено,
Я обнаружил, что ASF_Reader_Filter:: IWMHeaderInfo:: GetAttributeByName:: Atrributes.
Существует атрибут AspectRatio X ( Y) со следующим значением:
Атрибут AspectRatioX содержит компонент ширины пропорции пикселя для видеопотока.
Я пытаюсь запросить интерфейс или queryService через IServiceProvider из фильтра чтения ASF, но он всегда возвращает E_NOINTERFACE.
Все еще нужно больше расследований.
1 ответ
VIDEOINFOHEADER2::dwPictAspectRatio
получает коэффициент, который является корректировкой для неквадратных пикселей в кодированном изображении. То есть, если вы применяете dwPictAspectRatio
когда вы представляете видео и предполагаете, что сам монитор имеет квадратные пиксели, вы получаете правильное физическое соотношение сторон.
Напротив, изображение PAL 720 × 576 D-1 имеет SAR 720/576 = 5:4, но отображается на дисплее 4:3 (DAR = 4:3).
biWidth
,biHeight
,rcSource
имеют значения размера в пикселях (720x576) - SARdwPictAspectRatio
поручает показать 4:3 - DAR