diff options
Diffstat (limited to 'gst/matroska')
-rw-r--r-- | gst/matroska/ebml-ids.h | 8 | ||||
-rw-r--r-- | gst/matroska/ebml-read.h | 68 | ||||
-rw-r--r-- | gst/matroska/ebml-write.h | 72 | ||||
-rw-r--r-- | gst/matroska/matroska-demux.h | 61 | ||||
-rw-r--r-- | gst/matroska/matroska-ids.h | 92 | ||||
-rw-r--r-- | gst/matroska/matroska-mux.h | 51 |
6 files changed, 200 insertions, 152 deletions
diff --git a/gst/matroska/ebml-ids.h b/gst/matroska/ebml-ids.h index eb396b23..329f036c 100644 --- a/gst/matroska/ebml-ids.h +++ b/gst/matroska/ebml-ids.h @@ -23,10 +23,13 @@ #define __GST_EBML_IDS_H__ G_BEGIN_DECLS + /* EBML version supported */ #define GST_EBML_VERSION 1 + /* top-level master-IDs */ #define GST_EBML_ID_HEADER 0x1A45DFA3 + /* IDs in the HEADER master */ #define GST_EBML_ID_EBMLVERSION 0x4286 #define GST_EBML_ID_EBMLREADVERSION 0x42F7 @@ -35,7 +38,10 @@ G_BEGIN_DECLS #define GST_EBML_ID_DOCTYPE 0x4282 #define GST_EBML_ID_DOCTYPEVERSION 0x4287 #define GST_EBML_ID_DOCTYPEREADVERSION 0x4285 + /* general EBML types */ #define GST_EBML_ID_VOID 0xEC - G_END_DECLS + +G_END_DECLS + #endif /* __GST_EBML_IDS_H__ */ diff --git a/gst/matroska/ebml-read.h b/gst/matroska/ebml-read.h index c7a981dc..d78d13ce 100644 --- a/gst/matroska/ebml-read.h +++ b/gst/matroska/ebml-read.h @@ -27,6 +27,7 @@ #include <gst/bytestream/bytestream.h> G_BEGIN_DECLS + #define GST_TYPE_EBML_READ \ (gst_ebml_read_get_type ()) #define GST_EBML_READ(obj) \ @@ -39,13 +40,13 @@ G_BEGIN_DECLS (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_EBML_READ)) #define GST_EBML_READ_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_EBML_READ, GstEbmlReadClass)) - typedef struct _GstEbmlLevel -{ - guint64 start, length; + +typedef struct _GstEbmlLevel { + guint64 start, + length; } GstEbmlLevel; -typedef struct _GstEbmlRead -{ +typedef struct _GstEbmlRead { GstElement parent; GstPad *sinkpad; @@ -54,29 +55,48 @@ typedef struct _GstEbmlRead GList *level; } GstEbmlRead; -typedef struct _GstEbmlReadClass -{ +typedef struct _GstEbmlReadClass { GstElementClass parent; } GstEbmlReadClass; -GType gst_ebml_read_get_type (void); +GType gst_ebml_read_get_type (void); -guint32 gst_ebml_peek_id (GstEbmlRead * ebml, guint * level_up); -GstEvent *gst_ebml_read_seek (GstEbmlRead * ebml, guint64 offset); -gboolean gst_ebml_read_skip (GstEbmlRead * ebml); -gboolean gst_ebml_read_buffer (GstEbmlRead * ebml, - guint32 * id, GstBuffer ** buf); -gboolean gst_ebml_read_uint (GstEbmlRead * ebml, guint32 * id, guint64 * num); -gboolean gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num); -gboolean gst_ebml_read_float (GstEbmlRead * ebml, guint32 * id, gdouble * num); -gboolean gst_ebml_read_ascii (GstEbmlRead * ebml, guint32 * id, gchar ** str); -gboolean gst_ebml_read_utf8 (GstEbmlRead * ebml, guint32 * id, gchar ** str); -gboolean gst_ebml_read_date (GstEbmlRead * ebml, guint32 * id, gint64 * date); -gboolean gst_ebml_read_master (GstEbmlRead * ebml, guint32 * id); -gboolean gst_ebml_read_binary (GstEbmlRead * ebml, - guint32 * id, guint8 ** binary, guint64 * length); -gboolean gst_ebml_read_header (GstEbmlRead * read, - gchar ** doctype, guint * version); +guint32 gst_ebml_peek_id (GstEbmlRead *ebml, + guint *level_up); +GstEvent *gst_ebml_read_seek (GstEbmlRead *ebml, + guint64 offset); +gboolean gst_ebml_read_skip (GstEbmlRead *ebml); +gboolean gst_ebml_read_buffer (GstEbmlRead *ebml, + guint32 *id, + GstBuffer **buf); +gboolean gst_ebml_read_uint (GstEbmlRead *ebml, + guint32 *id, + guint64 *num); +gboolean gst_ebml_read_sint (GstEbmlRead *ebml, + guint32 *id, + gint64 *num); +gboolean gst_ebml_read_float (GstEbmlRead *ebml, + guint32 *id, + gdouble *num); +gboolean gst_ebml_read_ascii (GstEbmlRead *ebml, + guint32 *id, + gchar **str); +gboolean gst_ebml_read_utf8 (GstEbmlRead *ebml, + guint32 *id, + gchar **str); +gboolean gst_ebml_read_date (GstEbmlRead *ebml, + guint32 *id, + gint64 *date); +gboolean gst_ebml_read_master (GstEbmlRead *ebml, + guint32 *id); +gboolean gst_ebml_read_binary (GstEbmlRead *ebml, + guint32 *id, + guint8 **binary, + guint64 *length); +gboolean gst_ebml_read_header (GstEbmlRead *read, + gchar **doctype, + guint *version); G_END_DECLS + #endif /* __GST_EBML_READ_H__ */ diff --git a/gst/matroska/ebml-write.h b/gst/matroska/ebml-write.h index 8974ecbe..43d2f8b2 100644 --- a/gst/matroska/ebml-write.h +++ b/gst/matroska/ebml-write.h @@ -26,6 +26,7 @@ #include <gst/gst.h> G_BEGIN_DECLS + #define GST_TYPE_EBML_WRITE \ (gst_ebml_write_get_type ()) #define GST_EBML_WRITE(obj) \ @@ -38,8 +39,8 @@ G_BEGIN_DECLS (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_EBML_WRITE)) #define GST_EBML_WRITE_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_EBML_WRITE, GstEbmlWriteClass)) - typedef struct _GstEbmlWrite -{ + +typedef struct _GstEbmlWrite { GstElement parent; GstPad *srcpad; @@ -49,54 +50,77 @@ G_BEGIN_DECLS guint handled; } GstEbmlWrite; -typedef struct _GstEbmlWriteClass -{ +typedef struct _GstEbmlWriteClass { GstElementClass parent; } GstEbmlWriteClass; -GType gst_ebml_write_get_type (void); +GType gst_ebml_write_get_type (void); /* * Caching means that we do not push one buffer for * each element, but fill this one until a flush. */ -void gst_ebml_write_set_cache (GstEbmlWrite * ebml, guint size); -void gst_ebml_write_flush_cache (GstEbmlWrite * ebml); +void gst_ebml_write_set_cache (GstEbmlWrite *ebml, + guint size); +void gst_ebml_write_flush_cache (GstEbmlWrite *ebml); /* * Seeking. */ -void gst_ebml_write_seek (GstEbmlWrite * ebml, guint64 pos); +void gst_ebml_write_seek (GstEbmlWrite *ebml, + guint64 pos); /* * Data writing. */ -void gst_ebml_write_uint (GstEbmlWrite * ebml, guint32 id, guint64 num); -void gst_ebml_write_sint (GstEbmlWrite * ebml, guint32 id, gint64 num); -void gst_ebml_write_float (GstEbmlWrite * ebml, guint32 id, gdouble num); -void gst_ebml_write_ascii (GstEbmlWrite * ebml, guint32 id, const gchar * str); -void gst_ebml_write_utf8 (GstEbmlWrite * ebml, guint32 id, const gchar * str); -void gst_ebml_write_date (GstEbmlWrite * ebml, guint32 id, gint64 date); -guint64 gst_ebml_write_master_start (GstEbmlWrite * ebml, guint32 id); -void gst_ebml_write_master_finish (GstEbmlWrite * ebml, guint64 startpos); -void gst_ebml_write_binary (GstEbmlWrite * ebml, - guint32 id, guchar * binary, guint64 length); -void gst_ebml_write_header (GstEbmlWrite * ebml, - gchar * doctype, guint version); +void gst_ebml_write_uint (GstEbmlWrite *ebml, + guint32 id, + guint64 num); +void gst_ebml_write_sint (GstEbmlWrite *ebml, + guint32 id, + gint64 num); +void gst_ebml_write_float (GstEbmlWrite *ebml, + guint32 id, + gdouble num); +void gst_ebml_write_ascii (GstEbmlWrite *ebml, + guint32 id, + const gchar *str); +void gst_ebml_write_utf8 (GstEbmlWrite *ebml, + guint32 id, + const gchar *str); +void gst_ebml_write_date (GstEbmlWrite *ebml, + guint32 id, + gint64 date); +guint64 gst_ebml_write_master_start (GstEbmlWrite *ebml, + guint32 id); +void gst_ebml_write_master_finish (GstEbmlWrite *ebml, + guint64 startpos); +void gst_ebml_write_binary (GstEbmlWrite *ebml, + guint32 id, + guchar *binary, + guint64 length); +void gst_ebml_write_header (GstEbmlWrite *ebml, + gchar *doctype, + guint version); /* * Note: this is supposed to be used only for media data. */ -void gst_ebml_write_buffer_header (GstEbmlWrite * ebml, - guint32 id, guint64 length); -void gst_ebml_write_buffer (GstEbmlWrite * ebml, GstBuffer * data); +void gst_ebml_write_buffer_header (GstEbmlWrite *ebml, + guint32 id, + guint64 length); +void gst_ebml_write_buffer (GstEbmlWrite *ebml, + GstBuffer *data); /* * A hack, basically... See matroska-mux.c. I should actually * make a nice _replace_element_with_size() or so, but this * works for now. */ -void gst_ebml_replace_uint (GstEbmlWrite * ebml, guint64 pos, guint64 num); +void gst_ebml_replace_uint (GstEbmlWrite *ebml, + guint64 pos, + guint64 num); G_END_DECLS + #endif /* __GST_EBML_WRITE_H__ */ diff --git a/gst/matroska/matroska-demux.h b/gst/matroska/matroska-demux.h index 7d55a223..e393a52a 100644 --- a/gst/matroska/matroska-demux.h +++ b/gst/matroska/matroska-demux.h @@ -29,6 +29,7 @@ #include "matroska-ids.h" G_BEGIN_DECLS + #define GST_TYPE_MATROSKA_DEMUX \ (gst_matroska_demux_get_type ()) #define GST_MATROSKA_DEMUX(obj) \ @@ -39,69 +40,71 @@ G_BEGIN_DECLS (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MATROSKA_DEMUX)) #define GST_IS_MATROSKA_DEMUX_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MATROSKA_DEMUX)) -#define GST_MATROSKA_DEMUX_MAX_STREAMS 64 - typedef enum -{ + +#define GST_MATROSKA_DEMUX_MAX_STREAMS 64 + +typedef enum { GST_MATROSKA_DEMUX_STATE_START, GST_MATROSKA_DEMUX_STATE_HEADER, GST_MATROSKA_DEMUX_STATE_DATA } GstMatroskaDemuxState; -typedef struct _GstMatroskaDemuxIndex -{ - guint64 pos; /* of the corresponding *cluster*! */ - guint16 track; /* reference to 'num' */ - guint64 time; /* in nanoseconds */ +typedef struct _GstMatroskaDemuxIndex { + guint64 pos; /* of the corresponding *cluster*! */ + guint16 track; /* reference to 'num' */ + guint64 time; /* in nanoseconds */ } GstMatroskaDemuxIndex; -typedef struct _GstMatroskaDemux -{ - GstEbmlRead parent; +typedef struct _GstMatroskaDemux { + GstEbmlRead parent; /* pads */ - GstPad *sinkpad; + GstPad *sinkpad; GstMatroskaTrackContext *src[GST_MATROSKA_DEMUX_MAX_STREAMS]; - guint num_streams, num_v_streams, num_a_streams, num_t_streams; - GstClock *clock; + guint num_streams, + num_v_streams, num_a_streams, num_t_streams; + GstClock *clock; /* metadata */ - GstCaps *metadata; - GstCaps *streaminfo; - gchar *muxing_app, *writing_app; - gint64 created; + GstCaps *metadata; + GstCaps *streaminfo; + gchar *muxing_app, *writing_app; + gint64 created; /* state */ GstMatroskaDemuxState state; - guint level_up; + guint level_up; /* did we parse metadata/cues already? */ - gboolean metadata_parsed, index_parsed; + gboolean metadata_parsed, + index_parsed; /* start-of-segment */ - guint64 segment_start; + guint64 segment_start; /* a cue (index) table */ GstMatroskaIndex *index; - guint num_indexes; + guint num_indexes; /* timescale in the file */ - guint64 time_scale; + guint64 time_scale; /* length, position (time, ns) */ - guint64 duration, pos; + guint64 duration, + pos; /* a possible pending seek */ - guint64 seek_pending; + guint64 seek_pending; } GstMatroskaDemux; -typedef struct _GstMatroskaDemuxClass -{ +typedef struct _GstMatroskaDemuxClass { GstEbmlReadClass parent; } GstMatroskaDemuxClass; -GType gst_matroska_demux_get_type (void); +GType gst_matroska_demux_get_type (void); -gboolean gst_matroska_demux_plugin_init (GstPlugin * plugin); +gboolean gst_matroska_demux_plugin_init (GstPlugin *plugin); G_END_DECLS + #endif /* __GST_MATROSKA_DEMUX_H__ */ diff --git a/gst/matroska/matroska-ids.h b/gst/matroska/matroska-ids.h index eb4fb315..64f25c0f 100644 --- a/gst/matroska/matroska-ids.h +++ b/gst/matroska/matroska-ids.h @@ -148,28 +148,25 @@ * value to what it actually means). */ -typedef enum -{ - GST_MATROSKA_TRACK_TYPE_VIDEO = 0x1, - GST_MATROSKA_TRACK_TYPE_AUDIO = 0x2, - GST_MATROSKA_TRACK_TYPE_COMPLEX = 0x3, - GST_MATROSKA_TRACK_TYPE_LOGO = 0x10, +typedef enum { + GST_MATROSKA_TRACK_TYPE_VIDEO = 0x1, + GST_MATROSKA_TRACK_TYPE_AUDIO = 0x2, + GST_MATROSKA_TRACK_TYPE_COMPLEX = 0x3, + GST_MATROSKA_TRACK_TYPE_LOGO = 0x10, GST_MATROSKA_TRACK_TYPE_SUBTITLE = 0x11, - GST_MATROSKA_TRACK_TYPE_CONTROL = 0x20, + GST_MATROSKA_TRACK_TYPE_CONTROL = 0x20, } GstMatroskaTrackType; -typedef enum -{ - GST_MATROSKA_EYE_MODE_MONO = 0x0, +typedef enum { + GST_MATROSKA_EYE_MODE_MONO = 0x0, GST_MATROSKA_EYE_MODE_RIGHT = 0x1, - GST_MATROSKA_EYE_MODE_LEFT = 0x2, - GST_MATROSKA_EYE_MODE_BOTH = 0x3, + GST_MATROSKA_EYE_MODE_LEFT = 0x2, + GST_MATROSKA_EYE_MODE_BOTH = 0x3, } GstMatroskaEyeMode; -typedef enum -{ - GST_MATROSKA_ASPECT_RATIO_MODE_FREE = 0x0, - GST_MATROSKA_ASPECT_RATIO_MODE_KEEP = 0x1, +typedef enum { + GST_MATROSKA_ASPECT_RATIO_MODE_FREE = 0x0, + GST_MATROSKA_ASPECT_RATIO_MODE_KEEP = 0x1, GST_MATROSKA_ASPECT_RATIO_MODE_FIXED = 0x2, } GstMatroskaAspectRatioMode; @@ -178,71 +175,64 @@ typedef enum * it's just something I use in the muxer/demuxer. */ -typedef enum -{ - GST_MATROSKA_TRACK_ENABLED = (1 << 0), - GST_MATROSKA_TRACK_DEFAULT = (1 << 1), - GST_MATROSKA_TRACK_LACING = (1 << 2), - GST_MATROSKA_TRACK_SHIFT = (1 << 16) +typedef enum { + GST_MATROSKA_TRACK_ENABLED = (1<<0), + GST_MATROSKA_TRACK_DEFAULT = (1<<1), + GST_MATROSKA_TRACK_LACING = (1<<2), + GST_MATROSKA_TRACK_SHIFT = (1<<16) } GstMatroskaTrackFlags; -typedef enum -{ - GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT << 0) +typedef enum { + GST_MATROSKA_VIDEOTRACK_INTERLACED = (GST_MATROSKA_TRACK_SHIFT<<0) } GstMatroskaVideoTrackFlags; -typedef struct _GstMatroskaTrackContext -{ - GstPad *pad; - GstCaps *caps; - guint index; +typedef struct _GstMatroskaTrackContext { + GstPad *pad; + GstCaps *caps; + guint index; /* some often-used info */ - gchar *codec_id, *codec_name, *name, *language; - gpointer codec_priv; - guint codec_priv_size; + gchar *codec_id, *codec_name, *name, *language; + gpointer codec_priv; + guint codec_priv_size; GstMatroskaTrackType type; - guint uid, num; + guint uid, num; GstMatroskaTrackFlags flags; - guint64 default_duration; + guint64 default_duration; } GstMatroskaTrackContext; -typedef struct _GstMatroskaTrackVideoContext -{ +typedef struct _GstMatroskaTrackVideoContext { GstMatroskaTrackContext parent; - guint pixel_width, pixel_height, display_width, display_height; + guint pixel_width, pixel_height, + display_width, display_height; GstMatroskaEyeMode eye_mode; GstMatroskaAspectRatioMode asr_mode; - guint32 fourcc; + guint32 fourcc; } GstMatroskaTrackVideoContext; -typedef struct _GstMatroskaTrackAudioContext -{ +typedef struct _GstMatroskaTrackAudioContext { GstMatroskaTrackContext parent; - guint samplerate, channels, bitdepth; + guint samplerate, channels, bitdepth; } GstMatroskaTrackAudioContext; -typedef struct _GstMatroskaTrackComplexContext -{ +typedef struct _GstMatroskaTrackComplexContext { GstMatroskaTrackContext parent; /* nothing special goes here, apparently */ } GstMatroskaTrackComplexContext; -typedef struct _GstMatroskaTrackSubtitleContext -{ +typedef struct _GstMatroskaTrackSubtitleContext { GstMatroskaTrackContext parent; /* or here... */ } GstMatroskaTrackSubtitleContext; -typedef struct _GstMatroskaIndex -{ - guint64 pos; /* of the corresponding *cluster*! */ - guint16 track; /* reference to 'num' */ - guint64 time; /* in nanoseconds */ +typedef struct _GstMatroskaIndex { + guint64 pos; /* of the corresponding *cluster*! */ + guint16 track; /* reference to 'num' */ + guint64 time; /* in nanoseconds */ } GstMatroskaIndex; #endif /* __GST_MATROSKA_IDS_H__ */ diff --git a/gst/matroska/matroska-mux.h b/gst/matroska/matroska-mux.h index ab018688..119237c9 100644 --- a/gst/matroska/matroska-mux.h +++ b/gst/matroska/matroska-mux.h @@ -28,6 +28,7 @@ #include "matroska-ids.h" G_BEGIN_DECLS + #define GST_TYPE_MATROSKA_MUX \ (gst_matroska_mux_get_type ()) #define GST_MATROSKA_MUX(obj) \ @@ -38,61 +39,65 @@ G_BEGIN_DECLS (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MATROSKA_MUX)) #define GST_IS_MATROSKA_MUX_CLASS(obj) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_MATROSKA_MUX)) + #define GST_MATROSKA_MUX_MAX_STREAMS 64 - typedef enum -{ + +typedef enum { GST_MATROSKA_MUX_STATE_START, GST_MATROSKA_MUX_STATE_HEADER, GST_MATROSKA_MUX_STATE_DATA, } GstMatroskaMuxState; -typedef struct _GstMatroskaMux -{ - GstEbmlWrite parent; +typedef struct _GstMatroskaMux { + GstEbmlWrite parent; /* pads */ - GstPad *srcpad; - struct - { + GstPad *srcpad; + struct { GstMatroskaTrackContext *track; - GstBuffer *buffer; - gboolean eos; + GstBuffer *buffer; + gboolean eos; } sink[GST_MATROSKA_MUX_MAX_STREAMS]; - guint num_streams, num_v_streams, num_a_streams, num_t_streams; + guint num_streams, + num_v_streams, num_a_streams, num_t_streams; /* metadata - includes writing_app and creation_time */ - GstCaps *metadata; + GstCaps *metadata; /* state */ GstMatroskaMuxState state; /* a cue (index) table */ GstMatroskaIndex *index; - guint num_indexes; + guint num_indexes; /* timescale in the file */ - guint64 time_scale; + guint64 time_scale; /* length, position (time, ns) */ - guint64 duration; + guint64 duration; /* byte-positions of master-elements (for replacing contents) */ - guint64 segment_pos, seekhead_pos, cues_pos, + guint64 segment_pos, + seekhead_pos, + cues_pos, #if 0 - tags_pos, + tags_pos, #endif - info_pos, tracks_pos, duration_pos; - guint64 segment_master; + info_pos, + tracks_pos, + duration_pos; + guint64 segment_master; } GstMatroskaMux; -typedef struct _GstMatroskaMuxClass -{ +typedef struct _GstMatroskaMuxClass { GstEbmlWriteClass parent; } GstMatroskaMuxClass; -GType gst_matroska_mux_get_type (void); +GType gst_matroska_mux_get_type (void); -gboolean gst_matroska_mux_plugin_init (GstPlugin * plugin); +gboolean gst_matroska_mux_plugin_init (GstPlugin *plugin); G_END_DECLS + #endif /* __GST_MATROSKA_MUX_H__ */ |