[FFmpeg-trac] #2706(avcodec:new): Native AAC encoder produces warbling with pure aevalsrc sine wave

FFmpeg trac at avcodec.org
Fri Jun 28 19:49:30 CEST 2013


#2706: Native AAC encoder produces warbling with pure aevalsrc sine wave
------------------------------------+-----------------------------------
             Reporter:  MarkZV      |                    Owner:
                 Type:  defect      |                   Status:  new
             Priority:  normal      |                Component:  avcodec
              Version:  git-master  |               Resolution:
             Keywords:  aac         |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+-----------------------------------

Comment (by Kamedo2):

 I Listened to these AACs, Sampling rate: 48000Hz
 ||=
 Freq=||16||32||48||64||80||96||112||128||144||160||176||192||208||224||240||256kbps||
 ||=  750Hz=||0||1||0 ||2 ||1 ||1 ||1  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 ||= 1500Hz=||0||0||1 ||0 ||1 ||2 ||1  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 ||= 3000Hz=||0||0||0 ||0 ||0 ||1 ||2  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 ||= 6000Hz=||-||0||1 ||2 ||1 ||2 ||0  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 ||= 9000Hz=||-||-||0 ||0 ||2 ||1 ||1  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 ||=12000Hz=||-||-||- ||- ||0 ||0 ||0  ||1  ||1  ||1  ||1  ||1  ||1  ||1
 ||1  ||1  ||
 0: no warbling
 1: warbling
 2: terrible warbling
 -: within cutoff range

 {{{
 ffmpeg -v 9 -loglevel 99 -filter_complex "aevalsrc=sin(750*2*PI
 *t)" -c:a aac -strict experimental -ar 48000 -b:a 64k -t 5
 aac_750Hz_64k_sample.
 mp4
 ffmpeg version N-54245-g7eb5288 Copyright (c) 2000-2013 the FFmpeg
 developers
   built on Jun 28 2013 20:41:30 with gcc 4.8.1 (GCC)
   configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-
 libfdk
 -aac --extra-ldflags=-static --extra-cflags='-march=native -mfpmath=sse'
 --optfl
 ags=-O2
   libavutil      52. 37.101 / 52. 37.101
   libavcodec     55. 17.100 / 55. 17.100
   libavformat    55. 10.100 / 55. 10.100
   libavdevice    55.  2.100 / 55.  2.100
   libavfilter     3. 77.101 /  3. 77.101
   libswscale      2.  3.100 /  2.  3.100
   libswresample   0. 17.102 /  0. 17.102
   libpostproc    52.  3.100 / 52.  3.100
 Splitting the commandline.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument
 '9'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level)
 with argument '99'.
 Reading option '-filter_complex' ... matched as option 'filter_complex'
 (create
 a complex filtergraph) with argument 'aevalsrc=sin(750*2*PI*t)'.
 Reading option '-c:a' ... matched as option 'c' (codec name) with argument
 'aac'
 .
 Reading option '-strict' ... matched as AVOption 'strict' with argument
 'experim
 ental'.
 Reading option '-ar' ... matched as option 'ar' (set audio sampling rate
 (in Hz)
 ) with argument '48000'.
 Reading option '-b:a' ... matched as option 'b' (video bitrate (please use
 -b:v)
 ) with argument '64k'.
 Reading option '-t' ... matched as option 't' (record or transcode
 "duration" se
 conds of audio/video) with argument '5'.
 Reading option 'aac_750Hz_64k_sample.mp4' ... matched as output file.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option v (set logging level) with argument 9.
 Applying option filter_complex (create a complex filtergraph) with
 argument aeva
 lsrc=sin(750*2*PI*t).
 Successfully parsed a group of options.
 Parsing a group of options: output file aac_750Hz_64k_sample.mp4.
 Applying option c:a (codec name) with argument aac.
 Applying option ar (set audio sampling rate (in Hz)) with argument 48000.
 Applying option b:a (video bitrate (please use -b:v)) with argument 64k.
 Applying option t (record or transcode "duration" seconds of audio/video)
 with a
 rgument 5.
 Successfully parsed a group of options.
 Opening an output file: aac_750Hz_64k_sample.mp4.
 detected 8 logical cores
 [Parsed_aevalsrc_0 @ 0149fe40] compat: called with args=[sin(750*2*PI*t)]
 [Parsed_aevalsrc_0 @ 0149fe40] Setting 'exprs' to value 'sin(750*2*PI*t)'
 [audio format for output stream 0:0 @ 03c13440] Setting 'sample_fmts' to
 value '
 fltp'
 [audio format for output stream 0:0 @ 03c13440] Setting 'sample_rates' to
 value
 '48000'
 Successfully opened the file.
 [audio format for output stream 0:0 @ 03c13440] auto-inserting filter
 'auto-inse
 rted resampler 0' between the filter 'Parsed_aevalsrc_0' and the filter
 'audio f
 ormat for output stream 0:0'
 [AVFilterGraph @ 0149f160] query_formats: 3 queried, 6 merged, 3 already
 done, 0
  delayed
 [Parsed_aevalsrc_0 @ 0149fe40] sample_rate:44100 chlayout:mono
 duration:-1.00000
 0
 [auto-inserted resampler 0 @ 0149f0c0] [SWR @ 01492f60] Using double
 precision m
 ode
 [auto-inserted resampler 0 @ 0149f0c0] ch:1 chl:mono fmt:dblp r:44100Hz ->
 ch:1
 chl:mono fmt:fltp r:48000Hz
 Output #0, mp4, to 'aac_750Hz_64k_sample.mp4':
   Metadata:
     encoder         : Lavf55.10.100
     Stream #0:0, 0, 1/48000: Audio: aac ([64][0][0][0] / 0x0040), 48000
 Hz, mono
 , fltp, 64 kb/s
 Stream mapping:
   aevalsrc -> Stream #0:0 (aac)
 Press [q] to stop, [?] for help
 No more output streams to write to, finishing.
 size=      41kB time=00:00:05.01 bitrate=  67.1kbits/s
 video:0kB audio:39kB subtitle:0 global headers:0kB muxing overhead
 4.174310%
 0 frames successfully decoded, 0 decoding errors
 [AVIOContext @ 03c57b80] Statistics: 30 seeks, 259 writeouts

 }}}

 It is likely this bug is from bit allocation algorithm.
 Claudio Freire had kindly written a patch in #2686, but the patch never
 worked so we can't test it.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2706#comment:7>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list