Архитектура видео VLC

Я изучаю исходный код VLC, чтобы понять, где именно VLC записывает декодированный кадр на экран. Меня в основном интересует версия qt ui, а также платформы Windows и Linux.

Я дошел до трассировки от avcodec_decode_video2 до момента, когда кадр записывается в очередь с использованием vout_PutPicture и picture_fifo_Push. На другом конце я вижу объект Thread, который вызывает ThreadDisplayRenderPicture, который, в свою очередь, вызывает vout_display_Display, который вызывает Display. Я ожидал, что эта последняя функция будет той, где байты для видеокадра фактически копируются в буфер кадра, но все, что она делает, устанавливает размер, а затем освобождает изображение.

Может ли кто-нибудь объяснить мне или указать на ресурс, который это делает, где именно VLC записывает структуру picture_t, которая находится в очереди, в структуру WId, эффективно записывая кадр на экран? Любая ссылка на более подробное объяснение видеоархитектуры VLC тоже подойдет!


person user3846684    schedule 25.03.2016    source источник


Ответы (1)


Я не могу напрямую ответить на ваш вопрос, но дам вам ссылку на подробное объяснение архитектуры VLC. (Как указано в вашем последнем предложении)

Кристоф Массиот из Клагенфуртского университета написал статью о документации API медиаплеера VLC. Вы можете найти его в Google здесь и в Google Scholar здесь.

Он включает следующую иллюстрацию, которая может направить вас в правильном направлении.

Архитектура VLC

Думаю, этот документ может оказаться полезным для вашего вопроса. Взгляните на главу 5, описывающую слой вывода видео.

person Mike F    schedule 29.03.2016
comment
Спасибо большое, Майкл! Это то, что я искал! Жаль, что у меня нет репутации, чтобы принять ваш ответ, потому что вы определенно указали мне на материал, который мне был нужен. Спасибо еще раз. - person user3846684; 29.03.2016
comment
@ user3846684 рад, что смог помочь; попробуйте принять ответ еще раз, для принятия ответов не должно быть минимума репутации (см .: meta.stackexchange.com/q/5234), только чтобы проголосовать за ответы. Спасибо! - person Mike F; 30.03.2016