[FFmpeg-trac] #4564(swresample:new): Distortion after flt stereo downmix

FFmpeg trac at avcodec.org
Sun May 17 23:47:09 CEST 2015


#4564: Distortion after flt stereo downmix
--------------------------------------+------------------------------------
               Reporter:  cehoyos     |                  Owner:
                   Type:  defect      |                 Status:  new
               Priority:  normal      |              Component:  swresample
                Version:  git-master  |               Keywords:
             Blocked By:              |               Blocking:
Reproduced by developer:  0           |  Analyzed by developer:  0
--------------------------------------+------------------------------------
 http://thread.gmane.org/gmane.comp.video.ffmpeg.user/56969
 A user uploaded a short 5.1 dts sample that plays fine with a hardware
 decoder but leads to "significant distortion" if downmixed to stereo with
 floating point coefficients. No such distortion can be heard if s16 or s32
 coefficients are used. The issue subsequently leads to distortion when
 downmixing and encoding with an encoder that offers float capability like
 ac3 and lame.
 {{{
 $ ffmpeg -loglevel debug -i inter.dts -acodec pcm_f32le -ac 2 out.wav
 ffmpeg version N-72193-g14c4b25 Copyright (c) 2000-2015 the FFmpeg
 developers
   built with gcc 4.7 (SUSE Linux)
   configuration: --enable-gpl
   libavutil      54. 23.101 / 54. 23.101
   libavcodec     56. 39.101 / 56. 39.101
   libavformat    56. 33.101 / 56. 33.101
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 16.101 /  5. 16.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Splitting the commandline.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'debug'.
 Reading option '-i' ... matched as input file with argument 'inter.dts'.
 Reading option '-acodec' ... matched as option 'acodec' (force audio codec
 ('copy' to copy stream)) with argument 'pcm_f32le'.
 Reading option '-ac' ... matched as option 'ac' (set number of audio
 channels) with argument '2'.
 Reading option 'out.wav' ... matched as output file.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument debug.
 Successfully parsed a group of options.
 Parsing a group of options: input file inter.dts.
 Successfully parsed a group of options.
 Opening an input file: inter.dts.
 [dts @ 0x3508240] Format dts probed with size=16384 and score=51
 [dts @ 0x3508240] Before avformat_find_stream_info() pos: 0 bytes
 read:32768 seeks:0
 [dca @ 0x3508c60] Stream with high frequencies VQ coding
 [dts @ 0x3508240] All info found
 [dts @ 0x3508240] Estimating duration from bitrate, this may be inaccurate
 [dts @ 0x3508240] After avformat_find_stream_info() pos: 101376 bytes
 read:131072 seeks:0 frames:50
 Input #0, dts, from 'inter.dts':
   Duration: 00:00:29.47, start: 0.000000, bitrate: 1535 kb/s
     Stream #0:0, 50, 1/90000: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp,
 1536 kb/s
 Successfully opened the file.
 Parsing a group of options: output file out.wav.
 Applying option acodec (force audio codec ('copy' to copy stream)) with
 argument pcm_f32le.
 Applying option ac (set number of audio channels) with argument 2.
 Successfully parsed a group of options.
 Opening an output file: out.wav.
 Successfully opened the file.
 detected 8 logical cores
 [graph 0 input from stream 0:0 @ 0x34fd740] Setting 'time_base' to value
 '1/48000'
 [graph 0 input from stream 0:0 @ 0x34fd740] Setting 'sample_rate' to value
 '48000'
 [graph 0 input from stream 0:0 @ 0x34fd740] Setting 'sample_fmt' to value
 'fltp'
 [graph 0 input from stream 0:0 @ 0x34fd740] Setting 'channel_layout' to
 value '0x60f'
 [graph 0 input from stream 0:0 @ 0x34fd740] tb:1/48000 samplefmt:fltp
 samplerate:48000 chlayout:0x60f
 [audio format for output stream 0:0 @ 0x34fdf00] Setting 'sample_fmts' to
 value 'flt'
 [audio format for output stream 0:0 @ 0x34fdf00] Setting 'channel_layouts'
 to value '0x3'
 [audio format for output stream 0:0 @ 0x34fdf00] auto-inserting filter
 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the
 filter 'audio format for output stream 0:0'
 [AVFilterGraph @ 0x3509720] query_formats: 4 queried, 6 merged, 3 already
 done, 0 delayed
 1.000000 0.000000 0.707107 0.000000 0.707107 0.000000
 0.000000 1.000000 0.707107 0.000000 0.000000 0.707107
 [auto-inserted resampler 0 @ 0x34f4780] ch:6 chl:5.1(side) fmt:fltp
 r:48000Hz -> ch:2 chl:stereo fmt:flt r:48000Hz
 Output #0, wav, to 'out.wav':
   Metadata:
     ISFT            : Lavf56.33.101
     Stream #0:0, 0, 1/48000: Audio: pcm_f32le ([3][0][0][0] / 0x0003),
 48000 Hz, stereo, flt, 3072 kb/s
     Metadata:
       encoder         : Lavc56.39.101 pcm_f32le
 Stream mapping:
   Stream #0:0 -> #0:0 (dts (dca) -> pcm_f32le (native))
 Press [q] to stop, [?] for help
 [dca @ 0x35091a0] Stream with high frequencies VQ coding
 [output stream 0:0 @ 0x350c180] EOF on sink link output stream
 0:0:default.
 No more output streams to write to, finishing.
 size=   11248kB time=00:00:29.99 bitrate=3072.0kbits/s
 video:0kB audio:11248kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.000990%
 Input file #0 (inter.dts):
   Input stream #0:0 (audio): 2812 packets read (5657744 bytes); 2812
 frames decoded (1439744 samples);
   Total: 2812 packets (5657744 bytes) demuxed
 Output file #0 (out.wav):
   Output stream #0:0 (audio): 2812 frames encoded (1439744 samples); 2812
 packets muxed (11517952 bytes);
   Total: 2812 packets (11517952 bytes) muxed
 2812 frames successfully decoded, 0 decoding errors
 [AVIOContext @ 0x350c080] Statistics: 6 seeks, 2816 writeouts
 [AVIOContext @ 0x3507800] Statistics: 5657744 bytes read, 0 seeks
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4564>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list