workaround ms (lack of) intelligence in their design of dvr-ms
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 2 Sep 2007 15:58:43 +0000 (15:58 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 2 Sep 2007 15:58:43 +0000 (15:58 +0000)
yes kids you do not make 90% of your file contain empty dummy packets
closes issue76

Originally committed as revision 10280 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/asf.c

index 4aa98f6..9cebd4c 100644 (file)
@@ -826,6 +826,19 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt)
         asf_st->frag_offset += asf->packet_frag_size;
         /* test if whole packet is read */
         if (asf_st->frag_offset == asf_st->pkt.size) {
+            //workaround for macroshit radio DVR-MS files
+            if(   s->streams[asf->stream_index]->codec->codec_id == CODEC_ID_MPEG2VIDEO
+               && asf_st->pkt.size > 100){
+                int i;
+                for(i=0; i<asf_st->pkt.size && !asf_st->pkt.data[i]; i++);
+                if(i == asf_st->pkt.size){
+                    av_log(s, AV_LOG_DEBUG, "discarding ms fart\n");
+                    asf_st->frag_offset = 0;
+                    av_free_packet(&asf_st->pkt);
+                    continue;
+                }
+            }
+
             /* return packet */
             if (asf_st->ds_span > 1) {
               if(asf_st->pkt.size != asf_st->ds_packet_size * asf_st->ds_span){