[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