media: dvb_demux: Better handle discontinuity errors
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 23 Jan 2018 18:30:42 +0000 (13:30 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 29 Jan 2018 12:48:50 +0000 (07:48 -0500)
When a packet discontinuity happens, it is not just the payload
that was lost. The headers are lost too. So, the max size is not
184 but, instead 188.

Also, while printing warnings, make a distinction between
MPEG-TS indicated discontinuity and detected one.

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-core/dvb_demux.c

index 5047a1f8705024e08892034faf3a29d38f154c30..1a6e2e61952a28c37f0b0620e1c9132aa9c7ca60 100644 (file)
@@ -310,8 +310,9 @@ static int dvb_dmx_swfilter_section_packet(struct dvb_demux_feed *feed,
 
        if (!ccok || dc_i) {
 #ifdef CONFIG_DVB_DEMUX_SECTION_LOSS_LOG
-               dprintk("dvb_demux.c discontinuity detected %d bytes lost\n",
-                       count);
+               dprintk("discontinuity %s: %d bytes lost\n",
+                       !ccok ? "detected" : "indicated",
+                       count + 4);
                /*
                 * those bytes under sume circumstances will again be reported
                 * in the following dvb_dmx_swfilter_section_new
@@ -320,6 +321,9 @@ static int dvb_dmx_swfilter_section_packet(struct dvb_demux_feed *feed,
                /*
                 * Discontinuity detected. Reset pusi_seen to
                 * stop feeding of suspicious data until next PUSI=1 arrives
+                *
+                * FIXME: does it make sense if the MPEG-TS is the one
+                *      reporting discontinuity?
                 */
                feed->pusi_seen = false;
                dvb_dmx_swfilter_section_new(feed);