You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
ima4 in aiff support
Originally committed as revision 12196 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@@ -37,6 +37,7 @@ static const AVCodecTag codec_aiff_tags[] = {
|
|||||||
{ CODEC_ID_GSM, MKTAG('G','S','M',' ') },
|
{ CODEC_ID_GSM, MKTAG('G','S','M',' ') },
|
||||||
{ CODEC_ID_ADPCM_G726, MKTAG('G','7','2','6') },
|
{ CODEC_ID_ADPCM_G726, MKTAG('G','7','2','6') },
|
||||||
{ CODEC_ID_PCM_S16LE, MKTAG('s','o','w','t') },
|
{ CODEC_ID_PCM_S16LE, MKTAG('s','o','w','t') },
|
||||||
|
{ CODEC_ID_ADPCM_IMA_QT, MKTAG('i','m','a','4') },
|
||||||
{ 0, 0 },
|
{ 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -123,11 +124,17 @@ static unsigned int get_aiff_header(ByteIOContext *pb, AVCodecContext *codec,
|
|||||||
codec->codec_tag = get_le32(pb);
|
codec->codec_tag = get_le32(pb);
|
||||||
codec->codec_id = codec_get_id (codec_aiff_tags, codec->codec_tag);
|
codec->codec_id = codec_get_id (codec_aiff_tags, codec->codec_tag);
|
||||||
|
|
||||||
if (codec->codec_id == CODEC_ID_PCM_S16BE) {
|
switch (codec->codec_id) {
|
||||||
|
case CODEC_ID_PCM_S16BE:
|
||||||
codec->codec_id = aiff_codec_get_id (codec->bits_per_sample);
|
codec->codec_id = aiff_codec_get_id (codec->bits_per_sample);
|
||||||
codec->bits_per_sample = av_get_bits_per_sample(codec->codec_id);
|
codec->bits_per_sample = av_get_bits_per_sample(codec->codec_id);
|
||||||
|
break;
|
||||||
|
case CODEC_ID_ADPCM_IMA_QT:
|
||||||
|
codec->block_align = 34*codec->channels;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
size -= 4;
|
size -= 4;
|
||||||
} else {
|
} else {
|
||||||
/* Need the codec type */
|
/* Need the codec type */
|
||||||
@@ -140,6 +147,7 @@ static unsigned int get_aiff_header(ByteIOContext *pb, AVCodecContext *codec,
|
|||||||
|
|
||||||
/* Block align needs to be computed in all cases, as the definition
|
/* Block align needs to be computed in all cases, as the definition
|
||||||
* is specific to applications -> here we use the WAVE format definition */
|
* is specific to applications -> here we use the WAVE format definition */
|
||||||
|
if (!codec->block_align)
|
||||||
codec->block_align = (codec->bits_per_sample * codec->channels) >> 3;
|
codec->block_align = (codec->bits_per_sample * codec->channels) >> 3;
|
||||||
|
|
||||||
codec->bit_rate = codec->sample_rate * (codec->block_align << 3);
|
codec->bit_rate = codec->sample_rate * (codec->block_align << 3);
|
||||||
|
Reference in New Issue
Block a user