diff options
Diffstat (limited to 'gst/avi/gstavidemux.h')
-rw-r--r-- | gst/avi/gstavidemux.h | 122 |
1 files changed, 59 insertions, 63 deletions
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h index a9334283..15eec1f3 100644 --- a/gst/avi/gstavidemux.h +++ b/gst/avi/gstavidemux.h @@ -17,30 +17,26 @@ * Boston, MA 02111-1307, USA. */ - #ifndef __GST_AVI_DEMUX_H__ #define __GST_AVI_DEMUX_H__ - #include <gst/gst.h> -#include <gst/bytestream/bytestream.h> -#include <gst/riff/riff.h> -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ +#include "gst/riff/riff-ids.h" +#include "gst/riff/riff-read.h" + +G_BEGIN_DECLS #define GST_TYPE_AVI_DEMUX \ - (gst_avi_demux_get_type()) + (gst_avi_demux_get_type ()) #define GST_AVI_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVI_DEMUX,GstAviDemux)) + (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_AVI_DEMUX, GstAviDemux)) #define GST_AVI_DEMUX_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVI_DEMUX,GstAviDemux)) + (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_AVI_DEMUX, GstAviDemux)) #define GST_IS_AVI_DEMUX(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVI_DEMUX)) + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_AVI_DEMUX)) #define GST_IS_AVI_DEMUX_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_DEMUX)) - + (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_AVI_DEMUX)) #define GST_AVI_DEMUX_MAX_STREAMS 16 @@ -48,85 +44,85 @@ extern "C" { ((((chunkid) & 0xff) - '0') * 10 + \ (((chunkid) >> 8) & 0xff) - '0') -typedef struct _GstAviDemux GstAviDemux; -typedef struct _GstAviDemuxClass GstAviDemuxClass; - -typedef struct -{ - gint index_nr; - gint stream_nr; - guint64 ts; - guint32 flags; - guint32 offset; - gint size; - guint64 bytes_before; - guint32 frames_before; +typedef struct { + gint index_nr; + gint stream_nr; + guint64 ts; + guint32 flags; + guint32 offset; + gint size; + guint64 bytes_before; + guint32 frames_before; } gst_avi_index_entry; -typedef struct -{ - GstPad *pad; - gint num; - gst_riff_strh strh; - guint32 current_frame; - guint32 current_byte; - guint64 delay; - gboolean need_flush; - guint64 end_pos; +typedef struct { + /* index of this streamcontext */ + guint num; + + /* pad, strh */ + GstPad *pad; + gst_riff_strh *strh; - guint64 total_bytes; - guint32 total_frames; + /* current position (byte, frame, time) */ + guint current_frame; + guint64 current_byte; + gint current_entry; - guint32 skip; + /* delay in time (init_frames) */ + guint64 delay; + /* stream length */ + guint64 total_bytes; + guint32 total_frames; + + guint32 skip; } avi_stream_context; -typedef enum -{ +typedef enum { GST_AVI_DEMUX_START, GST_AVI_DEMUX_HEADER, GST_AVI_DEMUX_MOVI, } GstAviDemuxState; -struct _GstAviDemux { - GstElement element; +typedef struct _GstAviDemux { + GstRiffRead parent; /* pads */ - GstPad *sinkpad, *srcpad; + GstPad *sinkpad; /* AVI decoding state */ - guint32 fcc_type; GstAviDemuxState state; + guint level_up; - GstByteStream *bs; - + /* index */ gst_avi_index_entry *index_entries; - gulong index_size; - gulong index_offset; - - gst_riff_avih avih; + guint index_size; + guint64 index_offset; + /* streams */ guint num_streams; guint num_v_streams; guint num_a_streams; avi_stream_context stream[GST_AVI_DEMUX_MAX_STREAMS]; - gboolean seek_pending; - gint64 seek_offset; - guint64 last_seek; + /* some stream info for length */ + guint32 us_per_frame; + guint32 num_frames; - GstCaps *metadata, *streaminfo; -}; + /* seeking */ + guint64 seek_offset; + guint64 last_seek; -struct _GstAviDemuxClass { - GstElementClass parent_class; -}; + /* info */ + GstCaps *streaminfo; +} GstAviDemux; -GType gst_avi_demux_get_type (void); +typedef struct _GstAviDemuxClass { + GstRiffReadClass parent_class; +} GstAviDemuxClass; -#ifdef __cplusplus -} -#endif /* __cplusplus */ +GType gst_avi_demux_get_type (void); +G_END_DECLS #endif /* __GST_AVI_DEMUX_H__ */ |