mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-24 16:18:16 +00:00
gst/mpegtsmux/: Add initial support for muxing AC3/DTS/LPCM into MPEG TS.
Original commit message from CVS: Patch by: vanista <vanista at gmail dot com> * gst/mpegtsmux/mpegtsmux.c: (mpegtsmux_create_stream): * gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new): Add initial support for muxing AC3/DTS/LPCM into MPEG TS. Fixes bug #550613.
This commit is contained in:
parent
fa9ccc1eca
commit
2082d618f9
3 changed files with 54 additions and 6 deletions
|
@ -1,3 +1,12 @@
|
|||
2008-11-24 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||
|
||||
Patch by: vanista <vanista at gmail dot com>
|
||||
|
||||
* gst/mpegtsmux/mpegtsmux.c: (mpegtsmux_create_stream):
|
||||
* gst/mpegtsmux/tsmux/tsmuxstream.c: (tsmux_stream_new):
|
||||
Add initial support for muxing AC3/DTS/LPCM into MPEG TS.
|
||||
Fixes bug #550613.
|
||||
|
||||
2008-11-24 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||
|
||||
* gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_klv_packet),
|
||||
|
|
|
@ -103,11 +103,20 @@ static GstStaticPadTemplate mpegtsmux_sink_factory =
|
|||
GST_STATIC_PAD_TEMPLATE ("sink_%d",
|
||||
GST_PAD_SINK,
|
||||
GST_PAD_REQUEST,
|
||||
GST_STATIC_CAPS ("video/mpeg, mpegversion=(int) { 1, 2, 4 }, "
|
||||
GST_STATIC_CAPS ("video/mpeg, "
|
||||
"mpegversion = (int) { 1, 2, 4 }, "
|
||||
"systemstream = (boolean) false; "
|
||||
"video/x-dirac;"
|
||||
"video/x-h264;" "audio/mpeg, mpegversion = (int) { 1, 2, 4 }")
|
||||
);
|
||||
"video/x-h264;"
|
||||
"audio/mpeg, "
|
||||
"mpegversion = (int) { 1, 2, 4 };"
|
||||
"audio/x-lpcm, "
|
||||
"width = (int) { 16, 20, 24 }, "
|
||||
"rate = (int) { 48000, 96000 }, "
|
||||
"channels = (int) [ 1, 8 ], "
|
||||
"dynamic_range = (int) [ 0, 255 ], "
|
||||
"emphasis = (boolean) { FALSE, TRUE }, "
|
||||
"mute = (boolean) { FALSE, TRUE }; " "audio/x-ac3;" "audio/x-dts"));
|
||||
|
||||
static GstStaticPadTemplate mpegtsmux_src_factory =
|
||||
GST_STATIC_PAD_TEMPLATE ("src",
|
||||
|
@ -285,6 +294,19 @@ mpegtsmux_create_stream (MpegTsMux * mux, MpegTsPadData * ts_data, GstPad * pad)
|
|||
ts_data->pid);
|
||||
ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_VIDEO_DIRAC,
|
||||
ts_data->pid);
|
||||
} else if (gst_structure_has_name (s, "audio/x-ac3")) {
|
||||
GST_DEBUG_OBJECT (pad, "Creating AC3 stream with PID 0x%04x", ts_data->pid);
|
||||
ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_PS_AUDIO_AC3,
|
||||
ts_data->pid);
|
||||
} else if (gst_structure_has_name (s, "audio/x-dts")) {
|
||||
GST_DEBUG_OBJECT (pad, "Creating DTS stream with PID 0x%04x", ts_data->pid);
|
||||
ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_PS_AUDIO_DTS,
|
||||
ts_data->pid);
|
||||
} else if (gst_structure_has_name (s, "audio/x-lpcm")) {
|
||||
GST_DEBUG_OBJECT (pad, "Creating LPCM stream with PID 0x%04x",
|
||||
ts_data->pid);
|
||||
ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_PS_AUDIO_LPCM,
|
||||
ts_data->pid);
|
||||
} else if (gst_structure_has_name (s, "video/x-h264")) {
|
||||
const GValue *value;
|
||||
GST_DEBUG_OBJECT (pad, "Creating H264 stream with PID 0x%04x",
|
||||
|
|
|
@ -143,14 +143,31 @@ tsmux_stream_new (guint16 pid, TsMuxStreamType stream_type)
|
|||
stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
|
||||
break;
|
||||
case TSMUX_ST_VIDEO_DIRAC:
|
||||
case TSMUX_ST_PS_AUDIO_LPCM:
|
||||
case TSMUX_ST_PS_AUDIO_AC3:
|
||||
case TSMUX_ST_PS_AUDIO_DTS:
|
||||
stream->id = 0xFD;
|
||||
/* FIXME: assign sequential extended IDs? */
|
||||
stream->id_extended = 0x60;
|
||||
|
||||
switch (stream_type) {
|
||||
case TSMUX_ST_VIDEO_DIRAC:
|
||||
stream->id_extended = 0x60;
|
||||
stream->is_video_stream = TRUE;
|
||||
break;
|
||||
case TSMUX_ST_PS_AUDIO_LPCM:
|
||||
stream->id_extended = 0x80;
|
||||
break;
|
||||
case TSMUX_ST_PS_AUDIO_AC3:
|
||||
stream->id_extended = 0x81;
|
||||
break;
|
||||
case TSMUX_ST_PS_AUDIO_DTS:
|
||||
stream->id_extended = 0x82;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
stream->pi.flags |=
|
||||
TSMUX_PACKET_FLAG_PES_FULL_HEADER |
|
||||
TSMUX_PACKET_FLAG_PES_EXT_STREAMID;
|
||||
stream->is_video_stream = TRUE;
|
||||
break;
|
||||
default:
|
||||
g_critical ("Stream type 0x%0x not yet implemented", stream_type);
|
||||
|
|
Loading…
Reference in a new issue