summaryrefslogtreecommitdiff
path: root/tvapi/libtv/vpp/CPQdb.cpp (plain)
blob: 4f11e7f0556ea319abde8128734a76d83ed23f61
1/*
2 * CPQdb.cpp
3 *
4 * d on: 2011-12-13
5 * Author: casey
6 *
7 * change 2015.04
8 * showbo
9 */
10
11#include <stdio.h>
12#include <string.h>
13#include <stdlib.h>
14#include <sys/stat.h>
15#include <errno.h>
16#include <xxxconfig.h>
17#include "CPQdb.h"
18#include "../tvutils/tvutils.h"
19#include "../tvconfig/tvconfig.h"
20
21#if (PQ_NO_ANDROID == 0)
22#include <android/log.h>
23#define LOG_TAG "CPQdb"
24#include "CTvLog.h"
25#endif
26
27#if (PQ_NO_ANDROID == 1)
28using namespace std;
29#endif
30
31//#define CPQDB_DEBUG
32
33#define BRIGHTNESS_ID 0
34#define CONTRAST_ID 1
35#define SATURATION_ID 1
36#define HUE_ID 0
37#define SHARPNESS_ID 1
38
39//static char *str_buf[256];
40
41#define ID_FIELD "TableID"
42#define NR_LEVEL_NAME "NRLevel"
43#define CM_LEVEL_NAME "CMLevel"
44#define LEVEL_NAME "Level"
45#define ADC_SETTING "ADC_Settings"
46#define CVD2_SETTING "CVD2_Settings"
47#define PORT "Port"
48#define FORMAT "Format"
49
50#define CC_LINE_MAX_LEN (1024)
51
52#define LOG_TAG "CPQdb"
53//#define CPQDB_DEBUG
54
55
56/*int get_pq_from_file(const char *file_name, const char *screen_size, char *key_str_buf[]) {
57 FILE *fp = NULL;
58 int flag = -1;
59 char *str = NULL;
60 char r_line_buf[CC_LINE_MAX_LEN];
61
62 if (file_name == NULL || screen_size == NULL || key_str_buf == NULL) {
63 return -1;
64 }
65
66 fp = fopen(file_name, "r");
67 if (fp == NULL) {
68 LOGE("%s: open file \"%s\" error(%s).\n", "TV", file_name, strerror(errno));
69 return -1;
70 }
71
72 while (fgets(r_line_buf, CC_LINE_MAX_LEN, fp)) {
73 LOGD("%s, fgets_buf = %s\n","TV", r_line_buf);
74 if (NULL != strstr(r_line_buf, screen_size)) {
75 LOGD("%s, screen_size_buf = %s\n","TV", r_line_buf);
76 str = (char*)malloc(strlen(r_line_buf));
77 memset(str, 0, strlen(str));
78 if (NULL != str) {
79 strcpy(str, r_line_buf);
80 key_str_buf[0] = str;
81 LOGD("%s, key_str_buf[0] = %s\n","TV", key_str_buf[0]);
82 }
83 flag = 0;
84 break;
85 }
86 }
87
88 if (flag != 0)
89 key_str_buf[0] = NULL;
90
91 fclose(fp);
92 fp = NULL;
93
94 return flag;
95 }*/
96
97/*int getFileSizeSystemCall(char * strFileName)
98 {
99 struct stat temp;
100 stat(strFileName, &temp);
101 return temp.st_size;
102 }*/
103
104CPqData::CPqData() {
105 int i = 0, j = 0;
106
107 for (i = 0; i < 15; i++) {
108 pq_bri_data[i].TotalNode = 0;
109 pq_bri_data[i].NodeValue = 0;
110 pq_bri_data[i].IndexValue = 0;
111 pq_bri_data[i].RegValue = 0;
112 pq_bri_data[i].step = 0;
113
114 pq_con_data[i].TotalNode = 0;
115 pq_con_data[i].NodeValue = 0;
116 pq_con_data[i].IndexValue = 0;
117 pq_con_data[i].RegValue = 0;
118 pq_con_data[i].step = 0;
119
120 pq_sat_data[i].TotalNode = 0;
121 pq_sat_data[i].NodeValue = 0;
122 pq_sat_data[i].IndexValue = 0;
123 pq_sat_data[i].RegValue = 0;
124 pq_sat_data[i].step = 0;
125
126 pq_hue_data[i].TotalNode = 0;
127 pq_hue_data[i].NodeValue = 0;
128 pq_hue_data[i].IndexValue = 0;
129 pq_hue_data[i].RegValue = 0;
130 pq_hue_data[i].step = 0;
131 }
132
133 for (i = 0; i < 10; i++) {
134 pq_sharpness_reg_data[i].length = 0;
135 pq_sharpness_reg_data_1[i].length = 0;
136 for (j = 0; j < 50; j++) {
137 pq_sharpness_reg_data[i].reg_data[j].TotalNode = 0;
138 pq_sharpness_reg_data_1[i].reg_data[j].TotalNode = 0;
139 pq_sharpness_reg_data[i].reg_data[j].Value.type = 0;
140 pq_sharpness_reg_data_1[i].reg_data[j].Value.type = 0;
141 pq_sharpness_reg_data[i].reg_data[j].Value.addr = 0;
142 pq_sharpness_reg_data_1[i].reg_data[j].Value.addr = 0;
143 pq_sharpness_reg_data[i].reg_data[j].Value.mask = 0;
144 pq_sharpness_reg_data_1[i].reg_data[j].Value.mask = 0;
145 pq_sharpness_reg_data[i].reg_data[j].Value.val = 0;
146 pq_sharpness_reg_data_1[i].reg_data[j].Value.val = 0;
147 pq_sharpness_reg_data[i].reg_data[j].NodeValue = 0;
148 pq_sharpness_reg_data_1[i].reg_data[j].NodeValue = 0;
149 pq_sharpness_reg_data[i].reg_data[j].IndexValue = 0;
150 pq_sharpness_reg_data_1[i].reg_data[j].IndexValue = 0;
151 pq_sharpness_reg_data[i].reg_data[j].step = 0;
152 pq_sharpness_reg_data_1[i].reg_data[j].step = 0;
153 }
154 }
155}
156
157CPqData::~CPqData() {
158}
159
160int CPqData::openPqDB(const char *db_path) {
161 int rval;
162 project_info_t tmp_info;
163 char SYSTEM_PQ[128] = { 0 };
164 char tmp_buf[128] = { 0 };
165
166 strcpy(PQ_DB_PATH, db_path);
167 strcpy(SYSTEM_PQ, "/system/etc/pq.db");
168
169 if (GetProjectInfo(&tmp_info) == 0) {
170 strcpy(tmp_buf, "/system/etc/");
171 strcat(tmp_buf, tmp_info.panel_type);
172 strcat(tmp_buf, ".db");
173 if (access(tmp_buf, 0) == 0) {
174 strncpy(SYSTEM_PQ, tmp_buf, sizeof(SYSTEM_PQ) - 1);
175 }
176 }
177
178 LOGD("openPqDB path = %s = %s", db_path, PQ_DB_PATH);
179 if (access(PQ_DB_PATH, 0) < 0) {
180 CFile file(SYSTEM_PQ);
181 if (file.copyTo(PQ_DB_PATH) != 0) {
182 LOGE("%s, copy file \"%s\" to \"%s\" error", __FUNCTION__, SYSTEM_PQ, PQ_DB_PATH);
183 return -1;
184 } else {
185 LOGD("%s, copy file \"%s\" to \"%s\" ok", __FUNCTION__, SYSTEM_PQ, PQ_DB_PATH);
186 }
187 }
188
189 closeDb();
190 rval = openDb(PQ_DB_PATH);
191
192 char *err;
193 bool isOk = integrityCheck();
194 if (!isOk) {
195 CFile file(SYSTEM_PQ);
196 if (file.copyTo(PQ_DB_PATH) != 0) {
197 LOGE("%s, copy file = %s , error", __FUNCTION__, SYSTEM_PQ);
198 return -1;
199 } else {
200 closeDb();
201 rval = openDb(PQ_DB_PATH);
202 LOGD("%s, copy file = %s , ok", __FUNCTION__, SYSTEM_PQ);
203 }
204 }
205 return rval;
206}
207int CPqData::reopenDB()
208{
209 int rval = openDb(PQ_DB_PATH);
210 return rval;
211}
212
213int CPqData::getRegValues(const char *table_name, tvin_port_t source, tvin_sig_fmt_t signal,
214 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
215{
216 CSqlite::Cursor c_tablelist, c_reg_list;
217 int index_am_reg = 0;
218 char sqlmaster[256];
219 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
220 if (table_name == NULL || !strlen(table_name)) {
221 LOGE("%s, table_name is null\n", __FUNCTION__);
222 return index_am_reg;
223 }
224
225 getSqlParams(__FUNCTION__, sqlmaster,
226 "select TableName from %s where "
227 "TVIN_PORT = %d and "
228 "TVIN_SIG_FMT = %d and "
229 "TVIN_TRANS_FMT = %d ;", table_name, source, signal, mode);
230 this->select(sqlmaster, c_tablelist);
231 if (c_tablelist.moveToFirst()) { //for table list
232 do {
233 getSqlParams(__FUNCTION__, sqlmaster,
234 "select RegType, RegAddr, RegMask, RegValue from %s;",
235 c_tablelist.getString(0).string());
236 this->select(sqlmaster, c_reg_list);
237
238 if (c_reg_list.moveToFirst()) { //reg list for each table
239 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
240 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
241 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
242 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
243 do {
244 regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type);
245 regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr);
246 regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask);
247 regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val);
248 index_am_reg++;
249 } while (c_reg_list.moveToNext());
250 }
251 } while (c_tablelist.moveToNext());
252 }
253 //
254 regs->length = index_am_reg;
255 LOGD("%s, length = %d", __FUNCTION__, regs->length);
256 return index_am_reg;
257}
258
259int CPqData::getRegValuesByValue(const char *name, const char *f_name, const char *f2_name,
260 const int val, const int val2, am_regs_t *regs) {
261 CSqlite::Cursor c_reg_list;
262 char sqlmaster[256];
263 int rval = -1;
264 //first get table name
265 if ((strlen(f2_name) == 0) && (val2 == 0))
266 getSqlParams(__FUNCTION__, sqlmaster,
267 "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name,
268 val);
269 else
270 getSqlParams(__FUNCTION__, sqlmaster,
271 "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;",
272 name, f_name, val, f2_name, val2);
273
274 rval = this->select(sqlmaster, c_reg_list);
275 int count = c_reg_list.getCount();
276 if (count > REGS_MAX_NUMBER) {
277 LOGD("%s, regs is too more, in pq.db count = %d", __FUNCTION__, count);
278 return -1;
279 }
280 int index_am_reg = 0;
281 if (c_reg_list.moveToFirst()) { //reg list for each table
282 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
283 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
284 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
285 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
286 do {
287 regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type);
288 regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr);
289 regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask);
290 regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val);
291 index_am_reg++;
292 } while (c_reg_list.moveToNext());
293 } else
294 rval = -1;
295 //
296 regs->length = index_am_reg;
297 LOGD("%s, length = %d", __FUNCTION__, regs->length);
298 return rval;
299}
300
301int CPqData::getRegValuesByValue_long(const char *name, const char *f_name, const char *f2_name,
302 const int val, const int val2, am_regs_t *regs, am_regs_t *regs_1) {
303 CSqlite::Cursor c_reg_list;
304 char sqlmaster[256];
305 int rval = -1;
306 //first get table name
307 if ((strlen(f2_name) == 0) && (val2 == 0))
308 getSqlParams(__FUNCTION__, sqlmaster,
309 "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name,
310 val);
311 else
312 getSqlParams(__FUNCTION__, sqlmaster,
313 "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;",
314 name, f_name, val, f2_name, val2);
315
316 rval = this->select(sqlmaster, c_reg_list);
317
318 int index_am_reg = 0;
319 int count = c_reg_list.getCount();
320 if (count > 1024) {
321 LOGD("%s, regs is too more, in pq.db count = %d", __FUNCTION__, count);
322 return -1;
323 }
324 if (c_reg_list.moveToFirst()) { //reg list for each table
325 int index_type = 0;//c_reg_list.getColumnIndex("RegType");
326 int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr");
327 int index_mask = 2;//c_reg_list.getColumnIndex("RegMask");
328 int index_val = 3;//c_reg_list.getColumnIndex("RegValue");
329 do {
330 if (index_am_reg < 512) {
331 regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type);
332 regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr);
333 regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask);
334 regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val);
335 } else if (index_am_reg >= 512 && index_am_reg < 1024) {
336 regs_1->am_reg[index_am_reg - 512].type = c_reg_list.getUInt(index_type);
337 regs_1->am_reg[index_am_reg - 512].addr = c_reg_list.getUInt(index_addr);
338 regs_1->am_reg[index_am_reg - 512].mask = c_reg_list.getUInt(index_mask);
339 regs_1->am_reg[index_am_reg - 512].val = c_reg_list.getUInt(index_val);
340 } else {
341 }
342 index_am_reg++;
343 } while (c_reg_list.moveToNext());
344 } else
345 rval = -1;
346 //
347 if (count < 512) {
348 regs->length = index_am_reg;
349 } else if (index_am_reg >= 512 && index_am_reg < 1024) {
350 regs->length = 512;
351 regs_1->length = index_am_reg - 512;
352 }
353 LOGD("%s, length = %d", __FUNCTION__, index_am_reg);
354 return rval;
355}
356int CPqData::PQ_GetBaseColorParams(vpp_color_basemode_t basemode, tvin_port_t source_port,
357 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs) {
358 CSqlite::Cursor c;
359 char sqlmaster[256];
360 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
361 int rval = -1;
362 getSqlParams(__FUNCTION__, sqlmaster,
363 "select TableName from GeneralColormanagementTable where "
364 "TVIN_PORT = %d and "
365 "TVIN_SIG_FMT = %d and "
366 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
367
368 this->select(sqlmaster, c);
369
370 if (c.moveToFirst()) {
371 int index_TableName = 0;//c.getColumnIndex("TableName");
372 rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int) basemode,
373 0, regs);
374 }
375 return rval;
376}
377
378int CPqData::PQ_GetCM2Params(vpp_color_management2_t basemode, tvin_port_t source_port,
379 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs) {
380 CSqlite::Cursor c;
381 char sqlmaster[256];
382 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
383 int rval = -1;
384 if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
385 if (source_port != TVIN_PORT_CVBS3) {
386 source_port = TVIN_PORT_CVBS1;
387 }
388 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
389 source_port = TVIN_PORT_HDMI0;
390 } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
391 source_port = TVIN_PORT_MPEG0;
392 }
393
394 if (sig_fmt >= TVIN_SIG_FMT_MAX) {
395 sig_fmt = TVIN_SIG_FMT_NULL;
396 }
397
398 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralCM2Table where "
399 "TVIN_PORT = %d and "
400 "TVIN_SIG_FMT = %d and "
401 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
402
403 rval = this->select(sqlmaster, c);
404
405 if (c.moveToFirst()) {
406 int index_TableName = 0;//c.getColumnIndex("TableName");
407 rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int) basemode,
408 0, regs);
409 }
410 return rval;
411}
412
413int CPqData::PQ_GetNR2Params(vpp_noise_reduction2_mode_t nr_mode, tvin_port_t source_port,
414 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs) {
415 CSqlite::Cursor c;
416 char sqlmaster[256];
417 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
418 int rval = -1;
419
420 if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
421 if (source_port != TVIN_PORT_CVBS3) {
422 source_port = TVIN_PORT_CVBS1;
423 }
424 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
425 source_port = TVIN_PORT_HDMI0;
426 } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
427 source_port = TVIN_PORT_MPEG0;
428 }
429
430 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralNR2Table where "
431 "TVIN_PORT = %d and "
432 "TVIN_SIG_FMT = %d and "
433 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
434
435 rval = this->select(sqlmaster, c);
436
437 if (c.moveToFirst()) {
438 int index_TableName = 0;//c.getColumnIndex("TableName");
439 rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int) nr_mode, 0,
440 regs);
441 }
442 return rval;
443}
444
445int CPqData::PQ_GetXVYCCParams(vpp_xvycc_mode_t xvycc_mode, tvin_port_t source_port,
446 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs,
447 am_regs_t *regs_1) {
448 CSqlite::Cursor c;
449 char sqlmaster[256];
450 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
451 int rval = -1;
452
453 if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
454 if (source_port != TVIN_PORT_CVBS3) {
455 source_port = TVIN_PORT_CVBS1;
456 }
457 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
458 source_port = TVIN_PORT_HDMI0;
459 } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
460 source_port = TVIN_PORT_MPEG0;
461 }
462
463 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralXVYCCTable where "
464 "TVIN_PORT = %d and "
465 "TVIN_SIG_FMT = %d and "
466 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
467
468 rval = this->select(sqlmaster, c);
469
470 if (c.moveToFirst()) {
471 int index_TableName = 0;//c.getColumnIndex("TableName");
472 rval = getRegValuesByValue_long(c.getString(index_TableName), LEVEL_NAME, "",
473 (int) xvycc_mode, 0, regs, regs_1);
474 }
475 return rval;
476}
477
478int CPqData::PQ_GetMCDIParams(vpp_mcdi_mode_t mcdi_mode, tvin_port_t source_port,
479 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs) {
480 CSqlite::Cursor c;
481 char sqlmaster[256];
482 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
483 int rval = -1;
484
485 if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) {
486 if (source_port != TVIN_PORT_CVBS3) {
487 source_port = TVIN_PORT_CVBS1;
488 }
489 } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) {
490 source_port = TVIN_PORT_HDMI0;
491 } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) {
492 source_port = TVIN_PORT_MPEG0;
493 }
494
495 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralMCDITable where "
496 "TVIN_PORT = %d and "
497 "TVIN_SIG_FMT = %d and "
498 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
499
500 rval = this->select(sqlmaster, c);
501
502 if (c.moveToFirst()) {
503 int index_TableName = 0;//c.getColumnIndex("TableName");
504 rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int) mcdi_mode,
505 0, regs);
506 }
507 return rval;
508}
509
510int CPqData::PQ_GetDeblockParams(vpp_deblock_mode_t deb_mode, tvin_port_t source_port,
511 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs)
512{
513 CSqlite::Cursor c;
514 char sqlmaster[256];
515 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
516 int rval = -1;
517
518 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralDeblockTable where "
519 "TVIN_PORT = %d and "
520 "TVIN_SIG_FMT = %d and "
521 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, is2dOr3d);
522
523 rval = this->select(sqlmaster, c);
524
525 if (c.moveToFirst()) {
526 rval = getRegValuesByValue(c.getString(0), LEVEL_NAME, "", (int)deb_mode, 0, regs);
527 }
528 return rval;
529}
530
531int CPqData::PQ_GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode,
532 tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt,
533 tcon_rgb_ogo_t *params) {
534 CSqlite::Cursor c;
535 char sqlmaster[256];
536
537 int rval = -1;
538
539 //default
540 params->en = 1;
541 params->r_pre_offset = 0;
542 params->g_pre_offset = 0;
543 params->b_pre_offset = 0;
544 params->r_gain = 1024;
545 params->g_gain = 1024;
546 params->b_gain = 1024;
547 params->r_post_offset = 0;
548 params->g_post_offset = 0;
549 params->b_post_offset = 0;
550
551 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralWhiteBalanceTable where "
552 "TVIN_PORT = %d and "
553 "TVIN_SIG_FMT = %d and "
554 "TVIN_TRANS_FMT = %d;", source_port, sig_fmt, trans_fmt);
555
556 rval = this->select(sqlmaster, c);
557
558 if (c.moveToFirst()) {
559 int index_TableName = 0;//c.getColumnIndex("TableName");
560 getSqlParams(
561 __FUNCTION__,
562 sqlmaster,
563 "select Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset from %s where "
564 "Level = %d and def = 0;", c.getString(index_TableName).string(),
565 (int) Tempmode);
566
567 rval = this->select(sqlmaster, c);
568
569 if (c.moveToFirst()) {
570 params->en = c.getInt(0);//index 0
571 params->r_pre_offset = c.getInt(1);
572 params->g_pre_offset = c.getInt(2);
573 params->b_pre_offset = c.getInt(3);
574 params->r_gain = c.getInt(4);
575 params->g_gain = c.getInt(5);
576 params->b_gain = c.getInt(6);
577 params->r_post_offset = c.getInt(7);
578 params->g_post_offset = c.getInt(8);
579 params->b_post_offset = c.getInt(9);//index 9
580 }
581 }
582 return rval;
583}
584int CPqData::PQ_SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode,
585 tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt,
586 tcon_rgb_ogo_t params) {
587 CSqlite::Cursor c;
588 char sqlmaster[256];
589 char sql[512];
590
591 int rval = -1;
592
593 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralWhiteBalanceTable where "
594 "TVIN_PORT = %d and "
595 "TVIN_SIG_FMT = %d and "
596 "TVIN_TRANS_FMT = %d;", source_port, sig_fmt, trans_fmt);
597
598 rval = this->select(sqlmaster, c);
599
600 if (c.moveToFirst()) {
601 int index_TableName = 0;//c.getColumnIndex("TableName");
602 getSqlParams(
603 __FUNCTION__,
604 sql,
605 "update %s set Enable = %d, "
606 "R_Pre_Offset = %d, G_Pre_Offset = %d, B_Pre_Offset = %d, R_Gain = %d, G_Gain = %d, B_Gain = %d, "
607 "R_Post_Offset = %d, G_Post_Offset = %d, B_Post_Offset = %d where Level = %d and def = 0;",
608 c.getString(index_TableName).string(), params.en, params.r_pre_offset,
609 params.g_pre_offset, params.b_pre_offset, params.r_gain, params.g_gain,
610 params.b_gain, params.r_post_offset, params.g_post_offset, params.b_post_offset,
611 Tempmode);
612
613 rval = this->exeSql(sql);
614 }
615 return rval;
616}
617
618int CPqData::PQ_ResetAllColorTemperatureParams(void) {
619 CSqlite::Cursor c;
620 char sqlmaster[512];
621
622 int rval = -1;
623
624 getSqlParams(__FUNCTION__, sqlmaster,
625 "select distinct TableName from GeneralWhiteBalanceTable ;");
626
627 rval = this->select(sqlmaster, c);
628
629 if (c.moveToFirst()) {
630 int index_TableName = 0;//c.getColumnIndex("TableName");
631 do { //delete
632 getSqlParams(
633 __FUNCTION__,
634 sqlmaster,
635 "delete from %s where def = 0;"
636 "insert into %s( Level , Enable , R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, def ) "
637 "select Level, Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, 0 from %s where def = 1;",
638 c.getString(index_TableName).string(), c.getString(index_TableName).string(),
639 c.getString(index_TableName).string());
640 rval = this->exeSql(sqlmaster);
641 } while (c.moveToNext());
642 }
643 return rval;
644}
645
646int CPqData::PQ_GetDNLPParams(tvin_port_t source_port, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d,
647 tvin_trans_fmt_t trans_fmt, ve_dnlp_t *params, ve_dnlp_table_t *newParams, int *dnlpFlag) {
648 CSqlite::Cursor c;
649 char sqlmaster[256];
650 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
651 int rval = -1;
652 //default
653 params->en = 0;
654 params->rt = VE_DNLP_RT_0S;
655 params->rl = VE_DNLP_RL_01;
656 params->black = VE_DNLP_EXT_00;
657 params->white = VE_DNLP_EXT_00;
658
659 mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);//(status << 16)|trans_fmt;
660
661 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralDNLPTable where "
662 "TVIN_PORT = %d and "
663 "TVIN_SIG_FMT = %d and "
664 "TVIN_TRANS_FMT = %d ;", source_port, fmt, mode);
665
666 rval = this->select(sqlmaster, c);
667
668 if (c.moveToFirst()) {
669 int index_TableName = 0;//c.getColumnIndex("TableName");
670 getSqlParams(__FUNCTION__, sqlmaster, "select value from %s ",
671 c.getString(index_TableName).string());
672
673 rval = this->select(sqlmaster, c);
674 int count = c.getCount();
675 if (count == 1) {
676 int val;
677 c.moveToFirst();
678 val = c.getInt(0);//index 0
679 *dnlpFlag = 0;
680 params->en = (val & 0xf0000000) >> 28;
681 params->rt = (ve_dnlp_rt_e)((val & 0x0f000000) >> 24);
682 params->rl = (ve_dnlp_rl_e)((val & 0x00ff0000) >> 16);
683 params->black = (ve_dnlp_ext_e)((val & 0x0000ff00) >> 8);
684 params->white = (ve_dnlp_ext_e)((val & 0x000000ff) >> 0);
685 } else if (count > 1) {
686 c.moveToFirst();
687 c.moveToNext();
688 *dnlpFlag = 1;
689 newParams->en = c.getInt(0);
690 c.moveToNext();
691 newParams->method = c.getInt(0);
692 c.moveToNext();
693 newParams->cliprate = c.getInt(0);
694 c.moveToNext();
695 newParams->lowrange = c.getInt(0);
696 c.moveToNext();
697 newParams->hghrange = c.getInt(0);
698 c.moveToNext();
699 newParams->lowalpha = c.getInt(0);
700 c.moveToNext();
701 newParams->midalpha = c.getInt(0);
702 c.moveToNext();
703 newParams->hghalpha = c.getInt(0);
704 c.moveToNext();
705 newParams->adj_level = c.getInt(0);
706 c.moveToNext();
707 newParams->new_adj_level = c.getInt(0);
708 c.moveToNext();
709 newParams->new_mvreflsh = c.getInt(0);
710 c.moveToNext();
711 newParams->new_gmma_rate = c.getInt(0);
712 c.moveToNext();
713 newParams->new_lowalpha = c.getInt(0);
714 c.moveToNext();
715 newParams->new_hghalpha = c.getInt(0);
716 c.moveToNext();
717 newParams->new_sbgnbnd = c.getInt(0);
718 c.moveToNext();
719 newParams->new_sendbnd = c.getInt(0);
720 c.moveToNext();
721 newParams->new_clashBgn = c.getInt(0);
722 c.moveToNext();
723 newParams->new_clashEnd = c.getInt(0);
724 c.moveToNext();
725 newParams->new_cliprate = c.getInt(0);
726 c.moveToNext();
727 newParams->new_mtdbld_rate = c.getInt(0);
728 c.moveToNext();
729 newParams->new_blkgma_rate = c.getInt(0);
730 }
731 }
732 return rval;
733}
734
735int CPqData::PQ_SetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int osd0,
736 int osd25, int osd50, int osd75, int osd100) {
737 return SetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_type, osd0, osd25, osd50, osd75, osd100);
738}
739int CPqData::PQ_GetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int *osd0,
740 int *osd25, int *osd50, int *osd75, int *osd100) {
741 int osdvalue[5] = { 0 };
742 int rval;
743 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_BRIGHTNESS, source_type, osdvalue);
744 *osd0 = osdvalue[0];
745 *osd25 = osdvalue[1];
746 *osd50 = osdvalue[2];
747 *osd75 = osdvalue[3];
748 *osd100 = osdvalue[4];
749 if (rval) {
750 LOGE("PQ_GetNoLineAllBrightnessParams Error %d\n", rval);
751 }
752 return rval;
753
754}
755
756int CPqData::PQ_GetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
757 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params) {
758 int val;
759
760 GetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_port, level, &val);
761 *params = CaculateLevelParam(pq_bri_data, bri_nodes, val);
762 return 0;
763
764}
765int CPqData::PQ_SetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
766 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params) {
767 return 0;
768}
769
770int CPqData::PQ_SetNoLineAllContrastParams(tv_source_input_type_t source_type, int osd0, int osd25,
771 int osd50, int osd75, int osd100) {
772 return SetNonlinearMapping(TVPQ_DATA_CONTRAST, source_type, osd0, osd25, osd50, osd75, osd100);
773}
774int CPqData::PQ_GetNoLineAllContrastParams(tv_source_input_type_t source_type, int *osd0,
775 int *osd25, int *osd50, int *osd75, int *osd100) {
776 int osdvalue[5] = { 0 };
777 int rval;
778 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_CONTRAST, source_type, osdvalue);
779 *osd0 = osdvalue[0];
780 *osd25 = osdvalue[1];
781 *osd50 = osdvalue[2];
782 *osd75 = osdvalue[3];
783 *osd100 = osdvalue[4];
784 if (rval) {
785 LOGE("PQ_GetNoLineAllContrastParams Error %d\n", rval);
786 }
787 return rval;
788}
789
790int CPqData::PQ_GetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
791 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params) {
792 int val;
793 GetNonlinearMapping(TVPQ_DATA_CONTRAST, source_port, level, &val);
794 *params = CaculateLevelParam(pq_con_data, con_nodes, val);
795 return 0;
796}
797int CPqData::PQ_SetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
798 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params) {
799 return 0;
800}
801
802int CPqData::PQ_SetNoLineAllSaturationParams(tv_source_input_type_t source_type, int osd0,
803 int osd25, int osd50, int osd75, int osd100) {
804 return SetNonlinearMapping(TVPQ_DATA_SATURATION, source_type, osd0, osd25, osd50, osd75, osd100);
805}
806int CPqData::PQ_GetNoLineAllSaturationParams(tv_source_input_type_t source_type, int *osd0,
807 int *osd25, int *osd50, int *osd75, int *osd100) {
808 int osdvalue[5] = { 0 };
809 int rval;
810 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SATURATION, source_type, osdvalue);
811 *osd0 = osdvalue[0];
812 *osd25 = osdvalue[1];
813 *osd50 = osdvalue[2];
814 *osd75 = osdvalue[3];
815 *osd100 = osdvalue[4];
816 if (rval) {
817 LOGE("PQ_GetNoLineAllSaturationParams Error %d\n", rval);
818 }
819 return rval;
820}
821
822int CPqData::PQ_GetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
823 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params) {
824 int val;
825 GetNonlinearMapping(TVPQ_DATA_SATURATION, source_port, level, &val);
826 *params = CaculateLevelParam(pq_sat_data, sat_nodes, val);
827 return 0;
828}
829int CPqData::PQ_SetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
830 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params) {
831 return 0;
832}
833
834int CPqData::PQ_SetNoLineAllHueParams(tv_source_input_type_t source_type, int osd0, int osd25,
835 int osd50, int osd75, int osd100) {
836 return SetNonlinearMapping(TVPQ_DATA_HUE, source_type, osd0, osd25, osd50, osd75, osd100);
837}
838int CPqData::PQ_GetNoLineAllHueParams(tv_source_input_type_t source_type, int *osd0, int *osd25,
839 int *osd50, int *osd75, int *osd100) {
840 int osdvalue[5] = { 0 };
841 int rval;
842 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_HUE, source_type, osdvalue);
843 *osd0 = osdvalue[0];
844 *osd25 = osdvalue[1];
845 *osd50 = osdvalue[2];
846 *osd75 = osdvalue[3];
847 *osd100 = osdvalue[4];
848 if (rval) {
849 LOGE("PQ_GetNoLineAllHueParams Error %d\n", rval);
850 }
851 return rval;
852}
853
854int CPqData::PQ_GetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
855 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params) {
856 int val;
857 GetNonlinearMapping(TVPQ_DATA_HUE, source_port, level, &val);
858 *params = CaculateLevelParam(pq_hue_data, hue_nodes, val);
859 return 0;
860}
861int CPqData::PQ_SetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
862 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params) {
863 return 0;
864}
865
866int CPqData::PQ_SetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int osd0,
867 int osd25, int osd50, int osd75, int osd100) {
868 return SetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_type, osd0, osd25, osd50, osd75, osd100);
869}
870int CPqData::PQ_GetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int *osd0,
871 int *osd25, int *osd50, int *osd75, int *osd100) {
872 int osdvalue[5] = { 0 };
873 int rval;
874 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SHARPNESS, source_type, osdvalue);
875 *osd0 = osdvalue[0];
876 *osd25 = osdvalue[1];
877 *osd50 = osdvalue[2];
878 *osd75 = osdvalue[3];
879 *osd100 = osdvalue[4];
880 if (rval) {
881 LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval);
882 }
883 return rval;
884}
885
886int CPqData::PQ_GetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
887 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t *regs, am_regs_t *regs_l) {
888 int val;
889 GetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_port, level, &val);
890 LOGD("val = %d\n", val);
891 *regs = CaculateLevelRegsParam(pq_sharpness_reg_data, val, 0);
892 if (sha_diff_flag == 6) {
893 *regs_l = CaculateLevelRegsParam(pq_sharpness_reg_data_1, val, 1);
894 }
895 return 0;
896}
897int CPqData::PQ_GetPLLParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs) {
898 int ret = -1;
899 int i = 0;
900
901 ret = getRegValuesByValue(ADC_SETTING, PORT, FORMAT, source_port, sig_fmt, regs);
902#ifdef CPQDB_DEBUG
903 if (ret == 0) {
904 for (i = 0; i < regs->length; i++) {
905 LOGD("%s, =================================================", "TV");
906 LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type);
907 LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr);
908 LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask);
909 LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val);
910 }
911 }
912#endif
913 if (regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0
914 && regs->am_reg[3].val == 0) {
915 LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV");
916 return -1;
917 }
918 return ret;
919}
920int CPqData::PQ_GetCVD2Params(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs) {
921 int ret = -1;
922 int i = 0;
923 ret = getRegValuesByValue(CVD2_SETTING, PORT, FORMAT, source_port, sig_fmt, regs);
924#ifdef CPQDB_DEBUG
925 if (ret == 0) {
926 for (i = 0; i < regs->length; i++) {
927 LOGD("%s, =================================================", "TV");
928 LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type);
929 LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr);
930 LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask);
931 LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val);
932 }
933 }
934#endif
935 if (regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0
936 && regs->am_reg[3].val == 0) {
937 LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV");
938 return -1;
939 }
940
941 return ret;
942}
943int CPqData::PQ_SetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
944 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t regs) {
945 return 0;
946}
947
948int CPqData::PQ_SetNoLineAllVolumeParams(tv_source_input_type_t source_type, int osd0, int osd25,
949 int osd50, int osd75, int osd100) {
950 return SetNonlinearMapping(TVPQ_DATA_VOLUME, source_type, osd0, osd25, osd50, osd75, osd100);
951}
952int CPqData::PQ_GetNoLineAllVolumeParams(tv_source_input_type_t source_type, int *osd0, int *osd25,
953 int *osd50, int *osd75, int *osd100) {
954 int osdvalue[5] = { 0 };
955 int rval;
956 rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_VOLUME, source_type, osdvalue);
957 *osd0 = osdvalue[0];
958 *osd25 = osdvalue[1];
959 *osd50 = osdvalue[2];
960 *osd75 = osdvalue[3];
961 *osd100 = osdvalue[4];
962 if (rval) {
963 LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval);
964 }
965 return rval;
966}
967
968int CPqData::PQ_SetVolumeParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt,
969 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params) {
970 return 0;
971}
972
973int CPqData::PQ_ResetAllNoLineParams(void) {
974 int rval;
975 char sqlmaster[256];
976 char *err = NULL;
977
978 getSqlParams(
979 __FUNCTION__,
980 sqlmaster,
981 "delete from NonlinearMapping; "
982 "insert into NonlinearMapping(TVIN_PORT, Item_ID, Level, Value) select TVIN_PORT, Item_ID, Level, Value from NonlinearMapping_Default;");
983
984 rval = this->exeSql(sqlmaster);
985 return rval;
986}
987
988int CPqData::PQ_GetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode,
989 tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d,
990 tvin_trans_fmt_t trans_fmt, int *params) {
991 CSqlite::Cursor c;
992 char sqlmaster[256];
993 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
994 int rval = -1;
995
996 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralNoiseReductionTable where "
997 "TVIN_PORT = %d and "
998 "TVIN_SIG_FMT = %d and "
999 "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode);
1000
1001 rval = this->select(sqlmaster, c);
1002
1003 if (c.moveToFirst()) {
1004 int index_TableName = 0;//c.getColumnIndex("TableName");
1005 getSqlParams(__FUNCTION__, sqlmaster, "select NRValue from %s where NRLevel = %d;",
1006 c.getString(index_TableName).string(), (int) nr_mode);
1007
1008 rval = this->select(sqlmaster, c);
1009
1010 if (c.moveToFirst()) {
1011 *params = c.getInt(0);
1012 }
1013 }
1014 return rval;
1015}
1016
1017int CPqData::PQ_SetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode,
1018 tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d,
1019 tvin_trans_fmt_t trans_fmt, int *params) {
1020 return 0;
1021}
1022
1023int CPqData::PQ_GetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt,
1024 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, vpp_display_mode_t dmode,
1025 tvin_cutwin_t *cutwin_t) {
1026 CSqlite::Cursor c;
1027 char sqlmaster[256];
1028 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
1029 int rval = -1;
1030
1031 cutwin_t->hs = 0;
1032 cutwin_t->he = 0;
1033 cutwin_t->vs = 0;
1034 cutwin_t->ve = 0;
1035
1036 getSqlParams(__FUNCTION__, sqlmaster, "select Hs, He, Vs, Ve from OVERSCAN where "
1037 "TVIN_PORT = %d and "
1038 "TVIN_SIG_FMT = %d and "
1039 "TVIN_TRANS_FMT = %d ;", source_type, fmt, mode);
1040
1041 rval = this->select(sqlmaster, c);
1042
1043 if (c.moveToFirst()) {
1044 cutwin_t->hs = c.getInt(0);
1045 cutwin_t->he = c.getInt(1);
1046 cutwin_t->vs = c.getInt(2);
1047 cutwin_t->ve = c.getInt(3);
1048 }
1049 return rval;
1050}
1051int CPqData::PQ_SetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt,
1052 is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, tvin_cutwin_t cutwin_t) {
1053 CSqlite::Cursor c;
1054 char sqlmaster[256];
1055 int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);
1056 int rval = -1;
1057
1058 getSqlParams(
1059 __FUNCTION__,
1060 sqlmaster,
1061 "select * from OVERSCAN where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;",
1062 source_type, fmt, mode);
1063
1064 rval = this->select(sqlmaster, c);
1065
1066 if (c.moveToFirst()) {
1067 getSqlParams(
1068 __FUNCTION__,
1069 sqlmaster,
1070 "update OVERSCAN set Hs = %d, He = %d, Vs = %d, Ve = %d where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;",
1071 cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve, source_type, fmt, mode);
1072 } else {
1073 getSqlParams(
1074 __FUNCTION__,
1075 sqlmaster,
1076 "Insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, Hs, He, Vs, Ve) values(%d, %d, %d ,%d ,%d, %d, %d);",
1077 source_type, fmt, mode, cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve);
1078 }
1079 rval = this->exeSql(sqlmaster);
1080
1081 return rval;
1082}
1083
1084int CPqData::PQ_ResetAllOverscanParams(void) {
1085 int rval;
1086 char sqlmaster[256];
1087
1088 getSqlParams(
1089 __FUNCTION__,
1090 sqlmaster,
1091 "delete from OVERSCAN; insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve) select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve from OVERSCAN_default;");
1092 rval = this->exeSql(sqlmaster);
1093
1094 return rval;
1095}
1096
1097int CPqData::PQ_GetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode,
1098 vpp_pq_para_t *params) {
1099 CSqlite::Cursor c;
1100 char sqlmaster[256];
1101
1102 int rval = -1;
1103
1104 getSqlParams(__FUNCTION__, sqlmaster,
1105 "select Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from Picture_Mode where "
1106 "TVIN_PORT = %d and "
1107 "Mode = %d ;", source_type, pq_mode);
1108
1109 rval = this->select(sqlmaster, c);
1110
1111 if (c.moveToFirst()) {
1112 params->brightness = c.getInt(0);
1113 params->contrast = c.getInt(1);
1114 params->saturation = c.getInt(2);
1115 params->hue = c.getInt(3);
1116 params->sharpness = c.getInt(4);
1117 params->backlight = c.getInt(5);
1118 params->nr = c.getInt(6);
1119 }
1120 return rval;
1121}
1122int CPqData::PQ_SetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode,
1123 vpp_pq_para_t *params) {
1124 int rval;
1125 char sql[256];
1126
1127 getSqlParams(
1128 __FUNCTION__,
1129 sql,
1130 "update Picture_Mode set Brightness = %d, Contrast = %d, Saturation = %d, Hue = %d, Sharpness = %d, Backlight = %d, NR= %d "
1131 " where TVIN_PORT = %d and Mode = %d;", params->brightness, params->contrast,
1132 params->saturation, params->hue, params->sharpness, params->backlight, params->nr,
1133 source_type, pq_mode);
1134 rval = this->exeSql(sql);
1135 return 0;
1136}
1137
1138int CPqData::PQ_SetPQModeParamsByName(const char *name, tv_source_input_type_t source_type,
1139 vpp_picture_mode_t pq_mode, vpp_pq_para_t *params) {
1140 int rval;
1141 char sql[256];
1142
1143 getSqlParams(__FUNCTION__, sql,
1144 "insert into %s(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR)"
1145 " values(%d,%d,%d,%d,%d,%d,%d,%d,%d);", name, source_type, pq_mode,
1146 params->brightness, params->contrast, params->saturation, params->hue,
1147 params->sharpness, params->backlight, params->nr);
1148
1149 rval = this->exeSql(sql);
1150 return 0;
1151}
1152
1153int CPqData::PQ_ResetAllPQModeParams(void) {
1154 int rval;
1155 char sqlmaster[256];
1156
1157 getSqlParams(
1158 __FUNCTION__,
1159 sqlmaster,
1160 "delete from picture_mode; insert into picture_mode(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR) select TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from picture_mode_default;");
1161
1162 rval = this->exeSql(sqlmaster);
1163 return rval;
1164}
1165
1166int CPqData::PQ_GetGammaSpecialTable(int gammaValue, const char *f_name,
1167 tcon_gamma_table_t *gamma_value) {
1168 CSqlite::Cursor c;
1169 char sqlmaster[256];
1170 int rval = -1;
1171
1172 getSqlParams(__FUNCTION__, sqlmaster, "select %s from GAMMA_%d", f_name, gammaValue);
1173
1174 rval = this->select(sqlmaster, c);
1175
1176 if (c.moveToFirst()) {
1177 int index = 0;
1178 do {
1179 gamma_value->data[index] = c.getInt(0);
1180 index++;
1181 } while (c.moveToNext());
1182 }
1183 return rval;
1184}
1185
1186int CPqData::PQ_GetGammaTableR(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt,
1187 tcon_gamma_table_t *gamma_r) {
1188 return PQ_GetGammaTable(panel_id, source_port, fmt, "Red", gamma_r);
1189}
1190
1191int CPqData::PQ_GetGammaTableG(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt,
1192 tcon_gamma_table_t *gamma_g) {
1193 return PQ_GetGammaTable(panel_id, source_port, fmt, "Green", gamma_g);
1194}
1195
1196int CPqData::PQ_GetGammaTableB(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt,
1197 tcon_gamma_table_t *gamma_b) {
1198 return PQ_GetGammaTable(panel_id, source_port, fmt, "Blue", gamma_b);
1199}
1200
1201int CPqData::PQ_GetGammaTable(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt,
1202 const char *f_name, tcon_gamma_table_t *val) {
1203 CSqlite::Cursor c;
1204 char sqlmaster[256];
1205
1206 int rval = -1;
1207
1208 getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralGammaTable where "
1209 "TVIN_PORT = %d and "
1210 "TVIN_SIG_FMT = %d;", source_port, fmt);
1211
1212 rval = this->select(sqlmaster, c);
1213
1214 if (c.moveToFirst()) {
1215 int index_TableName = 0;//c.getColumnIndex("TableName");
1216 getSqlParams(__FUNCTION__, sqlmaster, "select %s from %s;", f_name,
1217 c.getString(index_TableName).string());
1218
1219 rval = this->select(sqlmaster, c);
1220 if (c.moveToFirst()) {
1221 int index = 0;
1222 do {
1223 val->data[index] = c.getInt(0);
1224 index++;
1225 } while (c.moveToNext());
1226 }
1227 }
1228 return rval;
1229}
1230
1231int CPqData::PQ_GetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t *adjparam) {
1232 CSqlite::Cursor c;
1233 char sqlmaster[256];
1234 int rval = -1;
1235
1236 adjparam->clk_step = 0;
1237 adjparam->phase = 0;
1238 adjparam->hpos_step = 0;
1239 adjparam->vpos_step = 0;
1240 adjparam->vga_in_clean = 0;
1241
1242 getSqlParams(
1243 __FUNCTION__,
1244 sqlmaster,
1245 "select Clk, Phase, HPos, VPos, Vga_in_clean from VGA_AutoParams where TVIN_SIG_FMT = %d",
1246 vga_fmt);
1247
1248 rval = this->select(sqlmaster, c);
1249
1250 if (c.moveToFirst()) {
1251 adjparam->clk_step = c.getInt(0);
1252 adjparam->phase = c.getInt(1);
1253 adjparam->hpos_step = c.getInt(2);
1254 adjparam->vpos_step = c.getInt(3);
1255 adjparam->vga_in_clean = c.getInt(4);
1256 }
1257 return rval;
1258}
1259int CPqData::PQ_SetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t adjparam) {
1260 CSqlite::Cursor c;
1261 char sql[256];
1262 int rval = -1;
1263
1264 getSqlParams(__FUNCTION__, sql, "select * from VGA_AutoParams where TVIN_SIG_FMT = %d;",
1265 vga_fmt);
1266
1267 rval = this->select(sql, c);
1268
1269 if (c.moveToFirst()) {
1270 getSqlParams(
1271 __FUNCTION__,
1272 sql,
1273 "Insert into VGA_AutoParams(TVIN_SIG_FMT, Clk, Phase, HPos, VPos, Vga_in_clean) values(%d, %d, %d ,%d ,%d, %d);",
1274 vga_fmt, adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step,
1275 adjparam.vga_in_clean);
1276 } else {
1277 getSqlParams(
1278 __FUNCTION__,
1279 sql,
1280 "update VGA_AutoParams set Clk = %d, Phase = %d, HPos = %d, VPos = %d, Vga_in_clean = %d where TVIN_SIG_FMT = %d;",
1281 adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step,
1282 adjparam.vga_in_clean, vga_fmt);
1283 }
1284 rval = this->exeSql(sql);
1285 return rval;
1286}
1287
1288int CPqData::CaculateLevelParam(tvpq_data_t *pq_data, int nodes, int level) {
1289 int i;
1290
1291 for (i = 0; i < nodes; i++) {
1292 if (level < pq_data[i].IndexValue) {
1293 break;
1294 }
1295 }
1296
1297 if (i == 0) {
1298 return pq_data[i].RegValue;
1299 } else if (i == nodes) {
1300 return pq_data[i - 1].RegValue;
1301 } else {
1302 return pq_data[i - 1].RegValue + (level - pq_data[i - 1].IndexValue) * pq_data[i - 1].step;
1303 }
1304}
1305
1306am_regs_t CPqData::CaculateLevelRegsParam(tvpq_sharpness_regs_t *pq_regs, int level, int flag) {
1307 am_regs_t regs;
1308 int i;
1309 int *pq_nodes = NULL;
1310 if (flag && sha_diff_flag == 6) {
1311 pq_nodes = &sha_nodes_1;
1312 } else {
1313 pq_nodes = &sha_nodes;
1314 }
1315
1316 for (i = 0; i < *pq_nodes; i++) {
1317 if (level < pq_regs[i].reg_data[0].IndexValue) {
1318 break;
1319 }
1320 }
1321
1322 if (i == 0) {
1323 regs.length = pq_regs[i].length;
1324 for (int j = 0; j < pq_regs[i].length; j++) {
1325 regs.am_reg[j].type = pq_regs[i].reg_data[j].Value.type;
1326 regs.am_reg[j].addr = pq_regs[i].reg_data[j].Value.addr;
1327 regs.am_reg[j].mask = pq_regs[i].reg_data[j].Value.mask;
1328 regs.am_reg[j].val = pq_regs[i].reg_data[j].Value.val;
1329 }
1330
1331 } else if (i == *pq_nodes) {
1332 regs.length = pq_regs[i - 1].length;
1333 for (int j = 0; j < pq_regs[i - 1].length; j++) {
1334 regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type;
1335 regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr;
1336 regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask;
1337 regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val;
1338 }
1339 } else {
1340 regs.length = pq_regs[i - 1].length;
1341 for (int j = 0; j < pq_regs[i - 1].length; j++) {
1342 regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type;
1343 regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr;
1344 regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask;
1345 regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val + (level
1346 - pq_regs[i - 1].reg_data[j].IndexValue) * pq_regs[i - 1].reg_data[j].step;
1347 }
1348 }
1349
1350 return regs;
1351}
1352
1353int CPqData::GetNonlinearMapping(tvpq_data_type_t data_type, tvin_port_t source_port, int level,
1354 int *params) {
1355 CSqlite::Cursor c;
1356 char sqlmaster[256];
1357 int rval = -1;
1358
1359 tv_source_input_type_t type;
1360 //showboz
1361 type = CTvin::Tvin_SourcePortToSourceInputType(source_port);//???
1362
1363 getSqlParams(__FUNCTION__, sqlmaster, "select Value from NonlinearMapping where "
1364 "TVIN_PORT = %d and "
1365 "Item_ID = %d and "
1366 "Level = %d ;", type, data_type, level);
1367
1368 rval = this->select(sqlmaster, c);
1369
1370 if (c.moveToFirst()) {
1371 *params = c.getInt(0);
1372 }
1373 return rval;
1374}
1375
1376int CPqData::GetNonlinearMappingByOSDFac(tvpq_data_type_t data_type,
1377 tv_source_input_type_t source_type, int *params) {
1378 CSqlite::Cursor c;
1379 char sqlmaster[256];
1380 int rval = -1;
1381
1382 getSqlParams(__FUNCTION__, sqlmaster, "select Value from NonlinearMapping where "
1383 "TVIN_PORT = %d and "
1384 "Item_ID = %d and ("
1385 "Level = 0 or Level = 25 or Level = 50 or Level = 75 or Level = 100);", source_type,
1386 data_type);
1387
1388 rval = this->select(sqlmaster, c);
1389
1390 if (c.moveToFirst()) {
1391 params[0] = c.getInt(0);
1392 params[1] = c.getInt(1);
1393 params[2] = c.getInt(2);
1394 params[3] = c.getInt(3);
1395 params[4] = c.getInt(4);
1396 }
1397 return rval;
1398}
1399
1400int CPqData::SetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_type_t source_type,
1401 int osd0, int osd25, int osd50, int osd75, int osd100) {
1402
1403 int rval;
1404 char *err = NULL;
1405 int osdvalue[101];
1406 double step[4];
1407 char sql[256];
1408
1409 step[0] = (osd25 - osd0) / 25.0;
1410 step[1] = (osd50 - osd25) / 25.0;
1411 step[2] = (osd75 - osd50) / 25.0;
1412 step[3] = (osd100 - osd75) / 25.0;
1413
1414 for (int i = 0; i <= 100; i++) {
1415 if (i == 0) {
1416 osdvalue[i] = osd0;
1417 } else if ((i > 0) && (i <= 25)) {
1418 osdvalue[i] = osd0 + (int) (i * step[0]);
1419 } else if ((i > 25) && (i <= 50)) {
1420 osdvalue[i] = osd25 + (int) ((i - 25) * step[1]);
1421 } else if ((i > 50) && (i <= 75)) {
1422 osdvalue[i] = osd50 + (int) ((i - 50) * step[2]);
1423 } else if ((i > 75) && (i <= 100)) {
1424 osdvalue[i] = osd75 + (int) ((i - 75) * step[3]);
1425 }
1426 getSqlParams(
1427 __FUNCTION__,
1428 sql,
1429 "update NonLinearMapping set Value = %d where TVIN_PORT = %d and Item_ID = %d and Level = %d ;",
1430 osdvalue[i], source_type, data_type, i);
1431 if (!(this->exeSql(sql))) {
1432 return -1;
1433 }
1434 }
1435 return 0;
1436}
1437
1438int CPqData::SetNonlinearMappingByName(const char *name, tvpq_data_type_t data_type,
1439 tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100) {
1440 int rval;
1441 char *err = NULL;
1442 int osdvalue[101];
1443 double step[4];
1444 char sql[256];
1445
1446 step[0] = (osd25 - osd0) / 25.0;
1447 step[1] = (osd50 - osd25) / 25.0;
1448 step[2] = (osd75 - osd50) / 25.0;
1449 step[3] = (osd100 - osd75) / 25.0;
1450
1451 for (int i = 0; i <= 100; i++) {
1452 if (i == 0) {
1453 osdvalue[i] = osd0;
1454 } else if ((i > 0) && (i <= 25)) {
1455 osdvalue[i] = osd0 + (int) (i * step[0]);
1456 } else if ((i > 25) && (i <= 50)) {
1457 osdvalue[i] = osd25 + (int) ((i - 25) * step[1]);
1458 } else if ((i > 50) && (i <= 75)) {
1459 osdvalue[i] = osd50 + (int) ((i - 50) * step[2]);
1460 } else if ((i > 75) && (i <= 100)) {
1461 osdvalue[i] = osd75 + (int) ((i - 75) * step[3]);
1462 }
1463 memset(sql, '\0', 256);
1464 getSqlParams(__FUNCTION__, sql,
1465 "insert into %s(TVIN_PORT, Item_ID, Level, Value) values(%d,%d,%d,%d);", name,
1466 source_type, data_type, i, osdvalue[i]);
1467 if (!(this->exeSql(sql))) {
1468 return -1;
1469 }
1470 }
1471 return 0;
1472}
1473int CPqData::getSharpnessFlag() {
1474 return sha_diff_flag;
1475}
1476
1477int CPqData::loadSharpnessData(char *sqlmaster, char *table_name) {
1478 LOGD("%s, table_name: %s, sqlmaster: %s\n", __FUNCTION__, table_name, sqlmaster);
1479 CSqlite::Cursor c;
1480 int rval;
1481 int *pq_nodes = NULL;
1482 int temp_flag = 0;
1483
1484 if (!strncmp("Sharpness_0", table_name, 11)) {//for gxtvbb:Sharpness_0_***
1485 sha_diff_flag = sha_diff_flag | 2;
1486 pq_nodes = &sha_nodes;
1487 temp_flag = 2;
1488 } else if (!strncmp("Sharpness_1", table_name, 11)) {//for gxtvbb:Sharpness_1_***
1489 sha_diff_flag = sha_diff_flag | 4;
1490 pq_nodes = &sha_nodes_1;
1491 temp_flag = 4;
1492 } else {//for g9:Sharpness_G9_***
1493 sha_diff_flag = 1;
1494 pq_nodes = &sha_nodes;
1495 temp_flag = 1;
1496 }
1497 LOGD("%s, sha_diff_flag: %d, temp_flag: %d\n", __FUNCTION__, sha_diff_flag, temp_flag);
1498
1499 rval = this->select(sqlmaster, c);
1500 int length = 0;
1501 int index = 0;
1502 if ((temp_flag == 1) || (temp_flag == 2)) {
1503 if (c.moveToFirst()) {
1504 *pq_nodes = c.getInt(0);//TotalNode?
1505 length = c.getCount() / (*pq_nodes);
1506 for (int i = 0; i < *pq_nodes; i++) {
1507 pq_sharpness_reg_data[i].length = length;
1508 }
1509 do {
1510 pq_sharpness_reg_data[index / length].reg_data[index % length].TotalNode
1511 = c.getInt(0);
1512 pq_sharpness_reg_data[index / length].reg_data[index % length].NodeValue
1513 = c.getInt(1);
1514 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.type
1515 = c.getUInt(2);
1516 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.addr
1517 = c.getUInt(3);
1518 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.mask
1519 = c.getUInt(4);
1520 pq_sharpness_reg_data[index / length].reg_data[index % length].IndexValue
1521 = c.getInt(5);
1522 pq_sharpness_reg_data[index / length].reg_data[index % length].Value.val
1523 = c.getUInt(6);
1524 pq_sharpness_reg_data[index / length].reg_data[index % length].step = c.getF(7);
1525 index++;
1526 } while (c.moveToNext());
1527 }
1528 } else if (temp_flag == 4) {
1529 if (c.moveToFirst()) {
1530 *pq_nodes = c.getInt(0);//TotalNode?
1531 length = c.getCount() / (*pq_nodes);
1532 for (int i = 0; i < *pq_nodes; i++) {
1533 pq_sharpness_reg_data_1[i].length = length;
1534 }
1535 do {
1536 pq_sharpness_reg_data_1[index / length].reg_data[index % length].TotalNode
1537 = c.getInt(0);
1538 pq_sharpness_reg_data_1[index / length].reg_data[index % length].NodeValue
1539 = c.getInt(1);
1540 pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.type
1541 = c.getUInt(2);
1542 pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.addr
1543 = c.getUInt(3);
1544 pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.mask
1545 = c.getUInt(4);
1546 pq_sharpness_reg_data_1[index / length].reg_data[index % length].IndexValue
1547 = c.getInt(5);
1548 pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.val
1549 = c.getUInt(6);
1550 pq_sharpness_reg_data_1[index / length].reg_data[index % length].step = c.getF(7);
1551 index++;
1552 } while (c.moveToNext());
1553 }
1554 }
1555 return rval;
1556}
1557
1558int CPqData::LoadPQData(tvpq_data_type_t data_type, tvin_port_t source_port,
1559 tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag) {
1560 CSqlite::Cursor c;
1561 int rval;
1562 char sqlmaster[256];
1563 char table_name[128];
1564 int mode = is2dOr3d;
1565 tvpq_data_t *pq_data = NULL;
1566 int *pq_nodes = NULL;
1567
1568 switch (data_type) {
1569 case TVPQ_DATA_BRIGHTNESS:
1570 getSqlParams(__FUNCTION__, sqlmaster,
1571 "select TableName from GeneralContrastBrightnessTable where "
1572 "TVIN_PORT = %d and "
1573 "TVIN_SIG_FMT = %d and "
1574 "TVIN_TRANS_FMT = %d and "
1575 "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, BRIGHTNESS_ID);
1576 pq_data = pq_bri_data;
1577 pq_nodes = &bri_nodes;
1578 break;
1579 case TVPQ_DATA_CONTRAST:
1580 getSqlParams(__FUNCTION__, sqlmaster,
1581 "select TableName from GeneralContrastBrightnessTable where "
1582 "TVIN_PORT = %d and "
1583 "TVIN_SIG_FMT = %d and "
1584 "TVIN_TRANS_FMT = %d and "
1585 "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, CONTRAST_ID);
1586 pq_data = pq_con_data;
1587 pq_nodes = &con_nodes;
1588 break;
1589 case TVPQ_DATA_HUE:
1590 getSqlParams(__FUNCTION__, sqlmaster,
1591 "select TableName from GeneralSaturationHueTable where "
1592 "TVIN_PORT = %d and "
1593 "TVIN_SIG_FMT = %d and "
1594 "TVIN_TRANS_FMT = %d and "
1595 "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, HUE_ID);
1596 pq_data = pq_hue_data;
1597 pq_nodes = &hue_nodes;
1598 break;
1599 case TVPQ_DATA_SATURATION:
1600 getSqlParams(__FUNCTION__, sqlmaster,
1601 "select TableName from GeneralSaturationHueTable where "
1602 "TVIN_PORT = %d and "
1603 "TVIN_SIG_FMT = %d and "
1604 "TVIN_TRANS_FMT = %d and "
1605 "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, SATURATION_ID);
1606 pq_data = pq_sat_data;
1607 pq_nodes = &sat_nodes;
1608 break;
1609 case TVPQ_DATA_SHARPNESS:
1610 //sprintf(sqlmaster, "select TableName from GeneralSharpnessTable where "
1611 getSqlParams(__FUNCTION__,sqlmaster,
1612 "select TableName from GeneralSharpnessG9Table where "
1613 "TVIN_PORT = %d and "
1614 "TVIN_SIG_FMT = %d and "
1615 "TVIN_TRANS_FMT = %d and "
1616 "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, SHARPNESS_ID);
1617 pq_data = NULL;
1618 pq_nodes = &sha_nodes;
1619 break;
1620 default:
1621 break;
1622 }
1623
1624 rval = this->select(sqlmaster, c);
1625
1626 if (c.moveToFirst()) {
1627 switch (data_type) {
1628 case TVPQ_DATA_BRIGHTNESS:
1629 case TVPQ_DATA_CONTRAST:
1630 case TVPQ_DATA_HUE:
1631 case TVPQ_DATA_SATURATION:
1632 getSqlParams(
1633 __FUNCTION__,
1634 sqlmaster,
1635 "select TotalNode, NodeNumber, IndexValue, RegValue, StepUp from %s order by NodeNumber asc;",
1636 c.getString(0).string());
1637 break;
1638 case TVPQ_DATA_SHARPNESS:
1639 do {
1640 getSqlParams(__FUNCTION__, sqlmaster,
1641 "select TotalNode, NodeNumber, RegType, RegAddr, RegMask,"
1642 "IndexValue, RegValue, StepUp from %s order by NodeNumber asc;",
1643 c.getString(0).string());
1644 c.getString(table_name, 0);
1645 rval = loadSharpnessData(sqlmaster, table_name);
1646 } while (c.moveToNext());
1647 return rval;
1648 default:
1649 break;
1650 }
1651 }
1652
1653 rval = this->select(sqlmaster, c);
1654
1655 if (c.moveToFirst()) {
1656 if (data_type != TVPQ_DATA_SHARPNESS) {
1657 int index = 0;
1658 do {
1659 pq_data[index].TotalNode = c.getInt(0);
1660 pq_data[index].NodeValue = c.getInt(1);
1661 pq_data[index].IndexValue = c.getInt(2);
1662 pq_data[index].RegValue = c.getInt(3);
1663 pq_data[index].step = c.getF(4);
1664 if (flag == 1) {
1665 if (data_type == TVPQ_DATA_BRIGHTNESS) {
1666 LOGD("%s, bri pq_data[%d].RegValue = %d\n", "TV", index,
1667 pq_data[index].RegValue);
1668 pq_data[index].RegValue -= 64;
1669 LOGD("%s, bri pq_data[%d].RegValue + 64 = %d\n", "TV", index,
1670 pq_data[index].RegValue);
1671 } else if (data_type == TVPQ_DATA_CONTRAST) {
1672 LOGD("%s, con pq_data[%d].RegValue = %d\n", "TV", index,
1673 pq_data[index].RegValue);
1674 pq_data[index].RegValue += 64;
1675 LOGD("%s, con pq_data[%d].RegValue + 64 = %d\n", "TV", index,
1676 pq_data[index].RegValue);
1677 }
1678 }
1679 index++;
1680 } while (c.moveToNext());
1681 *pq_nodes = index;
1682 }
1683 }
1684
1685 return rval;
1686}
1687
1688int CPqData::LoadAllPQData(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d,
1689 tvin_trans_fmt_t trans_fmt, int flag) {
1690 int rval = -1;
1691 rval = LoadPQData(TVPQ_DATA_BRIGHTNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, flag);
1692 if (rval) {
1693 return rval;
1694 }
1695 rval = LoadPQData(TVPQ_DATA_CONTRAST, source_port, sig_fmt, is2dOr3d, trans_fmt, flag);
1696 if (rval) {
1697 return rval;
1698 }
1699 rval = LoadPQData(TVPQ_DATA_SATURATION, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1700 if (rval) {
1701 return rval;
1702 }
1703 rval = LoadPQData(TVPQ_DATA_HUE, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1704 if (rval) {
1705 return rval;
1706 }
1707 rval = LoadPQData(TVPQ_DATA_SHARPNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, -1);
1708 if (rval) {
1709 return rval;
1710 }
1711 return rval;
1712}
1713
1714typedef enum initial_type_e {
1715 TYPE_PMode = 0,
1716 TYPE_PMode_Default,
1717 TYPE_Nonlinear,
1718 TYPE_NonLinear_Default,
1719 TYPE_VGA_AUTO,
1720 TYPE_OVERSCAN,
1721} initial_type_t;
1722
1723const char *Pmode_name[6] = { "Picture_Mode", "Picture_Mode_Default", "NonlinearMapping",
1724 "NonlinearMapping_Default", "VGA_AutoParams", "OVERSCAN" };
1725
1726void CPqData::initialTable(int type) {
1727 vpp_pq_para_t pmode_default;
1728
1729 pmode_default.backlight = 100;
1730 pmode_default.brightness = 50;
1731 pmode_default.contrast = 50;
1732 pmode_default.hue = 50;
1733 pmode_default.nr = 0;
1734 pmode_default.saturation = 50;
1735 pmode_default.sharpness = 50;
1736
1737 switch (type) {
1738 case TYPE_PMode:
1739 case TYPE_PMode_Default:
1740 for (int i = 0; i < 6; i++) {
1741 for (int j = 0; j < 4; j++) {
1742 PQ_SetPQModeParamsByName(Pmode_name[type], (tv_source_input_type_t) i,
1743 (vpp_picture_mode_t) j, &pmode_default);
1744 }
1745 }
1746 break;
1747 case TYPE_Nonlinear:
1748 case TYPE_NonLinear_Default:
1749 for (int i = 0; i < 6; i++) {
1750 for (int j = 0; j < 5; j++) {
1751 SetNonlinearMappingByName(Pmode_name[type], (tvpq_data_type_t) j,
1752 (tv_source_input_type_t) i, 0, (int) 255 / 4.0, (int) 255 * 2 / 4.0,
1753 (int) 255 * 3 / 4.0, 255);
1754 }
1755 }
1756 break;
1757 case TYPE_VGA_AUTO:
1758 break;
1759 case TYPE_OVERSCAN:
1760 break;
1761 }
1762}
1763
1764/*
1765 void CPqData::transferFixTable()
1766 {
1767 char sql[256];
1768 char *err = NULL;
1769 char **rsltReg = NULL;
1770 int rval, rows, columns;
1771 unsigned int tvin, sig, trans;
1772 char tablename[256];
1773
1774 sprintf(sql, "Select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableName from GeneralSharpnessTable where TableID = 0;");
1775
1776 rval = sqlite3_get_table(DB, sql, &rsltReg, &rows, &columns, &err);
1777
1778 if (rval) {
1779 if (rsltReg != NULL) {
1780 sqlite3_free_table(rsltReg);
1781 rsltReg = NULL;
1782 }
1783 if (err != NULL) {
1784 sqlite3_free(err);
1785 err = NULL;
1786 }
1787 return;
1788 } else {
1789 for (int i = 1; i <= rows; i++) {
1790 memset(sql, '\0', 256);
1791
1792 sscanf(rsltReg[i * columns], "%u", &tvin);
1793 sscanf(rsltReg[i * columns + 1], "%u", &sig);
1794 sscanf(rsltReg[i * columns + 2], "%u", &trans);
1795 sscanf(rsltReg[i * columns + 3], "%s", tablename);
1796
1797 sprintf(sql, "insert into GeneralCommonTable(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableID, TableName) values(%d,%d,%d,0,\"%s\");",
1798 tvin, sig, trans, tablename);
1799 rval = sqlite3_exec(DB, sql, NULL, NULL, &err);
1800 if (rval) {
1801 if (err != NULL) {
1802 sqlite3_free(err);
1803 err = NULL;
1804 }
1805 return;
1806 }
1807 if (err != NULL) {
1808 sqlite3_free(err);
1809 err = NULL;
1810 }
1811 }
1812 memset(sql, '\0', 256);
1813 sprintf(sql, "delete from GeneralSharpnessTable where TableID = 0;");
1814 rval = sqlite3_exec(DB, sql, NULL, NULL, &err);
1815 if (rval) {
1816 if (err != NULL) {
1817 sqlite3_free(err);
1818 err = NULL;
1819 }
1820 return;
1821 }
1822 if (err != NULL) {
1823 sqlite3_free(err);
1824 err = NULL;
1825 }
1826 }
1827 }
1828 */
1829
1830int CPqData::replacePqDb(const char *newFilePath) {
1831
1832 CFile::delFile( PQ_DB_PATH);
1833 if (newFilePath == NULL) {
1834 return 0;
1835 } else {
1836 LOGD("path = %s", newFilePath);
1837 CFile file(newFilePath);
1838 int ret = file.copyTo(PQ_DB_PATH);
1839 system("sync");
1840 return ret;
1841 }
1842}
1843int CPqData::PQ_GetPhaseArray(am_phase_t *am_phase) {
1844 CSqlite::Cursor c;
1845 int iOutRet = 0;
1846 char sqlmaster[256];
1847 getSqlParams(__FUNCTION__, sqlmaster, "select Phase from Phase order by Format ASC; ");
1848
1849 this->select(sqlmaster, c);
1850 int nums = 0;
1851 am_phase->length = c.getCount();
1852 if (c.moveToFirst()) {
1853 do {
1854 am_phase->phase[nums] = c.getInt(0);//col index is 0[Phase]
1855 nums++;
1856 } while (c.moveToNext());
1857 }
1858 //
1859 return nums;
1860}
1861
1862