]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blobdiff - libavformat/swfdec.c
frsh: Export information about the last RTP contract and VRES
[frescor/ffmpeg.git] / libavformat / swfdec.c
index 84510eedcdeddc5d4e3e6b41be67aadd94319197..6f7092694c70539536bea37f6a0e054603fac552 100644 (file)
@@ -87,6 +87,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
     int tag, len, i, frame, v;
 
     for(;;) {
+        uint64_t pos = url_ftell(pb);
         tag = get_swf_tag(pb, &len);
         if (tag < 0)
             return AVERROR(EIO);
@@ -110,7 +111,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
                 return -1;
             vst->codec->codec_type = CODEC_TYPE_VIDEO;
             vst->codec->codec_id = codec_get_id(swf_codec_tags, get_byte(pb));
-            av_set_pts_info(vst, 64, 256, swf->frame_rate);
+            av_set_pts_info(vst, 16, 256, swf->frame_rate);
             vst->codec->time_base = (AVRational){ 256, swf->frame_rate };
             len -= 8;
         } else if (tag == TAG_STREAMHEAD || tag == TAG_STREAMHEAD2) {
@@ -129,7 +130,6 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
             ast = av_new_stream(s, -1); /* -1 to avoid clash with video stream ch_id */
             if (!ast)
                 return -1;
-            swf->audio_stream_index = ast->index;
             ast->codec->channels = 1 + (v&1);
             ast->codec->codec_type = CODEC_TYPE_AUDIO;
             ast->codec->codec_id = codec_get_id(swf_audio_codec_tags, (v>>4) & 15);
@@ -148,6 +148,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
                 if (st->codec->codec_type == CODEC_TYPE_VIDEO && st->id == ch_id) {
                     frame = get_le16(pb);
                     av_get_packet(pb, pkt, len-2);
+                    pkt->pos = pos;
                     pkt->pts = frame;
                     pkt->stream_index = st->index;
                     return pkt->size;
@@ -163,6 +164,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
             } else { // ADPCM, PCM
                 av_get_packet(pb, pkt, len);
             }
+            pkt->pos = pos;
             pkt->stream_index = st->index;
             return pkt->size;
                 }
@@ -195,6 +197,7 @@ static int swf_read_packet(AVFormatContext *s, AVPacket *pkt)
             } else {
                 get_buffer(pb, pkt->data + 4, pkt->size - 4);
             }
+            pkt->pos = pos;
             pkt->stream_index = st->index;
             return pkt->size;
         }