As you may know, Hendrik has been working on building a video engine for Linux and Mac. It has meant replacing all of DirectShow and a lot of other things. To his credit, it's coming to life. I'll use his e-mail to the dev team to let him explain.
It will still be at least a few weeks before anything useful appears, but it seems that we're well on the road to a successful outcome.
Thanks, Hendrik!
[whew]
On 18.08.2014 13:31, Hendrik Leppkes wrote:
Hey guys,
I figured I would send an update on how video for linux/mac is going, and since I broke a bit of a milestone today, it seems like a good time.
As a starting remark, I'm still doing all development on Windows, because its easier for me, however all code I write is independent of any Windows-specific functions.
It uses ffmpeg directly, as well as OpenGL for video rendering, so its just a matter of a few hours to get it to work on Linux, and Mac.
I'll probably do the porting to Linux soon, and we'll see about Mac after that.
All the core ffmpeg handling is in place, both decoding video and audio, and delivering it to other components that process it.
My first step, already back in Minneapolis, was to support import of video files, and make audio-only playback work, and that is nearly complete already. That means you can play either audio files through the video engine, or play video files as audio-only (ie. for extracting audio).
Next step was video decoding.
For this we needed a OpenGL video renderer. The development of this is getting a long nicely. Today it can receive an image from the decoder, and render it on the screen, fully integrated into the Display View, obeying window movements, size changes, aspect ratio, detached display view, etc.
What it cannot do yet is display the video at proper speed - right now it displays one frame every screen refresh, or as fast as it can.
While that seems like a rather limited function, it was a great milestone to get it to actually upload the video images and present them to the user.
The next part for me, and the task for this week: Developing a reference clock that controls video presentation and controls audio/video sync.
If thats going a long nicely, I can hook up audio playback and hopefully have audio/video in sync, and a basic functional video player.
There is of course a loooong list of video features which don't work yet, like, subtitles, OSD, image controls (size, position, ...) and many many many more.
- Hendrik
On Wed, Aug 20, 2014 at 8:33 AM, Hendrik Leppkes <hendrik@JRiver.com> wrote:
Hey,
and as an additional update, I can now play video and audio in normal speed and it seems to stay in sync too.
Plenty of work yet to be done, the majority of features are not available, but one question I asked myself -
What state do we want to reach before we think about integrating in main MC20?
For me, next up is a bit of work on audio and video rendering in video playback still, and after that I'll get it to work on Linux (probably next week).
Mac will have to wait until I'm back at my own apartment in 2-3 weeks, and can setup a Hackintosh system for development (unless someone knows how OpenGL on a Mac works and wants to chime in?)
After that is done, I'll look into making transcoding work, that should be pretty simple to complete, and after that there is hundreds of video features to re-implement.
- Hendrik
Also, its more than just a video renderer, its a whole playback engine/chain. The video renderer is part of it, but includes much more. Parsing files, decoding video/audio, all that had to be re-created since it used DirectShow before. The only part thats really being re-used is dealing with the decoded audio, since that just goes into the MC audio engine, which of course remains the same.