summaryrefslogtreecommitdiffstats
path: root/gst/mpegdemux
diff options
context:
space:
mode:
authorDave Robillard <dave@drobilla.net>2009-06-19 21:03:10 -0400
committerDave Robillard <dave@drobilla.net>2009-06-19 21:03:10 -0400
commit23953f27c870c42ce369d717bc15b7f8001691a1 (patch)
tree19b3999c7b0c36fcefcbbcaaaa9102f612670ca7 /gst/mpegdemux
parentd365eafd8f2cdb1ded93fe4bd95e568026abf0da (diff)
parent925e83ee60c5406b2e5f0f39b0da0f90370efc27 (diff)
downloadgst-plugins-bad-23953f27c870c42ce369d717bc15b7f8001691a1.tar.gz
gst-plugins-bad-23953f27c870c42ce369d717bc15b7f8001691a1.tar.bz2
gst-plugins-bad-23953f27c870c42ce369d717bc15b7f8001691a1.zip
Merge branch 'fdo' into lv2
Diffstat (limited to 'gst/mpegdemux')
-rw-r--r--gst/mpegdemux/gstmpegdefs.h9
-rw-r--r--gst/mpegdemux/gstmpegdesc.c4
-rw-r--r--gst/mpegdemux/gstmpegtsdemux.c19
3 files changed, 20 insertions, 12 deletions
diff --git a/gst/mpegdemux/gstmpegdefs.h b/gst/mpegdemux/gstmpegdefs.h
index 7ad1e25c..375f1dc0 100644
--- a/gst/mpegdemux/gstmpegdefs.h
+++ b/gst/mpegdemux/gstmpegdefs.h
@@ -170,12 +170,17 @@
#define ST_PS_AUDIO_AC3 0x81
#define ST_PS_AUDIO_DTS 0x8a
#define ST_PS_AUDIO_LPCM 0x8b
-#define ST_HDV_PRIVATE_A0 0xa0
-#define ST_HDV_PRIVATE_A1 0xa1
#define ST_PS_DVD_SUBPICTURE 0xff
/* Blu-ray PGS subpictures */
#define ST_BD_PGS_SUBPICTURE 0x90
+/* HDV AUX stream mapping
+ * 0xA0 ISO/IEC 61834-11
+ * 0xA1 ISO/IEC 61834-11
+ */
+#define ST_HDV_AUX_A 0xa0
+#define ST_HDV_AUX_V 0xa1
+
/* Un-official time-code stream */
#define ST_PS_TIMECODE 0xd2
diff --git a/gst/mpegdemux/gstmpegdesc.c b/gst/mpegdemux/gstmpegdesc.c
index 4c88e1fd..0a985897 100644
--- a/gst/mpegdemux/gstmpegdesc.c
+++ b/gst/mpegdemux/gstmpegdesc.c
@@ -65,7 +65,9 @@ gst_mpeg_descriptor_parse_1 (guint8 * data, guint size)
if (length > size)
return 0;
- return length + 2;;
+ GST_MEMDUMP ("tag contents:", data, length);
+
+ return length + 2;
}
GstMPEGDescriptor *
diff --git a/gst/mpegdemux/gstmpegtsdemux.c b/gst/mpegdemux/gstmpegtsdemux.c
index b75bfc6d..cb082a2b 100644
--- a/gst/mpegdemux/gstmpegtsdemux.c
+++ b/gst/mpegdemux/gstmpegtsdemux.c
@@ -634,15 +634,15 @@ gst_mpegts_demux_fill_stream (GstMpegTSStream * stream, guint8 id,
caps = gst_caps_new_simple ("private/teletext", NULL);
}
break;
- case ST_HDV_PRIVATE_A0:
+ case ST_HDV_AUX_V:
template = klass->private_template;
name = g_strdup_printf ("private_%04x", stream->PID);
- caps = gst_caps_new_simple ("private/hdv-a0", NULL);
+ caps = gst_caps_new_simple ("hdv/aux-v", NULL);
break;
- case ST_HDV_PRIVATE_A1:
+ case ST_HDV_AUX_A:
template = klass->private_template;
name = g_strdup_printf ("private_%04x", stream->PID);
- caps = gst_caps_new_simple ("private/hdv-a1", NULL);
+ caps = gst_caps_new_simple ("hdv/aux-a", NULL);
break;
case ST_PRIVATE_SECTIONS:
case ST_MHEG:
@@ -923,8 +923,8 @@ gst_mpegts_demux_data_cb (GstPESFilter * filter, gboolean first,
* to drop. */
if (stream->PMT_pid <= MPEGTS_MAX_PID && demux->streams[stream->PMT_pid]
&& demux->streams[demux->streams[stream->PMT_pid]->PMT.PCR_PID]
- && demux->streams[demux->streams[stream->PMT_pid]->PMT.
- PCR_PID]->discont_PCR) {
+ && demux->streams[demux->streams[stream->PMT_pid]->PMT.PCR_PID]->
+ discont_PCR) {
GST_WARNING_OBJECT (demux, "middle of discont, dropping");
goto bad_timestamp;
}
@@ -946,8 +946,8 @@ gst_mpegts_demux_data_cb (GstPESFilter * filter, gboolean first,
*/
if (stream->PMT_pid <= MPEGTS_MAX_PID && demux->streams[stream->PMT_pid]
&& demux->streams[demux->streams[stream->PMT_pid]->PMT.PCR_PID]
- && demux->streams[demux->streams[stream->PMT_pid]->PMT.
- PCR_PID]->last_PCR > 0) {
+ && demux->streams[demux->streams[stream->PMT_pid]->PMT.PCR_PID]->
+ last_PCR > 0) {
GST_DEBUG_OBJECT (demux, "timestamps wrapped before noticed in PCR");
time = MPEGTIME_TO_GSTTIME (pts) + stream->base_time +
MPEGTIME_TO_GSTTIME ((guint64) (1) << 33);
@@ -2884,7 +2884,8 @@ gst_mpegts_demux_chain (GstPad * pad, GstBuffer * buffer)
/* process all packets */
for (i = 0; i < sync_count; i++) {
ret = gst_mpegts_demux_parse_transport_packet (demux, demux->sync_lut[i]);
- if (G_UNLIKELY (ret == GST_FLOW_LOST_SYNC)) {
+ if (G_UNLIKELY (ret == GST_FLOW_LOST_SYNC
+ || ret == GST_FLOW_NEED_MORE_DATA)) {
ret = GST_FLOW_OK;
continue;
}