allow ffmpeg video to resample curr_pos, add bluray format
[goodguy/history.git] / cinelerra-5.0 / quicktime / avi_movi.c
1 #include "funcprotos.h"
2 #include "quicktime.h"
3
4 void quicktime_delete_movi(quicktime_t *file, quicktime_movi_t *movi)
5 {
6         int i;
7         for(i = 0; i < file->moov.total_tracks; i++)
8         {
9                 if(movi->ix[i]) quicktime_delete_ix(movi->ix[i]);
10         }
11 }
12
13 void quicktime_init_movi(quicktime_t *file, quicktime_riff_t *riff)
14 {
15         int i;
16         quicktime_riff_t *first_riff = file->riff[0];
17         quicktime_movi_t *movi = &riff->movi;
18
19         quicktime_atom_write_header(file, &movi->atom, "LIST");
20         quicktime_write_char32(file, "movi");
21
22 // Initialize partial indexes and relative positions for ix entries
23         for(i = 0; i < file->moov.total_tracks; i++)
24         {
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);
28         }
29 }
30
31 void quicktime_read_movi(quicktime_t *file, 
32         quicktime_atom_t *parent_atom,
33         quicktime_movi_t *movi)
34 {
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);
39 }
40
41 void quicktime_finalize_movi(quicktime_t *file, quicktime_movi_t *movi)
42 {
43         int i;
44 // Pad movi to get an even number of bytes
45         char temp[2] = { 0, 0 };
46         quicktime_write_data(file, 
47                 temp, 
48                 (quicktime_position(file) - movi->atom.start) % 2);
49
50         for(i = 0; i < file->moov.total_tracks; i++)
51         {
52                 quicktime_ix_t *ix = movi->ix[i];
53 // Write partial indexes and update super index
54                 quicktime_write_ix(file, ix, i);
55         }
56
57         quicktime_atom_write_footer(file, &movi->atom);
58 }
59
60
61
62
63
64