+
+- 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));