View Full Version : is there a combo directshow/mplayer?
click2
18th January 2009, 02:07
I use media player classic / directshow for most things, and mplayer for some other things. Whatever. In media player classic though, you can choose to use directshow / realmedia / quicktime / shockwave frameworks for specific file types.
My question is, is there a player that will use either directshow or mplayer depending on file types?
LoRd_MuldeR
18th January 2009, 05:13
Well, MPlayer is MPlayer and it doesn't use DirectShow. MPlayer uses only its own "built-in" decoders, mainly libavcodec decoders.
If you want to use the libavcodec decoders in the DirectShow world, you can simply use ffdshow...
click2
18th January 2009, 05:52
mainly libavcodec, yes, but also the binary codecs package.. so until rv40 in ffdshow becomes awesome, and it gets cook decoding, or i decide to use realalternative, is there a player that can use either directshow or mplayer frameworks?
Dark Shikari
18th January 2009, 05:56
mainly libavcodec, yes, but also the binary codecs package.. so until rv40 in ffdshow becomes awesome, and it gets cook decoding, or i decide to use realalternative, is there a player that can use either directshow or mplayer frameworks?mplayer supports w32codecs binary codecs (available for download on the official webpage) which can be used with mplayer to decode Real/etc...
click2
18th January 2009, 06:07
/me nods. Yes, mplayer has w32codecs, and i like directshow for other things. So is there a player, that utilises both mplayer[/w32codecs] and directshow as backends? In the same way that MPC can use directshow/realmedia/quicktime ?
roozhou
18th January 2009, 09:36
mplayer supports w32codecs binary codecs (available for download on the official webpage) which can be used with mplayer to decode Real/etc...
The main problem is MPlayer only supports dshow decoders but doesn't support dshow splitter/file source.
And the way MPlayer uses dshow/DMO decoder is buggy. The majority of code were written in 2000 and are no one is now maintaining it
LoRd_MuldeR
18th January 2009, 15:07
So is there a player, that utilises both mplayer[/w32codecs] and directshow as backends? In the same way that MPC can use directshow/realmedia/quicktime ?
I'm not aware of any. And, although it would be possible, I think it's not straightforward to implement. That's because DirectShow is implemented as a framework. So as a developer you grab the DirectShow SDK and then create your own DirectShow application. At the same time MPlayer is implemented as a CLI tool. So the front-end application will always be an independent application that simply calls the MPlayer executable with the required arguments. So there will always be a separate MPlayer process running in the background. There's nothing like that with DirectShow. Should be possible to combine both worlds in one application, but you would need to implement two completely different code paths for that. And it would be a bit superfluous, as MPlayer alone is able to handle 95% of all files...
The main problem is MPlayer only supports dshow decoders but doesn't support dshow splitter/file source.
And the way MPlayer uses dshow/DMO decoder is buggy. The majority of code were written in 2000 and are no one is now maintaining it
...because MPlayer doesn't use the DirectShow framework, but is able to load specific third-party decoder DLL's (e.g. DirectShow Filters or QuickTime decoders) directly.
Also this is only a temporary workaround for some obscure formats until a proper OpenSource decoder becomes available.
And, as far a I know, RV30 and RV40 support in libavcodec is working (with minor output differences to the original decoders) and it's even faster than the proprietary decoders.
So I think/hope the Real decoders can be removed from the "Binary Codec Package" very soon...
Kostya has just comitted the (final?) patch for RV30 Loop filter to the FFmpeg mailing list (http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-December/057886.html). When comitted to svn, than decoding of RV30 and RV40 videos with FFmpeg should give AFAIK the same results as decoding using the Real decoder.No, B-frames still decode slightly incorrectly--but the difference is usually too small to notice. Neither format allows B-references, so the errors can't propagate over time either.
roozhou
19th January 2009, 16:58
...because MPlayer doesn't use the DirectShow framework, but is able to load specific third-party decoder DLL's (e.g. DirectShow Filters or QuickTime decoders) directly.
No, MPlayer cannot load MODERN dshow decoders properly, e.g. CoreAVC, DivXH264 or even ffdshow. That's not because mplayer doesn't use the DShow framework, but because the code is buggy and lacks maintenance. I am now trying to fix all of these. Fortunately i can make CoreAVC 1.8 and WMP11 DMO decoders working with MPlayer but the MPlayer-devel are not likely to accept my patches.
And it would be a bit superfluous, as MPlayer alone is able to handle 95% of all files...
Can MPlayer handle H264/VC1 on BD? Can MPlayer handle 30 MBps+ x264 encoded video? No, it is not fast enough and is not multi-threaded. That's why I have to use CoreAVC and WMP11 DMO.
Dark Shikari
19th January 2009, 17:03
No, MPlayer cannot load MODERN dshow decoders properlyEver heard of Dshowserver? It can, and even moreso, it can do it on Linux.Can MPlayer handle H264/VC1 on BD? Can MPlayer handle 30 MBps+ x264 encoded video?Sure, with ffmpeg-mt.
LoRd_MuldeR
19th January 2009, 17:12
No, MPlayer cannot load MODERN dshow decoders properly, e.g. CoreAVC, DivXH264 or even ffdshow. That's not because mplayer doesn't use the DShow framework, but because the code is buggy and lacks maintenance. I am now trying to fix all of these. Fortunately i can make CoreAVC 1.8 and WMP11 DMO decoders working with MPlayer but the MPlayer-devel are not likely to accept my patches.
As said before, it only works with specific filters!
The lack of maintance for DirectShow filters is due to a lack of need:
The MPlayer team certainly won't put any efforts into supporting proprietary decoders, when a working OpenSource solution is available ;)
RV30 and RV40 support in libavcodec is available now. H.264 support is available for a long time and thanks to ffmpeg-MT it's pretty fast now!
Can MPlayer handle H264/VC1 on BD?
It can handle H.264 for sure. Not so sure about VC-1.
And it won't read directly off BD, of course. You will need to decrypt the contents first and mux them to a proper container.
But that applies to any player, except for certified BluRay players (PowerDVD and friends).
Can MPlayer handle 30 MBps+ x264 encoded video? No, it is not fast enough and is not multi-threaded.
Wrong. MPlayer's decoders (libavcodec to be more specific) is multi-threaded now. The "MT" branch is not committed to "trunk" yet, but working very well already.
In my test it couldn't keep up with CoreAVC and DivX H.264 Decoder. But it already reached 83% of Core AVC's throughput, which is a pretty good result :)
That's why I have to use CoreAVC and WMP11 DMO.
I have CoreAVC too, but I only use it for testing and comparison now. The ffmpeg-MT decoders are fast enough for smoth 1080p playback.
roozhou
19th January 2009, 17:20
Wrong. MPlayer's decoders (libavcodec to be more specific) is multi-threaded now. The "MT" branch is not committed to "trunk" yet, but working very well already.
In my test it couldn't keep up with CoreAVC and DivX H.264 Decoder. But it already reached 83% of Core AVC's throughput, which is a pretty good result :)
Sounds good. Where can i get it? I am not talking about ffdshow-mt but MPlayer-mt.
I have CoreAVC too, but I only use it for testing and comparison now. The ffmpeg-MT decoders are fast enough for smoth 1080p playback.
Again where can i get MPlayer with ffmpeg-MT or how can i build MPlayer with ffmpeg-MT? IIRC the one shipped with your MPlayer package is not multi-threaded.
Dark Shikari
19th January 2009, 17:22
Sounds good. Where can i get it? I am not talking about ffdshow-mt but MPlayer-mt.
Again where can i get MPlayer with ffmpeg-MT or how can i build MPlayer with ffmpeg-MT? IIRC the one shipped with your MPlayer package is not multi-threaded.There is an mplayer git around somewhere (don't have the link on me) that will, when you check it out, automatically check out a modified version of mplayer to support ffmpeg-mt, along with ffmpeg-mt itself.
LoRd_MuldeR
19th January 2009, 17:23
Again where can i get MPlayer with ffmpeg-MT or how can i build MPlayer with ffmpeg-MT? IIRC the one shipped with your MPlayer package is not multi-threaded.
If you have the required build environment installed, you can build it yourself. You can check out ffmpge-MT here:
http://git.gitorious.org/ffmpeg/ffmpeg-mt.git
Also Yong posted a MPlayer-MT build a while ago :search:
Again where can i get MPlayer with ffmpeg-MT or how can i build MPlayer with ffmpeg-MT? IIRC the one shipped with your MPlayer package is not multi-threaded.
Correct. I hope this will change once the "MT" branch is ready to be merged into the MPlayer/ffmpeg "trunk" :D
roozhou
19th January 2009, 17:34
@LoRd_MuldeR
Can you provide an MPlayer-mt git link?
To manually merge ffmpeg-mt to the current MPlayer svn repository would take me weeks.
Known problems:
1. mpeg1 video does not play, telecined mpeg2 produce garlbed output if -lavdopts thread=x is used.
2. libavcodec vorbis/wma decoder currently is bugged, use -afm tremor,dmo instead.
Such bugs are not tolerable for me.
LoRd_MuldeR
19th January 2009, 17:38
@LoRd_MuldeR
Can you provide an MPlayer-mt git link?
Nope. You'll need to google yourself.
Such bugs are not tolerable for me.
Then you'll either need to wait for a fix or write a patch yourself... (maybe it was fixed in the meantime?)
roozhou
19th January 2009, 17:45
Nope. You'll need to google yourself.
I googled "mplayer mt git" but got nothing. For me it is much more easier to fix MPlayer's dshow loader than to merge ffmpeg-mt to MPlayer.
Dark Shikari
19th January 2009, 17:47
I googled "mplayer mt git" but got nothing. For me it is much more easier to fix MPlayer's dshow loaderWhat is there to fix? dshowserver can load coreavc and other dshow decoders just fine, last I recall.
LoRd_MuldeR
19th January 2009, 17:52
I googled "mplayer mt git" but got nothing. For me it is much more easier to fix MPlayer's dshow loader than to merge ffmpeg-mt to MPlayer.
I don't see the point. The great thing about MPlayer is that it does not depend on tons of "external" filters/plugins/codecs.
But if you prefer using DirectShow filters/decoders, why not simply use Media Player Classic?
The libavcodec decoders are available in DirectShow anyway, thanks to ffdshow. No need to use MPlayer for that, if you mainly use DirectShow ...
roozhou
19th January 2009, 18:04
What is there to fix? dshowserver can load coreavc and other dshow decoders just fine, last I recall.
Current vd_dshow doesn't support b-frames well and returns wrong pts.
Consider the following H264 stream.
1I,2B,3BP,4B,5P (here BP means b-pyramid).
Frames are fed to CoreAVC in 15324 sequence (Am i right) and the pts should become 12345 on output. Unfortunately the current vd_dshow does not pass pts to the decoder thus the pts remains 15324 on output, making playback unsmooth. And when you seek to another I-frame, it does not flush buffered frames.
Dark Shikari
19th January 2009, 18:06
Current vd_dshow doesn't support b-frames well and returns wrong pts.
Consider the following H264 stream.
1I,2B,3BP,4B,5P (here BP means b-pyramid).
Frames are fed to CoreAVC in 15324 sequence (Am i right) and the pts should become 12345 on output. Unfortunately the current vd_dshow does not pass pts to the decoder thus the pts remains 15324 on output, making playback unsmooth. And when you seek to another I-frame, it does not flush buffered frames.dshowserver is a separate patch for mplayer, not in the current codebase, AFAIK.
roozhou
19th January 2009, 18:11
dshowserver is a separate patch for mplayer, not in the current codebase, AFAIK.
Oh i nearly forget you use Linux. Is dshowserver running on Windows?
Dark Shikari
19th January 2009, 18:18
Oh i nearly forget you use Linux.No, I use Windows :p
Akupenguin uses Linux, and he recommends dshowserver.
I'm going to guess it works fine under Windows, I can't think of any reason why it wouldn't.
roozhou
19th January 2009, 18:32
I don't think dshowserver itself runs under windows. And the performance should be bad since it transfers frames between different processes.
Kurtnoise
19th January 2009, 18:47
Unfortunately the current vd_dshow does not pass pts to the decoder thus the pts remains 15324 on output, making playback unsmooth.
you have to use -no-correct-pts switch...
roozhou
19th January 2009, 19:00
you have to use -no-correct-pts switch...
Thank you! But this does not fix the seeking problem. And without -correct-pts the video is always off by 2~4 frames.
I have added a few lines and fixed this problem.:)
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.