[SCM] libav/experimental: forward_ptr doesnt contain its own length anymore

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 15:45:05 UTC 2013


The following commit has been merged in the experimental branch:
commit 177e5460b9fe9043e5f70dde7718298a43c55d48
Author: Michael Niedermayer <michaelni at gmx.at>
Date:   Sun Sep 11 08:28:03 2005 +0000

    forward_ptr doesnt contain its own length anymore
    
    Originally committed as revision 4578 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/nut.c b/libavformat/nut.c
index cd46d55..aee1606 100644
--- a/libavformat/nut.c
+++ b/libavformat/nut.c
@@ -462,8 +462,7 @@ static inline void put_vb_trace(ByteIOContext *bc, uint64_t v, char *file, char
 static int put_packetheader(NUTContext *nut, ByteIOContext *bc, int max_size, int calculate_checksum)
 {
     put_flush_packet(bc);
-    nut->packet_start[2]+= nut->written_packet_size;
-    assert(url_ftell(bc) - 8 == nut->packet_start[2]);
+    nut->packet_start[2]= url_ftell(bc) - 8;
     nut->written_packet_size = max_size;
     
     if(calculate_checksum)
@@ -475,10 +474,14 @@ static int put_packetheader(NUTContext *nut, ByteIOContext *bc, int max_size, in
     return 0;
 }
 
+/**
+ *
+ * must not be called more then once per packet
+ */
 static int update_packetheader(NUTContext *nut, ByteIOContext *bc, int additional_size, int calculate_checksum){
     int64_t start= nut->packet_start[2];
     int64_t cur= url_ftell(bc);
-    int size= cur - start + additional_size;
+    int size= cur - start - get_length(nut->written_packet_size)/7 - 8;
     
     if(calculate_checksum)
         size += 4;
@@ -1276,7 +1279,7 @@ static int nut_read_packet(AVFormatContext *s, AVPacket *pkt)
         case INDEX_STARTCODE:
             get_packetheader(nut, bc, 0);
             assert(nut->packet_start[2] == pos);
-            url_fseek(bc, nut->written_packet_size + nut->packet_start[2], SEEK_SET);
+            url_fseek(bc, nut->written_packet_size, SEEK_CUR);
             break;
         case INFO_STARTCODE:
             if(decode_info_header(nut)<0)
@@ -1357,7 +1360,7 @@ av_log(s, AV_LOG_DEBUG, "read_timestamp(X,%d,%lld,%lld)\n", stream_index, *pos_a
         case INFO_STARTCODE:
             get_packetheader(nut, bc, 0);
             assert(nut->packet_start[2]==pos);
-            url_fseek(bc, nut->written_packet_size + pos, SEEK_SET);
+            url_fseek(bc, nut->written_packet_size, SEEK_CUR);
             break;
         case KEYFRAME_STARTCODE:
             frame_type=2;
diff --git a/tests/libav.regression.ref b/tests/libav.regression.ref
index 3434385..0c18b45 100644
--- a/tests/libav.regression.ref
+++ b/tests/libav.regression.ref
@@ -25,7 +25,7 @@ c85c98bb1c9a5fe833eed5d23fbf8499 *./data/b-libav.ffm
 55d26d5f682f75fa57a5c126056c4c31 *./data/b-libav.mov
 369865 ./data/b-libav.mov
 ./data/b-libav.mov CRC=48f5a90d
-7c1a4d31acaaeaf172f59367e927f72c *./data/b-libav.nut
+b66c53a5283f1a28637a617512ba0805 *./data/b-libav.nut
 332358 ./data/b-libav.nut
 ./data/b-libav.nut CRC=ccab3a27
 b466c970d54eb254ad0f954b08535634 *./data/b-libav.dv

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list