summaryrefslogtreecommitdiffstats
path: root/recipes/mplayer/files/vo_pxa.h
blob: 31cc1a7862862e90e5e238d19d6723220dfd09e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
 * Video driver for PXA 27x Overlay 2, in conjunction with kernel driver
 * by Tim Chick <tim (DOT) chick (AT) csr (DOT) com>
 * (C) 2007
 */

#include <linux/fb.h>

#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>

typedef struct pxa_priv_s {
    uint8_t *fb_mem_base;
    uint16_t *osd_mem_base;
    
    int fd;
    int base_fd;
    int overlay_fd;
    struct fb_var_screeninfo my_fb_var;
    struct fb_fix_screeninfo my_fb_fix;
    struct fb_var_screeninfo base_orig_fb_var;
    struct fb_var_screeninfo osd_fb_var;
    struct fb_fix_screeninfo osd_fb_fix;   
    int vm;
    uint32_t format;
    int src_width;
    int src_height;
    int width;
    int height;
    int rotate;
    int osd_cleared;
} pxa_priv_t;

typedef struct vo_pxa_pixel_data8 {
    unsigned int a,b;
} Vo_Pxa_Pixel_Data8;

#define UNUSED(v) ((void)(v))

/* Internal API */
static int vo_pxa_query_format( uint32_t format );
static void vo_pxa_copy_and_rotate( uint8_t *src, int stride, uint8_t *dst, int w, int h, int dst_stride );
static void vo_pxa_draw_alpha( int x, int y, int w, int h, unsigned char *src,
                               unsigned char *srca, int stride );
static void vo_pxa_draw_alpha_with_rotate( int x, int y, int w, int h, unsigned char *src,
                                           unsigned char *srca, int stride );

static void vo_pxa_clear_osd( uint16_t *mem_base, int len );