summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChang.H.S <jhs@dev3>2012-12-06 01:56:27 (GMT)
committerChang.H.S <jhs@dev3>2012-12-06 01:56:27 (GMT)
commite7e46425236c6ff39037a35aa7bea7444f60faf1 (patch)
treee57c42341f81406097fa52b43c8f0fa34fbc77a1
parented0cfb11b7561461932ad8089ef8f347f547736d (diff)
fix aio-grab.
-rwxr-xr-xmeta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb15
-rw-r--r--meta-openvuplus/recipes-vuplus/aio-grab/aio-grab/aio-grab_vuplus.patch223
-rw-r--r--meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bb7
-rw-r--r--meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bbappend8
4 files changed, 174 insertions, 79 deletions
diff --git a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb
new file mode 100755
index 0000000..9a34d2d
--- /dev/null
+++ b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab.bb
@@ -0,0 +1,15 @@
+DESCRIPTION="AiO screen grabber"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+PR = "r1"
+PV = "0.8+cvs${SRCDATE}"
+SRCDATE = "20101123"
+
+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}/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
index 1459e22..b9f4039 100644
--- 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
@@ -1,94 +1,189 @@
diff --git a/main.c b/main.c
-index 190ff5f..08298e9 100644
+index ffff998..4bf7327 100644
--- a/main.c
+++ b/main.c
-@@ -101,8 +101,8 @@ static void combine(unsigned char *output,
- const unsigned char *video, const unsigned char *osd,
- unsigned int xres, unsigned int yres);
+@@ -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};
--static const char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405"};
-+enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405,BRCM7335,BRCM7325};
-+static const char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405","Brcm7335","Brcm7325"};
- static int stb_type=UNKNOWN;
+-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;
- static const char *file_getline(const char *filename)
-@@ -221,6 +221,22 @@ int main(int argc, char **argv) {
- !strcmp(line, "dm800se") ||
- !strcmp(line, "dm7020hd"))
- stb_type = BRCM7405;
+ // main program
+@@ -139,6 +139,53 @@ int main(int argc, char **argv) {
+ stb_type=BRCM7405;
+ }
+ pclose(pipe);
+
+ // CPU Detection. idea from pl
-+ if (line != NULL)
-+ free(line);
-+ line = file_getline("/proc/stb/info/chipset");
-+ if(line)
++ pipe=popen("cat /proc/stb/info/chipset","r");
++ if(pipe)
+ {
-+ if (!strcmp(line, "7335"))
-+ stb_type = BRCM7335;
-+ else if (!strcmp(line, "7325"))
-+ stb_type = BRCM7325;
-+ else if (!strcmp(line, "7405"))
-+ stb_type = BRCM7405;
++ 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;
++ }
++
++ }
+ }
-+ free(line);
-+
- } else if (strstr(line, "xilleonfb")) {
- stb_type = XILLEON;
- } else if (strstr(line, "Pallas FB")) {
-@@ -564,7 +580,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
- return false;
++ 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)
++ 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
- unsigned char *memory = mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10100000);
-@@ -609,7 +625,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
- assert(chroma);
+
+- 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) {
+- 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
- memory = mmap(0, offset + stride*(ofs2+64), PROT_READ, MAP_SHARED, mem_fd, adr);
- if (memory == MAP_FAILED) {
-@@ -620,7 +636,7 @@ 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
-- } else if (stb_type == BRCM7400) {
-+ } else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
+ 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 !
- unsigned int i = 0;
-@@ -640,6 +656,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
-
+@@ -553,7 +626,7 @@ void getvideo(unsigned char *video, int *xres, int *yres)
+ return;
+ }
volatile unsigned long *mem_dma;
- mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0x10c02000);
-+ mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, (stb_type==BRCM7400)? 0x10c02000:0x10c01000);
- if (mem_dma == MAP_FAILED) {
- perror("mmap");
- return false;
-@@ -676,7 +693,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
- unsigned int chr_luma_stride = 0x40;
- unsigned int sw;
+- 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)
++ if (stb_type == BRCM7405 || stb_type == BRCM7325 || stb_type == BRCM7346 || stb_type == BRCM7425)
chr_luma_stride *= 2;
xsub=chr_luma_stride;
-@@ -711,9 +728,9 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+@@ -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)
- munmap(memory, offset + stride * (ofs2 + 64));
-- else if (stb_type == BRCM7400) {
-+ else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
- memory -= 0x1000;
- munmap(memory, DMA_BLOCKSIZE + 0x1000);
- }
++ 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_0.8.bb b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bb
deleted file mode 100644
index bc89b2d..0000000
--- a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-SUMMARY = "Screen grabber for Dreambox Set-Top-Boxes"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
-SRCREV = "8394e1ba98c73d7c56d3235ef16cce253dc597cd"
-PR = "r1"
-
-inherit autotools schwerkraft-git
diff --git a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bbappend b/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bbappend
deleted file mode 100644
index 9199d4a..0000000
--- a/meta-openvuplus/recipes-vuplus/aio-grab/aio-grab_0.8.bbappend
+++ /dev/null
@@ -1,8 +0,0 @@
-PR .= "-vuplus0"
-
-SRC_URI += " \
- file://aio-grab_vuplus.patch;patch=1;pnum=1 \
-"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-