Я написал фильтр видеопреобразования DirectShow, который вставляется между видеодекодером и фильтром рендеринга видео. Это добавит фоторамку вокруг входного изображения. Таким образом, размер и соотношение сторон выходного изображения отличаются от входного.
К сожалению, я обнаружил, что видео рендер будет сохранять исходное соотношение сторон, и поэтому отображаемое изображение с фоторамкой было растянуто. В GraphEdit я нашел фильтр рендеринга видео с флажком «Сохранить соотношение сторон». Снимите флажок, и изображение не будет растягиваться. Это то, что я хочу. Но я не знаю, как это сделать в моем коде. Я запросил интерфейс IVideoWindow, но обнаружил, что он не может установить соотношение сторон. Поэтому я прошу помощи здесь.
Спасибо.
Спасибо, Джеремия Моррилл. Да, IVMRAspectRatioControl7 / 9 - это то, что я хочу. Но, похоже, чтобы получить интерфейс, я должен сначала получить фильтр Video Mixing Renderer Filter 7/9. Я хочу установить соотношение сторон в фильтре «Видео рендерер» вместо «Фильтр рендеринга видео 9».
Мне не нужно динамически изменять формат. Мой график фильтра
Source -> Demux -> Decoder -> MyFilter -> VideoRenderer
Независимо от разрешения выходного сигнала декодера, выходное разрешение MyFilter всегда совпадает с разрешением экрана рабочего стола. Я обнаружил, что если я использую интеллектуальную связь, я столкнусь с проблемой, которую я описал. Но если я подключу MyFilter к VideoRenderer вручную, разрешение видео будет правильным, то есть таким же, как на экране.