1 #ifndef AVI_AVI_H_
2 #define AVI_AVI_H_
3 
4 #ifndef GFX_PALETTE_H_
5 struct palette_t;  /* forward decl to reduce deps */
6 #endif
7 
8 /* Information and statistics */
9 typedef struct avi_info_t
10 {
11     uint64_t start_time;
12     double  time_scale;
13     int     active;
14     int     total_audio;
15     uint32_t max_size_frame;
16     uint32_t max_size_audio;
17     int     advance_audio_frames;
18     int     frames_per_sec;
19     int     usec_per_frame;
20     int     audio_rate;
21     int     total_frames;
22     int     key_frames;
23     int     compress;
24 } avi_info_t;
25 
26 typedef struct avi_writer_t
27 {
28     struct avi_pvt_t *pvt;
29     void             *pvt_alloc;
30 } avi_writer_t;
31 
32 // This sets the frame rate scaling.  It's separate from starting a video
33 // as it's a global parameter for now.
34 void avi_set_time_scale
35 (
36     const double        time_scale,
37     const double        incoming_audio_time_scane
38 );
39 
40 int avi_start_video
41 (
42     avi_writer_t *const avi,
43     FILE         *const avi_file,
44     const int           fps,
45     const int           audio_rate,
46     const int           compress,
47     const uint64_t      start_time
48 );
49 
50 void avi_set_palette
51 (
52     const avi_writer_t     *const avi,
53     const struct palette_t *const palette,
54     const int                     length,
55     const int                     offset
56 );
57 
58 void avi_record_audio
59 (
60     const avi_writer_t *const avi,
61     const int16_t      *const audio_data,
62     const int                 num_samples,
63     const int                 silent
64 );
65 
66 void avi_record_video
67 (
68     const avi_writer_t *const avi,
69     const uint8_t      *const image,
70     const uint8_t             border
71 );
72 
73 void avi_end_video(const avi_writer_t *const avi);
74 int  avi_is_active(const avi_writer_t *const avi);
75 uint64_t avi_start_time(const avi_writer_t *const avi);
76 
77 const avi_info_t *avi_info( const avi_writer_t *const avi );
78 
79 #endif
80