diff nut.c @ 652:b47948262721 libavformat

support discarding uninterresting packets
author michael
date Sat, 22 Jan 2005 13:36:02 +0000
parents 0b52743104ac
children decfffe703bc
line wrap: on
line diff
--- a/nut.c	Sat Jan 22 02:30:45 2005 +0000
+++ b/nut.c	Sat Jan 22 13:36:02 2005 +0000
@@ -1229,6 +1229,11 @@
     if(size < 0)
         return -1;
 
+    if(s->streams[ stream_id ]->discard){
+        url_fskip(bc, size);
+        return 1;
+    }
+
     av_new_packet(pkt, size);
     get_buffer(bc, pkt->data, size);
     pkt->stream_index = stream_id;
@@ -1243,7 +1248,7 @@
 {
     NUTContext *nut = s->priv_data;
     ByteIOContext *bc = &s->pb;
-    int i, frame_code=0;
+    int i, frame_code=0, ret;
 
     for(;;){
         int64_t pos= url_ftell(bc);
@@ -1281,8 +1286,11 @@
             reset(s, get_v(bc));
             frame_code = get_byte(bc);
         case 0:
-            if(decode_frame(nut, pkt, frame_code, frame_type, pos)>=0)
+            ret= decode_frame(nut, pkt, frame_code, frame_type, pos);
+            if(ret==0)
                 return 0;
+            else if(ret==1) //ok but discard packet
+                break;
         default:
 resync:
 av_log(s, AV_LOG_DEBUG, "syncing from %lld\n", nut->packet_start[2]+1);