[FFmpeg-devel] [PATCH] alsdec: channel sorting

Paul B Mahol onemda at gmail.com
Thu Jan 3 01:54:21 CET 2013


On 1/3/13, Thilo Borgmann <thilo.borgmann at googlemail.com> wrote:
> Am 02.01.13 23:38, schrieb Paul B Mahol:
>> On 1/2/13, Thilo Borgmann <thilo.borgmann at googlemail.com> wrote:
>>> Am 21.12.12 15:05, schrieb Paul B Mahol:
>>>> On 12/21/12, Thilo Borgmann <thilo.borgmann at googlemail.com> wrote:
>>>>> Am 21.12.12 14:21, schrieb Paul B Mahol:
>>>>>> Signed-off-by: Paul B Mahol <onemda at gmail.com>
>>>>>> ---
>>>>>>  libavcodec/alsdec.c | 13 ++++++++++---
>>>>>>  1 file changed, 10 insertions(+), 3 deletions(-)
>>>>>
>>>>> Probably ok. Have you tested and veryfied using the reference
>>>>> encoder/decoder?
>>>>>
>>>>
>>>> Yes, without this patch ffmpeg reports CRC error.
>>>
>>> During my test today ffmpeg still reports a CRC error after you pushed
>>> the
>>> patch:
>>>
>>>
>>>
>>> localhost:tmp Thilo$ ./mp4alsRM23 -m6,1,2,4,5,3 in_6ch.wav out_2.mp4
>>> localhost:tmp Thilo$ ../ffmpeg -debug 1 -i out_2.mp4 -debug 1 -f crc -
>>> ffmpeg version N-48393-g8bc7422 Copyright (c) 2000-2013 the FFmpeg
>>> developers
>>>   built on Jan  2 2013 19:27:49 with llvm-gcc 4.2.1 (LLVM build
>>> 2336.1.00)
>>>   configuration: --disable-encoder=mpeg2video
>>>   libavutil      52. 13.100 / 52. 13.100
>>>   libavcodec     54. 85.100 / 54. 85.100
>>>   libavformat    54. 59.100 / 54. 59.100
>>>   libavdevice    54.  3.102 / 54.  3.102
>>>   libavfilter     3. 30.102 /  3. 30.102
>>>   libswscale      2.  1.103 /  2.  1.103
>>>   libswresample   0. 17.102 /  0. 17.102
>>>  matched as AVOption 'debug' with argument '1'.
>>> Reading option '-i' ... matched as input file with argument 'out_2.mp4'.
>>> Reading option '-debug' ... matched as AVOption 'debug' with argument
>>> '1'.
>>> Reading option '-f' ... matched as option 'f' (force format) with
>>> argument
>>> 'crc'.
>>> Reading option '-' ... matched as output file.
>>> Finished splitting the commandline.
>>> Parsing a group of options: global .
>>> Successfully parsed a group of options.
>>> Parsing a group of options: input file out_2.mp4.
>>> Successfully parsed a group of options.
>>> Opening an input file: out_2.mp4.
>>> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9cfb03d800] Format
>>> mov,mp4,m4a,3gp,3g2,mj2
>>> probed
>>> with size=2048 and score=100
>>> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9cfb03d800] ISO: File Type Major Brand:
>>> mp42
>>> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9cfb03d800] File position before
>>> avformat_find_stream_info() is 8885069
>>> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9cfb03d800] All info found
>>> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f9cfb03d800] File position after
>>> avformat_find_stream_info() is 8884417
>>> Guessed Channel Layout for  Input Stream #0.0 : 5.1
>>> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out_2.mp4':
>>>   Metadata:
>>>     major_brand     : mp42
>>>     minor_version   : 0
>>>     compatible_brands: mp42isom
>>>     creation_time   : 2013-01-02 20:33:39
>>>   Duration: 00:00:13.84, start: 0.000000, bitrate: 5134 kb/s
>>>     Stream #0:0(und), 1, 1/96000: Audio: mp4als (mp4a / 0x6134706D),
>>> 96000
>>> Hz,
>>> 5.1, s32, 5133 kb/s
>>>     Metadata:
>>>       creation_time   : 2013-01-02 20:33:39
>>> Successfully openened the file.
>>> Parsing a group of options: output file -.
>>> Applying option f (force format) with argument crc.
>>> Successfully parsed a group of options.
>>> Opening an output file: -.
>>> Successfully openened the file.
>>> [abuffer @ 0x7f9cfac19ba0] Setting entry with key 'time_base' to value
>>> '1/96000'
>>> [abuffer @ 0x7f9cfac19ba0] Setting entry with key 'sample_rate' to value
>>> '96000'
>>> [abuffer @ 0x7f9cfac19ba0] Setting entry with key 'sample_fmt' to value
>>> 's32'
>>> [abuffer @ 0x7f9cfac19ba0] Setting entry with key 'channel_layout' to
>>> value
>>> '0x3f'
>>> [graph 0 input from stream 0:0 @ 0x7f9cfac18760] tb:1/96000
>>> samplefmt:s32
>>> samplerate:96000 chlayout:0x3f
>>> [aformat @ 0x7f9cfac1a140] Setting entry with key 'sample_fmts' to value
>>> 's16'
>>> [audio format for output stream 0:0 @ 0x7f9cfac1a060] auto-inserting
>>> filter
>>> 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the
>>> filter
>>> 'audio format for output stream 0:0'
>>> [auto-inserted resampler 0 @ 0x7f9cfac1a680] chl:5.1 fmt:s32 r:96000Hz
>>> ->
>>> chl:5.1 fmt:s16 r:96000Hz
>>> Output #0, crc, to 'pipe:':
>>>   Metadata:
>>>     major_brand     : mp42
>>>     minor_version   : 0
>>>     compatible_brands: mp42isom
>>>     encoder         : Lavf54.59.100
>>>     Stream #0:0(und), 0, 1/90000: Audio: pcm_s16le, 96000 Hz, 5.1, s16,
>>> 9216
>>> kb/s
>>>     Metadata:
>>>       creation_time   : 2013-01-02 20:33:39
>>> Stream mapping:
>>>   Stream #0:0 -> #0:0 (als -> pcm_s16le)
>>> Press [q] to stop, [?] for help
>>> Multiple frames in a packet from stream 0
>>>     Last message repeated 98 times
>>> [output stream 0:0 @ 0x7f9cfac19e60] 100 buffers queued in output stream
>>> 0:0,
>>> something may be wrong.
>>> Multiple frames in a packet from stream 0
>>>     Last message repeated 224 times
>>> [als @ 0x7f9cfb040400] CRC error!
>>> [output stream 0:0 @ 0x7f9cfac19e60] EOF on sink link output stream
>>> 0:0:default.
>>> No more output streams to write to, finishing.
>>> CRC=0x36aa7466
>>> size=       0kB time=00:00:13.84 bitrate=   0.0kbits/s
>>> video:0kB audio:15575kB subtitle:0 global headers:0kB muxing overhead
>>> -99.999906%
>>> Statistics: 8917805 bytes read, 2 seeks
>>>
>>>
>>>
>>>
>>> Do I miss something?
>>
>> No I can reproduce this, something fishy is going on.
>
> The only thing I can imaging is that the CRC is computed on the wrong data
> if
> chan_sort == 1. But this would have prevented your initial test from
> confirming
> correctness.

It works for some sorts but for some others it does not.
Ref decoder works with all sorts.

>
> Are you going to have a closer look on this? (otherwise its on me with
> barely
> any sparetime...)

I'm looking at this right now.


More information about the ffmpeg-devel mailing list