Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: John Smith <johns90812 <at> gmail.com>
Subject: [PATCH] dvb_demux: Transport stream continuity check fix
Newsgroups: gmane.linux.drivers.video-input-infrastructure
Date: Tuesday 5th March 2013 22:02:43 UTC (over 4 years ago)
This patch avoids incrementing continuity counter
demux->cnt_storage[pid] for TS packets without payload in accordance
with ISO /IEC 13818-1.

Signed-off-by: John Smith <[email protected]>

diff --git a/drivers/media/dvb-core/dvb_demux.c
b/drivers/media/dvb-core/dvb_demux.c
index d319717..70a89c8 100644
--- a/drivers/media/dvb-core/dvb_demux.c
+++ b/drivers/media/dvb-core/dvb_demux.c
@@ -443,14 +443,18 @@ static void dvb_dmx_swfilter_packet(struct
dvb_demux *demux, const u8 *buf)
     if (demux->cnt_storage && dvb_demux_tscheck) {
         /* check pkt counter */
         if (pid < MAX_PID) {
-            if ((buf[3] & 0xf) != demux->cnt_storage[pid])
+            if (buf[3] & 0x10)
+                demux->cnt_storage[pid] =
+                    (demux->cnt_storage[pid] + 1) & 0xf;
+
+            if ((buf[3] & 0xf) != demux->cnt_storage[pid]) {
                 dprintk_tscheck("TS packet counter mismatch. "
                         "PID=0x%x expected 0x%x "
                         "got 0x%x\n",
                         pid, demux->cnt_storage[pid],
                         buf[3] & 0xf);
-
-            demux->cnt_storage[pid] = ((buf[3] & 0xf) + 1)&0xf;
+                demux->cnt_storage[pid] = buf[3] & 0xf;
+            }
         }
         /* end check */
     }
 
CD: 4ms