mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
mpegtsmux: Add new property prog-map to the muxer
This commit is contained in:
parent
baced65049
commit
9f90dfee3e
2 changed files with 28 additions and 0 deletions
|
@ -96,6 +96,7 @@ GST_DEBUG_CATEGORY (mpegtsmux_debug);
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
ARG_0,
|
ARG_0,
|
||||||
|
ARG_PROG_MAP,
|
||||||
ARG_M2TS_MODE
|
ARG_M2TS_MODE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -180,6 +181,11 @@ mpegtsmux_class_init (MpegTsMuxClass * klass)
|
||||||
gstelement_class->release_pad = mpegtsmux_release_pad;
|
gstelement_class->release_pad = mpegtsmux_release_pad;
|
||||||
gstelement_class->change_state = mpegtsmux_change_state;
|
gstelement_class->change_state = mpegtsmux_change_state;
|
||||||
|
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PROG_MAP,
|
||||||
|
g_param_spec_boxed ("prog-map", "Program map",
|
||||||
|
"A GstStructure specifies the mapping from elementary streams to programs",
|
||||||
|
GST_TYPE_STRUCTURE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_M2TS_MODE,
|
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_M2TS_MODE,
|
||||||
g_param_spec_boolean ("m2ts_mode", "M2TS(192 bytes) Mode",
|
g_param_spec_boolean ("m2ts_mode", "M2TS(192 bytes) Mode",
|
||||||
"Defines what packet size to use, normal TS format ie .ts(188 bytes) "
|
"Defines what packet size to use, normal TS format ie .ts(188 bytes) "
|
||||||
|
@ -210,6 +216,8 @@ mpegtsmux_init (MpegTsMux * mux, MpegTsMuxClass * g_class)
|
||||||
mux->m2ts_mode = FALSE;
|
mux->m2ts_mode = FALSE;
|
||||||
mux->first_pcr = TRUE;
|
mux->first_pcr = TRUE;
|
||||||
mux->last_ts = 0;
|
mux->last_ts = 0;
|
||||||
|
|
||||||
|
mux->prog_map = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -230,6 +238,10 @@ mpegtsmux_dispose (GObject * object)
|
||||||
tsmux_free (mux->tsmux);
|
tsmux_free (mux->tsmux);
|
||||||
mux->tsmux = NULL;
|
mux->tsmux = NULL;
|
||||||
}
|
}
|
||||||
|
if (mux->prog_map) {
|
||||||
|
gst_structure_free (mux->prog_map);
|
||||||
|
mux->prog_map = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
|
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
|
||||||
}
|
}
|
||||||
|
@ -245,6 +257,18 @@ gst_mpegtsmux_set_property (GObject * object, guint prop_id,
|
||||||
/*set incase if the output stream need to be of 192 bytes */
|
/*set incase if the output stream need to be of 192 bytes */
|
||||||
mux->m2ts_mode = g_value_get_boolean (value);
|
mux->m2ts_mode = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case ARG_PROG_MAP:
|
||||||
|
{
|
||||||
|
const GstStructure *s = gst_value_get_structure (value);
|
||||||
|
if (mux->prog_map) {
|
||||||
|
gst_structure_free (mux->prog_map);
|
||||||
|
}
|
||||||
|
if (s)
|
||||||
|
mux->prog_map = gst_structure_copy (s);
|
||||||
|
else
|
||||||
|
mux->prog_map = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -261,6 +285,9 @@ gst_mpegtsmux_get_property (GObject * object, guint prop_id,
|
||||||
case ARG_M2TS_MODE:
|
case ARG_M2TS_MODE:
|
||||||
g_value_set_boolean (value, mux->m2ts_mode);
|
g_value_set_boolean (value, mux->m2ts_mode);
|
||||||
break;
|
break;
|
||||||
|
case ARG_PROG_MAP:
|
||||||
|
gst_value_set_structure (value, mux->prog_map);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -110,6 +110,7 @@ struct MpegTsMux {
|
||||||
|
|
||||||
TsMux *tsmux;
|
TsMux *tsmux;
|
||||||
TsMuxProgram *program;
|
TsMuxProgram *program;
|
||||||
|
GstStructure *prog_map;
|
||||||
|
|
||||||
gboolean first;
|
gboolean first;
|
||||||
TsMuxStream *pcr_stream;
|
TsMuxStream *pcr_stream;
|
||||||
|
|
Loading…
Reference in a new issue