]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
more correct packet alignment check and correction
authormichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 22 Jan 2007 12:52:49 +0000 (12:52 +0000)
committermichael <michael@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 22 Jan 2007 12:52:49 +0000 (12:52 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@7648 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/asf.c

index bd4b8e1ce1bf897927bdf354a95488f41ef6ab5a..22cf374f0ab490c8945032297456fbfd4bb314f0 100644 (file)
@@ -474,8 +474,6 @@ static int asf_get_packet(AVFormatContext *s)
     int rsize = 9;
     int c;
 
-    assert((url_ftell(&s->pb) - s->data_offset) % asf->packet_size == 0);
-
     c = get_byte(pb);
     if (c != 0x82) {
         if (!url_feof(pb))
@@ -545,11 +543,16 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt)
             //asf->packet_size_left <= asf->packet_padsize) {
             int ret = asf->packet_size_left + asf->packet_padsize;
             //printf("PacketLeftSize:%d  Pad:%d Pos:%"PRId64"\n", asf->packet_size_left, asf->packet_padsize, url_ftell(pb));
-            if((url_ftell(&s->pb) + ret - s->data_offset) % asf->packet_size)
-                ret += asf->packet_size - ((url_ftell(&s->pb) + ret - s->data_offset) % asf->packet_size);
             assert(ret>=0);
             /* fail safe */
             url_fskip(pb, ret);
+
+            ret= (url_ftell(&s->pb) - s->data_offset) % asf->packet_size;
+            if(asf->hdr.max_pktsize == asf->hdr.min_pktsize && ret){
+                av_log(s, AV_LOG_ERROR, "packet end missaligned skiping %d\n", ret);
+                url_fskip(pb, asf->packet_size - ret);
+            }
+
             asf->packet_pos= url_ftell(&s->pb);
             if (asf->data_object_size != (uint64_t)-1 &&
                 (asf->packet_pos - asf->data_object_offset >= asf->data_object_size))