[FFmpeg-devel] [patch] 6 channel raw audio input results in invalidPCM packet error

Phil Rutschman philr
Fri Nov 7 19:16:40 CET 2008


Any feedback on this patch?

Phil Rutschman <philr at modsystems.com>

> -----Original Message-----
> From: ffmpeg-devel-bounces at mplayerhq.hu [mailto:ffmpeg-devel-
> bounces at mplayerhq.hu] On Behalf Of Phil Rutschman
> Sent: Friday, October 31, 2008 11:21 AM
> To: FFmpeg development discussions and patches
> Subject: [FFmpeg-devel] [patch] 6 channel raw audio input results in
> invalidPCM packet error
> 
> Raw audio input fails with SVN- r15760 when the number of channels
> times the number of bytes per sample isn't an integer divisor of 1024.
> 
> 
> 
> Example:
> 
> $ ffmpeg -ac 6 -ar 48000 -f s16le -i /dev/zero -t 10 silence.wav
> 
> FFmpeg version SVN-r15760, Copyright (c) 2000-2008 Fabrice Bellard, et
> al.
> 
>   configuration: --enable-postproc --enable-libfaac --enable-libx264
--
> enable-pt
> 
> hreads --enable-pthreads --enable-gpl --enable-libfaad --extra-libs=-
> L/usr/local
> 
> /lib --enable-libmp3lame
> 
>   libavutil     49.12. 0 / 49.12. 0
> 
>   libavcodec    52. 1. 0 / 52. 1. 0
> 
>   libavformat   52.23. 1 / 52.23. 1
> 
>   libavdevice   52. 1. 0 / 52. 1. 0
> 
>   libpostproc   51. 2. 0 / 51. 2. 0
> 
>   built on Oct 31 2008 11:11:46, gcc: 4.1.2 20071124 (Red Hat
4.1.2-42)
> 
> Input #0, s16le, from '/dev/zero':
> 
>   Duration: N/A, start: 0.000000, bitrate: N/A
> 
>     Stream #0.0: Audio: pcm_s16le, 48000 Hz, 5:1, s16, 4608 kb/s
> 
> Output #0, wav, to 'silence.wav':
> 
>     Stream #0.0: Audio: pcm_s16le, 48000 Hz, 5:1, s16, 4608 kb/s
> 
> Stream mapping:
> 
>   Stream #0.0 -> #0.0
> 
> Press [q] to stop encoding
> 
> [pcm_s16le @ 0xa53b410]invalid PCM packet
> 
> Error while decoding stream #0.0
> 
> [pcm_s16le @ 0xa53b410]invalid PCM packet
> 
> Error while decoding stream #0.0
> 
> [pcm_s16le @ 0xa53b410]invalid PCM packet
> 
> Error while decoding stream #0.0
> 
> (repeats)
> 
> 
> 
> 
> 
> The problem seems to be that raw_read_audio_packet in
libavformat/raw.c
> always uses a 1024-byte packet size (RAW_PACKET_SIZE), but
> pcm_decode_frame in libavcodec/pcm.c expects a whole number of audio
> frames in the packet. With 6 input channels of 16 bit samples this is
> 12 bytes, which doesn't divide evenly into 1024.
> 
> 
> 
> I took a first stab at a patch to raw_read_audio_packet which peeks
> inside the AVFormatContext to get the number of channels and bytes per
> sample from the codec structure and adjusts the packet size to be an
> integer multiple of bytes*channels. It fixes the problem for me, but
> I'm not at all familiar with the code base so I don't know if this is
a
> legitimate operation or the best way to fix this. Feedback on a better
> approach would be welcome.
> 
> 
> 
> 
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: raw_audio_6_channels.diff
Type: application/octet-stream
Size: 719 bytes
Desc: raw_audio_6_channels.diff
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081107/76847d9d/attachment.obj>



More information about the ffmpeg-devel mailing list