|
|
|
@@ -482,6 +482,8 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc) |
|
|
|
//blkalign = 144 * enc->bit_rate/enc->sample_rate; |
|
|
|
} else if (enc->codec_id == CODEC_ID_AC3) { |
|
|
|
blkalign = 3840; //maximum bytes per frame |
|
|
|
} else if (enc->codec_id == CODEC_ID_G723_1) { |
|
|
|
blkalign = 24; |
|
|
|
} else if (enc->block_align != 0) { /* specified by the codec */ |
|
|
|
blkalign = enc->block_align; |
|
|
|
} else |
|
|
|
@@ -493,6 +495,8 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc) |
|
|
|
enc->codec_id == CODEC_ID_PCM_F64LE || |
|
|
|
enc->codec_id == CODEC_ID_PCM_S16LE) { |
|
|
|
bytespersec = enc->sample_rate * blkalign; |
|
|
|
} else if (enc->codec_id == CODEC_ID_G723_1) { |
|
|
|
bytespersec = 800; |
|
|
|
} else { |
|
|
|
bytespersec = enc->bit_rate / 8; |
|
|
|
} |
|
|
|
@@ -516,6 +520,11 @@ int ff_put_wav_header(AVIOContext *pb, AVCodecContext *enc) |
|
|
|
bytestream_put_le16(&riff_extradata, 16); /* fwHeadFlags */ |
|
|
|
bytestream_put_le32(&riff_extradata, 0); /* dwPTSLow */ |
|
|
|
bytestream_put_le32(&riff_extradata, 0); /* dwPTSHigh */ |
|
|
|
} else if (enc->codec_id == CODEC_ID_G723_1) { |
|
|
|
hdrsize += 20; |
|
|
|
bytestream_put_le32(&riff_extradata, 0x9ace0002); /* extradata needed for msacm g723.1 codec */ |
|
|
|
bytestream_put_le32(&riff_extradata, 0xaea2f732); |
|
|
|
bytestream_put_le16(&riff_extradata, 0xacde); |
|
|
|
} else if (enc->codec_id == CODEC_ID_GSM_MS || enc->codec_id == CODEC_ID_ADPCM_IMA_WAV) { |
|
|
|
hdrsize += 2; |
|
|
|
bytestream_put_le16(&riff_extradata, frame_size); /* wSamplesPerBlock */ |
|
|
|
|