diff options
author | Mark Nauwelaerts <manauw@skynet.be> | 2006-05-22 13:53:18 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2006-05-22 13:53:18 +0000 |
commit | 3de9d58348fc1723c172dfdbbdcf02e76dc2d293 (patch) | |
tree | 9594089779bd8d200448ad6cfb96bf5859a3c91f /gst/avi/gstavimux.h | |
parent | c3fac626119a90ff82ce86686aa8781ada87a827 (diff) |
gst/avi/gstavimux.*: - add odml (large file) index support
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at skynet be>
* gst/avi/gstavimux.c: (gst_avi_mux_finalize), (gst_avi_mux_init),
(gst_avi_mux_vidsink_set_caps), (gst_avi_mux_audsink_set_caps),
(gst_avi_mux_write_tag), (gst_avi_mux_riff_get_avi_header),
(gst_avi_mux_riff_get_avix_header), (gst_avi_mux_write_avix_index),
(gst_avi_mux_add_index), (gst_avi_mux_bigfile),
(gst_avi_mux_start_file), (gst_avi_mux_stop_file),
(gst_avi_mux_handle_event), (gst_avi_mux_do_audio_buffer),
(gst_avi_mux_do_video_buffer), (gst_avi_mux_do_one_buffer),
(gst_avi_mux_change_state):
* gst/avi/gstavimux.h:
Some enhancements for avimux (#342526):
- add odml (large file) index support
- store codec init data (e.g. huffyuv)
- miscellaneous other fixes/cleanups
Diffstat (limited to 'gst/avi/gstavimux.h')
-rw-r--r-- | gst/avi/gstavimux.h | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/gst/avi/gstavimux.h b/gst/avi/gstavimux.h index 68566991..38866df8 100644 --- a/gst/avi/gstavimux.h +++ b/gst/avi/gstavimux.h @@ -40,6 +40,18 @@ G_BEGIN_DECLS #define GST_IS_AVI_MUX_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_MUX)) +#define GST_AVI_INDEX_OF_INDEXES 0 +#define GST_AVI_INDEX_OF_CHUNKS 1 + +/* this allows indexing up to 64GB avi file */ +#define GST_AVI_SUPERINDEX_COUNT 32 + +typedef struct _gst_avi_superindex_entry { + guint64 offset; + guint32 size; + guint32 duration; +} gst_avi_superindex_entry; + typedef struct _GstAviMux GstAviMux; typedef struct _GstAviMuxClass GstAviMuxClass; @@ -58,10 +70,16 @@ struct _GstAviMux { /* the AVI header */ gst_riff_avih avi_hdr; - guint32 total_frames; /* total number of frames */ - guint64 total_data; /* amount of total data */ - guint32 data_size, datax_size; /* amount of data (bytes) in the AVI/AVIX block */ - guint32 num_frames, numx_frames; /* num frames in the AVI/AVIX block */ + /* total number of (video) frames */ + guint32 total_frames; + /* amount of total data (bytes) */ + guint64 total_data; + /* amount of data (bytes) in the AVI/AVIX block; + * actually the movi list, so counted from and including the movi tag */ + guint32 data_size, datax_size; + /* num (video) frames in the AVI/AVIX block */ + guint32 num_frames, numx_frames; + /* size of hdrl list, including tag as usual */ guint32 header_size; gboolean write_header; gboolean restart; @@ -71,6 +89,7 @@ struct _GstAviMux { /* video header */ gst_riff_strh vids_hdr; gst_riff_strf_vids vids; + GstBuffer *vids_codec_data; /* audio header */ gst_riff_strh auds_hdr; @@ -84,7 +103,15 @@ struct _GstAviMux { /* information about the AVI index ('idx') */ gst_riff_index_entry *idx; gint idx_index, idx_count; - guint32 idx_offset, idx_size; + /* offset of *chunk* (relative to a base offset); entered in the index */ + guint32 idx_offset; + /* size of idx1 chunk (including! chunk header and size bytes) */ + guint32 idx_size; + + /* odml super indexes */ + gst_avi_superindex_entry *vids_idx; + gst_avi_superindex_entry *auds_idx; + gint vids_idx_index, auds_idx_index; /* are we a big file already? */ gboolean is_bigfile; |