summaryrefslogtreecommitdiffstats
path: root/gst/matroska
diff options
context:
space:
mode:
Diffstat (limited to 'gst/matroska')
-rw-r--r--gst/matroska/ebml-ids.h8
-rw-r--r--gst/matroska/ebml-read.h68
-rw-r--r--gst/matroska/ebml-write.h72
-rw-r--r--gst/matroska/matroska-demux.h61
-rw-r--r--gst/matroska/matroska-ids.h92
-rw-r--r--gst/matroska/matroska-mux.h51
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__ */