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