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