]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/media/dvb-core/dvb_demux.c
Merge branch 'omap-gpmc-fixes-for-v3.10' of git://github.com/jonhunter/linux into...
[karo-tx-linux.git] / drivers / media / dvb-core / dvb_demux.c
index d319717eb535fcefcdd983b18fd39f3d6d1c9c24..3485655fa08297c1ea6d75e73e40c3b1797e676d 100644 (file)
@@ -440,20 +440,22 @@ static void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf)
                if (!dvb_demux_feed_err_pkts)
                        return;
        } else /* if TEI bit is set, pid may be wrong- skip pkt counter */
-       if (demux->cnt_storage && dvb_demux_tscheck) {
-               /* check pkt counter */
-               if (pid < MAX_PID) {
-                       if ((buf[3] & 0xf) != demux->cnt_storage[pid])
-                               dprintk_tscheck("TS packet counter mismatch. "
-                                               "PID=0x%x expected 0x%x "
-                                               "got 0x%x\n",
+               if (demux->cnt_storage && dvb_demux_tscheck) {
+                       /* check pkt counter */
+                       if (pid < MAX_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 */
                }
-               /* end check */
-       }
 
        list_for_each_entry(feed, &demux->feed_list, list_head) {
                if ((feed->pid != pid) && (feed->pid != 0x2000))
@@ -672,7 +674,7 @@ static int dmx_ts_feed_set(struct dmx_ts_feed *ts_feed, u16 pid, int ts_type,
                return -ERESTARTSYS;
 
        if (ts_type & TS_DECODER) {
-               if (pes_type >= DMX_TS_PES_OTHER) {
+               if (pes_type >= DMX_PES_OTHER) {
                        mutex_unlock(&demux->mutex);
                        return -EINVAL;
                }
@@ -844,7 +846,7 @@ static int dvbdmx_release_ts_feed(struct dmx_demux *dmx,
 
        feed->pid = 0xffff;
 
-       if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_TS_PES_OTHER)
+       if (feed->ts_type & TS_DECODER && feed->pes_type < DMX_PES_OTHER)
                demux->pesfilter[feed->pes_type] = NULL;
 
        mutex_unlock(&demux->mutex);
@@ -1266,7 +1268,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux)
 
        INIT_LIST_HEAD(&dvbdemux->frontend_list);
 
-       for (i = 0; i < DMX_TS_PES_OTHER; i++) {
+       for (i = 0; i < DMX_PES_OTHER; i++) {
                dvbdemux->pesfilter[i] = NULL;
                dvbdemux->pids[i] = 0xffff;
        }