nu774 / qaac

CLI QuickTime AAC/ALAC encoder
Other
806 stars 41 forks source link

6.1 and 7.1 channel AAC compliant with ISO/IEC 14496-3:2009/Amd 4:2013? #40

Open ghost opened 8 years ago

ghost commented 8 years ago

ISO/IEC 14496-3:2009/Amd 4:2013 (New levels for AAC profiles) specifies the format of 7.1-channel AAC with rear surrounds. According to it, such a file should have audioProfileLevelIndication = 0x50 (i.e., confirming to AAC Profile Level 6) and ChannelConfiguration = 12. Do the files generated by qaac support this standard?

Also, on a related note, I tried to convert a 7.1-channel WAV file (having a WAVEFORMATEXTENSIBLE structure with dwChannelMask = 0x63f) to AAC with qaac, fdkaac, Nero AAC and Winamp fhgaac. QuickTime Player displayed the layout of the file encoded with fdkaac as C,L,R,Ls,Rs,Rls,Rrs,LFE in the Movie Inspector window. But for the files encoded with qaac, Nero AAC and Winamp fhgaac, it displayed the layout as C,Lc,Rc,L,R,Ls,Rs,LFE.

Versions: qaac 2.59, CoreAudioToolbox 7.10.5.0 fdkaac 0.6.2, libfdk-aac 3.4.12 Nero AAC codec 1.5.4.0 foobar2000 Free Encoder Pack 2015-10-24, Winamp fhgaac DLL v03.02.16 QuickTime Player 7.7.9 (Windows), 10.4 (OS X)

nu774 commented 8 years ago

ISO/IEC 14496-3:2009/Amendment 4:2013 (New levels for AAC profiles) specifies the format of 7.1-channel AAC with rear surrounds. According to it, such a file should have audioProfileLevelIndication = 0x50 (i.e., confirming to AAC Profile Level 6) and ChannelConfiguration = 12. Do the files generated by qaac support this standard?

No. It is a new standard, hence less compatible. libavcodec didn't support it until this patch: https://lists.libav.org/pipermail/libav-devel/2015-June/069944.html .

Also, on a related note, I tried to convert a 7.1-channel WAV file (WAVE_FORMAT_EXTENSIBLE with channel mask 0x63f) to AAC with qaac, fdkaac, Nero AAC and Winamp fhgaac. Quicktime Player displayed the layout of the file encoded with fdkaac as C,L,R,Ls,Rs,Rls,Rrs,LFE in the Movie Inspector window. But for the files encoded with qaac, Nero AAC and fhgaac, it displayed C,Lc,Rc,L,R,Ls,Rs,LFE.

Both of qaac and fdkaac correctly uses PCE (program config element) to describe 7.1ch rear layout. However, there's a difference. qaac describes it as 3 front + 2 side + 2 back + 1 LFE. On the other hand, FDK-AAC describes as 3 front + 4 back + 1 LFE.

As far as I can see, QuickTime recognizes only the latter. On the other hand, libavcodec couldn't recognize the latter until this patch: https://lists.libav.org/pipermail/libav-devel/2015-June/069932.html In other words, there's no way to make everybody happy.

IIRC, nero (and also fhgaac probably) doesn't correctly support 7.1ch rear. It just encode it as 7.1ch front (which is the default AAC layout for 7.1ch).

nithin-mk commented 2 years ago

I'm the creator of this issue; my previous GitHub account got deleted. Just like to enquire if this issue could be resolved, as I hope all programs / libraries are compatible with the new standard by now. Thank you! :-)