fixed raw read for eof
authorFabrice Bellard <fabrice@bellard.org>
Sat, 15 Sep 2001 22:44:44 +0000 (22:44 +0000)
committerFabrice Bellard <fabrice@bellard.org>
Sat, 15 Sep 2001 22:44:44 +0000 (22:44 +0000)
Originally committed as revision 121 to svn://svn.ffmpeg.org/ffmpeg/trunk

libav/raw.c

index 7e4965e..f0d0c86 100644 (file)
@@ -84,27 +84,25 @@ static int raw_read_header(AVFormatContext *s,
     return 0;
 }
 
-#define MIN_SIZE 1024
+#define RAW_PACKET_SIZE 1024
 
 int raw_read_packet(AVFormatContext *s,
                     AVPacket *pkt)
 {
-    int packet_size, n, ret;
+    int ret;
 
-    if (url_feof(&s->pb))
-        return -EIO;
-
-    packet_size = url_get_packet_size(&s->pb);
-    n = MIN_SIZE / packet_size;
-    if (n <= 0)
-        n = 1;
-    if (av_new_packet(pkt, n * packet_size) < 0)
+    if (av_new_packet(pkt, RAW_PACKET_SIZE) < 0)
         return -EIO;
 
     pkt->stream_index = 0;
-    ret = get_buffer(&s->pb, pkt->data, pkt->size);
-    if (ret < 0)
+    ret = get_buffer(&s->pb, pkt->data, RAW_PACKET_SIZE);
+    if (ret <= 0) {
         av_free_packet(pkt);
+        return -EIO;
+    }
+    /* note: we need to modify the packet size here to handle the last
+       packet */
+    pkt->size = ret;
     return ret;
 }