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 {