mirror of https://github.com/mpv-player/mpv
cleanup: vo_fbdev: simplify some code
Simplify by using FFMAX3. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33300 b3059339-0415-0410-9bf9-f77b7e298cf2 Simplify colormap generation code, avoid some mallocs and add frees for one error case. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33302 b3059339-0415-0410-9bf9-f77b7e298cf2 Use memcpy_pic instead of reimplementing it. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33303 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
fa33ca0695
commit
95d40b3f8d
|
@ -122,42 +122,25 @@ static struct fb_cmap *make_directcolor_cmap(struct fb_var_screeninfo *var)
|
||||||
bcols = 1 << var->blue.length;
|
bcols = 1 << var->blue.length;
|
||||||
|
|
||||||
/* Make our palette the length of the deepest color */
|
/* Make our palette the length of the deepest color */
|
||||||
cols = (rcols > gcols ? rcols : gcols);
|
cols = FFMAX3(rcols, gcols, bcols);
|
||||||
cols = (cols > bcols ? cols : bcols);
|
|
||||||
|
|
||||||
red = malloc(cols * sizeof(red[0]));
|
red = malloc(3 * cols * sizeof(red[0]));
|
||||||
if(!red) {
|
if(!red) {
|
||||||
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate red palette with %d entries.\n", cols);
|
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate red palette with %d entries.\n", cols);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
for(i=0; i< rcols; i++)
|
green = red + cols;
|
||||||
|
blue = green + cols;
|
||||||
|
for (i = 0; i < cols; i++) {
|
||||||
red[i] = (65535/(rcols-1)) * i;
|
red[i] = (65535/(rcols-1)) * i;
|
||||||
|
|
||||||
green = malloc(cols * sizeof(green[0]));
|
|
||||||
if(!green) {
|
|
||||||
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate green palette with %d entries.\n", cols);
|
|
||||||
free(red);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
for(i=0; i< gcols; i++)
|
|
||||||
green[i] = (65535/(gcols-1)) * i;
|
green[i] = (65535/(gcols-1)) * i;
|
||||||
|
|
||||||
blue = malloc(cols * sizeof(blue[0]));
|
|
||||||
if(!blue) {
|
|
||||||
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate blue palette with %d entries.\n", cols);
|
|
||||||
free(red);
|
|
||||||
free(green);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
for(i=0; i< bcols; i++)
|
|
||||||
blue[i] = (65535/(bcols-1)) * i;
|
blue[i] = (65535/(bcols-1)) * i;
|
||||||
|
}
|
||||||
|
|
||||||
cmap = malloc(sizeof(struct fb_cmap));
|
cmap = malloc(sizeof(struct fb_cmap));
|
||||||
if(!cmap) {
|
if(!cmap) {
|
||||||
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate color map\n");
|
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] Can't allocate color map\n");
|
||||||
free(red);
|
free(red);
|
||||||
free(green);
|
|
||||||
free(blue);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
cmap->start = 0;
|
cmap->start = 0;
|
||||||
|
@ -279,12 +262,12 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width,
|
||||||
return 1;
|
return 1;
|
||||||
if (ioctl(fb_dev_fd, FBIOPUTCMAP, cmap)) {
|
if (ioctl(fb_dev_fd, FBIOPUTCMAP, cmap)) {
|
||||||
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] can't put cmap: %s\n", strerror(errno));
|
mp_msg(MSGT_VO, MSGL_ERR, "[fbdev2] can't put cmap: %s\n", strerror(errno));
|
||||||
|
free(cmap->red);
|
||||||
|
free(cmap);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
fb_cmap_changed = 1;
|
fb_cmap_changed = 1;
|
||||||
free(cmap->red);
|
free(cmap->red);
|
||||||
free(cmap->green);
|
|
||||||
free(cmap->blue);
|
|
||||||
free(cmap);
|
free(cmap);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -375,13 +358,8 @@ static int draw_slice(uint8_t *src[], int stride[], int w, int h, int x, int y)
|
||||||
uint8_t *dest = next_frame + (in_width * y + x) * fb_pixel_size;
|
uint8_t *dest = next_frame + (in_width * y + x) * fb_pixel_size;
|
||||||
int next = in_width * fb_pixel_size;
|
int next = in_width * fb_pixel_size;
|
||||||
#endif
|
#endif
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < h; i++) {
|
memcpy_pic(dest, in, w * fb_pixel_size, h, next, stride[0]);
|
||||||
fast_memcpy(dest, in, w * fb_pixel_size);
|
|
||||||
dest += next;
|
|
||||||
in += stride[0];
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,14 +370,11 @@ static void check_events(void)
|
||||||
static void flip_page(void)
|
static void flip_page(void)
|
||||||
{
|
{
|
||||||
#ifndef USE_CONVERT2FB
|
#ifndef USE_CONVERT2FB
|
||||||
int i, out_offset = 0, in_offset = 0;
|
int out_offset = 0, in_offset = 0;
|
||||||
|
|
||||||
for (i = 0; i < in_height; i++) {
|
memcpy_pic(center + out_offset, next_frame + in_offset,
|
||||||
fast_memcpy(center + out_offset, next_frame + in_offset,
|
in_width * fb_pixel_size, in_height,
|
||||||
in_width * fb_pixel_size);
|
fb_line_len, in_width * fb_pixel_size);
|
||||||
out_offset += fb_line_len;
|
|
||||||
in_offset += in_width * fb_pixel_size;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue