28 #include "libavutil/intreadwrite.h"
29 #include "libavutil/avassert.h"
35 #define WTV_BIGSECTOR_SIZE (1 << WTV_BIGSECTOR_BITS)
36 #define INDEX_BASE 0x2
37 #define MAX_NB_INDEX 10
50 {
'l'_'e'_'g'_'a'_'c'_'y'_'_'_'a'_'t'_'t'_'r'_'i'_'b', 0};
54 {0x8C,0xC3,0xD2,0xC2,0x7E,0x9A,0xDA,0x11,0x8B,0xF7,0x00,0x07,0xE9,0x5E,0xAD,0x8D};
113 int new_count = *count + 1;
132 for (; size > 0; size--)
141 if (
id == av_guid[i].
id)
142 return &(av_guid[i].
guid);
189 avio_seek(pb, -(chunk_len - 16), SEEK_CUR);
191 avio_seek(pb, chunk_len - (16 + 4), SEEK_CUR);
207 for (i = 0; i < wctx->
nb_index; i++) {
233 unsigned int num, den;
234 av_reduce(&num, &den, dar.num, dar.den, 0xFFFFFFFF);
249 avio_wl64(pb, st->avg_frame_rate.num && st->avg_frame_rate.den ? INT64_C(10000000) /
av_q2d(st->avg_frame_rate) : 0);
263 avio_wl32(pb, st->codec->extradata_size);
267 avio_write(pb, st->codec->extradata, st->codec->extradata_size);
276 int64_t hdr_pos_start;
309 hdr_size =
avio_tell(pb) - hdr_pos_start;
312 avio_seek(pb, -(hdr_size + 4), SEEK_CUR);
569 avio_wl64(pb, len |(1ULL<<62) | (1ULL<<60));
588 for (i = 0; i < nb_sectors; i++) {
589 avio_wl32(pb, start_sector + (i << shift));
649 return 16 + 4 + 4 + strlen(key)*2 + 2;
666 return strlen(
"image/jpeg")*2 + 2 + 1 + (e ? strlen(e->
value)*2 : 0) + 2 + 4 + pkt->
size;
730 int sector_bits, nb_sectors, pad;
734 w->
length = (end_pos - start_pos);
758 nb_sectors = (int)(w->
length >> sector_bits);
761 pad = (1 << sector_bits) - (w->
length % (1 << sector_bits));
787 int64_t start_pos, file_end_pos;