1: int32_t AG903_PgpMgrGetDGCLUT(uint8_t red[256], uint8_t green[256], uint8_t blue[256],
AG903_PgpMgrDGCLookupTable **table)
2: {
3:
int i, j;
4:
5:
6:
if ((red == NULL) || (green == NULL) || (blue == NULL) || (table == NULL)) {
7:
return -
AG903_EINVAL;
8: }
9:
10:
if ((PgpContext.num_dgc_lut + 1) >
AG903_PGP_MGR_MAX_DGC_LUT) {
11:
return -
AG903_ENOMEM;
12: }
13:
14:
15:
for (i = 0; i <
AG903_PGP_MGR_MAX_DGC_LUT; i++) {
16:
if (PgpContext.dgc_lut[i].is_used ==
false) {
17: PgpContext.dgc_lut[i].is_used =
true;
18: PgpContext.dgc_lut[i].id =
AG903_PGP_MGR_DGC_LUT_ID;
19: PgpContext.dgc_lut[i].ref_cnt = 0;
20:
21:
for (j = 0; j < 256; j++) {
22: PgpContext.dgc_lut[i].lut_data[0][j] = blue[j];
23: PgpContext.dgc_lut[i].lut_data[1][j] = green[j];
24: PgpContext.dgc_lut[i].lut_data[2][j] = red[j];
25: }
26: *table = &PgpContext.dgc_lut[i];
27:
break;
28: }
29: }
30:
31: PgpContext.num_dgc_lut++;
32:
33:
return AG903_ENONE;
34: }