#11288: amerge fails with input stream having non-default channel order
------------------------------------+--------------------------------------
             Reporter:  t.rapp      |                     Type:  defect
               Status:  new         |                 Priority:  normal
            Component:  avfilter    |                  Version:  git-master
             Keywords:  regression  |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+--------------------------------------
 When reading the 8-channel audio stream of a MOV file and passing it to
 the amerge filter processing fails with error message "Input channel
 layout "" is invalid or unsupported.".

 The error occurs since commit e6c2c8703732bc46395c65c530038c8146df0deb,
 which caused the input channels to be detected with custom layout
 "FL+FR+FC+LFE+SL+SR+BL+BR" (which seems to be correct). Previous versions
 detected the generic "7.1" layout which caused no problems when passed to
 the amerge filter.

 == How to reproduce
 {{{
 % ./build-linux/ffmpeg-dbg -probesize 50M -t 0.1 -i
 /mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov -f wav -map
 "[a_out]" -codec:a pcm_s16le -filter_complex "[0:a:0]
 amerge=inputs=1,ashowinfo [a_out]" -y /dev/null -loglevel repeat+debug
 -xerror -nostdin -stats -report
 ffmpeg version N-117705-g7b20985 Copyright (c) 2000-2024 the FFmpeg
 developers
   built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
   configuration: --enable-gpl --disable-network --enable-libsoxr --enable-
 libtwolame --enable-libmp3lame --enable-libvorbis --enable-libfreetype
 --enable-libx264 --enable-static --disable-shared --progs-suffix=-dbg
 --enable-debug --disable-optimizations --assert-level=2
 --prefix=/usr/local
   libavutil      59. 46.100 / 59. 46.100
   libavcodec     61. 24.100 / 61. 24.100
   libavformat    61.  9.100 / 61.  9.100
   libavdevice    61.  4.100 / 61.  4.100
   libavfilter    10.  6.101 / 10.  6.101
   libswscale      8.  9.101 /  8.  9.101
   libswresample   5.  4.100 /  5.  4.100
   libpostproc    58.  4.100 / 58.  4.100
 Splitting the commandline.
 Reading option '-probesize' ... matched as AVOption 'probesize' with
 argument '50M'.
 Reading option '-t' ... matched as option 't' (stop transcoding after
 specified duration) with argument '0.1'.
 Reading option '-i' ... matched as input url with argument
 '/mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov'.
 Reading option '-f' ... matched as option 'f' (force container format
 (auto-detected otherwise)) with argument 'wav'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '[a_out]'.
 Reading option '-codec:a' ... matched as option 'codec' (alias for -c
 (select encoder/decoder)) with argument 'pcm_s16le'.
 Reading option '-filter_complex' ... matched as option 'filter_complex'
 (create a complex filtergraph) with argument '[0:a:0]
 amerge=inputs=1,ashowinfo [a_out]'.
 Reading option '-y' ... matched as option 'y' (overwrite output files)
 with argument '1'.
 Reading option '/dev/null' ... matched as output url.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'repeat+debug'.
 Reading option '-xerror' ... matched as option 'xerror' (exit on error)
 with argument '1'.
 Reading option '-nostdin' ... matched as option 'stdin' (enable or disable
 interaction on standard input) with argument 0.
 Reading option '-stats' ... matched as option 'stats' (print progress
 report during encoding) with argument '1'.
 Reading option '-report' ... matched as option 'report' (generate a
 report) with argument '1'.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option filter_complex (create a complex filtergraph) with
 argument [0:a:0] amerge=inputs=1,ashowinfo [a_out].
 Applying option y (overwrite output files) with argument 1.
 Applying option loglevel (set logging level) with argument repeat+debug.
 Applying option xerror (exit on error) with argument 1.
 Applying option nostdin (enable or disable interaction on standard input)
 with argument 0.
 Applying option stats (print progress report during encoding) with
 argument 1.
 Applying option report (generate a report) with argument 1.
 Successfully parsed a group of options.
 [AVFilterGraph @ 0x4fa7d80] Setting 'inputs' to value '1'
 Parsing a group of options: input url
 /mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov.
 Applying option t (stop transcoding after specified duration) with
 argument 0.1.
 Successfully parsed a group of options.
 Opening an input file: /mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-
 Uncompressed/NOA/Uncompressed-8bit_2vuy_720x576_TFF_PCM-
 8ch__FromFFmpeg.mov.
 [AVFormatContext @ 0x4fabb80] Opening
 '/mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov' for reading
 [file @ 0x4fac4c0] Setting default whitelist 'file,crypto,data'
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Format mov,mp4,m4a,3gp,3g2,mj2
 probed with size=2048 and score=100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] ISO: File Type Major Brand: qt
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Unknown dref type 0x206c7275 size 12
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Processing st: 0, edit list 0 -
 media time: 0, duration: 384000
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Unknown dref type 0x206c7275 size 12
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] chan: layout=8388616 bitmap=0
 num_descr=0
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Processing st: 1, edit list 0 -
 media time: 0, duration: 1441824
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] Before avformat_find_stream_info()
 pos: 656692609 bytes read:42333 seeks:1 nb_streams:2
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] All info found
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x4fabb80] After avformat_find_stream_info()
 pos: 854052 bytes read:904541 seeks:2 frames:2
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from
 '/mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf57.83.100
   Duration: 00:00:30.04, start: 0.000000, bitrate: 174900 kb/s
   Stream #0:0[0x1](eng), 1, 1/12800: Video: rawvideo, 1 reference frame
 (2vuy / 0x79757632), uyvy422(top coded first (swapped)), 720x576, 0/1,
 165888 kb/s, SAR 197:180 DAR 197:144, 25 fps, 25 tbr, 12800 tbn (default)
     Metadata:
       handler_name    : VideoHandler
       vendor_id       : FFMP
       encoder         : Lavc57.107.100 rawvideo
   Stream #0:1[0x2](eng), 1, 1/48000: Audio: pcm_s24le (in24 / 0x34326E69),
 48000 Hz, 8 channels (FL+FR+FC+LFE+SL+SR+BL+BR), s32 (24 bit), 9216 kb/s
 (default)
     Metadata:
       handler_name    : SoundHandler
       vendor_id       : [0][0][0][0]
 Successfully opened the file.
 Parsing a group of options: output url /dev/null.
 Applying option f (force container format (auto-detected otherwise)) with
 argument wav.
 Applying option map (set input stream mapping) with argument [a_out].
 Applying option codec:a (alias for -c (select encoder/decoder)) with
 argument pcm_s16le.
 Successfully parsed a group of options.
 Opening an output file: /dev/null.
 [out#0/wav @ 0x4fad340] Adding streams from explicit maps...
 [out#0/wav @ 0x4fad340] Creating output stream from an explicitly mapped
 complex filtergraph 0, output [a_out]
 [aost#0:0/pcm_s16le @ 0x4fbf200] Created audio stream from complex
 filtergraph 0:[ashowinfo:default]
 [aost#0:0/pcm_s16le @ 0x4fbf200]
 [file @ 0x4fad480] Setting default whitelist 'file,crypto,data'
 Successfully opened the file.
 [fc#0 @ 0x4fa7840] Binding input with label '0:a:0' to input stream 0:1
 Stream mapping:
   Stream #0:1 (pcm_s24le) -> amerge:in0
   ashowinfo:default -> Stream #0:0 (pcm_s16le)
 [aost#0:0/pcm_s16le @ 0x4fbf200] Starting thread...
 [fc#0 @ 0x4fa7840] Starting thread...
 [aist#0:1/pcm_s24le @ 0x4fbc9c0] [dec:pcm_s24le @ 0x4fcefc0] Starting
 thread...
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80] Starting thread...
 [AVFilterGraph @ 0x7fabbc000e80] Setting 'inputs' to value '1'
 detected 4 logical cores
 [graph_0_in_0:1 @ 0x7fabbc003180] Setting 'time_base' to value '1/48000'
 [graph_0_in_0:1 @ 0x7fabbc003180] Setting 'sample_rate' to value '48000'
 [graph_0_in_0:1 @ 0x7fabbc003180] Setting 'sample_fmt' to value 's32'
 [graph_0_in_0:1 @ 0x7fabbc003180] Setting 'channel_layout' to value '8
 channels (FL+FR+FC+LFE+SL+SR+BL+BR)'
 [graph_0_in_0:1 @ 0x7fabbc003180] tb:1/48000 samplefmt:s32
 samplerate:48000 chlayout:8 channels (FL+FR+FC+LFE+SL+SR+BL+BR)
 [format_out_#0:0 @ 0x7fabbc004f80] Setting 'sample_fmts' to value 's16'
 [Parsed_amerge_0 @ 0x7fabbc002200] No channel layout for input 1
 [AVFilterGraph @ 0x7fabbc000e80] query_formats: 5 queried, 6 merged, 3
 already done, 6 delayed
 [AVFilterGraph @ 0x7fabbc000e80] query_formats not finished
 [Parsed_ashowinfo_1 @ 0x7fabbc002640] auto-inserting filter
 'auto_aresample_0' between the filter 'Parsed_amerge_0' and the filter
 'Parsed_ashowinfo_1'
 [AVFilterGraph @ 0x7fabbc000e80] query_formats: 1 queried, 3 merged, 13
 already done, 0 delayed
 [Parsed_amerge_0 @ 0x7fabbc002200] in0:8 channels
 (FL+FR+FC+LFE+SL+SR+BL+BR) -> out:0 channels
 [auto_aresample_0 @ 0x7fabbc007840] [SWR @ 0x7fabbc007940] Input channel
 layout "" is invalid or unsupported.
 [auto_aresample_0 @ 0x7fabbc007840] Failed to configure output pad on
 auto_aresample_0
 [fc#0 @ 0x4fa7840] Error reinitializing filters!
 [fc#0 @ 0x4fa7840] Task finished with error code: -22 (Invalid argument)
 [fc#0 @ 0x4fa7840] Terminating thread with return code -22 (Invalid
 argument)
 [aost#0:0/pcm_s16le @ 0x4fbf200] [enc:pcm_s16le @ 0x4fbe640] Encoder
 thread received EOF
 [aost#0:0/pcm_s16le @ 0x4fbf200] [enc:pcm_s16le @ 0x4fbe640] Could not
 open encoder before EOF
 [aost#0:0/pcm_s16le @ 0x4fbf200] Task finished with error code: -22
 (Invalid argument)
 [aist#0:1/pcm_s24le @ 0x4fbc9c0] [dec:pcm_s24le @ 0x4fcefc0] Decoder
 returned EOF, finishing
 [aost#0:0/pcm_s16le @ 0x4fbf200] Terminating thread with return code -22
 (Invalid argument)
 [aist#0:1/pcm_s24le @ 0x4fbc9c0] [dec:pcm_s24le @ 0x4fcefc0] Terminating
 thread with return code 0 (success)
 [aist#0:1/pcm_s24le @ 0x4fbc9c0] All consumers of this stream are done
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80] All consumers are done
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80] Terminating thread with return
 code 0 (success)
 [out#0/wav @ 0x4fad340] Nothing was written into output file, because at
 least one of its streams received no packets.
 size=       0KiB time=N/A bitrate=N/A speed=N/A
 [AVIOContext @ 0x4fbcb80] Statistics: 0 bytes written, 0 seeks, 0
 writeouts
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80] Input file #0
 (/mnt/lux01-user/UserSpace/Tobias/TestFiles/MOV-Uncompressed/NOA
 /Uncompressed-8bit_2vuy_720x576_TFF_PCM-8ch__FromFFmpeg.mov):
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80]   Input stream #0:1 (audio): 6
 packets read (147456 bytes); 5 frames decoded; 0 decode errors (5120
 samples);
 [in#0/mov,mp4,m4a,3gp,3g2,mj2 @ 0x4faaa80]   Total: 6 packets (147456
 bytes) demuxed
 [AVIOContext @ 0x4fa9fc0] Statistics: 1068381 bytes read, 4 seeks
 Conversion failed!
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11288>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to