1 #include "funcprotos.h"
4 void quicktime_delete_movi(quicktime_t *file, quicktime_movi_t *movi)
7 for(i = 0; i < file->moov.total_tracks; i++)
9 if(movi->ix[i]) quicktime_delete_ix(movi->ix[i]);
13 void quicktime_init_movi(quicktime_t *file, quicktime_riff_t *riff)
16 quicktime_riff_t *first_riff = file->riff[0];
17 quicktime_movi_t *movi = &riff->movi;
19 quicktime_atom_write_header(file, &movi->atom, "LIST");
20 quicktime_write_char32(file, "movi");
22 // Initialize partial indexes and relative positions for ix entries
23 for(i = 0; i < file->moov.total_tracks; i++)
25 quicktime_strl_t *strl = first_riff->hdrl.strl[i];
26 quicktime_trak_t *trak = file->moov.trak[i];
27 movi->ix[i] = quicktime_new_ix(file, trak, strl);
31 void quicktime_read_movi(quicktime_t *file,
32 quicktime_atom_t *parent_atom,
33 quicktime_movi_t *movi)
35 movi->atom.size = parent_atom->size;
36 // Relative to start of the movi string
37 movi->atom.start = parent_atom->start + 8;
38 quicktime_atom_skip(file, parent_atom);
41 void quicktime_finalize_movi(quicktime_t *file, quicktime_movi_t *movi)
44 // Pad movi to get an even number of bytes
45 char temp[2] = { 0, 0 };
46 quicktime_write_data(file,
48 (quicktime_position(file) - movi->atom.start) % 2);
50 for(i = 0; i < file->moov.total_tracks; i++)
52 quicktime_ix_t *ix = movi->ix[i];
53 // Write partial indexes and update super index
54 quicktime_write_ix(file, ix, i);
57 quicktime_atom_write_footer(file, &movi->atom);