static void avi_writer_write_header_list(AviWriter *self) { avi_writer_push_list(self, "hdrl"); avi_writer_write_main_header(self); avi_writer_push_list(self, "strl"); avi_writer_write_stream_header(self); avi_writer_write_stream_format(self); avi_writer_pop_chunk(self); avi_writer_pop_chunk(self); }
AviWriter* avi_writer_new(FILE *file, guint width, guint height, float frame_rate) { AviWriter *self = AVI_WRITER(g_object_new(avi_writer_get_type(), NULL)); self->file = file; self->width = width; self->height = height; self->frame_rate = frame_rate; /* Write out everything we need to before the movie data can start... */ avi_writer_push_header(self, "AVI "); avi_writer_write_header_list(self); avi_writer_push_list(self, "movi"); /* Right here, at the beginning of the 'movi' list, is where index * offsets are measured from. */ self->index_queue = g_queue_new(); self->index_origin_offset = ftell(self->file); return self; }