I am studying the VLC source code in order to understand where exactly VLC writes the decoded frame to the screen. I'm basically interested in the qt ui version, and the windows and linux platforms.
I have come as far as tracing from avcodec_decode_video2
up until the point where it writes the frame to a queue using vout_PutPicture
and picture_fifo_Push
. On the other end, I see there is a Thread
object that calls ThreadDisplayRenderPicture
, which in turn calls vout_display_Display
, which calls Display
. I expected this last function to be the one where the bytes for the video frame actually get copied to the frame buffer, but all it does is set the size, and then release the picture.
Could someone explain to me, or point me to a resource that does, where exactly does VLC writes the picture_t
structure that is sitting in the queue to the WId structure, effectively writing the frame to the screen? Any link to a more thorough explanation of VLC's video architecture would be great too!