Commit fe55c31b authored by banan's avatar banan

Calculate the correct blocksize for flash adpcm. Patch by Baptiste

Coudurier.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@9742 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent bd8250f1
...@@ -183,7 +183,13 @@ static int adpcm_encode_init(AVCodecContext *avctx) ...@@ -183,7 +183,13 @@ static int adpcm_encode_init(AVCodecContext *avctx)
avctx->block_align = BLKSIZE; avctx->block_align = BLKSIZE;
break; break;
case CODEC_ID_ADPCM_SWF: case CODEC_ID_ADPCM_SWF:
avctx->frame_size = 4*BLKSIZE * avctx->channels; if (avctx->sample_rate != 11025 &&
avctx->sample_rate != 22050 &&
avctx->sample_rate != 44100) {
av_log(avctx, AV_LOG_ERROR, "Sample rate must be 11025, 22050 or 44100\n");
return -1;
}
avctx->frame_size = 512 * (avctx->sample_rate / 11025);
break; break;
default: default:
return -1; return -1;
...@@ -530,13 +536,13 @@ static int adpcm_encode_frame(AVCodecContext *avctx, ...@@ -530,13 +536,13 @@ static int adpcm_encode_frame(AVCodecContext *avctx,
c->status[i].prev_sample = (signed short)samples[i]; c->status[i].prev_sample = (signed short)samples[i];
} }
for (i=0 ; i<4096 ; i++) { for (i=0; i<avctx->frame_size; i++) {
put_bits(&pb, 4, adpcm_ima_compress_sample(&c->status[0], samples[avctx->channels*i]) & 0xF); put_bits(&pb, 4, adpcm_ima_compress_sample(&c->status[0], samples[avctx->channels*i]) & 0xF);
if (avctx->channels == 2) if (avctx->channels == 2)
put_bits(&pb, 4, adpcm_ima_compress_sample(&c->status[1], samples[2*i+1]) & 0xF); put_bits(&pb, 4, adpcm_ima_compress_sample(&c->status[1], samples[2*i+1]) & 0xF);
} }
flush_put_bits(&pb);
dst += (3 + 2048) * avctx->channels; dst += put_bits_count(&pb)>>3;
break; break;
} }
case CODEC_ID_ADPCM_MS: case CODEC_ID_ADPCM_MS:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment