diff aviobuf.c @ 421:a35263593560 libavformat

10l (bytes_left() -> url_feof()) 10l (updating LRU delta pts for type 1/2 frames) ensure that checksumming isnt enabled if its not needed search for next startcode and then search backward to the next valid frame if an inconsistancy is detected deal with non-frame startcodes in the middle of the stream
author michael
date Tue, 06 Apr 2004 17:40:17 +0000
parents 41da3366d341
children 0fdc96c2f2fe
line wrap: on
line diff
--- a/aviobuf.c	Tue Apr 06 06:31:12 2004 +0000
+++ b/aviobuf.c	Tue Apr 06 17:40:17 2004 +0000
@@ -48,7 +48,6 @@
     s->eof_reached = 0;
     s->is_streamed = 0;
     s->max_packet_size = 0;
-    s->checksum_ptr= NULL;
     s->update_checksum= NULL;
     return 0;
 }
@@ -60,7 +59,7 @@
     if (s->buf_ptr > s->buffer) {
         if (s->write_packet)
             s->write_packet(s->opaque, s->buffer, s->buf_ptr - s->buffer);
-        if(s->checksum_ptr){
+        if(s->update_checksum){
             s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr);
             s->checksum_ptr= s->buffer;
         }
@@ -250,7 +249,7 @@
     if (s->eof_reached)
         return;
 
-    if(s->checksum_ptr){
+    if(s->update_checksum){
         s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_end - s->checksum_ptr);
         s->checksum_ptr= s->buffer;
     }
@@ -269,14 +268,16 @@
 
 unsigned long get_checksum(ByteIOContext *s){
     s->checksum= s->update_checksum(s->checksum, s->checksum_ptr, s->buf_ptr - s->checksum_ptr);
-    s->checksum_ptr= NULL;
+    s->update_checksum= NULL;
     return s->checksum;
 }
 
 void init_checksum(ByteIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum){
     s->update_checksum= update_checksum;
-    s->checksum= s->update_checksum(checksum, NULL, 0);
-    s->checksum_ptr= s->buf_ptr;
+    if(s->update_checksum){
+        s->checksum= s->update_checksum(checksum, NULL, 0);
+        s->checksum_ptr= s->buf_ptr;
+    }
 }
 
 /* NOTE: return 0 if EOF, so you cannot use it if EOF handling is