summaryrefslogtreecommitdiffstats
path: root/gst/avi/gstavimux.h
diff options
context:
space:
mode:
authorMark Nauwelaerts <manauw@skynet.be>2006-04-27 14:51:06 +0000
committerTim-Philipp Müller <tim@centricular.net>2006-04-27 14:51:06 +0000
commitd1cdfa6d3c0950bf95ad25697e4a38586a4eab83 (patch)
tree383baa172c1160cb0abe1e4a50bf10728703414d /gst/avi/gstavimux.h
parent422c6fcc0cfc274feef4696747e92fd7f8552811 (diff)
gst/avi/: Port AVI muxer to GStreamer-0.10 (#332031).
Original commit message from CVS: Patch by: Mark Nauwelaerts <manauw at skynet dot be> * gst/avi/Makefile.am: * gst/avi/gstavi.c: (plugin_init): * gst/avi/gstavimux.c: (gst_avi_mux_get_type), (gst_avi_mux_base_init), (gst_avi_mux_finalize), (gst_avi_mux_class_init), (gst_avi_mux_init), (gst_avi_mux_vidsink_set_caps), (gst_avi_mux_audsink_set_caps), (gst_avi_mux_pad_link), (gst_avi_mux_pad_unlink), (gst_avi_mux_request_new_pad), (gst_avi_mux_release_pad), (gst_avi_mux_write_tag), (gst_avi_mux_riff_get_avi_header), (gst_avi_mux_riff_get_avix_header), (gst_avi_mux_riff_get_video_header), (gst_avi_mux_riff_get_audio_header), (gst_avi_mux_add_index), (gst_avi_mux_write_index), (gst_avi_mux_bigfile), (gst_avi_mux_start_file), (gst_avi_mux_stop_file), (gst_avi_mux_restart_file), (gst_avi_mux_handle_event), (gst_avi_mux_fill_queue), (gst_avi_mux_send_pad_data), (gst_avi_mux_strip_buffer), (gst_avi_mux_do_audio_buffer), (gst_avi_mux_do_video_buffer), (gst_avi_mux_do_one_buffer), (gst_avi_mux_loop), (gst_avi_mux_collect_pads), (gst_avi_mux_get_property), (gst_avi_mux_set_property), (gst_avi_mux_change_state): * gst/avi/gstavimux.h: Port AVI muxer to GStreamer-0.10 (#332031). * tests/check/Makefile.am: * tests/check/elements/avimux.c: * tests/check/elements/.cvsignore: Add unit test for AVI muxer.
Diffstat (limited to 'gst/avi/gstavimux.h')
-rw-r--r--gst/avi/gstavimux.h57
1 files changed, 26 insertions, 31 deletions
diff --git a/gst/avi/gstavimux.h b/gst/avi/gstavimux.h
index d814941d..68566991 100644
--- a/gst/avi/gstavimux.h
+++ b/gst/avi/gstavimux.h
@@ -18,30 +18,27 @@
*/
-#ifndef __GST_AVIMUX_H__
-#define __GST_AVIMUX_H__
+#ifndef __GST_AVI_MUX_H__
+#define __GST_AVI_MUX_H__
#include <gst/gst.h>
+#include <gst/base/gstcollectpads.h>
#include <gst/riff/riff-ids.h>
#include "avi-ids.h"
+G_BEGIN_DECLS
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#define GST_TYPE_AVIMUX \
- (gst_avimux_get_type())
-#define GST_AVIMUX(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVIMUX,GstAviMux))
-#define GST_AVIMUX_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVIMUX,GstAviMux))
-#define GST_IS_AVIMUX(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVIMUX))
-#define GST_IS_AVIMUX_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVIMUX))
+#define GST_TYPE_AVI_MUX \
+ (gst_avi_mux_get_type())
+#define GST_AVI_MUX(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVI_MUX,GstAviMux))
+#define GST_AVI_MUX_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVI_MUX,GstAviMuxClass))
+#define GST_IS_AVI_MUX(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVI_MUX))
+#define GST_IS_AVI_MUX_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_MUX))
typedef struct _GstAviMux GstAviMux;
@@ -51,11 +48,13 @@ struct _GstAviMux {
GstElement element;
/* pads */
- GstPad *srcpad;
- GstPad *audiosinkpad;
- gboolean audio_pad_connected, audio_pad_eos;
- GstPad *videosinkpad;
- gboolean video_pad_connected, video_pad_eos;
+ GstPad *srcpad;
+ GstCollectData *audiocollectdata;
+ gboolean audio_pad_connected;
+ GstCollectData *videocollectdata;
+ gboolean video_pad_connected;
+ GstCollectPads *collect;
+ GstPadEventFunction collect_event;
/* the AVI header */
gst_riff_avih avi_hdr;
@@ -79,6 +78,8 @@ struct _GstAviMux {
/* tags */
GstTagList *tags;
+ GstTagList *tags_snap;
+ guint32 tag_size;
/* information about the AVI index ('idx') */
gst_riff_index_entry *idx;
@@ -91,21 +92,15 @@ struct _GstAviMux {
/* whether to use "large AVI files" or just stick to small indexed files */
gboolean enable_large_avi;
-
- /* in order to be usable as a loopbased element, we need an internal
- * 'buffered' buffer for each pad, so one for audio, one for video */
- GstBuffer *audio_buffer_queue, *video_buffer_queue;
};
struct _GstAviMuxClass {
GstElementClass parent_class;
};
-GType gst_avimux_get_type(void);
+GType gst_avi_mux_get_type(void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
-#endif /* __GST_AVIMUX_H__ */
+#endif /* __GST_AVI_MUX_H__ */