summaryrefslogtreecommitdiff
path: root/src/libffmpeg/libavcodec/pcm.c
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2005-04-19 05:16:45 +0000
committerMike Melanson <mike@multimedia.cx>2005-04-19 05:16:45 +0000
commit97c50cb77949856573d7f5f5a3c28cb73e61e011 (patch)
tree2dbabcbb9009b09d66789498ce1d2451a4b39bc0 /src/libffmpeg/libavcodec/pcm.c
parent19e7199dad84489aa49e3b2dd5c0e45657ec0fb8 (diff)
downloadxine-lib-97c50cb77949856573d7f5f5a3c28cb73e61e011.tar.gz
xine-lib-97c50cb77949856573d7f5f5a3c28cb73e61e011.tar.bz2
sync to FFmpeg build 4752
CVS patchset: 7463 CVS date: 2005/04/19 05:16:45
Diffstat (limited to 'src/libffmpeg/libavcodec/pcm.c')
-rw-r--r--src/libffmpeg/libavcodec/pcm.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/libffmpeg/libavcodec/pcm.c b/src/libffmpeg/libavcodec/pcm.c
index 4c999b430..8e57d11a1 100644
--- a/src/libffmpeg/libavcodec/pcm.c
+++ b/src/libffmpeg/libavcodec/pcm.c
@@ -127,6 +127,23 @@ static int pcm_encode_init(AVCodecContext *avctx)
break;
}
+ switch(avctx->codec->id) {
+ case CODEC_ID_PCM_S16LE:
+ case CODEC_ID_PCM_S16BE:
+ case CODEC_ID_PCM_U16LE:
+ case CODEC_ID_PCM_U16BE:
+ avctx->block_align = 2 * avctx->channels;
+ break;
+ case CODEC_ID_PCM_S8:
+ case CODEC_ID_PCM_U8:
+ case CODEC_ID_PCM_MULAW:
+ case CODEC_ID_PCM_ALAW:
+ avctx->block_align = avctx->channels;
+ break;
+ default:
+ break;
+ }
+
avctx->coded_frame= avcodec_alloc_frame();
avctx->coded_frame->key_frame= 1;
@@ -282,6 +299,9 @@ static int pcm_decode_frame(AVCodecContext *avctx,
samples = data;
src = buf;
+ if(buf_size > AVCODEC_MAX_AUDIO_FRAME_SIZE/2)
+ buf_size = AVCODEC_MAX_AUDIO_FRAME_SIZE/2;
+
switch(avctx->codec->id) {
case CODEC_ID_PCM_S16LE:
n = buf_size >> 1;