View Full Version : ffdshow tryouts project: Discussion & Development
LoRd_MuldeR
2nd September 2008, 23:58
The ffdshow_rev2097_20080002_dbt_sse_icl10.exe build doesn't work for me :(
DVBViewer will simply show a black picture (like no decoder found) and in ffdshow settings (via Rundll32) it will crash/starve when I click the "Version details" button.
I updated my "Microsoft Visual C++ 2008 Redistributable" as suggested by the installer...
Went back to the ffdshow_rev2094_20080830_clsid.exe build and everything works fine again :)
betaking
3rd September 2008, 14:09
The ffdshow_rev2097_20080002_dbt_sse_icl10.exe build doesn't work for me :(
DVBViewer will simply show a black picture (like no decoder found) and in ffdshow settings (via Rundll32) it will crash/starve when I click the "Version details" button.
I updated my "Microsoft Visual C++ 2008 Redistributable" as suggested by the installer...
Went back to the ffdshow_rev2094_20080830_clsid.exe build and everything works fine again :)
same problem with my!
pitch.fr
4th September 2008, 08:46
humm indeed, some problems with post-processing WMV files...crashes my player
went back to ffdshow_rev2083_20080821_dbt_sse_icl10.exe
BTW, the ICL10 versions from Albain have disappeared ?!
http://sourceforge.net/project/showfiles.php?group_id=173941&package_id=229162
EDIT: clsid made a new ICL10 build anyway(ffdshow_rev2099_20080903_clsid_sse_icl10.exe), everything works fine again..thanks :)
LoRd_MuldeR
4th September 2008, 11:41
EDIT: clsid made a new ICL10 build anyway(ffdshow_rev2099_20080903_clsid_sse_icl10.exe), everything works fine again..thanks :)
Confirmed :cool:
Mercury_22
4th September 2008, 14:40
Only if someone volunteers to take up the task.
It looks like adding E-ac3 it's not that hard :helpful:
http://forum.doom9.org/showthread.php?p=1179393#post1179393
So.. no one can do this ? :thanks:( Only if I knew how to ...:stupid:)
clsid
4th September 2008, 15:52
If it were easy it would have already been added...
Inventive Software
4th September 2008, 16:17
What exactly is required to add it? I'm aware that 24 bit decoding is a problem with ffdshow, but is that it? I know ffdshow doesn't use libavcodec for vanilla AC-3 decoding, but if the E-AC3 part was a separate entry in the decoder, would that help? Does E-AC3 require AC-3 to decode properly, or is it a completely different decoder?
clsid
4th September 2008, 17:29
The difficult part is to make ffdshow feed the proper (meta-)data to libavcodec. Many codecs require 'extradata' that usually contains all kind of information from headers etc. Some knowledge of the format/specification is required to implement that.
I have no idea if 24bit is a problem. I am no expert regarding the source code of ffdshow, I have only read a few tiny portions of it. I am not a C++ developer.
albain
5th September 2008, 09:26
Hi CLSID,
don't know why but my ICL builds work partially.
I have ICL 10.1 with VS 2008 SP1, and to compile it I had to replace for linking msvcrt.lib by libcmt.lib.
Then it compiles fine and FFDShow work ok with media player but crash under media center.
If I compile FFDShow with visual studio it works ok
You have an idea ?
In the meantime I replaced my ICL builds by generic builds.
Thanks
Damien BT
clsid
5th September 2008, 15:20
Settings that are used by the 2003 ICL project:
AdditionalOptions += /Qip /Qunroll0
EnableEnhancedInstructionSet=1 (SSE)
AdditionalDependencies += libirc.lib libm.lib svml_disp.lib (these are Intel libs)
albain
6th September 2008, 10:31
Ok, thank you
Mercury_22
7th September 2008, 10:45
Revision 2101 - Directory Listing
Modified Sat Sep 6 13:56:57 2008 UTC (19 hours, 44 minutes ago) by albain
Updated libavcodec : imported E-AC3, AC3 and AAC decoders (not coded yet into ffdshow).
So there is HOPE for E-AC3 in FFdshow ?! :thanks::p
Kurtnoise
8th September 2008, 08:57
@albain: you should put a warning or something like that for the lavc aac decoder coz it doesn't support SBR & PS yet...
albain
8th September 2008, 10:19
Didn't know about the lack of support concerning AAC
I just added a new AC3 decoder (libavcodec) that supports both AC3 and E-AC3 streams.
I have tested it locally, it seems to work, please report if something's wrong
Damien
Kurtnoise
8th September 2008, 11:49
both MPC-HC & MPC crash with my own libavcodec compile to decode AC-3 & E-AC-3 streams. Nevertheless, those files play fine with FFplay.
I'm using gcc 4.3 though, not cc...
clsid
8th September 2008, 12:34
Can someone provide some small sample files with E-AC3 in it? Preferably one that is working now and one that doesn't work.
I haven't build a new version yet, but the current changes are pretty much the same as what xxl already tried a while back, and then it also crashed on most files.
_xxl
8th September 2008, 13:03
@albain
You could commit all ac3, eac3, dca and aac decoders from libavcodec and just disable them from ffdshow, until they are fixed. I have send a small patch for it. 2 channel aac samples doesn't work with libavcodec. Only dca libavcodec decoder seems to work properly, but I don't have many samples to test.
albain
8th September 2008, 13:41
@xxl
Hi, thanks for your patch
I applied your patch, except for 1 file : aacdectab.h, I don't know why but the signs are inverted between your file and the one from ffmpeg.
I also disabled the decoders (AAC & AC3 from libavcodec).
To test them in the future and make them available you will have to define a preprocessor macro : INCLUDE_UNSTABLE_DECODERS.
Those decoders remain included and registered into libavcodec
I will also try to upload the 2 EAC3 samples that I tested (successfully).
Damien
albain
8th September 2008, 13:51
I have posted 2 working EAC3 samples :
Sample 1 (http://rapidshare.com/files/143599722/Battle.Of.The.Bulge.1965.HD-DVD.Re.x264.720P.EAC3-C_SiLU-Sample.mkv.html) (31Mb)
Sample 2 (http://rapidshare.com/files/143601275/eac3mono64kbit.mka.html) (6MB)
MatMaul
8th September 2008, 14:32
files lpc.c and lpc.h from libavcodec are missing ;)
it is weird the ac3 decoder is unstable, it is in the main branch since a while now.
Mercury_22
8th September 2008, 14:38
Can someone provide some small sample files with E-AC3 in it? Preferably one that is working now and one that doesn't work.
I haven't build a new version yet, but the current changes are pretty much the same as what xxl already tried a while back, and then it also crashed on most files.
E-AC3 sample here (http://rapidshare.com/files/143609863/Test_E-AC3.ts.html) ! but I don't have a new version of FFDShow to test the E-AC3.. :helpful: Can someone compile a new SVN version with E-AC3 PLEASE ! :thanks:
P.S. x64 version (too) :thanks::p:stupid:
albain
8th September 2008, 14:51
Sorry, I forgot to add them. Fixed in revision 2107
EDITED :
I have posted a new build on sourceforge including those decoders, and with the possibility to activate them. Just select libavcodec
Mercury_22
8th September 2008, 15:23
Sorry, I forgot to add them. Fixed in revision 2107
EDITED :
I have posted a new build on sourceforge including those decoders, and with the possibility to activate them. Just select libavcodec
Thanks working here with the above samples !! :thanks:
Any chance for a 64-bit compile too !! PLEASE! :thanks:
rack04
8th September 2008, 15:38
Sorry, I forgot to add them. Fixed in revision 2107
EDITED :
I have posted a new build on sourceforge including those decoders, and with the possibility to activate them. Just select libavcodec
So I just change AC3 from liba52 to libavcodec?
albain
8th September 2008, 15:45
So I just change AC3 from liba52 to libavcodec?
Yes that's all
nautilus7
8th September 2008, 15:51
Thanks for the new decoders. It works here, too!
May I ask for Dolby TrueHD support also (if it's similar to E-AC3 to add)?
albain
8th September 2008, 15:57
No :
EAC3 is Dolby Digital Plus, an improvement of Dolby Digital signals wheras TrueHD is a new lossless format used on blueray discs
nautilus7
8th September 2008, 16:00
No :
EAC3 is Dolby Digital Plus, an improvement of Dolby Digital signals wheras TrueHD is a new lossless format used on blueray discs
Yes, I'm aware of this. :) I meant, if adding TrueHD support needs the same amount of work to be done. If it's a trouble, forget it. (you know that there's a trueHD decoder in ffmpeg right?)
MatMaul
8th September 2008, 16:02
trueHD is basically the same as MLP and ffmpeg have a MLP decoder since one month. I wrote basically because bluray truehd tracks have a "core" part which is an ac3 stream and I don't know how it has to be handled in directshow (does the splitter splits the ac3 from the mlp stream ? or it has to be done in the decoder ?)
nautilus7
8th September 2008, 16:04
Actually, it's not a core (inside TrueHD track). It's an individual AC3 track, just "attached" to the TrueHd. But, I don't know further than this...
MatMaul
8th September 2008, 16:19
what about dts libavcodec support ? here is a patch but I can't compile so I can't test.
http://www.etud.insa-toulouse.fr/~mvelten/bordel/dca_libavcodec.diff
libavcodec aac decoder crash every time I tried but no problem with the ac3 decoder.
albain
8th September 2008, 16:21
Well, according to FFMPeg site,
"Also, FFmpeg now has floating point PCM support and supports MLP/TrueHD decoding "
So maybe True HD decoding is already working...
clsid
8th September 2008, 16:29
Haali Media Splitter exposes two media subtypes for files with E-AC3 audio:
MEDIASUBTYPE_DOLBY_AC3 and {0000EAC3-0000-0010-8000-00AA00389B71}
Currently, ffdhsow only looks at the first mediatpye it gets. If we can make ffdshow take the second mediatype in consideration, then it would be possible to separate EAC3 decoding from AC3 decoding. Allowing to use a different decoder for regular AC3.
Now ffdshow uses the same decoder for both AC3 and E-AC3. Not a big problem since both decoders are currently compatible with each other. But the annoying thing is that the Info&CPU page in ffdshow will always show that the input is AC3.
albain
8th September 2008, 16:38
what about dts libavcodec support ? here is a patch but I can't compile so I can't test.
http://www.etud.insa-toulouse.fr/~mvelten/bordel/dca_libavcodec.diff
libavcodec aac decoder crash every time I tried but no problem with the ac3 decoder.
I reproduce the crash on my AAC file. Weird, it used to work on it.
I have applied your patch and built a new setup, let me know if DTS decoding is also functional :
http://rapidshare.com/files/143635622/ffdshow_rev2107_20080908_dbt_patched.exe.html
albain
8th September 2008, 16:48
Actually, AAC decoder (libavcodec) crashes under WMP, but not under Media player classic (of course I disabled MPC internal AAC decoder), so maybe it has to do with the splitter
albain
8th September 2008, 17:00
Haali Media Splitter exposes two media subtypes for files with E-AC3 audio:
MEDIASUBTYPE_DOLBY_AC3 and {0000EAC3-0000-0010-8000-00AA00389B71}
Currently, ffdhsow only looks at the first mediatpye it gets. If we can make ffdshow take the second mediatype in consideration, then it would be possible to separate EAC3 decoding from AC3 decoding. Allowing to use a different decoder for regular AC3.
Now ffdshow uses the same decoder for both AC3 and E-AC3. Not a big problem since both decoders are currently compatible with each other. But the annoying thing is that the Info&CPU page in ffdshow will always show that the input is AC3.
I have also checked on this and I didn't see any moment where Direct Show transmitted this second subtype to FFDShow : FFDShow always receives the AC3 subtype from the splitter, and directshow base classes do not provide a way to receive more than one subtype.
Rather, wouldn't it be better that Haali splitter always transmits the EAC3 subtype for EAC3 streams ?
MatMaul
8th September 2008, 17:33
Rather, wouldn't it be better that Haali splitter always transmits the EAC3 subtype for EAC3 streams ?
does E-AC3 is backward compatible with AC3 decoder ? If I remember correctly it is and in this case it is mandatory to expose the AC3 subtype then the stream can be decoded by standard AC3 decoder.
Actually, AAC decoder (libavcodec) crashes under WMP, but not under Media player classic (of course I disabled MPC internal AAC decoder), so maybe it has to do with the splitter
you right, it works with MPC MP4 splitter but crashs with haali splitter.
albain
8th September 2008, 17:42
does E-AC3 is backward compatible with AC3 decoder ? If I remember correctly it is and in this case it is mandatory to expose the AC3 subtype then the stream can be decoded by standard AC3 decoder.
That's not good news : if it is backward compatible it means that the decoder used by libavcodec is AC3, not EAC3 so there won't be the benefits of EAC3 format, unless AC3 decoder is able to detect the right format and redirect it ?
MatMaul
8th September 2008, 17:51
I was wrong :
Dolby Digital Plus software is not directly backward compatible with existing Dolby Digital decoders. However, Dolby Digital Plus capable players are required to be able to transform the output to a backwards compatible Dolby Digital signal.
So I think it is a non sense to use the same subtype for non compatible formats.... I hope not all splitters does that :P
compunett
8th September 2008, 21:14
That's not good news : if it is backward compatible it means that the decoder used by libavcodec is AC3, not EAC3 so there won't be the benefits of EAC3 format, unless AC3 decoder is able to detect the right format and redirect it ?
You got thing wrong, an EAC3 decoder is backward compatible in the sense that it con decode AC3 and EAC3. However an AC3 decoder cannot decode a EAC3 stream.
EAC3 stream has more information than an AC3 stream, and those additional informations are not understood by a normal AC3 decoder.
Justin can certainly explain thing better than me, as he is the guy who coded the EAC3 decoder. And he certainly can correct me if i'm wrong on something :)
jruggle
8th September 2008, 23:52
You got thing wrong, an EAC3 decoder is backward compatible in the sense that it con decode AC3 and EAC3. However an AC3 decoder cannot decode a EAC3 stream.
EAC3 stream has more information than an AC3 stream, and those additional informations are not understood by a normal AC3 decoder.
Justin can certainly explain thing better than me, as he is the guy who coded the EAC3 decoder. And he certainly can correct me if i'm wrong on something :)
For the record, I did not code the decoder, I cleaned it up after Bartek, a student in last year's (and this year's) GSoC for FFmpeg, wrote the majority of it. I was the project mentor.
Most of what has already been said here is correct. First, an E-AC-3 decoder is required to handle normal AC-3 as well. An AC-3 decoder cannot decode E-AC-3, but it can recognize it as an AC-3 variant with an unknown bitstream id, so it will skip those frames. This means that an AC-3 decoder will work with a mixed AC-3/E-AC-3 stream such as those in Blu-ray. That is the only "backwards compatible" part.
albain
9th September 2008, 08:24
For the record, I did not code the decoder, I cleaned it up after Bartek, a student in last year's (and this year's) GSoC for FFmpeg, wrote the majority of it. I was the project mentor.
Most of what has already been said here is correct. First, an E-AC-3 decoder is required to handle normal AC-3 as well. An AC-3 decoder cannot decode E-AC-3, but it can recognize it as an AC-3 variant with an unknown bitstream id, so it will skip those frames. This means that an AC-3 decoder will work with a mixed AC-3/E-AC-3 stream such as those in Blu-ray. That is the only "backwards compatible" part.
This means that the splitter has to send the right codec id (EAC3) or else the stream will be decoded in compatibility mode.
=> Haali developer should be informed to correct this wrong codec ID in output (I have posted a request on his mailing list but if someone knows better how to contact him)
ACrowley
9th September 2008, 09:43
Didn't know about the lack of support concerning AAC
I just added a new AC3 decoder (libavcodec) that supports both AC3 and E-AC3 streams.
I have tested it locally, it seems to work, please report if something's wrong
Damien
Hello
I have wrong 5.1 channel output with libavcodec when playing EAC3 and AC3 Files.
Center Channel Output comes out of all front speakers.
Other Decoders(odler ffdshow): AC3/DTS in 5.1 works as usual with correct channel mapping
Also dts decoding is corrupt now
albain
9th September 2008, 09:48
Hello
I have wrong 5.1 channel output with libavcodec when playing EAC3 and AC3 Files.
Center Channel Output comes out of all front speakers.
Other Decoders(odler ffdshow): AC3/DTS in 5.1 works as usual with correct channel mapping
OK, this is not surprising, because the channel mapping is different from standard AC3 so this is normal.
It can be easily fixed in FFDShow, the problem is that FFDShow receives the wrong codec ID from the splitter, so unless there is a trick to detect the right format before calling libavcodec, the problem will stay
nautilus7
9th September 2008, 10:32
This means that the splitter has to send the right codec id (EAC3) or else the stream will be decoded in compatibility mode.
=> Haali developer should be informed to correct this wrong codec ID in output (I have posted a request on his mailing list but if someone knows better how to contact him)
No.
Only Blu-ray E-AC3 with more than 5.1 channels (7.1) have an 5.1 AC3 core inside. These tracks will decode as 5.1 from an AC3 decoder and won't decode at all from the libav E-AC3 decoder, because it doesn't support 7.1 channels yet.
HD DVD E-AC3 (1.0, 2.0, 5.1, 7.1) and Blu-ray E-AC3 up to 5.1 don't have an AC3 core, so there's no compatibility issue. They can't decode from an AC3 decoder. Try it with mpc's internal AC3 decoder. They won't play at all. Here (http://www.sendspace.com/file/3oz3wq) is a 5.1ch HD DVD E-AC3 (without AC3 core). It will only decode with the new E-AC3 decoder in ffdshow. That's proves there's no backwards compatibility.
So, I believe that the splitter sending the E-AC3 streams as AC3 is no problem at all.
My sample is from Dolby Demo Disc (HD DVD version) and names the channels, so it would be good for testing channels mapping also.
Also, there's no need to separate AC3 from E-AC3 decoding in ffdshow, because that won't work with the only backwards compatible E-AC3 track (and that's 7.1 Blu-ray E-AC3).
clsid
9th September 2008, 11:35
So, I believe that the splitter sending the E-AC3 streams as AC3 is no problem at all.Wrong. It is a HUGE problem because all the sample files that I have that contain E-AC3 will fail with regular AC3 decoders which all attempt to decode the audio. The specification is simply retarded and should be ignored. Splitter can detect E-AC3 and should pass that info along.
Mercury_22
9th September 2008, 11:41
No.
Also, there's no need to separate AC3 from E-AC3 decoding in ffdshow, because that won't work with the only backwards compatible E-AC3 track (and that's 7.1 Blu-ray E-AC3).
AC3 needs to be separate from E-AC3 because libav FAILS TO DECODE AC3 after 1-2 seconds so we need one filter for AC3 and one for E-AC3 (at least for now) ! :eek:
clsid
9th September 2008, 11:41
Yes, decoding regular AC3 is very broken right now with libavcodec.
Inventive Software
9th September 2008, 11:43
If the decoder is implemented *correctly*, we can work on the splitters sending correct information to the decoder. I'd see how madshi did it in eac3to (via constructive PMs) and get his advice on putting it correctly in ffdshow.
clsid
9th September 2008, 12:04
ffdshow is not a splitter. It gets its mediatype info from the upstream filter.
The AC3 decoder probably fails because it isn't getting the appropriate extradata.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.