static void finish_chunk(AVFormatContext *s) { WtvContext *wctx = s->priv_data; finish_chunk_noindex(s); if (wctx->nb_index == MAX_NB_INDEX) write_index(s); }
static void write_index(AVFormatContext *s) { AVIOContext *pb = s->pb; WtvContext *wctx = s->priv_data; int i; write_chunk_header2(s, &index_guid, 0x80000000); avio_wl32(pb, 0); avio_wl32(pb, 0); for (i = 0; i < wctx->nb_index; i++) { WtvChunkEntry *t = wctx->index + i; ff_put_guid(pb, t->guid); avio_wl64(pb, t->pos); avio_wl32(pb, t->stream_id); avio_wl32(pb, 0); // checksum? avio_wl64(pb, t->serial); } wctx->nb_index = 0; // reset index finish_chunk_noindex(s); }