summaryrefslogtreecommitdiff
path: root/gst/mpegtsmux/tsmux
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-06-16 16:50:43 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-06-16 19:23:00 +0200
commitbeceb09acc353d991ef9b315126cbe1dc9f8ab0b (patch)
treefdd5611f45dd02fdc80f4d53e011e0ed75d1cd79 /gst/mpegtsmux/tsmux
parent898f6b48be5b8e44f7d531b55fd99c90c9fb7f1d (diff)
downloadgstreamer-plugins-bad-beceb09acc353d991ef9b315126cbe1dc9f8ab0b.tar.gz
mpegtsmux: add support for DVB subtitle and teletext streams
See bug #673582. Conflicts: gst/mpegtsmux/Makefile.am
Diffstat (limited to 'gst/mpegtsmux/tsmux')
-rw-r--r--gst/mpegtsmux/tsmux/tsmuxstream.c26
-rw-r--r--gst/mpegtsmux/tsmux/tsmuxstream.h2
2 files changed, 28 insertions, 0 deletions
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.c b/gst/mpegtsmux/tsmux/tsmuxstream.c
index f05b72aaf..375401058 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.c
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.c
@@ -175,6 +175,18 @@ tsmux_stream_new (guint16 pid, TsMuxStreamType stream_type)
TSMUX_PACKET_FLAG_PES_FULL_HEADER |
TSMUX_PACKET_FLAG_PES_EXT_STREAMID;
break;
+ case TSMUX_ST_PS_TELETEXT:
+ /* needs fixes PES header length */
+ stream->pi.pes_header_length = 36;
+ case TSMUX_ST_PS_DVB_SUBPICTURE:
+ /* private stream 1 */
+ stream->id = 0xBD;
+ stream->stream_type = TSMUX_ST_PRIVATE_DATA;
+ stream->pi.flags |=
+ TSMUX_PACKET_FLAG_PES_FULL_HEADER |
+ TSMUX_PACKET_FLAG_PES_DATA_ALIGNMENT;
+
+ break;
default:
g_critical ("Stream type 0x%0x not yet implemented", stream_type);
break;
@@ -865,6 +877,20 @@ tsmux_stream_get_es_descrs (TsMuxStream * stream, guint8 * buf, guint16 * len)
case TSMUX_ST_PS_AUDIO_LPCM:
/* FIXME */
break;
+ case TSMUX_ST_PS_DVB_SUBPICTURE:
+ /* tag */
+ *pos++ = 0x59;
+ /* FIXME empty descriptor for now;
+ * should be provided by upstream in event or so ? */
+ *pos = 0;
+ break;
+ case TSMUX_ST_PS_TELETEXT:
+ /* tag */
+ *pos++ = 0x56;
+ /* FIXME empty descriptor for now;
+ * should be provided by upstream in event or so ? */
+ *pos = 0;
+ break;
default:
break;
}
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.h b/gst/mpegtsmux/tsmux/tsmuxstream.h
index fb87a1349..b0fef23ee 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.h
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.h
@@ -138,6 +138,8 @@ enum TsMuxStreamType {
TSMUX_ST_PS_AUDIO_AC3 = 0x81,
TSMUX_ST_PS_AUDIO_DTS = 0x8a,
TSMUX_ST_PS_AUDIO_LPCM = 0x8b,
+ TSMUX_ST_PS_DVB_SUBPICTURE = 0x8c,
+ TSMUX_ST_PS_TELETEXT = 0x8d,
TSMUX_ST_PS_DVD_SUBPICTURE = 0xff,
/* Non-standard definitions */