diff --git a/common b/common index 5dc8ae3027..3f4e997460 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 5dc8ae302733ce1aae5b1aaa613ce77a8ae4b3d9 +Subproject commit 3f4e9974603807e7615c3a6b8821542abce0be19 diff --git a/gst/mpegdemux/gstpesfilter.c b/gst/mpegdemux/gstpesfilter.c index 348f75c997..8a2ee2842a 100644 --- a/gst/mpegdemux/gstpesfilter.c +++ b/gst/mpegdemux/gstpesfilter.c @@ -287,7 +287,7 @@ gst_pes_filter_parse (GstPESFilter * filter) /* check PES scrambling control */ if ((flags & 0x30) != 0) - GST_DEBUG ("PES scrambling control: %x", (flags >> 4) & 0x3); + goto encrypted; /* 2: PTS_DTS_flags * 1: ESCR_flag @@ -466,7 +466,7 @@ need_more_data: ret = GST_FLOW_NEED_MORE_DATA; } } else { - GST_DEBG ("unbounded need more data %d", + GST_DEBUG ("unbounded need more data %d", gst_adapter_available (filter->adapter)); ret = GST_FLOW_NEED_MORE_DATA; } @@ -479,6 +479,17 @@ skip: gst_adapter_flush (filter->adapter, avail); ADAPTER_OFFSET_FLUSH (avail); + filter->length -= avail - 6; + if (filter->length > 0 || filter->unbounded_packet) + filter->state = STATE_DATA_SKIP; + return GST_FLOW_OK; + } +encrypted: + { + GST_DEBUG ("skipping encrypted 0x%02x", filter->id); + gst_adapter_flush (filter->adapter, avail); + ADAPTER_OFFSET_FLUSH (avail); + filter->length -= avail - 6; if (filter->length > 0 || filter->unbounded_packet) filter->state = STATE_DATA_SKIP;