Set blkalign to 3840 (maximum bytes per frame) for AC-3 in avi.

Fixes playback for corner-cases like 32kHz 320kb.

Originally committed as revision 26242 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Carl Eugen Hoyos 2011-01-06 13:30:32 +00:00
parent 79d482b108
commit 504530bfba
1 changed files with 3 additions and 5 deletions

View File

@ -370,13 +370,11 @@ int ff_put_wav_header(ByteIOContext *pb, AVCodecContext *enc)
av_log(enc, AV_LOG_WARNING, "requested bits_per_coded_sample (%d) and actually stored (%d) differ\n", enc->bits_per_coded_sample, bps); av_log(enc, AV_LOG_WARNING, "requested bits_per_coded_sample (%d) and actually stored (%d) differ\n", enc->bits_per_coded_sample, bps);
} }
if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3 || enc->codec_id == CODEC_ID_AC3) { if (enc->codec_id == CODEC_ID_MP2 || enc->codec_id == CODEC_ID_MP3) {
blkalign = enc->frame_size; //this is wrong, but it seems many demuxers do not work if this is set correctly blkalign = enc->frame_size; //this is wrong, but it seems many demuxers do not work if this is set correctly
//blkalign = 144 * enc->bit_rate/enc->sample_rate; //blkalign = 144 * enc->bit_rate/enc->sample_rate;
//For high bitrate AC-3, set blkalign to maximum bytes per frame value } else if (enc->codec_id == CODEC_ID_AC3) {
//to allow playback on WMP and MPlayer blkalign = 3840; //maximum bytes per frame
if (enc->bit_rate > 384000)
blkalign = 3840;
} else if (enc->codec_id == CODEC_ID_ADPCM_G726) { // } else if (enc->codec_id == CODEC_ID_ADPCM_G726) { //
blkalign = 1; blkalign = 1;
} else if (enc->block_align != 0) { /* specified by the codec */ } else if (enc->block_align != 0) { /* specified by the codec */