summaryrefslogtreecommitdiff
path: root/meta-openvuplus/recipes-vuplus/aio-grab
diff options
context:
space:
mode:
authorkos <kos@dev3>2013-01-04 10:34:34 (GMT)
committerkos <kos@dev3>2013-01-04 10:34:34 (GMT)
commit2a80e6367491192fc4923415700076997b8986a9 (patch)
tree59d33c9dff03e9810c5c58286542d5138355eb1a /meta-openvuplus/recipes-vuplus/aio-grab
parent9c61ef962a49286adb01c908b40b96aca7204bcd (diff)
update packages.
Diffstat (limited to 'meta-openvuplus/recipes-vuplus/aio-grab')
-rwxr-xr-xmeta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb19
-rw-r--r--meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus.patch189
-rw-r--r--meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus_8394e1ba98c73d7c56d3235ef16cce253dc597cd.patch229
3 files changed, 239 insertions, 198 deletions
diff --git a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb
index 9a34d2d..d2a1e3f 100755
--- a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb
+++ b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb
@@ -1,15 +1,16 @@
-DESCRIPTION="AiO screen grabber"
+SUMMARY = "Screen grabber for Set-Top-Boxes"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+SRCREV = "8394e1ba98c73d7c56d3235ef16cce253dc597cd"
+PR = "r0"
-PR = "r1"
-PV = "0.8+cvs${SRCDATE}"
-SRCDATE = "20101123"
+SRC_URI = " \
+ git://schwerkraft.elitedvb.net/aio-grab/aio-grab.git;protocol=git;tag=${SRCREV} \
+ file://aio-grab_vuplus_8394e1ba98c73d7c56d3235ef16cce253dc597cd.patch;striplevel=1 \
+"
-SRC_URI="cvs://anonymous@cvs.schwerkraft.elitedvb.net/cvsroot/aio-grab;module=aio-grab;method=pserver"
-SRC_URI_append_vuplus = "\
- file://aio-grab_vuplus.patch;patch=1"
+S = "${WORKDIR}/git"
+
+inherit autotools git-project
-S = "${WORKDIR}/aio-grab"
-inherit autotools pkgconfig
diff --git a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus.patch b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus.patch
deleted file mode 100644
index b9f4039..0000000
--- a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-diff --git a/main.c b/main.c
-index ffff998..4bf7327 100644
---- a/main.c
-+++ b/main.c
-@@ -86,8 +86,8 @@ void (*resize)(unsigned char *source, unsigned char *dest, int xsource, int ysou
- void combine(unsigned char *output, unsigned char *video, unsigned char *osd, int xres, int yres);
- char* upcase(char* mixedstr);
-
--enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405};
--char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405"};
-+enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405,BRCM7335,BRCM7325,BRCM7346,BRCM7425};
-+char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405","Brcm7335","Brcm7325","Brcm7346","Brcm7425"};
- int stb_type=UNKNOWN;
-
- // main program
-@@ -139,6 +139,53 @@ int main(int argc, char **argv) {
- stb_type=BRCM7405;
- }
- pclose(pipe);
-+
-+ // CPU Detection. idea from pl
-+ pipe=popen("cat /proc/stb/info/chipset","r");
-+ if(pipe)
-+ {
-+ while (fgets(buf,sizeof(buf),pipe))
-+ {
-+ if (strstr(upcase(buf),"7335"))
-+ {
-+ stb_type=BRCM7335;
-+ break;
-+ }
-+ else if (strstr(upcase(buf),"7325"))
-+ {
-+ stb_type=BRCM7325;
-+ break;
-+ }
-+ else if (strstr(upcase(buf),"7405"))
-+ {
-+ stb_type=BRCM7405;
-+ break;
-+ }
-+ else if (strstr(upcase(buf),"7356"))
-+ {
-+ stb_type=BRCM7346;
-+ break;
-+ }
-+ else if (strstr(upcase(buf),"7346"))
-+ {
-+ stb_type=BRCM7346;
-+ break;
-+ }
-+
-+ else if (strstr(upcase(buf),"7424"))
-+ {
-+ stb_type=BRCM7425;
-+ break;
-+ }
-+ else if (strstr(upcase(buf),"7425"))
-+ {
-+ stb_type=BRCM7425;
-+ break;
-+ }
-+
-+ }
-+ }
-+ pclose(pipe);
- }
-
- if (stb_type == UNKNOWN)
-@@ -491,15 +538,27 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- char buf[256];
- FILE *pipe;
-
-- if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405)
-+ if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
- {
- // grab brcm7401 pic from decoder memory
-
-- if(!(memory = (unsigned char*)mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10100000)))
-+ if(stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325)
- {
-- printf("Mainmemory: <Memmapping failed>\n");
-- return;
-+ if(!(memory = (unsigned char*)mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10100000)))
-+ {
-+ printf("Mainmemory: <Memmapping failed>\n");
-+ return;
-+ }
-+ }
-+ else
-+ {
-+ if(!(memory = (unsigned char*)mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10600000)))
-+ {
-+ printf("Mainmemory: <Memmapping failed>\n");
-+ return;
-+ }
- }
-+
-
- unsigned char data[100];
-
-@@ -509,17 +568,31 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- memcpy(data,memory,100);
- //vert_start=data[0x1B]<<8|data[0x1A];
- //vert_end=data[0x19]<<8|data[0x18];
-- stride=data[0x15]<<8|data[0x14];
-- ofs=(data[0x28]<<8|data[0x27])>>4;
-- ofs2=(data[0x2c]<<8|data[0x2b])>>4;
-- adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
-- adr2=(data[0x23]<<24|data[0x22]<<16|data[0x21]<<8|data[0x20])&0xFFFFFF00;
-- offset=adr2-adr;
-+ if(stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325)
-+ {
-+ stride=data[0x15]<<8|data[0x14];
-+ ofs=(data[0x28]<<8|data[0x27])>>4;
-+ ofs2=(data[0x2c]<<8|data[0x2b])>>4;
-+ adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
-+ adr2=(data[0x23]<<24|data[0x22]<<16|data[0x21]<<8|data[0x20])&0xFFFFFF00;
-+ offset=adr2-adr;
-+ }
-+ else
-+ {
-+ stride=data[0x15]<<8|data[0x14];
-+ ofs=(data[0x3c]<<8|data[0x3b])>>4;
-+ ofs2=(data[0x40]<<8|data[0x3f])>>4;
-+ adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
-+ adr2=(data[0x37]<<24|data[0x36]<<16|data[0x35]<<8|data[0x34])&0xFFFFFF00;
-+ offset=adr2-adr;
-+
-+ }
-+
-
- munmap(memory, 100);
-
-- // printf("Stride: %d Res: %d\n",stride,res);
-- // printf("Adr: %X Adr2: %X OFS: %d %d\n",adr,adr2,ofs,ofs2);
-+ printf("Stride: %d Res: %d\n",stride,res);
-+ printf("Adr: %X Adr2: %X OFS: %d %d\n",adr,adr2,ofs,ofs2);
-
- pipe=popen("cat /proc/stb/vmpeg/0/yres","r");
- while (fgets(buf,sizeof(buf),pipe))
-@@ -530,7 +603,7 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- chroma = (unsigned char *)malloc(stride*(ofs2+64));
-
- // grabbing luma & chroma plane from the decoder memory
-- if (stb_type == BRCM7401 || stb_type == BRCM7405)
-+ if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
- {
- // on dm800/dm500hd we have direct access to the decoder memory
- if(!(memory_tmp = (unsigned char*)mmap(0, offset + stride*(ofs2+64), PROT_READ, MAP_SHARED, mem_fd, adr)))
-@@ -543,7 +616,7 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- // and hope we get a good timing. dont ask me why, but every DM800 i tested so far produced a good
- // result with a 50ms delay
-
-- } else if (stb_type == BRCM7400)
-+ } else if (stb_type == BRCM7400 || stb_type == BRCM7335)
- {
- // on dm8000 we have to use dma, so dont change anything here until you really know what you are doing !
-
-@@ -553,7 +626,7 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- return;
- }
- volatile unsigned long *mem_dma;
-- if(!(mem_dma = (volatile unsigned long*)mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0x10c02000)))
-+ if(!(mem_dma = (volatile unsigned long*)mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, (stb_type==BRCM7400)? 0x10c02000:0x10c01000)))
- {
- printf("Mainmemory: <Memmapping failed>\n");
- return;
-@@ -595,7 +668,7 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- int chr_luma_stride = 0x40;
- int sw=1;
-
-- if (stb_type == BRCM7405)
-+ if (stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
- chr_luma_stride *= 2;
-
- xsub=chr_luma_stride;
-@@ -630,9 +703,9 @@ void getvideo(unsigned char *video, int *xres, int *yres)
- }
- }
-
-- if (stb_type == BRCM7401 || stb_type == BRCM7405)
-+ if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
- munmap(memory_tmp, offset + stride*(ofs2+64));
-- else if (stb_type == BRCM7400)
-+ else if (stb_type == BRCM7400 || stb_type == BRCM7335)
- munmap(memory_tmp, DMA_BLOCKSIZE + 0x1000);
-
- for (t=0; t< stride*ofs;t+=4)
diff --git a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus_8394e1ba98c73d7c56d3235ef16cce253dc597cd.patch b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus_8394e1ba98c73d7c56d3235ef16cce253dc597cd.patch
new file mode 100644
index 0000000..b7208c6
--- /dev/null
+++ b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus_8394e1ba98c73d7c56d3235ef16cce253dc597cd.patch
@@ -0,0 +1,229 @@
+diff --git a/.gitignore b/.gitignore
+index ccfb515..a6f8d11 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -16,3 +16,4 @@ install-sh
+ *.o
+ missing
+ stamp-h1
++aio-grab_vuplus_*
+diff --git a/main.c b/main.c
+index 190ff5f..c611913 100644
+--- a/main.c
++++ b/main.c
+@@ -38,6 +38,7 @@ Feel free to use the code for your own projects. See LICENSE file for details.
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
++#include <ctype.h>
+
+ #include <linux/fb.h>
+
+@@ -101,10 +102,24 @@ static void combine(unsigned char *output,
+ const unsigned char *video, const unsigned char *osd,
+ unsigned int xres, unsigned int yres);
+
++#define IS_VUPLUS 1
++#if IS_VUPLUS
++enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405,BRCM7335,BRCM7325,BRCM7346,BRCM7425};
++char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405","Brcm7335","Brcm7325","Brcm7346","Brcm7425"};
++#else
+ enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405};
+ static const char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405"};
++#endif
+ static int stb_type=UNKNOWN;
+
++char* upcase(char* mixedstr)
++{
++ size_t j;
++ for (j=0; j< strlen(mixedstr); ++j)
++ mixedstr[j]=toupper(mixedstr[j]);
++ return mixedstr;
++}
++
+ static const char *file_getline(const char *filename)
+ {
+ static char *line = NULL;
+@@ -184,7 +199,6 @@ static int file_scanf_lines(const char *filename, const char *fmt, ...)
+ }
+
+ // main program
+-
+ int main(int argc, char **argv) {
+
+ printf("AiO Dreambox Screengrabber " PACKAGE_VERSION "\n\n");
+@@ -205,11 +219,29 @@ int main(int argc, char **argv) {
+ char filename[256] = { "/tmp/screenshot.bmp" };
+
+ // detect STB
+- const char *line = file_getline("/proc/fb");
++ char *line = (char*)file_getline("/proc/fb");
+ if (line == NULL)
+ return 1;
+
+ if (strstr(line, "bcmfb")) {
++#if IS_VUPLUS
++ if((line=(char*)file_getline("/proc/stb/info/chipset")) == NULL)
++ return 1;
++ if (strstr(upcase(line),"7335"))
++ stb_type=BRCM7335;
++ else if (strstr(upcase(line),"7325"))
++ stb_type=BRCM7325;
++ else if (strstr(upcase(line),"7405"))
++ stb_type=BRCM7405;
++ else if (strstr(upcase(line),"7356"))
++ stb_type=BRCM7346;
++ else if (strstr(upcase(line),"7346"))
++ stb_type=BRCM7346;
++ else if (strstr(upcase(line),"7424"))
++ stb_type=BRCM7425;
++ else if (strstr(upcase(line),"7425"))
++ stb_type=BRCM7425;
++#else
+ line = file_getline("/proc/stb/info/model");
+ if (line == NULL)
+ return 1;
+@@ -221,6 +253,7 @@ int main(int argc, char **argv) {
+ !strcmp(line, "dm800se") ||
+ !strcmp(line, "dm7020hd"))
+ stb_type = BRCM7405;
++#endif
+ } else if (strstr(line, "xilleonfb")) {
+ stb_type = XILLEON;
+ } else if (strstr(line, "Pallas FB")) {
+@@ -563,16 +596,34 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ perror("/dev/mem");
+ return false;
+ }
+-
++#if IS_VUPLUS
++ if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
++#else
+ if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405)
++#endif
+ {
+ // grab brcm7401 pic from decoder memory
++#if IS_VUPLUS
++ off_t offset_addr = 0x10600000;
++ switch(stb_type) {
++ case BRCM7401:
++ case BRCM7400:
++ case BRCM7405:
++ case BRCM7335:
++ case BRCM7325: offset_addr = 0x10100000; break;
++ }
++ unsigned char *memory = mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, offset_addr);
++ if (memory == MAP_FAILED) {
++ perror("mmap");
++ return false;
++ }
++#else
+ unsigned char *memory = mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10100000);
+ if (memory == MAP_FAILED) {
+ perror("mmap");
+ return false;
+ }
+-
++#endif
+ unsigned char data[100];
+
+ unsigned int adr,adr2,ofs,ofs2,offset/*,vert_start,vert_end*/;
+@@ -582,12 +633,30 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ memcpy(data,memory,100);
+ //vert_start=data[0x1B]<<8|data[0x1A];
+ //vert_end=data[0x19]<<8|data[0x18];
++#if IS_VUPLUS
++ if(stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325) {
++ stride=data[0x15]<<8|data[0x14];
++ ofs=(data[0x28]<<8|data[0x27])>>4;
++ ofs2=(data[0x2c]<<8|data[0x2b])>>4;
++ adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
++ adr2=(data[0x23]<<24|data[0x22]<<16|data[0x21]<<8|data[0x20])&0xFFFFFF00;
++ offset=adr2-adr;
++ } else {
++ stride=data[0x15]<<8|data[0x14];
++ ofs=(data[0x3c]<<8|data[0x3b])>>4;
++ ofs2=(data[0x40]<<8|data[0x3f])>>4;
++ adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
++ adr2=(data[0x37]<<24|data[0x36]<<16|data[0x35]<<8|data[0x34])&0xFFFFFF00;
++ offset=adr2-adr;
++ }
++#else
+ stride=data[0x15]<<8|data[0x14];
+ ofs=(data[0x28]<<8|data[0x27])>>4;
+ ofs2=(data[0x2c]<<8|data[0x2b])>>4;
+ adr=(data[0x1f]<<24|data[0x1e]<<16|data[0x1d]<<8|data[0x1c])&0xFFFFFF00;
+ adr2=(data[0x23]<<24|data[0x22]<<16|data[0x21]<<8|data[0x20])&0xFFFFFF00;
+ offset=adr2-adr;
++#endif
+
+ munmap(memory, 100);
+
+@@ -609,7 +678,11 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ assert(chroma);
+
+ // grabbing luma & chroma plane from the decoder memory
++#if IS_VUPLUS
++ if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425) {
++#else
+ if (stb_type == BRCM7401 || stb_type == BRCM7405) {
++#endif
+ // on dm800/dm500hd we have direct access to the decoder memory
+ memory = mmap(0, offset + stride*(ofs2+64), PROT_READ, MAP_SHARED, mem_fd, adr);
+ if (memory == MAP_FAILED) {
+@@ -620,7 +693,11 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ usleep(50000); // we try to get a full picture, its not possible to get a sync from the decoder so we use a delay
+ // and hope we get a good timing. dont ask me why, but every DM800 i tested so far produced a good
+ // result with a 50ms delay
++#if IS_VUPLUS
++ } else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
++#else
+ } else if (stb_type == BRCM7400) {
++#endif
+ // on dm8000 we have to use dma, so dont change anything here until you really know what you are doing !
+
+ unsigned int i = 0;
+@@ -639,7 +716,11 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ }
+
+ volatile unsigned long *mem_dma;
++#if IS_VUPLUS
++ mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, (stb_type==BRCM7400)?0x10c02000:0x10c01000);
++#else
+ mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0x10c02000);
++#endif
+ if (mem_dma == MAP_FAILED) {
+ perror("mmap");
+ return false;
+@@ -675,8 +756,11 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ unsigned int t = 0, t2 = 0, dat1 = 0;
+ unsigned int chr_luma_stride = 0x40;
+ unsigned int sw;
+-
++#if IS_VUPLUS
++ if (stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
++#else
+ if (stb_type == BRCM7405)
++#endif
+ chr_luma_stride *= 2;
+
+ xsub=chr_luma_stride;
+@@ -710,10 +794,17 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+ dat1+=stride;
+ }
+ }
+-
++#if IS_VUPLUS
++ if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425) {
++#else
+ if (stb_type == BRCM7401 || stb_type == BRCM7405)
++#endif
+ munmap(memory, offset + stride * (ofs2 + 64));
++#if IS_VUPLUS
++ } else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
++#else
+ else if (stb_type == BRCM7400) {
++#endif
+ memory -= 0x1000;
+ munmap(memory, DMA_BLOCKSIZE + 0x1000);
+ }