comparison asf.h @ 1206:e60bf67d9bf8 libavformat

The reader ignores the size of the ASF data object and keeps on reading even beyond it. Therefore if the ASF file includes an index object at its end, the reader will treat the index like data, but of course will fail since it thinks that the data is corrupted. When reading an asf file with an index object, ffmpeg will complain at the end of the file that it read an invalid header. Patch by Kohn Emil Dan, < emild A cs P technion P ac P il > Original thead: Date: Apr 18, 2006 4:11 PM Subject: [Ffmpeg-devel] Two ASF related bugs and fixes
author gpoirier
date Sat, 29 Jul 2006 16:07:19 +0000
parents 5d3dc3a6bbe7
children 5b9729f5145c
comparison
equal deleted inserted replaced
1205:eded59682d47 1206:e60bf67d9bf8
30 int ds_packet_size; 30 int ds_packet_size;
31 int ds_chunk_size; 31 int ds_chunk_size;
32 int ds_data_size; 32 int ds_data_size;
33 int ds_silence_data; 33 int ds_silence_data;
34 34
35 int packet_pos; 35 int64_t packet_pos;
36 36
37 } ASFStream; 37 } ASFStream;
38 38
39 typedef struct { 39 typedef struct {
40 uint32_t v1; 40 uint32_t v1;
96 int packet_nb_frames; 96 int packet_nb_frames;
97 uint8_t packet_buf[PACKET_SIZE]; 97 uint8_t packet_buf[PACKET_SIZE];
98 ByteIOContext pb; 98 ByteIOContext pb;
99 /* only for reading */ 99 /* only for reading */
100 uint64_t data_offset; /* begining of the first data packet */ 100 uint64_t data_offset; /* begining of the first data packet */
101 uint64_t data_object_offset; /* data object offset (excl. GUID & size)*/
102 uint64_t data_object_size; /* size of the data object */
101 103
102 ASFMainHeader hdr; 104 ASFMainHeader hdr;
103 105
104 int packet_flags; 106 int packet_flags;
105 int packet_property; 107 int packet_property;
115 int packet_frag_timestamp; 117 int packet_frag_timestamp;
116 int packet_multi_size; 118 int packet_multi_size;
117 int packet_obj_size; 119 int packet_obj_size;
118 int packet_time_delta; 120 int packet_time_delta;
119 int packet_time_start; 121 int packet_time_start;
120 int packet_pos; 122 int64_t packet_pos;
121 123
122 int stream_index; 124 int stream_index;
123 125
124 126
125 int64_t last_indexed_pts; 127 int64_t last_indexed_pts;