hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifdef Android
#include <utils/Singleton.h>
#include <RockchipRga_Android.h>
#else
#include "RockchipRga.h"
#endif
#include "rkRgaApi.h"
 
#ifdef __cplusplus
extern "C" {
#endif
 
#ifndef Android
static RockchipRga rkRga;
#endif
 
void rkRgaInit()
{
#ifndef Android
    rkRga.RkRgaInit();
#endif
}
 
int rkRgaBlit(struct rkRgaCfg *src_cfg, struct rkRgaCfg *dst_cfg)
{
    int ret = 0;
 
#ifdef Android
    android::RockchipRga& rkRga(android::RockchipRga::get());
#endif
 
    /********** rga_info_t Init **********/
    rga_info_t src;
    rga_info_t dst;
 
    memset(&src, 0, sizeof(rga_info_t));
    src.fd = -1;
    src.mmuFlag = 1;
    src.virAddr = src_cfg->addr;
 
    memset(&dst, 0, sizeof(rga_info_t));
    dst.fd = -1;
    dst.mmuFlag = 1;
    dst.virAddr = dst_cfg->addr;
 
    /********** set the rect_info **********/
    rga_set_rect(&src.rect, 0, 0, src_cfg->width, src_cfg->height, src_cfg->width/*stride*/, src_cfg->height, src_cfg->fmt);
    rga_set_rect(&dst.rect, 0, 0, dst_cfg->width, dst_cfg->height, dst_cfg->width/*stride*/, dst_cfg->height, dst_cfg->fmt);
 
    /************ set the rga_mod ,rotation\composition\scale\copy .... **********/
#if 0
    src.rotation = 0;
    src.rotation = HAL_TRANSFORM_ROT_90;
    src.rotation = HAL_TRANSFORM_ROT_180;
    src.rotation = HAL_TRANSFORM_ROT_270;
    src.rotation = HAL_TRANSFORM_FLIP_V;
    src.rotation = HAL_TRANSFORM_FLIP_H;
#endif
 
    /********** call rga_Interface **********/
    ret = rkRga.RkRgaBlit(&src, &dst, NULL);
    if (ret) {
       printf("rgaFillColor error : %s\n", strerror(errno));
    }
 
    return ret;
}
 
#ifdef __cplusplus
};
#endif