Я изучаю исходный код 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 тоже подойдет!