Hi FreeRdP developers,

Some good news on this topic. I've already made the following done:

1. Decoding of audio frames are done, and audio can be played smoothly. 
I wrote two sub-plugin for ALSA and PulseAudio respectively for audio 
playback, both working good.

2. Decoding of video frames are done. I can already dump the decoded 
frames (which is in YUV format) to disk, then open them in an image viewer.

3. Although decoding is only done by FFmpeg, it's implemented through a 
"Decoder" sub-plugin interface. In the future it should be easy to 
support other decoder library.

4. I wrote a special decoder called "copy" for debugging purpose. It 
does not decode anything, but just get the original stream data and 
demux each video/audio stream in separated .mkv files.

Now I have reach the most tricky point to draw the video frames, and 
this is the last step to get a fully-functional video playback. :) The 
following two ideas is in my mind, please comment:

1. We extend the static virtual channel and DVC plugin API and add one 
more function in the plugin entry points. This function let the channel 
plugin "push" a "UI drawing instruction" in a queue. Then libfreerdp 
will get the instruction and call some UI callback. Eventually, 
xfreerdp/etc will get the instruction and draw the video frame. The idea 
to use a queue is to pass the drawing instruction and video frame buffer 
to the UI thread.

2. Most video codec will decoded the frames into YUV format and need to 
be converted to RGB. And to display them the frames also need to be 
up-scale or down-scale. I've tried using software converting and scaling 
using FFmpeg's libswscale library. However it consumes too much CPU 
resource and the result is very bad, and not suitable for real-time 
playback. Then I found out XVideo, which is capable of doing 
hardware-accelerated YUV conversion and image scaling. I never use 
XVideo before, so I would like to seek some comments.

Please feel free to take a look at what has been done currently:

https://github.com/llyzs/FreeRDP/tree/tsmf/channels/drdynvc/tsmf

Vic


------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Freerdp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to