Mercurial > mplayer.hg
comparison libvo/vo_fbdev.c @ 251:ea2dcb082185
alpha rendering, virtual screensize reset fix
author | szabii |
---|---|
date | Thu, 29 Mar 2001 17:59:21 +0000 |
parents | 5673f9146c54 |
children | 8d526cf59ffe |
comparison
equal
deleted
inserted
replaced
250:d4f711fde94b | 251:ea2dcb082185 |
---|---|
169 if ((frame_buffer = (uint8_t *) mmap(0, fb_size, PROT_READ | PROT_WRITE, | 169 if ((frame_buffer = (uint8_t *) mmap(0, fb_size, PROT_READ | PROT_WRITE, |
170 MAP_SHARED, fb_dev_fd, 0)) == (uint8_t *) -1) { | 170 MAP_SHARED, fb_dev_fd, 0)) == (uint8_t *) -1) { |
171 printf("fb_init: Can't mmap %s: %s\n", fb_dev_name, strerror(errno)); | 171 printf("fb_init: Can't mmap %s: %s\n", fb_dev_name, strerror(errno)); |
172 return 1; | 172 return 1; |
173 } | 173 } |
174 close(fb_dev_fd); | |
175 | 174 |
176 printf("fb_init: framebuffer @ %p\n", frame_buffer); | 175 printf("fb_init: framebuffer @ %p\n", frame_buffer); |
177 printf("fb_init: framebuffer size: %d bytes\n", fb_size); | 176 printf("fb_init: framebuffer size: %d bytes\n", fb_size); |
178 printf("fb_init: bpp: %d\n", fb_bpp); | 177 printf("fb_init: bpp: %d\n", fb_bpp); |
179 printf("fb_init: pixel per line: %d\n", screen_width / (fb_bpp / 8)); | 178 printf("fb_init: pixel per line: %d\n", screen_width / (fb_bpp / 8)); |
272 if (pixel_format == IMGFMT_YV12) { | 271 if (pixel_format == IMGFMT_YV12) { |
273 for (y = 0; y < h; y++){ | 272 for (y = 0; y < h; y++){ |
274 dst = next_frame + (in_width * (y0 + y) + x0) * (fb_bpp / 8); | 273 dst = next_frame + (in_width * (y0 + y) + x0) * (fb_bpp / 8); |
275 for (x = 0; x < w; x++) { | 274 for (x = 0; x < w; x++) { |
276 if (srca[x]) { | 275 if (srca[x]) { |
277 dst[0] = (dst[0]*(srca[x]^255)+src[x]*(srca[x]))>>8; | 276 dst[0]=((dst[0]*srca[x])>>8)+src[x]; |
278 dst[1] = (dst[1]*(srca[x]^255)+src[x]*(srca[x]))>>8; | 277 dst[1]=((dst[1]*srca[x])>>8)+src[x]; |
279 dst[2] = (dst[2]*(srca[x]^255)+src[x]*(srca[x]))>>8; | 278 dst[2]=((dst[2]*srca[x])>>8)+src[x]; |
280 } | 279 } |
281 dst += fb_bpp / 8; | 280 dst += fb_bpp / 8; |
282 } | 281 } |
283 src += stride; | 282 src += stride; |
284 srca += stride; | 283 srca += stride; |
338 printf("vo_fbdev: uninit\n"); | 337 printf("vo_fbdev: uninit\n"); |
339 fb_var_info.xres_virtual = fb_xres_virtual; | 338 fb_var_info.xres_virtual = fb_xres_virtual; |
340 fb_var_info.yres_virtual = fb_yres_virtual; | 339 fb_var_info.yres_virtual = fb_yres_virtual; |
341 if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_var_info)) | 340 if (ioctl(fb_dev_fd, FBIOPUT_VSCREENINFO, &fb_var_info)) |
342 printf("vo_fbdev: Can't set virtual screensize to original value: %s\n", strerror(errno)); | 341 printf("vo_fbdev: Can't set virtual screensize to original value: %s\n", strerror(errno)); |
342 close(fb_dev_fd); | |
343 memset(next_frame, '\0', in_height * in_width * (fb_bpp / 8)); | 343 memset(next_frame, '\0', in_height * in_width * (fb_bpp / 8)); |
344 put_frame(); | 344 put_frame(); |
345 if (vt_active >= 0) | 345 if (vt_active >= 0) |
346 ioctl(vt_fd, VT_ACTIVATE, vt_active); | 346 ioctl(vt_fd, VT_ACTIVATE, vt_active); |
347 free(next_frame); | 347 free(next_frame); |