TDiTP_
18th June 2011, 06:10
I did some comparison of (E-)AC3 decoders, may be it will be useful.
I. E-AC3 decoders comparison.
Arrangement:
Encoding WAV (PCM) to E-AC3 — Dolby® Media Encoder SE v1.3.8 (from Dolby Media Producer Suite). Preprocessing was disabled, DRC="none", DN=-31dB, target="Standard". Screens of settings. (http://tditp.imgur.com/dolby_media_encoder_settings)
Decoding E-AC3 to WAV (PCM):
libav. Using eac3to 3.24. Output is represented in 24-bit int (default).
eac3to input.ec3 output.wavs -libav -no2ndpass
libav-ffmpeg. Using ffmpeg.exe (SVN-r25870-Sherpya). Output can be represented in 16-bit int only.
ffmpeg -drc_scale 0 -i input.ec3 output.wav
Nero7. Using eac3to 3.24. Output is represented in 24-bit int (default).
eac3to input.ec3 output.wavs -nero
CyberLink. DirectShow's graph: "LAV Splitter → CyberLink Audio Decoder (PDVD10) → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "PowerDVD 10 Mark II 10.0.2701.51". Output is represented in 16-bit int.
I could not turn off the forced mixing to 2.0 inside DS-filter.
Sonic. DirectShow's graph: "File Source (Async.) → Sonic HD Demuxer → Sonic Cinemaster Audio Decoder 4.3.0 → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "Sonic Audio Decoder (4.3.0.169)".
Output is represented in 16-bit int. Decoder has a feature: it always increases the amplitude in ~1,5 times (i.e. +3,54 dB). To be able to compare the WAV with the others,
after each decoding level accounted for accurately calculate and understate, it was done very accurately using CopyAudio (http://www-mmsp.ece.mcgill.ca/documents/Software/Packages/AFsp/CopyAudio.html).
ArcSoft. DirectShow' graph: "LAV Splitter → ArcSoft Audio Decoder HD → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "ArcSoft TotalMedia Theatre 3.0.1.190". Output is represented in 16-bit int.
I could not turn off the forced mixing to 2.0 inside DS-filter.
Nero, CyberLink, Sonic and ArcSoft manufactures has been licensed by Dolby Laboratories. (http://www.dolby.com/professional/technology/licensing/licensed-manufacturers.html)
SNR (http://en.wikipedia.org/wiki/Signal-to-noise_ratio) measurement (bigger is better) — CompAudio (http://www-mmsp.ece.mcgill.ca/documents/Software/Packages/AFsp/CompAudio.html)
Spectrograms — Sound Forge, Sox.
Results:
I. Scheme 2.0.
Source test1.wav (stereo) was encoded to E-AC3 1536 kbps and then was decoded. Download all streams (http://www.mediafire.com/?qvhxi0y7ptxtrvm).
Average frequency spectrograms: Graphs test1 (http://tditp.imgur.com/average_frequency_graphs_scheme_20eac3_test1).
Time-frequency spectrograms: Graphs test1 (http://tditp.imgur.com/sonograms_scheme_20_eac3_test1).
SNR:
__________________________________________
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 51.453 | 50.987
libav-ffmpeg | 51.450 | 50.983
nero7 | 51.453 | 52.770
ArcSoft | 51.445 | 52.758
CyberLink | 51.438 | 52.749
Sonic | 51.453 | 52.770
__________________________________________
- All decoders have the same frequency response.
- There are some differences in SNR for FR-channel between libavcodec and other decoders.
Look at the effect of bitrate.
Source test2.wav was encoded to E-AC3 192, 320 and 640 kbps (download all streams (http://www.mediafire.com/?7ci8i0a3tt2xqug)). Streams were decoded with the help of all decoders.
In fact we have:
- Again all decoders have the same frequency response (too many screenshots → don't show)
- In case of 640 kbps we have significant differences in SNR between libavcodec and others:
______________________________________________
192 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 21.496 | 20.785
libav-ffmpeg | 21.496 | 20.785
nero7 | 21.498 | 20.815
ArcSoft | 21.504 | 20.817
CyberLink | 21.498 | 20.814
Sonic | 21.498 | 20.815
______________________________________________
320 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 32.854 | 31.875
libav-ffmpeg | 32.854 | 31.875
nero7 | 32.869 | 32.286
ArcSoft | 32.885 | 32.301
CyberLink | 32.872 | 32.290
Sonic | 32.872 | 32.285
______________________________________________
640 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 50.482 | 41.515
libav-ffmpeg | 50.480 | 41.515
nero7 | 50.464 | 50.018
ArcSoft | 50.522 | 50.056
CyberLink | 50.467 | 50.008
Sonic | 50.474 | 50.015
______________________________________________
II. Scheme 5.1.
Source test5.wav was encoded to E-AC3 1536 kbps (download all streams (http://www.mediafire.com/?tu7ddk1yv8zup8c)). Streams were decoded with the help of four decoders
(I wasn't able to test ArcSoft and Cyberlink because I could not turn off the forced mixing to 2.0 inside DS-filter). Results are shown in the example FC-channel, for other speakers all the same.
Average frequency spectrograms: Graphs test5 (http://tditp.imgur.com/average_frequency_graphs_scheme_51_eac3_test5).
Time-frequency spectrograms: Graphs test5 (http://tditp.imgur.com/sonograms_scheme_51_eac3_test5).
SNR:
___________________________________________________________________________
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 43.220 | 54.976 | 50.908 | 45.386 | 48.720 | 65.116
libav-ffmpeg | 43.210 | 54.741 | 50.833 | 45.270 | 48.646 | 62.140
nero7 | 43.333 | 54.958 | 57.507 | 52.597 | 57.600 | 65.117
Sonic | 43.308 | 54.964 | 57.433 | 52.577 | 57.806 | 65.117
___________________________________________________________________________
- All decoders have the same frequency response.
- There are serious differences in SNR between libavcodec and Nero, Sonic.
Look at the effect of bitrate.
Source test6.wav (each channel is packed with a 0 dB, action-scene from the movie) was encoded to E-AC3 384, 768 and 1536 kbps (download all streams (http://www.mediafire.com/?jz328u8v8vko88v)).
Streams were decoded with the help of three decoders (i wasn't able to test Sonic because it always increases the level of PCM).
In fact we have:
- Again all decoders have the same frequency response (too many screenshots → don't show)
- There are no significant differences in SNR between decoders:
________________________________________________________________________________________________________________
1536 kbps:
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 35.295 | 35.910 | 32.606 | 34.226 | 33.600 | 54.511
libav-ffmpeg | 35.295 | 35.910 | 32.606 | 34.226 | 33.600 | 54.487
nero7 | 36.931 | 35.877 | 35.463 | 34.398 | 33.631 | 54.510
________________________________________________________________________________________________________________
768 kbps:
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 30.972 | 30.351 | 28.666 | 28.293 | 27.321 | 36.118
libav-ffmpeg | 30.972 | 30.351 | 28.666 | 28.293 | 27.321 | 36.118
nero7 | 31.501 | 30.322 | 29.610 | 28.325 | 27.319 | 36.118
________________________________________________________________________________________________________________
384 kbps:
| SNR(FC) |SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 22.630 | 21.100 | 20.440 | 18.961 | 19.222 | 25.299
libav-ffmpeg | 22.630 | 21.100 | 20.440 | 18.961 | 19.222 | 25.299
nero7 | 22.939 | 21.398 | 20.883 | 19.287 | 19.634 | 25.302
________________________________________________________________________________________________________________
Conclusions:
1). Frequency response of libavcodec is the same as frequency response of licensed decoders (ArcSoft, Sonic, Nero and Cyberlink).
2). In some cases libavcodec provides too low SNR for some of the channels. These differences may be significant. Very strange for a predetermined process (bug?).
3). In some cases SNR (libav-eac3to) little more than SNR (libav-ffmpeg). Most likely because libav in eac3to was patched by madshi for decoding to 24-bit (against 16-bit for libav-ffmpeg).
As libavcodec is the only decoder that can ignore DRC [Madshi unable to completely disable the use of DRC in eac3to-Nero (http://forum.doom9.org/showthread.php?p=1404212#post1404212). I can confirm it for E-AC3], it would be nice to get rid of the trouble with SNR. Licensed decoders use the DRC and therefore can not be used for properly decoding, because all the corporate tracks E-AC3 are encoded with DRC (Dolby's recommendation).
I. E-AC3 decoders comparison.
Arrangement:
Encoding WAV (PCM) to E-AC3 — Dolby® Media Encoder SE v1.3.8 (from Dolby Media Producer Suite). Preprocessing was disabled, DRC="none", DN=-31dB, target="Standard". Screens of settings. (http://tditp.imgur.com/dolby_media_encoder_settings)
Decoding E-AC3 to WAV (PCM):
libav. Using eac3to 3.24. Output is represented in 24-bit int (default).
eac3to input.ec3 output.wavs -libav -no2ndpass
libav-ffmpeg. Using ffmpeg.exe (SVN-r25870-Sherpya). Output can be represented in 16-bit int only.
ffmpeg -drc_scale 0 -i input.ec3 output.wav
Nero7. Using eac3to 3.24. Output is represented in 24-bit int (default).
eac3to input.ec3 output.wavs -nero
CyberLink. DirectShow's graph: "LAV Splitter → CyberLink Audio Decoder (PDVD10) → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "PowerDVD 10 Mark II 10.0.2701.51". Output is represented in 16-bit int.
I could not turn off the forced mixing to 2.0 inside DS-filter.
Sonic. DirectShow's graph: "File Source (Async.) → Sonic HD Demuxer → Sonic Cinemaster Audio Decoder 4.3.0 → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "Sonic Audio Decoder (4.3.0.169)".
Output is represented in 16-bit int. Decoder has a feature: it always increases the amplitude in ~1,5 times (i.e. +3,54 dB). To be able to compare the WAV with the others,
after each decoding level accounted for accurately calculate and understate, it was done very accurately using CopyAudio (http://www-mmsp.ece.mcgill.ca/documents/Software/Packages/AFsp/CopyAudio.html).
ArcSoft. DirectShow' graph: "LAV Splitter → ArcSoft Audio Decoder HD → Wav Dest → File Writer" was built in GraphEdit. Decoder is taken from "ArcSoft TotalMedia Theatre 3.0.1.190". Output is represented in 16-bit int.
I could not turn off the forced mixing to 2.0 inside DS-filter.
Nero, CyberLink, Sonic and ArcSoft manufactures has been licensed by Dolby Laboratories. (http://www.dolby.com/professional/technology/licensing/licensed-manufacturers.html)
SNR (http://en.wikipedia.org/wiki/Signal-to-noise_ratio) measurement (bigger is better) — CompAudio (http://www-mmsp.ece.mcgill.ca/documents/Software/Packages/AFsp/CompAudio.html)
Spectrograms — Sound Forge, Sox.
Results:
I. Scheme 2.0.
Source test1.wav (stereo) was encoded to E-AC3 1536 kbps and then was decoded. Download all streams (http://www.mediafire.com/?qvhxi0y7ptxtrvm).
Average frequency spectrograms: Graphs test1 (http://tditp.imgur.com/average_frequency_graphs_scheme_20eac3_test1).
Time-frequency spectrograms: Graphs test1 (http://tditp.imgur.com/sonograms_scheme_20_eac3_test1).
SNR:
__________________________________________
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 51.453 | 50.987
libav-ffmpeg | 51.450 | 50.983
nero7 | 51.453 | 52.770
ArcSoft | 51.445 | 52.758
CyberLink | 51.438 | 52.749
Sonic | 51.453 | 52.770
__________________________________________
- All decoders have the same frequency response.
- There are some differences in SNR for FR-channel between libavcodec and other decoders.
Look at the effect of bitrate.
Source test2.wav was encoded to E-AC3 192, 320 and 640 kbps (download all streams (http://www.mediafire.com/?7ci8i0a3tt2xqug)). Streams were decoded with the help of all decoders.
In fact we have:
- Again all decoders have the same frequency response (too many screenshots → don't show)
- In case of 640 kbps we have significant differences in SNR between libavcodec and others:
______________________________________________
192 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 21.496 | 20.785
libav-ffmpeg | 21.496 | 20.785
nero7 | 21.498 | 20.815
ArcSoft | 21.504 | 20.817
CyberLink | 21.498 | 20.814
Sonic | 21.498 | 20.815
______________________________________________
320 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 32.854 | 31.875
libav-ffmpeg | 32.854 | 31.875
nero7 | 32.869 | 32.286
ArcSoft | 32.885 | 32.301
CyberLink | 32.872 | 32.290
Sonic | 32.872 | 32.285
______________________________________________
640 kbps:
| SNR (FL), dB | SNR (FR), dB
| |
libav-eac3to | 50.482 | 41.515
libav-ffmpeg | 50.480 | 41.515
nero7 | 50.464 | 50.018
ArcSoft | 50.522 | 50.056
CyberLink | 50.467 | 50.008
Sonic | 50.474 | 50.015
______________________________________________
II. Scheme 5.1.
Source test5.wav was encoded to E-AC3 1536 kbps (download all streams (http://www.mediafire.com/?tu7ddk1yv8zup8c)). Streams were decoded with the help of four decoders
(I wasn't able to test ArcSoft and Cyberlink because I could not turn off the forced mixing to 2.0 inside DS-filter). Results are shown in the example FC-channel, for other speakers all the same.
Average frequency spectrograms: Graphs test5 (http://tditp.imgur.com/average_frequency_graphs_scheme_51_eac3_test5).
Time-frequency spectrograms: Graphs test5 (http://tditp.imgur.com/sonograms_scheme_51_eac3_test5).
SNR:
___________________________________________________________________________
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 43.220 | 54.976 | 50.908 | 45.386 | 48.720 | 65.116
libav-ffmpeg | 43.210 | 54.741 | 50.833 | 45.270 | 48.646 | 62.140
nero7 | 43.333 | 54.958 | 57.507 | 52.597 | 57.600 | 65.117
Sonic | 43.308 | 54.964 | 57.433 | 52.577 | 57.806 | 65.117
___________________________________________________________________________
- All decoders have the same frequency response.
- There are serious differences in SNR between libavcodec and Nero, Sonic.
Look at the effect of bitrate.
Source test6.wav (each channel is packed with a 0 dB, action-scene from the movie) was encoded to E-AC3 384, 768 and 1536 kbps (download all streams (http://www.mediafire.com/?jz328u8v8vko88v)).
Streams were decoded with the help of three decoders (i wasn't able to test Sonic because it always increases the level of PCM).
In fact we have:
- Again all decoders have the same frequency response (too many screenshots → don't show)
- There are no significant differences in SNR between decoders:
________________________________________________________________________________________________________________
1536 kbps:
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 35.295 | 35.910 | 32.606 | 34.226 | 33.600 | 54.511
libav-ffmpeg | 35.295 | 35.910 | 32.606 | 34.226 | 33.600 | 54.487
nero7 | 36.931 | 35.877 | 35.463 | 34.398 | 33.631 | 54.510
________________________________________________________________________________________________________________
768 kbps:
| SNR(FC) | SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 30.972 | 30.351 | 28.666 | 28.293 | 27.321 | 36.118
libav-ffmpeg | 30.972 | 30.351 | 28.666 | 28.293 | 27.321 | 36.118
nero7 | 31.501 | 30.322 | 29.610 | 28.325 | 27.319 | 36.118
________________________________________________________________________________________________________________
384 kbps:
| SNR(FC) |SNR(FL) | SNR(FR) | SNR(SL) | SNR(SR) | SNR (LFE)
| | | | | |
libav-eac3to | 22.630 | 21.100 | 20.440 | 18.961 | 19.222 | 25.299
libav-ffmpeg | 22.630 | 21.100 | 20.440 | 18.961 | 19.222 | 25.299
nero7 | 22.939 | 21.398 | 20.883 | 19.287 | 19.634 | 25.302
________________________________________________________________________________________________________________
Conclusions:
1). Frequency response of libavcodec is the same as frequency response of licensed decoders (ArcSoft, Sonic, Nero and Cyberlink).
2). In some cases libavcodec provides too low SNR for some of the channels. These differences may be significant. Very strange for a predetermined process (bug?).
3). In some cases SNR (libav-eac3to) little more than SNR (libav-ffmpeg). Most likely because libav in eac3to was patched by madshi for decoding to 24-bit (against 16-bit for libav-ffmpeg).
As libavcodec is the only decoder that can ignore DRC [Madshi unable to completely disable the use of DRC in eac3to-Nero (http://forum.doom9.org/showthread.php?p=1404212#post1404212). I can confirm it for E-AC3], it would be nice to get rid of the trouble with SNR. Licensed decoders use the DRC and therefore can not be used for properly decoding, because all the corporate tracks E-AC3 are encoded with DRC (Dolby's recommendation).