配合自己开发的驱动导致显示出来只有3/4的屏幕,原因是RGBA的通道中的透明通道被驱动中强制转换掉,但是由于有别的一些数据等原因,此处的驱动问题不可改,于是修改MPLAYER中的源码,在MPlayer-1.0rc3中,MPlayer-1.0rc3\libvo\vo_fbdev.c这个文件中
if (ioctl(fb_dev_fd, FBIOGET_VSCREENINFO, &fb_vinfo)) {
mp_msg(MSGT_VO, MSGL_ERR, "Can't get VSCREENINFO: %s\n", strerror(errno));
goto err_out_fd;
}
fb_vinfo.transp.offset = 24;
fb_vinfo.transp.length = 8;
fb_vinfo.transp.msb_right = 0;
fb_orig_vinfo = fb_vinfo;
if ((fb_tty_fd = open("/dev/tty", O_RDWR)) < 0) {
mp_msg(MSGT_VO, MSGL_ERR, "notice: Can't open /dev/tty: %s\n", strerror(errno));
}
加入这3行代码,等于强制一个透明的通道,这样编译后的mplayer就没有问题了。