--- enigma2/lib/dvb/volume.cpp 2006-12-15 17:16:00.000000000 +0100 +++ enigma2/lib/dvb/volume.cpp 2007-03-11 15:29:36.000000000 +0100 @@ -78,14 +78,14 @@ audio_mixer_t mixer; #endif -#if HAVE_DVB_API_VERSION < 3 +//#if HAVE_DVB_API_VERSION < 3 /* convert to linear scale. 0 = loudest, ..63 */ - mixer.volume_left = 63.0-pow(1.068241, 63-left); - mixer.volume_right = 63.0-pow(1.068241, 63-right); -#else +// mixer.volume_left = 63.0-pow(1.068241, 63-left); +// mixer.volume_right = 63.0-pow(1.068241, 63-right); +//#else mixer.volume_left = left; mixer.volume_right = right; -#endif +//#endif eDebug("Setvolume: %d %d (raw)", leftVol, rightVol); eDebug("Setvolume: %d %d (-1db)", left, right); --- enigma2/lib/driver/avswitch.cpp 2006-12-13 17:30:26.000000000 +0100 +++ enigma2/lib/driver/avswitch.cpp 2007-03-11 19:17:57.000000000 +0100 @@ -7,6 +7,8 @@ #include #include #include +#include +#include eAVSwitch *eAVSwitch::instance = 0; @@ -126,38 +128,39 @@ 1-RGB 2-S-Video */ - char *cvbs="cvbs"; - char *rgb="rgb"; - char *svideo="svideo"; - char *yuv="yuv"; - int fd; - - if((fd = open("/proc/stb/avs/0/colorformat", O_WRONLY)) < 0) { - printf("cannot open /proc/stb/avs/0/colorformat\n"); - return; - } - switch(format) { - case 0: - write(fd, cvbs, strlen(cvbs)); - break; - case 1: - write(fd, rgb, strlen(rgb)); - break; - case 2: - write(fd, svideo, strlen(svideo)); - break; - case 3: - write(fd, yuv, strlen(yuv)); - break; - } - close(fd); + + int saafd = open("/dev/dbox/saa0", O_RDWR); + int avsfd = open("/dev/dbox/avs0", O_RDWR); + int arg=0; + switch (format) + { + default: + case 0: + arg=SAA_MODE_FBAS; + break; + case 1: + arg=SAA_MODE_RGB; + break; + case 2: + arg=SAA_MODE_SVIDEO; + break; + case 3: + arg=SAA_MODE_YUV_V; + break; + } + int fblk = ((arg==SAA_MODE_RGB) || (arg==SAA_MODE_YUV_V)) ? 1 : 0; + ioctl(saafd, SAAIOSMODE, &arg); + ioctl(avsfd, AVSIOSFBLK, &fblk); + close(saafd); + close(avsfd); + } void eAVSwitch::setAspectRatio(int ratio) { /* - 0-4:3 Letterbox - 1-4:3 PanScan + 0-4:3 PanScan + 1-4:3 Letterbox 2-16:9 3-16:9 forced ("panscan") 4-16:10 Letterbox @@ -165,7 +168,7 @@ 6-16:9 forced ("letterbox") */ char *aspect[] = {"4:3", "4:3", "any", "16:9", "16:10", "16:10", "16:9", "16:9"}; - char *policy[] = {"letterbox", "panscan", "bestfit", "panscan", "letterbox", "panscan", "letterbox"}; + char *policy[] = {"panscan", "letterbox", "bestfit", "panscan", "letterbox", "panscan", "letterbox"}; int fd; if((fd = open("/proc/stb/video/aspect", O_WRONLY)) < 0) { --- enigma2/lib/gdi/gfbdc.cpp 2007-07-09 20:11:17.000000000 +0200 +++ enigma2/lib/gdi/gfbdc.cpp 2007-07-09 20:11:51.000000000 +0200 @@ -17,7 +17,7 @@ if (!fb->Available()) eFatal("no framebuffer available"); - fb->SetMode(720, 576, 32); + fb->SetMode(720, 576, 8); for (int y=0; y<576; y++) // make whole screen transparent memset(fb->lfb+y*fb->Stride(), 0x00, fb->Stride()); @@ -25,8 +25,8 @@ surface.type = 0; surface.x = 720; surface.y = 576; - surface.bpp = 32; - surface.bypp = 4; + surface.bpp = 8; + surface.bypp = 1; surface.stride = fb->Stride(); surface.data = fb->lfb; surface.offset = 0; @@ -41,8 +41,8 @@ surface_back.type = 0; surface_back.x = 720; surface_back.y = 576; - surface_back.bpp = 32; - surface_back.bypp = 4; + surface_back.bpp = 8; + surface_back.bypp = 1; surface_back.stride = fb->Stride(); surface_back.offset = surface.y; surface_back.data = fb->lfb + fb_size;