Mercurial > libavformat.hg
changeset 1833:09a67819763e libavformat
support for adpcm swf, pcm
author | bcoudurier |
---|---|
date | Fri, 02 Mar 2007 10:32:08 +0000 |
parents | 1e51dfa8ef85 |
children | 384f199303aa |
files | swf.c |
diffstat | 1 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/swf.c Fri Mar 02 00:14:53 2007 +0000 +++ b/swf.c Fri Mar 02 10:32:08 2007 +0000 @@ -86,6 +86,15 @@ {0, 0}, }; +static const AVCodecTag swf_audio_codec_tags[] = { + {CODEC_ID_PCM_S16LE, 0x00}, + {CODEC_ID_ADPCM_SWF, 0x01}, + {CODEC_ID_MP3, 0x02}, + {CODEC_ID_PCM_S16LE, 0x03}, + //{CODEC_ID_NELLYMOSER, 0x06}, + {0, 0}, +}; + static const int sSampleRates[3][4] = { {44100, 48000, 32000, 0}, {22050, 24000, 16000, 0}, @@ -797,8 +806,7 @@ swf->audio_stream_index = ast->index; ast->codec->channels = 1 + (v&1); ast->codec->codec_type = CODEC_TYPE_AUDIO; - if (v & 0x20) - ast->codec->codec_id = CODEC_ID_MP3; + ast->codec->codec_id = codec_get_id(swf_audio_codec_tags, (v>>4) & 15); ast->need_parsing = 1; sample_rate_code= (v>>2) & 3; if (!sample_rate_code) @@ -856,9 +864,11 @@ if (st->codec->codec_id == CODEC_ID_MP3) { url_fskip(pb, 4); av_get_packet(pb, pkt, len-4); - pkt->stream_index = st->index; - return pkt->size; + } else { // ADPCM, PCM + av_get_packet(pb, pkt, len); } + pkt->stream_index = st->index; + return pkt->size; } else if (tag == TAG_JPEG2) { for (i=0; i<s->nb_streams; i++) { st = s->streams[i];