00001 #include "funcprotos.h"
00002 #include "quicktime.h"
00003
00004 void quicktime_delete_movi(quicktime_t *file, quicktime_movi_t *movi)
00005 {
00006 int i;
00007 for(i = 0; i < file->moov.total_tracks; i++)
00008 {
00009 if(movi->ix[i]) quicktime_delete_ix(movi->ix[i]);
00010 }
00011 }
00012
00013 void quicktime_init_movi(quicktime_t *file, quicktime_riff_t *riff)
00014 {
00015 int i;
00016 quicktime_riff_t *first_riff = file->riff[0];
00017 quicktime_movi_t *movi = &riff->movi;
00018
00019 quicktime_atom_write_header(file, &movi->atom, "LIST");
00020 quicktime_write_char32(file, "movi");
00021
00022
00023 for(i = 0; i < file->moov.total_tracks; i++)
00024 {
00025 quicktime_strl_t *strl = first_riff->hdrl.strl[i];
00026 quicktime_trak_t *trak = file->moov.trak[i];
00027 quicktime_ix_t *ix =
00028 movi->ix[i] =
00029 quicktime_new_ix(file, trak, strl);
00030 }
00031 }
00032
00033 void quicktime_read_movi(quicktime_t *file,
00034 quicktime_atom_t *parent_atom,
00035 quicktime_movi_t *movi)
00036 {
00037 movi->atom.size = parent_atom->size;
00038
00039 movi->atom.start = parent_atom->start + 8;
00040 quicktime_atom_skip(file, parent_atom);
00041 }
00042
00043 void quicktime_finalize_movi(quicktime_t *file, quicktime_movi_t *movi)
00044 {
00045 int i;
00046
00047 char temp[2] = { 0, 0 };
00048 quicktime_write_data(file,
00049 temp,
00050 (quicktime_position(file) - movi->atom.start) % 2);
00051
00052 for(i = 0; i < file->moov.total_tracks; i++)
00053 {
00054 quicktime_ix_t *ix = movi->ix[i];
00055
00056 quicktime_write_ix(file, ix, i);
00057 }
00058
00059 quicktime_atom_write_footer(file, &movi->atom);
00060 }
00061
00062
00063
00064
00065
00066