[FFmpeg-user] Ingest of SMPTE-377M
Carl Eugen Hoyos
cehoyos at ag.or.at
Thu Jan 7 14:19:32 CET 2016
Mark Nelson <markn <at> ieee.org> writes:
> >But my question was if there is a receiver
> >that plays the eac3 spdif file you uploaded:
>
> So the specific file that I posted here:
> https://www.dropbox.com/s/tec7al5bcmihwey/sample.eac3.337.wav?dl=0
>
> Works fine in my configuration, which is: File
> playing in AJA Control Room, which generates an SDI
> signal for ingest on a video encoder.
Does "playing" here mean you can hear the sound?
> Similarly encoded files from the Dolby test kit in
> both eac3 and ac3 formats work with AJA Control Room.
Does "similarly" mean thy have the same "wrong" (see
below) data-type as the file you uploaded?
> I'm not sure what other tools Dolby targets for
> files in this format.
I use my amplifier to test and I consider that a very
useful test.
> (Similar files with AC3 content work fine also, and
> I'm not entirely clear on what you mean when you
> say this process can only work with eac3. But that's
> a different issue.)
It works for ac3, eac3, truehd and dts with my receiver.
FFmpeg also supports MP3 and AAC but iirc, it is
difficult to buy a receiver that supports them so I
suspect this code is untested.
> When I compare the Dolby WAV file to the
> ffmpeg-created WAV file, by extracting the raw spdif:
>
> ffmpeg -i sample.eac3.337.wav -f s16le
> -acodec pcm_s16le sample.eac3.spdif
>
> The payloads look fine, but I see a difference is in
> the burst_info and length_code field of the SMPTE
> 377M headers.
>
> header created by ffmpeg: 72 f8 1f 4e 15 00 00 03
> header stripped from dolby WAV file: 72 f8 1f 4e 10 00 00 18
I am looking at IEC 61937-2 and it specifies the
following data-types in table 2:
16: ATRAC-X
21: Enhanced AC-3
So FFmpeg seems more correct to me;-)
Btw, my receiver interprets "16" as TrueHD (which is 22).
> The interesting thing here is that there is a
> discrepancy in the location of the burst_info and
> length_code data in these two files. One of them is
> broken (I have a feeling I know which one you suspect.)
>
> The EAC3 frame in the ffmpeg created spdif file has a
> length of 672 bytes, or 5376 bits, giving a length code
> of 0x1500
Above table specifies "6 144" and this value has to be
multiplied by 4 (afair) giving a frame size of 24576
which is what FFmpeg produces here for eac3 in spdif.
This is the only frame size that works with my receiver
for eac3.
> The EAC3 frame in the spdif file extracted from the
> dolby WAV file has a length of of 768 bytes, or
> 6144 bytes, giving a length code of 0x1800
This is exactly one quarter of the required size
and this simply doesn't work with the receivers I
tested.
> So the dolby file and the ffmpeg created file have
> different endian layouts of just that section of
> the SMPTE-377M the data.
I did not see a difference in endianess:
If I allow autodetection of "16" as eac3, your
file can be decoded with FFmpeg.
> Both have a reserved data type, but one is 0x03
> and one is 0x10.
Maybe a newer version of IEC 61937 exists?
> Maybe the problem here is that we are comparing
> apples and oranges? S/PDIF vs. AES3?
I don't know anything about AES3 but if it uses
the same burst-preamble as spdif but different
data-types then it is not the most useful format I
ever saw;-)
Did you test the file I produced with the commands
I posted on your equipment?
I still owe you a patch to disable spdif
auto-detection (which is trivial) but I would also
like to understand why your file is correct...
Carl Eugen
More information about the ffmpeg-user
mailing list