Commit da0b94f5 authored by Michael Niedermayer's avatar Michael Niedermayer

workaround ms (lack of) intelligence in their design of dvr-ms

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
parent becc0ef9
...@@ -826,6 +826,19 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -826,6 +826,19 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt)
asf_st->frag_offset += asf->packet_frag_size; asf_st->frag_offset += asf->packet_frag_size;
/* test if whole packet is read */ /* test if whole packet is read */
if (asf_st->frag_offset == asf_st->pkt.size) { 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 */ /* return packet */
if (asf_st->ds_span > 1) { if (asf_st->ds_span > 1) {
if(asf_st->pkt.size != asf_st->ds_packet_size * asf_st->ds_span){ if(asf_st->pkt.size != asf_st->ds_packet_size * asf_st->ds_span){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment