Mercurial > libavformat.hg
changeset 1638:0c6b7ac24cd7 libavformat
swf can contain only one audio track, simplify
author | bcoudurier |
---|---|
date | Sun, 14 Jan 2007 01:14:31 +0000 |
parents | 50bbf9658436 |
children | 4740223bfd8e |
files | swf.c |
diffstat | 1 files changed, 9 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/swf.c Sun Jan 14 01:07:14 2007 +0000 +++ b/swf.c Sun Jan 14 01:14:31 2007 +0000 @@ -59,7 +59,7 @@ #include <assert.h> typedef struct { - + int audio_stream_index; offset_t duration_pos; offset_t tag_pos; @@ -808,8 +808,9 @@ get_byte(pb); v = get_byte(pb); swf->samples_per_frame = get_le16(pb); - ast = av_new_stream(s, 1); + ast = av_new_stream(s, -1); /* -1 to avoid clash with video stream ch_id */ av_set_pts_info(ast, 24, 1, 1000); /* 24 bit pts in ms */ + swf->audio_stream_index = ast->index; ast->codec->channels = 1 + (v&1); ast->codec->codec_type = CODEC_TYPE_AUDIO; if (v & 0x20) @@ -866,14 +867,12 @@ } url_fskip(pb, len-2); } else if (tag == TAG_STREAMBLOCK) { - for( i=0; i<s->nb_streams; i++ ) { - st = s->streams[i]; - if (st->id == 1) { - url_fskip(pb, 4); - av_get_packet(pb, pkt, len-4); - pkt->stream_index = st->index; - return pkt->size; - } + st = s->streams[swf->audio_stream_index]; + 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; } url_fskip(pb, len); } else {