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
