# HG changeset patch # User bcoudurier # Date 1172831528 0 # Node ID 09a67819763e667560d32f1353d4f192c51be87b # Parent 1e51dfa8ef85a0b85a60473d0683b661213ea3b1 support for adpcm swf, pcm diff -r 1e51dfa8ef85 -r 09a67819763e swf.c --- 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; inb_streams; i++) { st = s->streams[i];