]> git.karo-electronics.de Git - linux-beck.git/commitdiff
[media] dvb-core: move dvb_filter out of the DVB core
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Thu, 13 Oct 2016 10:41:38 +0000 (07:41 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 21 Oct 2016 10:44:08 +0000 (08:44 -0200)
The dvb_filter.c can hardly be considered as part of the DVB
core. More than half of the code there is commented out by
av7110 and ttusb_dec.

On the latter, just two small helper functions and a struct
definition is used.

Being part of the core means that it would require an
amount of work to fix issues in it, like bad printk's
on it, and to document it on some future, like other kAPI
headers. It simply not worth the effort for something that
seems to be deprecated, as no new drivers use it.

So, move it out of the core, by moving it to pci/ttpci
directory, where av7110 driver is kept, and copy the two
routines used by ttyusb_dec directly into its code.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/common/b2c2/flexcop-common.h
drivers/media/dvb-core/Makefile
drivers/media/pci/ttpci/Makefile
drivers/media/pci/ttpci/dvb_filter.c [moved from drivers/media/dvb-core/dvb_filter.c with 99% similarity]
drivers/media/pci/ttpci/dvb_filter.h [moved from drivers/media/dvb-core/dvb_filter.h with 100% similarity]
drivers/media/usb/ttusb-dec/ttusb_dec.c

index 2b2460e9e6b4fcd9538653f7adf46c69d79539ae..2533574c0cf41a49e0e0538217a01d94bb6de493 100644 (file)
@@ -14,7 +14,6 @@
 
 #include "dmxdev.h"
 #include "dvb_demux.h"
-#include "dvb_filter.h"
 #include "dvb_net.h"
 #include "dvb_frontend.h"
 
index 8f22bcd7c1f9122694e552cb1c39688ee95b1518..281bc89576e6d981a726e0251797e7d787457f00 100644 (file)
@@ -4,7 +4,7 @@
 
 dvb-net-$(CONFIG_DVB_NET) := dvb_net.o
 
-dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o    \
+dvb-core-objs := dvbdev.o dmxdev.o dvb_demux.o                 \
                 dvb_ca_en50221.o dvb_frontend.o                \
                 $(dvb-net-y) dvb_ringbuffer.o dvb_math.o
 
index 49f71b1eaf14b529689f82e658d44a09b285ddbf..3cf617737f7c525d1c5b6709e7726e2689531a02 100644 (file)
@@ -3,7 +3,7 @@
 # and the AV7110 DVB device driver
 #
 
-dvb-ttpci-objs := av7110_hw.o av7110_v4l.o av7110_av.o av7110_ca.o av7110.o av7110_ipack.o
+dvb-ttpci-objs := av7110_hw.o av7110_v4l.o av7110_av.o av7110_ca.o av7110.o av7110_ipack.o dvb_filter.o
 
 ifdef CONFIG_DVB_AV7110_IR
 dvb-ttpci-objs += av7110_ir.o
similarity index 99%
rename from drivers/media/dvb-core/dvb_filter.c
rename to drivers/media/pci/ttpci/dvb_filter.c
index 772003fb18219fa741cd060f3af7271ef53c29f0..6395812ed1f156e70d44a74161dd217427beb772 100644 (file)
@@ -390,7 +390,6 @@ int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int p
 
        return 0;
 }
-EXPORT_SYMBOL(dvb_filter_get_ac3info);
 
 
 #if 0
@@ -565,7 +564,6 @@ void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts, unsigned short pid,
        p2ts->cb=cb;
        p2ts->priv=priv;
 }
-EXPORT_SYMBOL(dvb_filter_pes2ts_init);
 
 int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
                      int len, int payload_start)
@@ -600,4 +598,3 @@ int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
        memcpy(buf+5+rest, pes, len);
        return p2ts->cb(p2ts->priv, buf);
 }
-EXPORT_SYMBOL(dvb_filter_pes2ts);
index 4e7671a3a1e4a2408c02d1e0a8c3d57038a60571..35d5003ff8092b512f748eb26eadd8f2404f79e8 100644 (file)
@@ -36,7 +36,6 @@
 
 #include "dmxdev.h"
 #include "dvb_demux.h"
-#include "dvb_filter.h"
 #include "dvb_frontend.h"
 #include "dvb_net.h"
 #include "ttusbdecfe.h"
@@ -92,6 +91,15 @@ enum ttusb_dec_interface {
        TTUSB_DEC_INTERFACE_OUT
 };
 
+typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);
+
+struct dvb_filter_pes2ts {
+       unsigned char buf[188];
+       unsigned char cc;
+       dvb_filter_pes2ts_cb_t *cb;
+       void *priv;
+};
+
 struct ttusb_dec {
        enum ttusb_dec_model            model;
        char                            *model_name;
@@ -201,6 +209,54 @@ static u16 rc_keys[] = {
        KEY_RADIO
 };
 
+static void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts,
+                                  unsigned short pid,
+                                  dvb_filter_pes2ts_cb_t *cb, void *priv)
+{
+       unsigned char *buf=p2ts->buf;
+
+       buf[0]=0x47;
+       buf[1]=(pid>>8);
+       buf[2]=pid&0xff;
+       p2ts->cc=0;
+       p2ts->cb=cb;
+       p2ts->priv=priv;
+}
+
+static int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts,
+                            unsigned char *pes, int len, int payload_start)
+{
+       unsigned char *buf=p2ts->buf;
+       int ret=0, rest;
+
+       //len=6+((pes[4]<<8)|pes[5]);
+
+       if (payload_start)
+               buf[1]|=0x40;
+       else
+               buf[1]&=~0x40;
+       while (len>=184) {
+               buf[3]=0x10|((p2ts->cc++)&0x0f);
+               memcpy(buf+4, pes, 184);
+               if ((ret=p2ts->cb(p2ts->priv, buf)))
+                       return ret;
+               len-=184; pes+=184;
+               buf[1]&=~0x40;
+       }
+       if (!len)
+               return 0;
+       buf[3]=0x30|((p2ts->cc++)&0x0f);
+       rest=183-len;
+       if (rest) {
+               buf[5]=0x00;
+               if (rest-1)
+                       memset(buf+6, 0xff, rest-1);
+       }
+       buf[4]=rest;
+       memcpy(buf+5+rest, pes, len);
+       return p2ts->cb(p2ts->priv, buf);
+}
+
 static void ttusb_dec_set_model(struct ttusb_dec *dec,
                                enum ttusb_dec_model model);