forw_ptr CRC
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 9 Aug 2007 12:48:52 +0000 (12:48 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 9 Aug 2007 12:48:52 +0000 (12:48 +0000)
Originally committed as revision 10016 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/nutenc.c

index 9ce92d9..05f9428 100644 (file)
@@ -180,8 +180,14 @@ static inline void put_s_trace(ByteIOContext *bc, int64_t v, char *file, char *f
 static void put_packet(NUTContext *nut, ByteIOContext *bc, ByteIOContext *dyn_bc, int calculate_checksum){
     uint8_t *dyn_buf=NULL;
     int dyn_size= url_close_dyn_buf(dyn_bc, &dyn_buf);
 static void put_packet(NUTContext *nut, ByteIOContext *bc, ByteIOContext *dyn_bc, int calculate_checksum){
     uint8_t *dyn_buf=NULL;
     int dyn_size= url_close_dyn_buf(dyn_bc, &dyn_buf);
+    int forw_ptr= dyn_size + 4*calculate_checksum;
+
+    if(forw_ptr > 4096)
+        init_checksum(bc, av_crc04C11DB7_update, 0);
+    put_v(bc, forw_ptr);
+    if(forw_ptr > 4096)
+        put_le32(bc, get_checksum(bc));
 
 
-    put_v(bc, dyn_size + 4*calculate_checksum);
     if(calculate_checksum)
         init_checksum(bc, av_crc04C11DB7_update, 0);
     put_buffer(bc, dyn_buf, dyn_size);
     if(calculate_checksum)
         init_checksum(bc, av_crc04C11DB7_update, 0);
     put_buffer(bc, dyn_buf, dyn_size);
@@ -350,7 +356,7 @@ static int write_header(AVFormatContext *s){
 
     put_flush_packet(bc);
 
 
     put_flush_packet(bc);
 
-    //FIXME info header, header repeation, header packet CRC, ...
+    //FIXME info header, header repeation, ...
 
     return 0;
 }
 
     return 0;
 }