From: <sl...@ke...> - 2008-11-24 10:46:19
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: slomo Date: Mon Nov 24 2008 10:46:15 UTC Log message: 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. Modified files: . : ChangeLog gst/mpegtsmux : mpegtsmux.c gst/mpegtsmux/tsmux: tsmuxstream.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3734&r2=1.3735 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegtsmux/mpegtsmux.c.diff?r1=1.4&r2=1.5 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmuxstream.c.diff?r1=1.2&r2=1.3 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3734 retrieving revision 1.3735 diff -u -d -r1.3734 -r1.3735 --- ChangeLog 24 Nov 2008 10:41:11 -0000 1.3734 +++ ChangeLog 24 Nov 2008 10:46:00 -0000 1.3735 @@ -1,5 +1,14 @@ 2008-11-24 Sebastian Dröge <seb...@co...> + 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 <seb...@co...> * gst/mxf/mxfdemux.c: (gst_mxf_demux_pull_klv_packet), (gst_mxf_demux_handle_klv_packet), (gst_mxf_demux_chain): * gst/mxf/mxfparse.c: (mxf_product_version_parse), Index: mpegtsmux.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegtsmux/mpegtsmux.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- mpegtsmux.c 27 Oct 2008 08:52:50 -0000 1.4 +++ mpegtsmux.c 24 Nov 2008 10:46:01 -0000 1.5 @@ -103,11 +103,20 @@ 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 @@ ts_data->pid); ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_VIDEO_DIRAC, + } 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, + } else if (gst_structure_has_name (s, "audio/x-lpcm")) { + GST_DEBUG_OBJECT (pad, "Creating LPCM stream with PID 0x%04x", + ts_data->stream = tsmux_create_stream (mux->tsmux, TSMUX_ST_PS_AUDIO_LPCM, } else if (gst_structure_has_name (s, "video/x-h264")) { const GValue *value; GST_DEBUG_OBJECT (pad, "Creating H264 stream with PID 0x%04x", Index: tsmuxstream.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegtsmux/tsmux/tsmuxstream.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- tsmuxstream.c 1 Sep 2008 17:49:59 -0000 1.2 +++ tsmuxstream.c 24 Nov 2008 10:46:01 -0000 1.3 @@ -143,14 +143,31 @@ 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; + case TSMUX_ST_PS_AUDIO_AC3: + stream->id_extended = 0x81; + case TSMUX_ST_PS_AUDIO_DTS: + stream->id_extended = 0x82; + default: + } stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER | TSMUX_PACKET_FLAG_PES_EXT_STREAMID; - stream->is_video_stream = TRUE; default: g_critical ("Stream type 0x%0x not yet implemented", stream_type); |