Opened 8 years ago

Last modified 8 years ago

#6035 open defect

wmavoice: files decodes incorrectly

Reported by: ami_stuff Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: wmavoice
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

4kbps 8khz and 5kbps 8khz modes decodes ok, the rest don't

https://trac.ffmpeg.org/raw-attachment/ticket/5426/wmavoice.7z

C:\>ffmpeg.exe -i C:\2_16kbps_16khz.wma out.wav
ffmpeg version 3.2.git Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.6.2 (GCC)
  configuration: --disable-pthreads --enable-gpl
  libavutil      55. 43.100 / 55. 43.100
  libavcodec     57. 68.100 / 57. 68.100
  libavformat    57. 61.100 / 57. 61.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 68.100 /  6. 68.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
[wmavoice @ 0224d5c0] Warning: not compiled with thread support, using thread em
ulation
Input #0, asf, from 'C:\2_16kbps_16khz.wma':
  Metadata:
    WMFSDKNeeded    : 0.0.0.0000
    DeviceConformanceTemplate: S1
    WMFSDKVersion   : 11.0.5721.5275
    IsVBR           : 0
  Duration: 00:00:37.98, start: 0.000000, bitrate: 17 kb/s
    Stream #0:0(pol): Audio: wmavoice ([10][0][0][0] / 0x000A), 16000 Hz, mono,
flt, 16 kb/s
[wmavoice @ 025ffa20] Warning: not compiled with thread support, using thread em
ulation
[pcm_s16le @ 02247e00] Warning: not compiled with thread support, using thread e
mulation
Output #0, wav, to 'out.wav':
  Metadata:
    WMFSDKNeeded    : 0.0.0.0000
    DeviceConformanceTemplate: S1
    WMFSDKVersion   : 11.0.5721.5275
    IsVBR           : 0
    ISFT            : Lavf57.61.100
    Stream #0:0(pol): Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono,
s16, 256 kb/s
    Metadata:
      encoder         : Lavc57.68.100 pcm_s16le
Stream mapping:
  Stream #0:0 -> #0:0 (wmavoice (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Error while decoding stream #0:0: Function not implementeded=13.5x
    Last message repeated 3 times
size=    1188kB time=00:00:37.97 bitrate= 256.2kbits/s speed=13.4x
video:0kB audio:1187kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 0.006415%

Change History (2)

comment:1 by Ronald S. Bultje, 8 years ago

I looked at the 8khz 8kbps sample in a some detail. There is indeed a tonal problem. At the point where this starts, we're mostly coding fb_idx=11, so acb_type=hamming with 4 blocks/frame and 0 double pulses.

The source of the problem appears to start in the "excitation" array as written in line 1398 (call to ff_acelp_interpolatef()). What happens is that the values in that array build up to be insanely large over time, starting at the point where the tone starts going off (4.9s into the file). fcb_gain/acb_gain appear fine in that section of the code. The block pitch also seems sensible (low to mid-40s). Since the code simply interpolates excitation energy from history without any further input, it seems almost like a buildup of error through the filter history. I'll have to go through the original code to see whether it deals with this in some way or whether there's some slight problem in how the filter coefficients were generated or something like that...

So in short, I'm not 100% sure what's going on here.

comment:2 by Carl Eugen Hoyos, 8 years ago

Component: undeterminedavcodec
Keywords: wmavoice added
Reproduced by developer: set
Status: newopen
Version: unspecifiedgit-master
Note: See TracTickets for help on using tickets.