summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavidemux.h
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-05-26 21:59:22 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-05-26 21:59:22 +0000
commit91a716f915e94b43ea4cb88a81b1308906940d45 (patch)
tree374291fcb2ff64c8d6fe5e716172ac04cd57434f /gst/avi/gstavidemux.h
parente9ddec5f6863d23b99adef4912f23776075b0a05 (diff)
- Changed plugins for new APIs
Original commit message from CVS: - Changed plugins for new APIs - modularized audiofile. - added seeking, query and convert functions for mad, mpeg2dec, avidemux, mpegdemux, mpegparse - sync updates to oss. removed the ossclock for now
Diffstat (limited to 'gst/avi/gstavidemux.h')
-rw-r--r--gst/avi/gstavidemux.h87
1 files changed, 49 insertions, 38 deletions
diff --git a/gst/avi/gstavidemux.h b/gst/avi/gstavidemux.h
index 1a8088b6..3667a205 100644
--- a/gst/avi/gstavidemux.h
+++ b/gst/avi/gstavidemux.h
@@ -43,60 +43,71 @@ extern "C" {
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_DEMUX))
-#define GST_AVI_DEMUX_UNKNOWN 0 /* initialized state */
-#define GST_AVI_DEMUX_REGULAR 1 /* regular parsing */
-#define GST_AVI_DEMUX_HDRL 2
-#define GST_AVI_DEMUX_STRL 3
-#define GST_AVI_DEMUX_MOVI 4
-#define GST_AVI_DEMUX_AVIH 5
-#define GST_AVI_DEMUX_STRH_VIDS 6
-#define GST_AVI_DEMUX_STRH_AUDS 7
-#define GST_AVI_DEMUX_STRH_IAVS 8
-
-#define GST_AVI_DEMUX_MAX_AUDIO_PADS 8
-#define GST_AVI_DEMUX_MAX_VIDEO_PADS 8
+#define GST_AVI_DEMUX_MAX_STREAMS 16
+
+#define CHUNKID_TO_STREAMNR(chunkid) \
+ (((GUINT32_FROM_BE (chunkid) >> 24) - '0') * 10 + \
+ ((GUINT32_FROM_BE (chunkid) >> 16) & 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;
+} gst_avi_index_entry;
+
+typedef struct
+{
+ GstPad *pad;
+ gint num;
+ gst_riff_strh strh;
+ guint64 next_ts;
+ guint32 current_frame;
+ guint32 current_byte;
+ guint64 delay;
+ gboolean need_flush;
+
+ guint64 total_bytes;
+ gint32 total_frames;
+
+ guint32 skip;
+
+} avi_stream_context;
+
struct _GstAviDemux {
- GstElement element;
+ GstElement element;
/* pads */
- GstPad *sinkpad,*srcpad;
+ GstPad *sinkpad, *srcpad;
/* AVI decoding state */
- gint state;
- guint32 fcc_type;
+ guint32 fcc_type;
GstByteStream *bs;
- gint frame_rate;
-
- gst_riff_index_entry *index_entries;
- gulong index_size;
- gulong index_offset;
- gulong resync_offset;
-
- guint64 next_time;
- guint64 time_interval;
- gulong tot_frames;
- gulong current_frame;
+ gst_avi_index_entry *index_entries;
+ gulong index_size;
+ gulong index_offset;
- guint32 flags;
- guint32 init_audio;
- guint32 audio_rate;
+ gst_riff_avih avih;
- guint num_audio_pads;
- guint num_video_pads;
- guint num_iavs_pads;
- GstPad *audio_pad[GST_AVI_DEMUX_MAX_AUDIO_PADS];
- gboolean audio_need_flush[GST_AVI_DEMUX_MAX_AUDIO_PADS];
+ guint num_streams;
+ guint num_v_streams;
+ guint num_a_streams;
- GstPad *video_pad[GST_AVI_DEMUX_MAX_VIDEO_PADS];
- gboolean video_need_flush[GST_AVI_DEMUX_MAX_VIDEO_PADS];
+ avi_stream_context stream[GST_AVI_DEMUX_MAX_STREAMS];
- gpointer extra_data;
+ gboolean seek_pending;
+ gint64 seek_offset;
+ guint64 last_seek;
};
struct _GstAviDemuxClass {