pq_hw.h 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955
  1. #ifndef _PQ_HW_H
  2. #define _PQ_HW_H
  3. /*******************************************************************************
  4. * Header include
  5. ******************************************************************************/
  6. #include <linux/spinlock_types.h>
  7. #include <drv_pq_internal.h>
  8. #include <drv_pq.h>
  9. #include "pq_tab.h"
  10. #include <project.h>
  11. #define PQ_GetRegisterEndBit(ulRegisterName) ((ulRegisterName >> 22) & 0x00000003F)
  12. #define GET_VALUE_BITS(ulRegisterName, ulValue) ((UINT32)(ulValue << (32 - PQ_GetRegisterEndBit(ulRegisterName)))) >> ((32 - PQ_GetRegisterEndBit(ulRegisterName)))
  13. #define PQ_GetStartAndEndBits(ulRegisterName) (ulRegisterName & 0x0FFF0000)
  14. #define PQ_GetRegisterStartBit(ulRegisterName) ((ulRegisterName >> 16) & 0x00000003F)
  15. #define ALL_BITS 0x08000000
  16. #define WIDTH_BIT_8 0x02000000
  17. #define REGISTER_ADDRESS_MASK 0x0000FFFF
  18. #define REGISTER_TYPE_MASK 0xF0000000
  19. #define REGISTER_ADDRESS_LVDS_MAPPING 0x0800C1B4 //0x0800C1B4[13:12] : lvds bit-per-pixel type
  20. #define COLOR_MATRIX_GAIN_BIT_SYSTEM 10
  21. //#define REFCLK 24000
  22. #define NewTNRVer 0xabcdabcd
  23. /*330
  24. #if 0
  25. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 7
  26. #else
  27. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 6
  28. #endif
  29. */
  30. #define COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM 10 //531
  31. #define BRIGHTNESS_OFFSET (2<<(COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM-1))
  32. #define COLOR_MATRIX_GAIN_OSD_DIFFBIT (COLOR_MATRIX_GAIN_BIT_SYSTEM-COLOR_MATRIX_GAIN_OSD_BIT_SYSTEM)
  33. #define COLOR_MATRIX_BIAS_BIT_SYSTEM 8
  34. #define COLOR_MATRIX_BIAS_OSD_BIT_SYSTEM 8
  35. //#define COLOR_MATRIX_YPP_COMP_OFFSET (16<<(COLOR_MATRIX_BIAS_BIT_SYSTEM-8))
  36. #define COLOR_MATRIX_YPP_COMP_OFFSET 64*4
  37. #define OFF 0
  38. #define WEAK 1
  39. #define MEDIUM 2
  40. #define STRONG 3
  41. #define AUTO 4
  42. #define ERR_CNT 20
  43. #define PQ_DebugMsg_CustUserCurveInit 0x4
  44. #define PQ_DebugMsg_CustUserCurvePolling 0x8
  45. #define CSC_RGB 0
  46. #define CSC_601 1
  47. #define CSC_709 2
  48. #define PQ_CMDSET_GET_RGN_LUT 0
  49. #define PQ_CMDSET_SET_RGN_LUT 1
  50. #define PQ_CMDSET_GET_RGN_LUT_STR 2
  51. #define PQ_CMDSET_SET_RGN_LUT_STR 3
  52. #define PQ_CMDSET_GET_RGN_LUT_330C 4
  53. #define PQ_CMDSET_SET_RGN_LUT_330C 5
  54. #define PQ_CMDSET_GET_RGN_LUT_V3 6
  55. #define PQ_CMDSET_SET_RGN_LUT_V3 7
  56. #define PQ_CMDSET_GET_RGN_LUT_64Bit 8
  57. #define PQ_CMDSET_SET_RGN_LUT_64Bit 9
  58. #define PQ_CMDSET_GET_COLOR_MATRIX 10
  59. #define PQ_CMDSET_SET_COLOR_MATRIX 11
  60. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_SLOPE 20
  61. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_SLOPE 21
  62. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_CHROMA 22
  63. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_CHROMA 23
  64. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_PARAM 24
  65. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_PARAM 25
  66. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_INFO 26
  67. #define PQ_CMDSET_GET_SW_DC_SCENE_DET_SOURCE 27
  68. #define PQ_CMDSET_SET_SW_DC_SCENE_DET_SOURCE 28
  69. #define PQ_CMDSET_GET_DRV_CURRENT_SOURCE 29
  70. #define PQ_CMDSET_SET_NR_ADJUST_STATUS 30
  71. #define PQ_CMDSET_GET_RGB_GAIN_ADJUST_MODULE 31 // retur 0 for DPY matrix, 1 = gamma
  72. #define PQ_CMDSET_GET_RGB_GAIN_PARAM 32
  73. #define PQ_CMDSET_GET_VIP_FLASH_INFO 60
  74. #define UNLOCK 0
  75. #define LOCK 1
  76. #define PQ_SAT_NO_OPERATION 0
  77. #define PQ_SAT_SET_VALUE 1
  78. #define PQ_SAT_INIT_VALUE 2
  79. #define PQ_SAT_WAIT_5SEC 3
  80. #define PQ_SAT_DETECT_SCENE 4
  81. #define PQ_SAT_RE_SET_VALUE 5
  82. #define SDNR_Gain_normal 100
  83. #define SDNR_Gain_Low 130
  84. #define SDNR_Gain_Mid 160
  85. #define SDNR_Gain_High 200
  86. #define DPY_EOF_EVENT 0x25
  87. #define MODE_DeinterlaceFilter 0
  88. #define VIP_TABLE_GROUPED_NUMBER 8 //for number of VIP table grouped setting
  89. #define SNR_MAP_GAIN_NUM 2
  90. #define REFERENCE_VIPTABLE 2
  91. /*******************************************************************************
  92. * Enum
  93. ******************************************************************************/
  94. //dynamic backlight change speed
  95. enum
  96. {
  97. BL_SLOW,
  98. BL_QUICK,
  99. };
  100. enum
  101. {
  102. WEAK_LEVEL,
  103. NORMAL_LEVEL,
  104. STRONG_LEVEL,
  105. };
  106. enum{
  107. USERCURVE_DETECT,
  108. USERCURVE_ENTERING,
  109. };
  110. enum{
  111. USERCURVE_OFF,
  112. USERCURVE_PQ,
  113. USERCURVE_HW,
  114. USERCURVE_HW_AUTO_TH,
  115. };
  116. enum {
  117. PQ_EVENT_NONWAITE,
  118. PQ_EVENT_WAITE
  119. };
  120. /*
  121. @ note : need sync with LUT source define in tool(ColorLUTvxDlg.h)
  122. */
  123. typedef enum
  124. {
  125. SRC_INDEX_ATV_NTSC=0,
  126. SRC_INDEX_ATV_PAL,
  127. SRC_INDEX_AV_NTSC,
  128. SRC_INDEX_AV_PAL,
  129. SRC_INDEX_SVideo_NTSC,
  130. SRC_INDEX_SVideo_PAL,
  131. SRC_INDEX_Component_SD,
  132. SRC_INDEX_Component_HD,
  133. SRC_INDEX_HDMI_SD,
  134. SRC_INDEX_HDMI_HD,
  135. SRC_INDEX_DTV_SD,
  136. SRC_INDEX_DTV_HD,
  137. SRC_INDEX_JPEG ,
  138. SRC_INDEX_PC,
  139. SRC_INDEX_DVI,
  140. SRC_INDEX_SCART_RGB,
  141. SRC_INDEX_DVD,
  142. SRC_INDEX_NETEORK = SRC_INDEX_DVD,
  143. SRC_INDEX_UNKNOWN
  144. } PQ_LUT_SRC;
  145. typedef enum
  146. {
  147. ATV_IN,
  148. DTV_IN,
  149. DTV_HD_IN,
  150. AV_IN,
  151. SV_IN,
  152. COMP_IN,
  153. COMP_HD_IN,
  154. SCART_IN,
  155. HDMI_IN,
  156. HDMI_HD_IN,
  157. PC_IN,
  158. DVD_IN,
  159. DVD_HD_IN,
  160. END_IN,
  161. END_IN_EXT
  162. }PQ_DLC_SRC;
  163. typedef enum {
  164. PQ_ITEM_LUMA_TNR_CORING, // 0, range : 0 - 16
  165. PQ_ITEM_LUMA_TNR_STRENGTH, // range : 0 - 16
  166. PQ_ITEM_CHROMA_TNR_CORING, // range : 0 - 16
  167. PQ_ITEM_CHROMA_TNR_STRENGTH, // range : 0 - 16
  168. PQ_ITEM_LUMA_SNR1_CORING, // range : 0 - 24
  169. PQ_ITEM_LUMA_SNR1_STRENGTH,// 5 // range : 0 - 16
  170. PQ_ITEM_LUMA_SNR2_CORING, // range : 0 - 24
  171. PQ_ITEM_LUMA_SNR2_STRENGTH, // range : 0 - 16
  172. PQ_ITEM_CHROMA_SNR_CORING, // range : 0 - 16
  173. PQ_ITEM_CHROMA_SNR_STRENGTH, // range : 0 - 16
  174. PQ_ITEM_BLOCK_NR_CORING, // 10 // range : 0 - 10
  175. PQ_ITEM_BLOCK_NR_STRENGTH, // range : 0 - 10
  176. PQ_ITEM_MOSQUITO_NR_CORING, // range : 0 - 10
  177. PQ_ITEM_MOSQUITO_NR_STRENGTH, // range : 0 - 10
  178. PQ_ITEM_TNR_ULTRA_LOW, // range : 0 - 16
  179. PQ_ITEM_SNR1_ULTRA_LOW, // 15 // range : 0 - 24
  180. PQ_ITEM_SNR2_ULTRA_LOW,// range : 0 - 24
  181. } PQ_ITEM;
  182. typedef enum
  183. {
  184. PQ_STANDARD_DEFINITION,
  185. PQ_HIGH_DEFINITION,
  186. } PQ_Definition;
  187. typedef enum
  188. {
  189. NR_BLOCK_ALPHA_TNR,
  190. NR_BLOCK_ALPHA_TNR_SNR,
  191. NR_BLOCK_ALPHA_TNR_C,
  192. NR_BLOCK_ALPHA_TNRZ,
  193. NR_BLOCK_ALPHA_TNRZ_C,
  194. NR_BLOCK_ALPHA_END, // 5
  195. NR_BLOCK_ALPHA_AV_SECAM_PATCH,
  196. }PQ_NR_BLOCKALPHA_TYPE;
  197. enum{
  198. PQ_SHARPNESS_0PERCENT,
  199. PQ_SHARPNESS_50PERCENT,
  200. PQ_SHARPNESS_100PERCENT,
  201. PQ_SHARPNESS_PERCENT_END
  202. };
  203. enum {
  204. HP_3_TAP,
  205. HP_5_TAP,
  206. };
  207. enum {
  208. BP_7_TAP,
  209. BP_9_TAP,
  210. };
  211. enum {
  212. EP_11_TAP,
  213. EP_13_TAP,
  214. };
  215. typedef enum
  216. {
  217. SAT_GAIN_NORMAL,
  218. SAT_GAIN_ATV_GREY_SCALE_PATCH,
  219. SAT_GAIN_ATV_PAL_I_1280_PANEL_COLORBAR_PATCH,
  220. SAT_GAIN_ATV_PAL_M_GREY_SCALE_NR_PATCH,
  221. SAT_GAIN_ATV_SECAM_GREY_SCALE_NR_PATCH,
  222. SAT_GAIN_COMMAND_DEFAULT,
  223. }SatGainMethod;
  224. enum{
  225. PATCHNOTAPPLY,
  226. PATCHAPPLIED,
  227. };
  228. enum{
  229. PEAKLTI_AV_IRE_PATCH, //black level, white level pattern
  230. PEAKLTI_AV_GRAYSCALE_PATCH, //graysclae, monoscope
  231. PEAKLTI_NON_PATCH, //reference viptable
  232. };
  233. enum{
  234. DPY_PEAKING_AV_IRE_PATCH, //black level, white level pattern
  235. DPY_PEAKING_AV_GRAYSCALE_PATCH, //graysclae, monoscope
  236. DPY_PEAKING_NON_PATCH, //reference viptable
  237. };
  238. enum{
  239. DS_SHARPNESS_AV_IRE_PATCH, //black level, white level pattern
  240. DS_SHARPNESS_AV_GRAYSCALE_PATCH, //graysclae, monoscope
  241. DS_SHARPNESS_NON_PATCH, //reference viptable
  242. };
  243. enum{
  244. TNR_CLAMP_DEFAULT_ATV_GRAYSCALE_PATCH,
  245. TNR_CLAMP_DEFAULT_AV_GRAYSCALE_PATCH,
  246. TNR_CLAMP_DEFAULT, //default
  247. };
  248. enum{
  249. POST_2D_SHARPNESS_JPEG_THUMBNAIL_PATCH,
  250. POST_2D_SHARPNESS_DEFAULT, //default
  251. };
  252. enum{
  253. POST_DLTI_JPEG_THUMBNAIL_PATCH,
  254. POST_DLTI_DEFAULT, //default
  255. };
  256. enum{
  257. DPY_SHARPNESS_JPEG_THUMBNAIL_PATCH,
  258. DPY_SHARPNESS_DEFAULT, //default
  259. };
  260. /*******************************************************************************
  261. * Structure
  262. ******************************************************************************/
  263. typedef struct _ST_PQ_CMDSET_CLR_MATRIX
  264. {
  265. CSC_SETTING curMatrix; // before contrast, brightness, ColorTemp, Hue, Sat, Ypp_en compensation
  266. INT32 iMatrixC[3];
  267. INT32 iContrast;
  268. INT32 iBrightness;
  269. INT32 iCTRGBGain[3]; // R:0, G:1, B:2
  270. INT32 iCTRGBBias[3]; // R:0, G:1, B:2
  271. INT32 iHue;
  272. INT32 iSaturation;
  273. } ST_PQ_CMDSET_CLR_MATRIX;
  274. typedef struct _ST_PQ_CMDSET_CLR_MATRIX_EX
  275. {
  276. CSC_SETTING curMatrix; // before contrast, brightness, ColorTemp, Hue, Sat, Ypp_en compensation
  277. INT32 iMatrixC[3];
  278. INT32 iContrast;
  279. INT32 iBrightness;
  280. INT32 iCTRGBGain[3]; // R:0, G:1, B:2
  281. INT32 iCTRGBBias[3]; // R:0, G:1, B:2
  282. INT32 iHue;
  283. INT32 iSaturation;
  284. INT32 iOSDGainBit;
  285. INT32 iOSDBiasBit;
  286. } ST_PQ_CMDSET_CLR_MATRIX_EX;
  287. typedef struct _SAT_INFO //saturation
  288. {
  289. UINT8 ucOperation; //0: none 1:wait 5 sec to enter detecting 2:scene detect every 1 sec
  290. UINT8 ucSat;
  291. UINT8 ucDiff;
  292. UINT8 ucDiff_min;
  293. UINT8 ucDiff_max;
  294. BOOL bCeneChange;
  295. UINT16 nTimeout;
  296. spinlock_t SpinLock;
  297. } SAT_INFO;
  298. typedef struct _COLOR_MATRIX_COMP_INT
  299. {
  300. INT32 iValue:12;
  301. }COLOR_MATRIX_COMP_INT;
  302. typedef struct _COLORRGB
  303. {
  304. INT32 dR;
  305. INT32 dG;
  306. INT32 dB;
  307. }COLORRGB;
  308. typedef struct _COLORYUV
  309. {
  310. INT32 dY;
  311. INT32 dU;
  312. INT32 dV;
  313. }COLORYUV;
  314. typedef struct _FL_SETTING
  315. {
  316. INT32 detect_en;
  317. INT32 angle_max;
  318. INT32 angle_min;
  319. INT32 rot_angle;
  320. INT32 sin;
  321. INT32 cos;
  322. INT32 lrange;
  323. INT32 hrange;
  324. INT32 sat;
  325. INT32 sat_max;
  326. INT32 calc_bypass;
  327. INT32 q_left;
  328. INT32 q_right;
  329. INT32 q1;
  330. } FL_SETTING;
  331. typedef struct _RG_SETTING
  332. {
  333. INT32 detect_en;
  334. INT32 angle_max;
  335. INT32 angle_min;
  336. INT32 rot_angle;
  337. INT32 sin;
  338. INT32 cos;
  339. INT32 lrange;
  340. INT32 hrange;
  341. INT32 mult;
  342. INT32 mult_max;
  343. INT32 calc_bypass;
  344. INT32 q;
  345. INT32 q1;
  346. } RG_SETTING;
  347. typedef struct _GAMMA_OPT
  348. {
  349. INT32 pc_no_gamma;
  350. } GAMMA_OPT;
  351. typedef struct CR_MSETTING
  352. {
  353. INT32 fl_mrange;
  354. INT32 reg0_mrange;
  355. INT32 reg1_mrange;
  356. INT32 reg2_mrange;
  357. INT32 reg3_mrange;
  358. INT32 reg4_mrange;
  359. INT32 reg5_mrange;
  360. }CR_MSETTING;
  361. typedef struct _DS_SHARP_RATIO
  362. {
  363. INT32 ratio[6];
  364. } DS_SHARP_RATIO;
  365. typedef struct _SAT_GAIN_CURVE
  366. {
  367. UINT8 mSatGainCurveSource[20];
  368. UINT8 sat_gb[8][16];
  369. } SAT_GAIN_CURVE;
  370. typedef struct _PQ_MENU_VALUE
  371. {
  372. INT32 iBrightness,iContrast,iSharpness,iSaturation,iHue;
  373. INT32 iColorTemp[3];
  374. INT32 iColorBias[3];
  375. UINT8 ucDCLevel;
  376. UINT8 ucCWLevel;
  377. INT8 cSGOffset;
  378. UINT8 ucNRLevel;
  379. UINT8 ucMPEGNRLevel;
  380. BOOL bNoGamma;
  381. UINT8 ucColorStyle;
  382. UINT8 ucColorProcess;
  383. } PQ_MENU_VALUE;
  384. typedef struct _SHARP_INFO
  385. {
  386. //INT32 x1,m1,x2,m2,smooth,sharp;
  387. INT32 m1,m2,smooth,sharp;
  388. union {
  389. INT32 ilimit; // for initial fake
  390. UINT8 limit[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  391. };
  392. INT32 pivotx,pivoty;
  393. } SHARP_INFO;
  394. typedef struct _STRENGTH_DEFINE
  395. {
  396. INT32 Degree[3]; //weak, medium, strong
  397. } STRENGTH_DEFINE;
  398. typedef struct _PEAKING_SETTING
  399. {
  400. INT32 filter_y_h1;
  401. INT32 filter_y_h2;
  402. INT32 filter_y_h3;
  403. INT32 filter_y_h4;
  404. } PEAKING_SETTING;
  405. typedef struct _PEAKING_SETTING_EXT
  406. {
  407. INT32 filter_y_h5;
  408. INT32 filter_y_h6;
  409. } PEAKING_SETTING_EXT;
  410. typedef struct _REG_RANGE
  411. {
  412. INT32 min;
  413. INT32 max;
  414. INT32 middle;
  415. } REG_RANGE;
  416. typedef struct _DS_SHARP_INFO
  417. {
  418. INT32 fac0,fac1,fac2,th0,th1,slope0,slope1;
  419. union {
  420. INT32 ioversht; // for initial fake
  421. UINT8 oversht[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  422. };
  423. union {
  424. INT32 iundersht; // for initial fake
  425. UINT8 undersht[4]; //0:sd or all(before V34) 1:md 2:hd 3:enable_flag
  426. };
  427. } DS_SHARP_INFO;
  428. typedef struct _DC_STRENGTH_DEFINE//dynamic contrast for v25
  429. {
  430. UINT32 Degree[3]; //weak, medium, strong
  431. } DC_STRENGTH_DEFINE;
  432. typedef struct _DARK_SHARP_INFO
  433. {
  434. UINT16 th[4];
  435. UINT16 fac[4];
  436. UINT8 slope[5];
  437. UINT8 reserve[2];
  438. UINT8 enable;
  439. } DARK_SHARP_INFO;
  440. typedef struct _REG_RANGE_EXT
  441. {
  442. INT32 midleft;
  443. INT32 midright;
  444. } REG_RANGE_EXT;
  445. typedef struct _USER_CURVE_INFO
  446. {
  447. const USER_BIN_SET* pStaticGamma;
  448. const USER_BIN_SET* pBlackLevelExtension;
  449. const USER_BIN_SET* pWhiteLevelExtension;
  450. } USER_CURVE_INFO;
  451. typedef struct
  452. {
  453. UINT32 TableOffset;
  454. UINT32 TableSize;
  455. UINT32 XorCRC;
  456. UINT32 TableFlag;
  457. } LUTTableInfo;
  458. typedef struct HeadStruct
  459. {
  460. UINT8 LUTID[3];
  461. UINT8 Version;
  462. UINT32 FileSize;
  463. UINT16 IndexOffset;
  464. UINT16 HeadLength;
  465. UINT8 TableCount;
  466. UINT8 SrcCount;
  467. UINT8 HueScale;
  468. UINT8 Empty;
  469. UINT8 SrcIndex[32];
  470. UINT8 Reserved1[16];
  471. UINT8 Tag[32];
  472. LUTTableInfo TblInfo[8];
  473. }LUTHead;
  474. typedef struct LUTStruct
  475. {
  476. UINT8 LUTID[3];
  477. UINT8 Version;
  478. UINT32 FileSize;
  479. UINT16 IndexOffset;
  480. UINT16 HeadLength;
  481. UINT8 TableCount;
  482. UINT8 SrcCount;
  483. UINT8 HueScale;
  484. UINT8 SatScale;
  485. UINT8 SrcIndex[32];
  486. UINT8 Reserved1[16];
  487. UINT8 Tag[32];
  488. LUTTableInfo TblInfo[8];
  489. UINT32 Pivot0[512];
  490. UINT16 PivotStrength0[512];
  491. UINT32 Pivot1[512];
  492. UINT16 PivotStrength1[512];
  493. UINT32 Pivot2[512];
  494. UINT16 PivotStrength2[512];
  495. UINT32 Pivot3[512];
  496. UINT16 PivotStrength3[512];
  497. UINT32 Pivot4[512];
  498. UINT16 PivotStrength4[512];
  499. UINT32 Pivot5[512];
  500. UINT16 PivotStrength5[512];
  501. UINT32 Pivot6[512];
  502. UINT16 PivotStrength6[512];
  503. UINT32 Pivot7[512];
  504. UINT16 PivotStrength7[512];
  505. UINT8 Reserved2[12];
  506. UINT16 FileXorCRC;
  507. } LUTTable, *PLUTTable;
  508. typedef struct _COLOR_LUT_330C_6BIT_INT
  509. {
  510. INT32 iCb:6;
  511. INT32 iCr:6;
  512. INT32 iY:6;
  513. }COLOR_LUT_330C_6BIT_INT;
  514. typedef struct _NR_BLOCKALPHA_DEFINE
  515. {
  516. UINT32 mmap_en;
  517. STRENGTH_DEFINE mthr[5];
  518. STRENGTH_DEFINE mslp[6];
  519. STRENGTH_DEFINE mfac[6];
  520. } NR_BLOCKALPHA_DEFINE;
  521. typedef struct NR_Setting_BY_Group_Idx
  522. {
  523. STRENGTH_DEFINE LumaTnrCoring;
  524. STRENGTH_DEFINE LumaTnrStrength;
  525. STRENGTH_DEFINE ChromaTnrCoring;
  526. STRENGTH_DEFINE ChromaTnrStrength;
  527. STRENGTH_DEFINE LumaSnr1Coring;
  528. STRENGTH_DEFINE LumaSnr1Strength;
  529. STRENGTH_DEFINE LumaSnr2Coring;
  530. STRENGTH_DEFINE LumaSnr2Strength;
  531. STRENGTH_DEFINE ChromaSnrCoring;
  532. STRENGTH_DEFINE ChromaSnrStrength;
  533. STRENGTH_DEFINE BlockNrCoring;
  534. STRENGTH_DEFINE BlockNrStrength;
  535. STRENGTH_DEFINE MosquitoNrCoring;
  536. STRENGTH_DEFINE MosquitoNrStrength;
  537. INT32 TnrUltraLowCtl; //v23 //bit[0]:weak bit[1]:medium bit[2]:strong
  538. INT32 SnrUltraLowCtl;
  539. NR_BLOCKALPHA_DEFINE NRBlockAlpha[NR_BLOCK_ALPHA_END];
  540. }NR_Setting_BY_Group_Idx;
  541. typedef struct _NR_Setting
  542. {
  543. UINT8 mNRSourceGroupedIndex[20];
  544. NR_Setting_BY_Group_Idx mNRSetting_byGroupIdx[VIP_TABLE_GROUPED_NUMBER];
  545. }NR_Setting;
  546. typedef struct _UV_Coring_BY_Group_Idx
  547. {
  548. INT32 iUVCoring_en;
  549. INT32 iUVCoring;
  550. }UV_Coring_BY_Group_Idx;
  551. typedef struct _UV_Coring
  552. {
  553. UINT8 mUV_CoringGroupedIndex[20];
  554. UV_Coring_BY_Group_Idx UV_Coring_BY_Group_Idx[VIP_TABLE_GROUPED_NUMBER];
  555. }UV_Coring;
  556. typedef struct _UV_Coring_ext
  557. {
  558. INT32 UVCoringOpt;
  559. INT32 iUVCoring_2;
  560. INT32 iUVCoring_3;
  561. INT32 bluma_th_lo[2];
  562. INT32 bluma_th_hi[2];
  563. INT32 bBlend_slope[2];
  564. }UV_Coring_ext;
  565. //=== new sharpness PREDCTI
  566. typedef struct _SHARP_PREDCTI_DATA
  567. {
  568. INT32 iPreDCTIEnable;
  569. INT32 iPreChromaFilterEnable;
  570. INT32 iPostChromaFilterEnable;
  571. INT32 iPreChromaFilterLevel;
  572. INT32 icoef[3];
  573. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  574. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  575. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  576. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  577. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  578. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  579. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  580. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  581. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  582. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  583. }SHARP_PREDCTI_DATA;
  584. typedef struct _SHARP_PREDCTI
  585. {
  586. UINT8 mGroupedIndex[20];
  587. SHARP_PREDCTI_DATA mPreDCTIData[VIP_TABLE_GROUPED_NUMBER];
  588. }SHARP_PREDCTI;
  589. typedef struct _SHARP_PREDCTI_EXT
  590. {
  591. INT32 iGain_Lp[PQ_SHARPNESS_PERCENT_END];
  592. INT32 iSlp_Lp[PQ_SHARPNESS_PERCENT_END];
  593. }SHARP_PREDCTI_EXT;
  594. //=== new sharpness POSTDCTI
  595. typedef struct _SHARP_POSTDCTI_DATA
  596. {
  597. INT32 iPostDCTIEnable;
  598. INT32 iPostChromaFilterEnable;
  599. INT32 iPreChromaFilterEnable;
  600. INT32 iPostChromaFilterLevel;
  601. INT32 icoef[6];
  602. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  603. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  604. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  605. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  606. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  607. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  608. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  609. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  610. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  611. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  612. }SHARP_POSTDCTI_DATA;
  613. typedef struct _SHARP_POSTDCTI
  614. {
  615. UINT8 mGroupedIndex[20];
  616. SHARP_POSTDCTI_DATA mPostDCTIData[VIP_TABLE_GROUPED_NUMBER];
  617. }SHARP_POSTDCTI;
  618. //=== new sharpness PREDLTI
  619. typedef struct _SHARP_PREDLTI_DATA
  620. {
  621. INT32 iPreDLTIEnable;
  622. INT32 icoef[3];
  623. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  624. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  625. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  626. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  627. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  628. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  629. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  630. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  631. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  632. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  633. }SHARP_PREDLTI_DATA;
  634. typedef struct _SHARP_PREDLTI
  635. {
  636. UINT8 mGroupedIndex[20];
  637. SHARP_PREDLTI_DATA mPreDLTIData[VIP_TABLE_GROUPED_NUMBER];
  638. }SHARP_PREDLTI;
  639. //~~~ new sharpness PREDLTI
  640. //=== new sharpness POSTDLTI
  641. typedef struct _SHARP_POSTDLTI_DATA
  642. {
  643. INT32 iPostDLTIEnable;
  644. INT32 iDynamicClipEnable;
  645. INT32 icoef[6];
  646. INT32 iDnamicClipMode[PQ_SHARPNESS_PERCENT_END];
  647. INT32 iDnamicClipOverShoot[PQ_SHARPNESS_PERCENT_END];
  648. INT32 iDnamicClipUnderShoot[PQ_SHARPNESS_PERCENT_END];
  649. INT32 iDnamicClipOverShootfac[PQ_SHARPNESS_PERCENT_END];
  650. INT32 iDnamicClipUnderShootfac[PQ_SHARPNESS_PERCENT_END];
  651. INT32 iScale[PQ_SHARPNESS_PERCENT_END];
  652. INT32 iGainTap[PQ_SHARPNESS_PERCENT_END];
  653. INT32 iShootTap[PQ_SHARPNESS_PERCENT_END];
  654. INT32 iNormalOverShoot[PQ_SHARPNESS_PERCENT_END];
  655. INT32 iNormalUnderShoot[PQ_SHARPNESS_PERCENT_END];
  656. INT32 iGain0[PQ_SHARPNESS_PERCENT_END];
  657. INT32 iGain1[PQ_SHARPNESS_PERCENT_END];
  658. INT32 iGain2[PQ_SHARPNESS_PERCENT_END];
  659. INT32 iTh0[PQ_SHARPNESS_PERCENT_END];
  660. INT32 iTh1[PQ_SHARPNESS_PERCENT_END];
  661. INT32 iSlope0[PQ_SHARPNESS_PERCENT_END];
  662. INT32 iSlope1[PQ_SHARPNESS_PERCENT_END];
  663. }SHARP_POSTDLTI_DATA;
  664. typedef struct _SHARP_POSTDLTI
  665. {
  666. UINT8 mGroupedIndex[20];
  667. SHARP_POSTDLTI_DATA mPostDLTIData[VIP_TABLE_GROUPED_NUMBER];
  668. }SHARP_POSTDLTI;
  669. //=== new sharpness POST2DSHARPNESS
  670. typedef struct _SHARP_POST2DSHARPNESS_DATA
  671. {
  672. INT32 iPost2DSharpEnable;
  673. INT32 iGain0_Luma[PQ_SHARPNESS_PERCENT_END];
  674. INT32 iGain1_Luma[PQ_SHARPNESS_PERCENT_END];
  675. INT32 iGain2_Luma[PQ_SHARPNESS_PERCENT_END];
  676. INT32 iTh0_Luma[PQ_SHARPNESS_PERCENT_END];
  677. INT32 iTh1_Luma[PQ_SHARPNESS_PERCENT_END];
  678. INT32 iSlope0_Luma[PQ_SHARPNESS_PERCENT_END];
  679. INT32 iSlope1_Luma[PQ_SHARPNESS_PERCENT_END];
  680. INT32 iFilterMode_Luma[PQ_SHARPNESS_PERCENT_END];
  681. INT32 iScale_Luma[PQ_SHARPNESS_PERCENT_END];
  682. INT32 iGainTap_Luma[PQ_SHARPNESS_PERCENT_END];
  683. INT32 iShootTap_Luma[PQ_SHARPNESS_PERCENT_END];
  684. INT32 iNormalOverShoot[PQ_SHARPNESS_PERCENT_END];
  685. INT32 iNormalUnderShoot[PQ_SHARPNESS_PERCENT_END];
  686. INT32 iOverShootFactor[PQ_SHARPNESS_PERCENT_END];
  687. INT32 iUnderShootFactor[PQ_SHARPNESS_PERCENT_END];
  688. INT32 iGain0_Chroma[PQ_SHARPNESS_PERCENT_END];
  689. INT32 iGain1_Chroma[PQ_SHARPNESS_PERCENT_END];
  690. INT32 iGain2_Chroma[PQ_SHARPNESS_PERCENT_END];
  691. INT32 iTh0_Chroma[PQ_SHARPNESS_PERCENT_END];
  692. INT32 iTh1_Chroma[PQ_SHARPNESS_PERCENT_END];
  693. INT32 iSlope0_Chroma[PQ_SHARPNESS_PERCENT_END];
  694. INT32 iSlope1_Chroma[PQ_SHARPNESS_PERCENT_END];
  695. INT32 iFilterMode_Chroma[PQ_SHARPNESS_PERCENT_END];
  696. INT32 iScale_Chroma[PQ_SHARPNESS_PERCENT_END];
  697. INT32 iGainTap_Chroma[PQ_SHARPNESS_PERCENT_END];
  698. INT32 iShootTap_Chroma[PQ_SHARPNESS_PERCENT_END];
  699. }SHARP_POST2DSHARPNESS_DATA;
  700. typedef struct _SHARP_POST2DSHARPNESS
  701. {
  702. UINT8 mGroupedIndex[20];
  703. SHARP_POST2DSHARPNESS_DATA mPost2DSharpData[VIP_TABLE_GROUPED_NUMBER];
  704. }SHARP_POST2DSHARPNESS;
  705. typedef struct _SAT_GAIN_CURVE_V2_DATA
  706. {
  707. INT32 iDpySatEn;
  708. INT32 iDpySatOpt;
  709. INT32 iDpySatAll;
  710. INT32 iDpySatHue;
  711. INT32 iSat_Gain[17];
  712. }SAT_GAIN_CURVE_V2I_DATA;
  713. typedef struct _SAT_GAIN_CURVE_V2
  714. {
  715. UINT8 mGroupedIndex[20];
  716. SAT_GAIN_CURVE_V2I_DATA mSatGainCurve_V2_Data[VIP_TABLE_GROUPED_NUMBER];
  717. }SAT_GAIN_CURVE_V2;
  718. //=== DS Sharpness
  719. typedef struct _DS_SHARPNESS_DATA
  720. {
  721. STRENGTH_DEFINE SlrSharpRatio;
  722. DS_SHARP_INFO DSSharpWeak[2]; // y/c
  723. DS_SHARP_INFO DSSharpNormal[2];
  724. DS_SHARP_INFO DSSharpStrong[2];
  725. UINT32 DS_Sharp_Angle; //bit[0~1]:SD bit[2~3]angle bit[8~9]:MD bit[10~11]:angle bit[16~17]:HD bit[18~19]:angle
  726. DARK_SHARP_INFO DSSharpDark;
  727. }DS_SHARPNESS_DATA;
  728. typedef struct _DS_SHARPNESS
  729. {
  730. UINT8 mGroupedIndex[20];
  731. DS_SHARPNESS_DATA mDS_Sharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  732. }DS_SHARPNESS;
  733. //=== HOR Sharpness
  734. typedef struct _HOR_SHARPNESS_DATA
  735. {
  736. DS_SHARP_INFO HorSharpWeak[2]; //v32 y/c
  737. DS_SHARP_INFO HorSharpNormal[2];
  738. DS_SHARP_INFO HorSharpStrong[2];
  739. DARK_SHARP_INFO HorSharpDark;
  740. }HOR_SHARPNESS_DATA;
  741. typedef struct _HOR_SHARPNESS
  742. {
  743. UINT8 mGroupedIndex[20];
  744. HOR_SHARPNESS_DATA mHOR_Sharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  745. }HOR_SHARPNESS;
  746. //=== Sharpness
  747. typedef struct _SHARPNESS_DATA
  748. {
  749. SHARP_INFO sharp_strong[4];
  750. SHARP_INFO sharp_normal[4];
  751. SHARP_INFO sharp_weak[4];
  752. }SHARPNESS_DATA;
  753. typedef struct _SHARPNESS
  754. {
  755. UINT8 mGroupedIndex[20];
  756. SHARPNESS_DATA mSharpness_Data[VIP_TABLE_GROUPED_NUMBER];
  757. }SHARPNESS;
  758. //=== Peaking
  759. typedef struct _PEAKING_DATA
  760. {
  761. PEAKING_SETTING Peaking[3]; //sd,md,hd
  762. }PEAKING_DATA;
  763. typedef struct _PEAKING
  764. {
  765. UINT8 mGroupedIndex[20];
  766. PEAKING_DATA mPeaking_Data[VIP_TABLE_GROUPED_NUMBER];
  767. }PEAKING;
  768. typedef struct _PEAKING_DATA_EXT
  769. {
  770. PEAKING_SETTING_EXT Peaking[3]; //sd,md,hd
  771. }PEAKING_DATA_EXT;
  772. //=== Range
  773. typedef struct _RANGE_DATA
  774. {
  775. REG_RANGE BrightnessRange;
  776. REG_RANGE ContrastRange;
  777. REG_RANGE ColorTempGainRange;
  778. REG_RANGE ColorTempOffsetRange;
  779. REG_RANGE SaturationRange;
  780. REG_RANGE HueRange;
  781. REG_RANGE_EXT BrightnessRangeExt;
  782. REG_RANGE_EXT ContrastRangeExt;
  783. REG_RANGE_EXT SaturationRangeExt;
  784. }RANGE_DATA;
  785. typedef struct _RANGE
  786. {
  787. UINT8 mGroupedIndex[20];
  788. RANGE_DATA mRange_Data[VIP_TABLE_GROUPED_NUMBER];
  789. }RANGE;
  790. //=== DINTERLACE FILTER
  791. typedef struct _DEIN_FILTER_DATA
  792. {
  793. INT32 sd_vdi_mad_hlp_en;
  794. INT32 sd_slr_mix_ach;
  795. INT32 sd_slr_mix_bch;
  796. INT32 md_vdi_mad_hlp_en;
  797. INT32 md_slr_mix_ach;
  798. INT32 md_slr_mix_bch;
  799. INT32 hd_vdi_mad_hlp_en;
  800. INT32 hd_slr_mix_ach;
  801. INT32 hd_slr_mix_bch;
  802. } DEIN_FILTER_DATA;
  803. typedef struct _DEIN_FILTER
  804. {
  805. UINT8 mGroupedIndex[20];
  806. DEIN_FILTER_DATA mDeIN_Fil_Data[VIP_TABLE_GROUPED_NUMBER];
  807. }DEIN_FILTER;
  808. //=== COLOR MATRIX
  809. typedef struct _COLOR_MATRIX_DATA
  810. {
  811. CSC_SETTING mSrcColorMatrix[2];
  812. } COLOR_MATRIX_DATA;
  813. typedef struct _COLOR_MATRIX
  814. {
  815. UINT8 mGroupedIndex[20];
  816. COLOR_MATRIX_DATA mSrcColorMatrix[VIP_TABLE_GROUPED_NUMBER];
  817. }COLOR_MATRIX;
  818. //=== Dynamic Contrast
  819. typedef struct _DLC_SET_CURVE_PARAM
  820. {
  821. ST_SWDC_Slope dlc_luma_slope;
  822. ST_SWDC_Chroma dlc_chroma_slope;
  823. INT32 dlc_En;
  824. INT32 dlc_Var_Cond_En;
  825. INT32 dlc_Ratio[6];
  826. INT32 dlc_Factor[5];
  827. INT32 dlc_Alpha;
  828. INT32 dlc_Static_Alpha[4];
  829. INT32 dlc_YLevel;
  830. INT32 dlc_CLevel;
  831. } DLC_SET_CURVE_PARAM;
  832. typedef struct _DynamicContrast
  833. {
  834. UINT8 mGroupedIndex[20];
  835. DLC_SET_CURVE_PARAM mDLC_Table[VIP_TABLE_GROUPED_NUMBER];
  836. }DynamicContrast;
  837. typedef enum
  838. {
  839. NR_SNR_BEFORE_SCALER,
  840. NR_SNR_AFTER_SCALER,
  841. NR_SNR_CASE1,//mantis #50079
  842. NR_SNR_END ,
  843. }PQ_NR_SNR_TYPE;
  844. typedef struct _SNR_DATA
  845. {
  846. STRENGTH_DEFINE SNR_Sel;
  847. STRENGTH_DEFINE SNR_Chk_Middle_Pxl;
  848. STRENGTH_DEFINE SNR_th;
  849. STRENGTH_DEFINE SNR_Gain[SNR_MAP_GAIN_NUM];
  850. STRENGTH_DEFINE SNR_Slope;
  851. }SNR_DATA;
  852. typedef struct _SNR_Setting
  853. {
  854. int SNR_MapByPass;
  855. SNR_DATA SNR_Luma;
  856. SNR_DATA SNR_Chroma;
  857. }SNR_Setting;
  858. //=== sigama NR
  859. typedef struct _SigamaNR_Region_Data
  860. {
  861. INT32 bTemporal;
  862. INT32 bVarScale;
  863. INT32 bGain;
  864. INT32 bVMotScale;
  865. INT32 bVRefScale;
  866. }SigamaNR_Region_Data;
  867. typedef struct _SigamaNR_Complexity_level_Data
  868. {
  869. INT32 bLowTH;
  870. INT32 bMiddleTH;
  871. INT32 bHighTH;
  872. }SigamaNR_Complexity_level_Data;
  873. typedef struct _SigamaNR_Post_TNR_Gain_Data
  874. {
  875. INT32 bWeak;
  876. INT32 bNormal;
  877. INT32 bStrong;
  878. }SigamaNR_Post_TNR_Gain_Data;
  879. typedef struct _SigamaNR_Adaptive_Static_TH_Data
  880. {
  881. INT32 bWeak;
  882. INT32 bNormal;
  883. INT32 bStrong;
  884. INT32 bLowNoiseTH;
  885. INT32 bStaticTH;
  886. INT32 bDetailTH;
  887. INT32 bComplexScale;
  888. INT32 bVarScale;
  889. INT32 bDetailScale;
  890. }SigamaNR_Adaptive_Static_TH_Data;
  891. typedef struct _SigamaNR_Variance_Upper_Bound_Data
  892. {
  893. UINT32 bWeak[2];
  894. UINT32 bNormal[2];
  895. UINT32 bStrong[2];
  896. }SigamaNR_Variance_Upper_Bound_Data;
  897. typedef struct _Sigama_NR_Data
  898. {
  899. INT32 sigama_NR_opt;
  900. INT32 sigama_NR_mode;
  901. SigamaNR_Region_Data SigamaNR_Region[3];
  902. SigamaNR_Complexity_level_Data SigamaNR_Complexity_level;
  903. SigamaNR_Adaptive_Static_TH_Data SigamaNR_Adaptive_Static_TH;
  904. SigamaNR_Post_TNR_Gain_Data SigamaNR_Post_TNR_Gain;
  905. SigamaNR_Variance_Upper_Bound_Data SigamaNR_Variance_Upper_Bound;
  906. INT32 SigamaNRBase;
  907. INT32 SigamaNRBound;
  908. INT32 Variance_TH[7];
  909. INT32 Motion_TH[7];
  910. }Sigama_NR_Data;
  911. typedef struct _Sigama_NR_Setting
  912. {
  913. UINT8 mGroupedIndex[20];
  914. Sigama_NR_Data Sigama_NR[VIP_TABLE_GROUPED_NUMBER];
  915. }Sigama_NR_Setting;
  916. //~~~ sigama NR
  917. //Peaking DLTI
  918. typedef struct _Peaking_DLTI_Data
  919. {
  920. /*
  921. INT32 SLR2DSelSp;
  922. INT32 SharpnessXp0Peak;
  923. INT32 SharpnessXp1Peak;
  924. INT32 SharpnessXp2Peak;
  925. INT32 SharpnessXp3Peak;
  926. INT32 SharpnessYp0Peak;
  927. INT32 SharpnessYp1Peak;
  928. INT32 SharpnessYp2Peak;
  929. INT32 SharpnessMp1Peak;
  930. INT32 SharpnessMp2Peak;
  931. INT32 SharpnessXp0Lti;
  932. INT32 SharpnessXp1Lti;
  933. INT32 SharpnessXp2Lti;
  934. INT32 SharpnessXp3Lti;
  935. INT32 SharpnessYp0Lti;
  936. INT32 SharpnessYp1Lti;
  937. INT32 SharpnessYp2Lti;
  938. INT32 SharpnessMp1Lti;
  939. INT32 SharpnessMp2Lti;
  940. INT32 SharpnessPeakingEn;
  941. INT32 SharpnessLTIEn;
  942. INT32 SharpnessFilterModePeak1D; //peaking, fixed filter
  943. INT32 SharpnessGainBPPeak1D;
  944. INT32 SharpnessGainEPPeak1D;
  945. INT32 SharpnessGainHPPeak1D;
  946. INT32 SharpnessGainNegPeak;
  947. INT32 SharpnessPeakingHpTap;
  948. INT32 SharpnessPeakingBpTap;
  949. INT32 SharpnessPeakingEpTap;
  950. INT32 SharpnessGainHPV31; //V peaking, BP, 3 Tap gain
  951. INT32 SharpnessGainHPV51; //V peaking, BP, 5 Tap gain
  952. INT32 SharpnessLowPassPeak1D;// peaking, LP Filter, pre LP filter
  953. INT32 SharpnessAbsLpEnPeak; // peaking, LP Filter, pre LP filter
  954. INT32 SharpnessLowPassLti; // DLTI, LP Filter, pre LP filter
  955. INT32 SharpnessAbsLpEnLti; // DLTI, LP Filter, post LP filter
  956. INT32 SharpnessCoringPeak1D; // peaking other, H peaking coring
  957. INT32 SharpnessCoringPeak; // peaking other, post coring
  958. INT32 SharpnessCoringPeakV; // peaking other, V peaking coring
  959. INT32 SharpnessHiCoringPeak; // peaking other, Threshold
  960. INT32 SharpnessGainHP0Peak2D; // peaking, 2D, HP gain, 3 tap
  961. INT32 SharpnessGainHP1Peak2D; // peaking, 2D, HP gain, 5 tap
  962. INT32 SharpnessGainBP0Peak2D; // peaking, 2D, BP gain, 7 tap
  963. INT32 SharpnessGainBP1Peak2D; // peaking, 2D, BP gain, 9 tap
  964. INT32 SharpnessCoringPeak2D; // peaking, 2D, Coring
  965. INT32 SharpnessMaxMinHSLrTap; // Peaking new method, H Residual
  966. INT32 SharpnessMaxMinVSLrTap; // Peaking new method, V Residual
  967. INT32 SharpnessAdjcentDiffTh; // Peaking new method, Different TH
  968. INT32 SharpnessDLTIHpTap;
  969. INT32 SharpnessDLTIBpTap;
  970. INT32 SharpnessDLTIEpTap;
  971. INT32 SharpnessDLTIBpGain;
  972. INT32 SharpnessDLTIEpGain;
  973. INT32 SharpnessDLTIHpGain;
  974. INT32 SharpnessStSel; //DLTI, Others, stepness filter
  975. INT32 SharpnessCoringLti; //DLTI, Others, coring
  976. INT32 SharpnessHiCoringLti;// DLTI, others, threshold
  977. INT32 SharpnessDeOvstNewMethodPeak; // DeOverShot, peaking selection
  978. INT32 SharpnessDeOvseNewMethodLti; // DeOverShot, DLTI selection
  979. INT32 SharpnessOverMaxPeak; //peaking, max clip
  980. INT32 SharpnessOverMinPeak;
  981. INT32 SharpnessOvstGainMaxPeak; //max gain
  982. INT32 SharpnessOvstGainMinPeak; // min gain
  983. INT32 SharpnessOverMaxLti; //DLTI, max clip
  984. INT32 SharpnessOverMinLti;
  985. INT32 SharpnessOvstGainMaxLti; //max gain
  986. INT32 SharpnessOvstGainMinLti; // min gain
  987. INT32 SharpnessMaxMinHSLrTapLti; // DLTI new method, H Residual
  988. /////////// delete above
  989. */
  990. // peaking
  991. INT32 SLR2DSelSp[PQ_SHARPNESS_PERCENT_END];
  992. INT32 SharpnessXp0Peak[PQ_SHARPNESS_PERCENT_END];
  993. INT32 SharpnessXp1Peak[PQ_SHARPNESS_PERCENT_END];
  994. INT32 SharpnessXp2Peak[PQ_SHARPNESS_PERCENT_END];
  995. INT32 SharpnessXp3Peak[PQ_SHARPNESS_PERCENT_END];
  996. INT32 SharpnessYp0Peak[PQ_SHARPNESS_PERCENT_END];
  997. INT32 SharpnessYp1Peak[PQ_SHARPNESS_PERCENT_END];
  998. INT32 SharpnessYp2Peak[PQ_SHARPNESS_PERCENT_END];
  999. INT32 SharpnessMp1Peak[PQ_SHARPNESS_PERCENT_END];
  1000. INT32 SharpnessMp2Peak[PQ_SHARPNESS_PERCENT_END];
  1001. INT32 SharpnessXp0Lti[PQ_SHARPNESS_PERCENT_END];
  1002. INT32 SharpnessXp1Lti[PQ_SHARPNESS_PERCENT_END];
  1003. INT32 SharpnessXp2Lti[PQ_SHARPNESS_PERCENT_END];
  1004. INT32 SharpnessXp3Lti[PQ_SHARPNESS_PERCENT_END];
  1005. INT32 SharpnessYp0Lti[PQ_SHARPNESS_PERCENT_END];
  1006. INT32 SharpnessYp1Lti[PQ_SHARPNESS_PERCENT_END];
  1007. INT32 SharpnessYp2Lti[PQ_SHARPNESS_PERCENT_END];
  1008. INT32 SharpnessMp1Lti[PQ_SHARPNESS_PERCENT_END];
  1009. INT32 SharpnessMp2Lti[PQ_SHARPNESS_PERCENT_END];
  1010. INT32 SharpnessPeakingEn[PQ_SHARPNESS_PERCENT_END];
  1011. INT32 SharpnessLTIEn[PQ_SHARPNESS_PERCENT_END];
  1012. INT32 SharpnessFilterModePeak1D[PQ_SHARPNESS_PERCENT_END]; //peaking, fixed filter
  1013. INT32 SharpnessGainBPPeak1D[PQ_SHARPNESS_PERCENT_END];
  1014. INT32 SharpnessGainEPPeak1D[PQ_SHARPNESS_PERCENT_END];
  1015. INT32 SharpnessGainHPPeak1D[PQ_SHARPNESS_PERCENT_END];
  1016. INT32 SharpnessGainNegPeak[PQ_SHARPNESS_PERCENT_END];
  1017. INT32 SharpnessPeakingHpTap[PQ_SHARPNESS_PERCENT_END];
  1018. INT32 SharpnessPeakingBpTap[PQ_SHARPNESS_PERCENT_END];
  1019. INT32 SharpnessPeakingEpTap[PQ_SHARPNESS_PERCENT_END];
  1020. INT32 SharpnessGainHPV31[PQ_SHARPNESS_PERCENT_END]; //V peaking, BP, 3 Tap gain
  1021. INT32 SharpnessGainHPV51[PQ_SHARPNESS_PERCENT_END]; //V peaking, BP, 5 Tap gain
  1022. INT32 SharpnessLowPassPeak1D[PQ_SHARPNESS_PERCENT_END];// peaking, LP Filter, pre LP filter
  1023. INT32 SharpnessAbsLpEnPeak[PQ_SHARPNESS_PERCENT_END]; // peaking, LP Filter, pre LP filter
  1024. INT32 SharpnessLowPassLti[PQ_SHARPNESS_PERCENT_END]; // DLTI, LP Filter, pre LP filter
  1025. INT32 SharpnessAbsLpEnLti[PQ_SHARPNESS_PERCENT_END]; // DLTI, LP Filter, post LP filter
  1026. INT32 SharpnessCoringPeak1D[PQ_SHARPNESS_PERCENT_END]; // peaking other, H peaking coring
  1027. INT32 SharpnessCoringPeak[PQ_SHARPNESS_PERCENT_END]; // peaking other, post coring
  1028. INT32 SharpnessCoringPeakV[PQ_SHARPNESS_PERCENT_END]; // peaking other, V peaking coring
  1029. INT32 SharpnessHiCoringPeak[PQ_SHARPNESS_PERCENT_END]; // peaking other, Threshold
  1030. INT32 SharpnessGainHP0Peak2D[PQ_SHARPNESS_PERCENT_END]; // peaking, 2D, HP gain, 3 tap
  1031. INT32 SharpnessGainHP1Peak2D[PQ_SHARPNESS_PERCENT_END]; // peaking, 2D, HP gain, 5 tap
  1032. INT32 SharpnessGainBP0Peak2D[PQ_SHARPNESS_PERCENT_END]; // peaking, 2D, BP gain, 7 tap
  1033. INT32 SharpnessGainBP1Peak2D[PQ_SHARPNESS_PERCENT_END]; // peaking, 2D, BP gain, 9 tap
  1034. INT32 SharpnessCoringPeak2D[PQ_SHARPNESS_PERCENT_END]; // peaking, 2D, Coring
  1035. INT32 SharpnessMaxMinHSLrTap[PQ_SHARPNESS_PERCENT_END]; // Peaking new method, H Residual
  1036. INT32 SharpnessMaxMinVSLrTap[PQ_SHARPNESS_PERCENT_END]; // Peaking new method, V Residual
  1037. INT32 SharpnessAdjcentDiffTh[PQ_SHARPNESS_PERCENT_END]; // Peaking new method, Different TH
  1038. INT32 SharpnessDLTIHpTap[PQ_SHARPNESS_PERCENT_END];
  1039. INT32 SharpnessDLTIBpTap[PQ_SHARPNESS_PERCENT_END];
  1040. INT32 SharpnessDLTIEpTap[PQ_SHARPNESS_PERCENT_END];
  1041. INT32 SharpnessDLTIBpGain[PQ_SHARPNESS_PERCENT_END];
  1042. INT32 SharpnessDLTIEpGain[PQ_SHARPNESS_PERCENT_END];
  1043. INT32 SharpnessDLTIHpGain[PQ_SHARPNESS_PERCENT_END];
  1044. INT32 SharpnessStSel[PQ_SHARPNESS_PERCENT_END]; //DLTI, Others, stepness filter
  1045. INT32 SharpnessCoringLti[PQ_SHARPNESS_PERCENT_END]; //DLTI, Others, coring
  1046. INT32 SharpnessHiCoringLti[PQ_SHARPNESS_PERCENT_END];// DLTI, others, threshold
  1047. INT32 SharpnessDeOvstNewMethodPeak[PQ_SHARPNESS_PERCENT_END]; // DeOverShot, peaking selection
  1048. INT32 SharpnessDeOvseNewMethodLti[PQ_SHARPNESS_PERCENT_END]; // DeOverShot, DLTI selection
  1049. INT32 SharpnessOverMaxPeak[PQ_SHARPNESS_PERCENT_END]; //peaking, max clip
  1050. INT32 SharpnessOverMinPeak[PQ_SHARPNESS_PERCENT_END];
  1051. INT32 SharpnessOvstGainMaxPeak[PQ_SHARPNESS_PERCENT_END]; //max gain
  1052. INT32 SharpnessOvstGainMinPeak[PQ_SHARPNESS_PERCENT_END]; // min gain
  1053. INT32 SharpnessOverMaxLti[PQ_SHARPNESS_PERCENT_END]; //DLTI, max clip
  1054. INT32 SharpnessOverMinLti[PQ_SHARPNESS_PERCENT_END];
  1055. INT32 SharpnessOvstGainMaxLti[PQ_SHARPNESS_PERCENT_END]; //max gain
  1056. INT32 SharpnessOvstGainMinLti[PQ_SHARPNESS_PERCENT_END]; // min gain
  1057. INT32 SharpnessMaxMinHSLrTapLti[PQ_SHARPNESS_PERCENT_END]; // DLTI new method, H Residual
  1058. }Peaking_DLTI_Data;
  1059. typedef struct _Peaking_DLTI_Setting
  1060. {
  1061. UINT8 mGroupedIndex[20];
  1062. Peaking_DLTI_Data Peaking_DLTI[VIP_TABLE_GROUPED_NUMBER];
  1063. }Peaking_DLTI_Setting;
  1064. //~Peaking DLTI
  1065. //UV offset
  1066. typedef struct _UV_Offset_Data
  1067. {
  1068. INT32 UVOffsetEn;
  1069. INT32 UVOffsetMethodSelect;
  1070. INT32 DPYOffLumiLow;
  1071. INT32 DPYOffLumiHigh;
  1072. INT32 DPYUVOffCbMethod1;
  1073. INT32 DPYUVOffCbMethod2;
  1074. INT32 DPYSlopeMaxRGBCb;
  1075. INT32 DPYUVOffCrMethod1;
  1076. INT32 DPYUVOffCrMethod2;
  1077. INT32 DPYSlopeMaxRGBCr;
  1078. INT32 DPYOffSatLowLow2;
  1079. INT32 DPYOffSatLowLow;
  1080. INT32 DPYOffSatLow;
  1081. INT32 DPYOffSatHigh;
  1082. INT32 DPYUVSatOffsetCb;
  1083. INT32 UVOffsetCb;
  1084. INT32 DPYSlopeSatCb2;
  1085. INT32 DPYSlopeSatCb;
  1086. INT32 DPYUVSatOffsetCr;
  1087. INT32 UVOffsetCr;
  1088. INT32 DPYSlopeSatCr2;
  1089. INT32 DPYSlopeSatCr;
  1090. }UV_Offset_Data;
  1091. typedef struct _UV_Offset_Setting
  1092. {
  1093. UV_Offset_Data UVOffset[VIP_TABLE_GROUPED_NUMBER];
  1094. }UV_Offset_Setting;
  1095. //~UV offset
  1096. //becareful! never change order or data type.
  1097. typedef struct _VTAB_CMN_VALUE_DEFINE
  1098. {
  1099. int MagicNumber1;
  1100. CSC_SETTING mColorSpaceConversionTable[3]; //v17// only 601 709 RGB
  1101. int MagicNumber2;
  1102. GAMMA_OPT mGmaOpt; //v18
  1103. int MagicNumber3;
  1104. INT32 ucLoadScartRGBTab; //v21
  1105. int MagicNumber4;
  1106. DS_SHARP_RATIO mSharpRatio[2]; //v22 //y/c
  1107. int MagicNumber5;
  1108. INT32 iSharpRatio6; //v27
  1109. int MagicNumber6;
  1110. INT32 iSharpRatio6_c; //v27
  1111. int MagicNumber7;
  1112. SAT_GAIN_CURVE mSatGainCurve; //v33
  1113. int MagicNumber8;
  1114. DynamicContrast mDynContrast;
  1115. UINT32 MagicNumber9;
  1116. NR_Setting mNRSetting;
  1117. int MagicNumber10;
  1118. UV_Coring mUV_Coring;
  1119. int MagicNumber11;
  1120. SHARP_PREDCTI mSharpness_PreDCTI;
  1121. int MagicNumber12;
  1122. SHARP_POSTDCTI mSharpness_PostDCTI;
  1123. int MagicNumber13;
  1124. SHARP_POSTDLTI mSharpness_PostDLTI;
  1125. int MagicNumber14;
  1126. SHARP_POST2DSHARPNESS mSharpness_Post2DSharpness;
  1127. int MagicNumber15;
  1128. SAT_GAIN_CURVE_V2 mSatGainCurve_V2;
  1129. int MagicNumber16;
  1130. DS_SHARPNESS mDS_Sharpenss;
  1131. int MagicNumber17;
  1132. HOR_SHARPNESS mHOR_Sharpenss;
  1133. int MagicNumber18;
  1134. PEAKING mPeaking;
  1135. int MagicNumber19;
  1136. RANGE mRange;
  1137. int MagicNumber20;
  1138. DEIN_FILTER mDeinterlaceFilter;
  1139. int MagicNumber21;
  1140. COLOR_MATRIX mColorMatrix;
  1141. int MagicNumber22;
  1142. SHARPNESS mSharpenss;
  1143. int MagicNumber23;
  1144. UINT32 SlrLowAngleOrMBWDisable;
  1145. int MagicNumber24;
  1146. SNR_Setting mSNR1Setting[VIP_TABLE_GROUPED_NUMBER]; // only work at 331 chip
  1147. SNR_Setting mSNR2Setting[VIP_TABLE_GROUPED_NUMBER]; // only work at 331 chip
  1148. int MagicNumber25;
  1149. Sigama_NR_Setting mSigama_NR; // only work after 131 chip
  1150. UV_Coring_ext mUV_Coring_ext[VIP_TABLE_GROUPED_NUMBER]; // only work after 131 chip
  1151. SHARP_PREDCTI_EXT mSharp_PreDCTI_Ext[VIP_TABLE_GROUPED_NUMBER]; // only work after 131 chip
  1152. SHARP_PREDLTI mSharpness_PreDLTI; // only work after 131 chip
  1153. PEAKING_DATA_EXT mPeakingExt[VIP_TABLE_GROUPED_NUMBER]; // only work after 131 chip
  1154. int Sigma_NR_Misc_Ctl[VIP_TABLE_GROUPED_NUMBER];
  1155. int MagicNumber26;
  1156. Peaking_DLTI_Setting mPeakingDLTI;// only work after 8506 chip
  1157. UV_Offset_Setting mUVOffset; // only work after 8506 chip
  1158. int MagicNumber27;
  1159. } VTAB_CMN_VALUE_DEFINE;
  1160. typedef struct _VTAB_SRC_VALUE_DEFINE
  1161. {
  1162. INT32 iReserve1,iReserve2;
  1163. //v18
  1164. INT32 ColorRegionSrcCtl[4]; //v19 //bit[0~5]:region[0~5] bit[6]:flesh tone bit[7]:source control enable
  1165. //[0]:601 ctl, [1]:709 ctl, [2]:pal ctl, [3]:xvYcc
  1166. //v20 // only 601 709
  1167. //v28 //bit[0]:slr_low_dis_rgn1_en bit[1]:slr_low_dis_rgn2_en bit[2]:slr_low_dis_rgn3_en bit[3]:slr_mbw_dis_rgn1_en bit[4]:slr_mbw_dis_rgn2_en bit[5]:slr_mbw_dis_rgn3_en
  1168. } VTAB_SRC_VALUE_DEFINE;
  1169. #ifdef DYNAMIC_BACKLIGHT
  1170. typedef struct _DYNAMIC_BACKLIGHT_PARAM
  1171. {
  1172. UINT32 dwTableMin; //min and max of baclight in panel set table
  1173. UINT32 dwTableMid;
  1174. UINT32 dwTableMax;
  1175. UINT32 dwTableNormal;
  1176. UINT32 dwLightMin; //min and max of baclight in certain rate(cause by light sensor or energy saving)
  1177. UINT32 dwLightMid;
  1178. UINT32 dwLightMax;
  1179. UINT32 dwLightQuot;
  1180. UINT32 dwLightNormal;
  1181. UINT32 dwLightTarget;
  1182. INT32 iAdd;
  1183. UINT32 dwWhiteLevel;
  1184. UINT8 nBound1,nBound2,nBound3,nBound4,nBound0,nBound0_more,nBound5; //boundaries in gray level: 0~255
  1185. UINT16 wDetectFrameCount;
  1186. UINT8 ucLevel;
  1187. UINT8 ucLevelTarget;
  1188. UINT8 ucOrder; //1: much setting value has less backlight
  1189. UINT8 bLightSensor:1;
  1190. UINT8 bLSChangeBacklight;
  1191. INT32 iLSADD;
  1192. UINT32 dwLSTarge;
  1193. UINT32 dwBackLightRate;
  1194. UINT8 ucAllBlackStatus;
  1195. struct semaphore sem;
  1196. UINT32 BacklightTab[15];
  1197. UINT8 ucTop, ucBot, ucTh_low, ucTh_High, ucbase; //0~100%
  1198. UINT8 ucHistMinPercentage;
  1199. UINT8 ucDynamicBLType;
  1200. UINT8 ucDBLContrastHi;
  1201. UINT8 ucDBLContrastLow;
  1202. UINT16 PWMDutyMax;
  1203. UINT16 PWMDutyMin;
  1204. Electity_PWM_Mapping_Table* pElectricity_PWM_table;
  1205. UINT32 Electricity_PWM_table_Size;
  1206. } DYNAMIC_BACKLIGHT_PARAM;
  1207. #endif //#ifdef DYNAMIC_BACKLIGHT
  1208. typedef struct _SHARP_PREDCTI_RESERVE
  1209. {
  1210. INT32 iTagetFac0;
  1211. INT32 iTagetFac1;
  1212. INT32 iTagetFac2;
  1213. INT32 iTagetTh0;
  1214. INT32 iTagetTh1;
  1215. INT32 iTagetSlp0;
  1216. INT32 iTagetSlp1;
  1217. INT32 iTargetScale;
  1218. INT32 iTargetGainTap;
  1219. INT32 iTargetShootTap;
  1220. INT32 iTargetGainLpTap;
  1221. INT32 iTagetSlpLp;
  1222. }SHARP_PREDCTI_RESERVE;
  1223. typedef struct _SHARP_POSTDCTI_RESERVE
  1224. {
  1225. INT32 iTagetFac0;
  1226. INT32 iTagetFac1;
  1227. INT32 iTagetFac2;
  1228. INT32 iTagetTh0;
  1229. INT32 iTagetTh1;
  1230. INT32 iTagetSlp0;
  1231. INT32 iTagetSlp1;
  1232. INT32 iTargetScale;
  1233. INT32 iTargetGainTap;
  1234. INT32 iTargetShootTap;
  1235. }SHARP_POSTDCTI_RESERVE;
  1236. typedef struct _SHARP_PREDLTI_RESERVE
  1237. {
  1238. INT32 iTagetFac0;
  1239. INT32 iTagetFac1;
  1240. INT32 iTagetFac2;
  1241. INT32 iTagetTh0;
  1242. INT32 iTagetTh1;
  1243. INT32 iTagetSlp0;
  1244. INT32 iTagetSlp1;
  1245. INT32 iTargetScale;
  1246. INT32 iTargetGainTap;
  1247. INT32 iTargetShootTap;
  1248. }SHARP_PREDLTI_RESERVE;
  1249. typedef struct _SHARP_POSTDLTI_RESERVE
  1250. {
  1251. INT32 iTagetFac0;
  1252. INT32 iTagetFac1;
  1253. INT32 iTagetFac2;
  1254. INT32 iTagetTh0;
  1255. INT32 iTagetTh1;
  1256. INT32 iTagetSlp0;
  1257. INT32 iTagetSlp1;
  1258. INT32 iTargetScale;
  1259. INT32 iTargetGainTap;
  1260. INT32 iTargetShootTap;
  1261. INT32 iTargetDCMode;
  1262. INT32 iTargetDCOverShoot;
  1263. INT32 iTargetDCUnderShoot;
  1264. INT32 iTargetDCOverShootfac;
  1265. INT32 iTargetDCUnderShootfac;
  1266. INT32 iTargetNorOverShoot;
  1267. INT32 iTargetNorlUnderShoot;
  1268. }SHARP_POSTDLTI_RESERVE;
  1269. typedef struct _SHARP_POST2D_RESERVE
  1270. {
  1271. INT32 iTagetFac0_L;
  1272. INT32 iTagetFac1_L;
  1273. INT32 iTagetFac2_L;
  1274. INT32 iTagetTh0_L;
  1275. INT32 iTagetTh1_L;
  1276. INT32 iTagetSlp0_L;
  1277. INT32 iTagetSlp1_L;
  1278. INT32 iTargetFM_L;
  1279. INT32 iTargetScale_L;
  1280. INT32 iTargetGainTap_L;
  1281. INT32 iTargetShootTap_L;
  1282. INT32 iTargetNorOverShoot;
  1283. INT32 iTargetNorlUnderShoot;
  1284. INT32 iTargetOverShootfac;
  1285. INT32 iTargetUnderShootfac;
  1286. INT32 iTagetFac0_C;
  1287. INT32 iTagetFac1_C;
  1288. INT32 iTagetFac2_C;
  1289. INT32 iTagetTh0_C;
  1290. INT32 iTagetTh1_C;
  1291. INT32 iTagetSlp0_C;
  1292. INT32 iTagetSlp1_C;
  1293. INT32 iTargetFM_C;
  1294. INT32 iTargetScale_C;
  1295. INT32 iTargetGainTap_C;
  1296. INT32 iTargetShootTap_C;
  1297. }SHARP_POST2D_RESERVE;
  1298. typedef struct _SHARP_PEAKING_DLTI_RESERVE
  1299. {
  1300. INT32 SLR2DSelSp;
  1301. INT32 SharpnessXp0Peak;
  1302. INT32 SharpnessXp1Peak;
  1303. INT32 SharpnessXp2Peak;
  1304. INT32 SharpnessXp3Peak;
  1305. INT32 SharpnessYp0Peak;
  1306. INT32 SharpnessYp1Peak;
  1307. INT32 SharpnessYp2Peak;
  1308. INT32 SharpnessMp1Peak;
  1309. INT32 SharpnessMp2Peak;
  1310. INT32 SharpnessXp0Lti;
  1311. INT32 SharpnessXp1Lti;
  1312. INT32 SharpnessXp2Lti;
  1313. INT32 SharpnessXp3Lti;
  1314. INT32 SharpnessYp0Lti;
  1315. INT32 SharpnessYp1Lti;
  1316. INT32 SharpnessYp2Lti;
  1317. INT32 SharpnessMp1Lti;
  1318. INT32 SharpnessMp2Lti;
  1319. INT32 SharpnessPeakingEn;
  1320. INT32 SharpnessLTIEn;
  1321. INT32 SharpnessFilterModePeak1D; //peaking, fixed filter
  1322. INT32 SharpnessGainBPPeak1D;
  1323. INT32 SharpnessGainEPPeak1D;
  1324. INT32 SharpnessGainHPPeak1D;
  1325. INT32 SharpnessGainNegPeak;
  1326. INT32 SharpnessPeakingHpTap;
  1327. INT32 SharpnessPeakingBpTap;
  1328. INT32 SharpnessPeakingEpTap;
  1329. INT32 SharpnessGainHPV31; //V peaking, BP, 3 Tap gain
  1330. INT32 SharpnessGainHPV51; //V peaking, BP, 5 Tap gain
  1331. INT32 SharpnessLowPassPeak1D;// peaking, LP Filter, pre LP filter
  1332. INT32 SharpnessAbsLpEnPeak; // peaking, LP Filter, pre LP filter
  1333. INT32 SharpnessLowPassLti; // DLTI, LP Filter, pre LP filter
  1334. INT32 SharpnessAbsLpEnLti; // DLTI, LP Filter, post LP filter
  1335. INT32 SharpnessCoringPeak1D; // peaking other, H peaking coring
  1336. INT32 SharpnessCoringPeak; // peaking other, post coring
  1337. INT32 SharpnessCoringPeakV; // peaking other, V peaking coring
  1338. INT32 SharpnessHiCoringPeak; // peaking other, Threshold
  1339. INT32 SharpnessGainHP0Peak2D; // peaking, 2D, HP gain, 3 tap
  1340. INT32 SharpnessGainHP1Peak2D; // peaking, 2D, HP gain, 5 tap
  1341. INT32 SharpnessGainBP0Peak2D; // peaking, 2D, BP gain, 7 tap
  1342. INT32 SharpnessGainBP1Peak2D; // peaking, 2D, BP gain, 9 tap
  1343. INT32 SharpnessCoringPeak2D; // peaking, 2D, Coring
  1344. INT32 SharpnessMaxMinHSLrTap; // Peaking new method, H Residual
  1345. INT32 SharpnessMaxMinVSLrTap; // Peaking new method, V Residual
  1346. INT32 SharpnessAdjcentDiffTh; // Peaking new method, Different TH
  1347. INT32 SharpnessDLTIHpTap;
  1348. INT32 SharpnessDLTIBpTap;
  1349. INT32 SharpnessDLTIEpTap;
  1350. INT32 SharpnessDLTIBpGain;
  1351. INT32 SharpnessDLTIEpGain;
  1352. INT32 SharpnessDLTIHpGain;
  1353. INT32 SharpnessStSel; //DLTI, Others, stepness filter
  1354. INT32 SharpnessCoringLti; //DLTI, Others, coring
  1355. INT32 SharpnessHiCoringLti;// DLTI, others, threshold
  1356. INT32 SharpnessDeOvstNewMethodPeak; // DeOverShot, peaking selection
  1357. INT32 SharpnessDeOvseNewMethodLti; // DeOverShot, DLTI selection
  1358. INT32 SharpnessOverMaxPeak; //peaking, max clip
  1359. INT32 SharpnessOverMinPeak;
  1360. INT32 SharpnessOvstGainMaxPeak; //max gain
  1361. INT32 SharpnessOvstGainMinPeak; // min gain
  1362. INT32 SharpnessOverMaxLti; //DLTI, max clip
  1363. INT32 SharpnessOverMinLti;
  1364. INT32 SharpnessOvstGainMaxLti; //max gain
  1365. INT32 SharpnessOvstGainMinLti; // min gain
  1366. INT32 SharpnessMaxMinHSLrTapLti; // DLTI new method, H Residual
  1367. }SHARP_PEAKING_DLTI_RESERVE;
  1368. typedef struct _LUMA_HISTOGRAM
  1369. {
  1370. UINT32 ulLumaHistBin[16];
  1371. UINT32 dwTotalPixel;
  1372. UINT8 ucDataUpdated;
  1373. }LUMA_HISTOGRAM;
  1374. typedef struct _CHROMA_HISTOGRAM
  1375. {
  1376. UINT32 ulChromaHist[18];
  1377. UINT32 ulChromaHistAvg[18]; //ulChromaHist*100 / capture window size
  1378. UINT32 dwTotalChromaHistPixel;
  1379. UINT32 dwTotalChromaHistAvg;
  1380. UINT8 ucDataUpdated;
  1381. }CHROMA_HISTOGRAM;
  1382. typedef struct _PQ_PATCH
  1383. {
  1384. UINT8 PeakLtiPatch;
  1385. UINT8 DpyPeakingPatch;
  1386. UINT8 DsSharpnessPatch;
  1387. UINT8 TnrClampPatch;
  1388. UINT8 Post2DPatch;
  1389. UINT8 PostDLTIPatch;
  1390. UINT8 DPYSharpnessPatch;
  1391. }PQ_PATCH;
  1392. typedef struct _PQ_CURVE_SETTING
  1393. {
  1394. INT16 iValue[5];
  1395. }PQ_CURVE_SETTING;
  1396. typedef struct _PQHW_CONTEXT
  1397. {
  1398. PQ_MENU_VALUE MenuValue;
  1399. UINT8 ucLocationMode; //0:home mode 1:sotre mode
  1400. UINT8 GammaIndex;
  1401. UINT8 GammaEnable;
  1402. UINT8 GammaCount;
  1403. UINT32 wGamaTable[1024];
  1404. UINT8 ucNRUserMax;
  1405. UINT8 ucNRUserMin;
  1406. INT32 iColorMatrixC1;
  1407. INT32 iColorMatrixC2;
  1408. INT32 iColorMatrixC3;
  1409. UINT8 ucMPEGNRUserMax;
  1410. UINT8 CVD2_store_nr_setting;
  1411. CSC_SETTING* CurColorMatrix;
  1412. //SAT_INFO SatInfo; //joshua: nobody use
  1413. VTAB_CMN_VALUE_DEFINE VtabCmnValue;
  1414. VTAB_SRC_VALUE_DEFINE* pCurVtabSrcValue;
  1415. INT32 iCurrContrastValue; //backup current contrast value for fade in/out
  1416. SAT_INFO SatInfo;
  1417. USER_CURVE_INFO UserCurveInfo;
  1418. VTAB_SRC_VALUE_DEFINE VtabSrcValue[VTAB_MAX_SOURCE];
  1419. unsigned nNRLevel;//:2; //Noise Reduction Level: {Off, Weak, Medium, Strong}
  1420. unsigned nMPEGNRLevel;//:2; //Noise Reduction Level of MPEG format: {Off, Weak, Medium, Strong}
  1421. unsigned nColorSpaceMode:2; // {Off, Auto, Normal, Wide}
  1422. unsigned bDynamicSaturation:2; //{Off, On}
  1423. unsigned bEnableColorProcess:1;
  1424. UINT8 ucMPEGNRUserMin;
  1425. UINT8 Degree;
  1426. INT8 hl_sharp;
  1427. INT8 hc_sharp;
  1428. INT8 hl_smooth;
  1429. INT8 hc_smooth;
  1430. UINT8 hl_menu_sharp;
  1431. UINT8 hc_menu_sharp;
  1432. BOOL bSceneChg;
  1433. INT32 store_hl_limit;
  1434. INT32 store_vl_limit;
  1435. UINT8 UserCurveInit;
  1436. UINT8 LoadPQTable;
  1437. UINT8 ucDynamicBacklightMode;
  1438. UINT8 ucDynamicContrastLevel;
  1439. spinlock_t Spin_PresetContrast;
  1440. UINT8 UserCurveSetup;
  1441. // SOFTWARE_COLOR_MATRIX
  1442. INT32 iBrightness;
  1443. INT32 iRBias;
  1444. INT32 iGBias;
  1445. INT32 iBBias;
  1446. INT32 iContrast;
  1447. INT32 iRGain;
  1448. INT32 iGGain;
  1449. INT32 iBGain;
  1450. INT32 iHue;
  1451. INT32 iSaturation;
  1452. UINT8 menu_sharpness;
  1453. UINT8 ucMatrixbypassCtl;
  1454. INT32 iAdjustNRCounter;
  1455. BOOL bFadeEn;
  1456. UINT8 ucFadeStartValue;
  1457. UINT8 ucFadeEndValue;
  1458. UINT8 ucFadeIncValue;
  1459. UINT8 ucYuvDataFormat;
  1460. //#ifdef VIP_SW_DC
  1461. #if 1
  1462. INT32 ulCurveSlop[16];
  1463. UINT16 ulHistCaseCur;
  1464. #endif
  1465. BOOL bPWMOff; // for tunr off PWM, not set PWM any more
  1466. SHARP_PREDCTI_RESERVE mSharp_PREDCTI_Reserve;
  1467. SHARP_POSTDCTI_RESERVE mSharp_POSTDCTI_Reserve;
  1468. SHARP_PREDLTI_RESERVE mSharp_PREDLTI_Reserve;
  1469. SHARP_POSTDLTI_RESERVE mSharp_POSTDLTI_Reserve;
  1470. SHARP_POST2D_RESERVE mSharp_POST2D_Reserve;
  1471. SHARP_PEAKING_DLTI_RESERVE mSharp_Peaking_DLTI_Reserve;
  1472. BOOL bNR_Reset_by_changeSrc;
  1473. UINT8 bIsColorBar;
  1474. UINT8 bNotFullScreen;
  1475. UINT8 bIsMenuOpen;
  1476. CSC_SETTING* RGB2YUVMatrix;
  1477. BOOL VDIMotionStatusByMethod2;
  1478. BOOL VDIMotionStatusByMethod3;
  1479. BOOL bIsPureColorPattern;
  1480. UINT8 bCVD2_NTSC_to_PAL_Patch;
  1481. LUMA_HISTOGRAM LumaHist;
  1482. CHROMA_HISTOGRAM ChromaHist;
  1483. PQ_PATCH PqPatch;
  1484. UINT8 bIsPattern_DIG_ADC2;
  1485. UINT32 Gammatable[1024];
  1486. BOOL bGammaChange;
  1487. PQ_CURVE_SETTING mCurveSetting[5]; //brightness, contrast, sharpness, saturation, Hue
  1488. }PQHW_CONTEXT;
  1489. typedef struct _COLORLUT_VALUE_INT6
  1490. {
  1491. INT32 x:6;
  1492. INT32 y:6;
  1493. INT32 z:6;
  1494. }COLORLUT_VALUE_INT6;
  1495. typedef struct _COLOR_MATRIX_INT
  1496. {
  1497. INT32 iValue:14;
  1498. }COLOR_MATRIX_INT;
  1499. typedef struct _LUT_OFFSET
  1500. {
  1501. int Hoffset;
  1502. int Soffset;
  1503. int Yoffset;
  1504. } LUT_OFFSET;
  1505. typedef struct _COLORLUT_BUF
  1506. {
  1507. LUT_OFFSET lutOffset[16][11][32];
  1508. }COLORLUT_BUF;
  1509. void PQ_ColorLUT_SetRegion(INT32 iRegionIdx, INT32 iSatGain, INT32 iYGain, INT32 iRotAngle, INT32 iRotGain, INT32 bEnable, BOOL bSet);
  1510. /*******************************************************************************
  1511. * Program
  1512. ******************************************************************************/
  1513. //========================register read/write function========================
  1514. UINT32 PQ_GetRegisterType(UINT32 ulRegisterType);
  1515. void PQ_RegisterWrite(UINT32 ulRegisterName, UINT32 ulValue);
  1516. UINT32 PQ_RegisterRead(UINT32 ulRegisterName );
  1517. UINT8 PQ_CheckSpecialRegister(UINT32 ulReg);
  1518. //========================pq main flow setting function========================
  1519. //============================local func.=================================
  1520. void PQ_ColorMatrixComp(UINT8 bReset);
  1521. void PQ_ColorMatrixSetup(UINT8 bReset, UINT8 ucNum);
  1522. void PQ_FleshTone_Init(void);
  1523. void PQ_NR_Init(void);
  1524. void PQ_SetupStrength(PQ_ITEM ucItemID, UINT8 ucDegree);
  1525. void PQ_DigitalScanADC2Detect(void);
  1526. UINT32 PQ_ChromaBinPercentage(UINT8 ucBin);
  1527. void PQ_PCColorBar_SharpnessPatch(void); //eric
  1528. void PQ_ColorBarDetect(void); //sharlene
  1529. void PQ_AdjustNr(void);
  1530. void PQ_LoadSettingValue(UINT8*, UINT8 ucTableIndex);
  1531. void PQ_ColorSpaceMode(UINT8 ucMode, UINT8 ucInputSource);
  1532. void PQ_InitVtabValue(void);
  1533. void PQ_Sharpness_PREDCTI(BOOL bReset,UINT8 ucValue);
  1534. void PQ_Sharpness_POSTDCTI(BOOL bReset,UINT8 ucValue);
  1535. void PQ_Sharpness_PREDLTI(BOOL bReset, UINT8 ucValue);
  1536. void PQ_Sharpness_POSTDLTI(BOOL bReset,UINT8 ucValue);
  1537. void PQ_Sharpness_POST_2D(BOOL bReset,UINT8 ucValue);
  1538. void PQ_Sharpness_Peaking_DLTI(BOOL bReset,UINT8 ucValue);
  1539. void PQ_HorSharpness(BOOL bReset,UINT8 ucValue);
  1540. void PQ_DSSharpness(BOOL bReset,UINT8 ucValue);
  1541. void PQ_DPYSharpness(BOOL bReset,UINT8 ucValue);
  1542. void PQ_CalcPivotxy(SHARP_INFO* sharp_info);
  1543. void PQ_NRLevel(UINT32 nr_level, UINT32 vdi_total);
  1544. void PQ_MPEGNRLevel(UINT32 nr_level, UINT32 vdi_total);
  1545. BOOL PQ_AccessColorMatrix(UINT32 *pulData, INT32 AccessMode, UINT32 dwDataSize);
  1546. BOOL PQ_AccessColorLUT(UINT32 *pulAddr, INT32 AcessMode, BOOL bNew, INT32 LUTBlockIndex);
  1547. BOOL PQ_SetColorLUTStr(UINT16 *pwAddr);
  1548. BOOL PQ_GetColorLUTStr(UINT16 *pwAddr);
  1549. void PQ_ConditionSetting(UINT8 ucMode);
  1550. void PQ_VDeblockFilterEnable(void);
  1551. BOOL PQ_NtscPalDetect(void);
  1552. void PQ_DS_Init(void);
  1553. void PQ_DSSetting(void);
  1554. void PQ_SLR_ColorBarDetailSet(void);
  1555. void PQ_DeinterlaceFilter(void);
  1556. VTAB_SRC_VALUE_DEFINE* PQ_GetSourceVTab(UINT8 ucSource, UINT8 ucSubSource);
  1557. void PQ_DeblockFilterAndDetect(BOOL bDemoMode, UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1558. void PQ_HmeSetup(UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1559. void PQ_HmeControl(void);
  1560. void PQ_HmeDeMesh(UINT8 bEnable);
  1561. void PQ_TpwControl(void);
  1562. void PQ_GmeSetup(void);
  1563. void PQ_MADSetup(UINT32 vdi_hsize_i, UINT32 vdi_vsize, UINT32 vdi_total);
  1564. void PQ_2232DetSetup(UINT32 vdi_total);
  1565. void PQ_NERegion(BOOL bDemoMode, UINT32 vdi_hsize_i, UINT32 vdi_vsize);
  1566. BOOL PQ_CheckTableCheckSum(UINT8*);
  1567. void PQ_LoadSettingTable(UINT8*, UINT8 ucTableIndex);
  1568. void PQ_RegisterWrite_user_curve(UINT32 ulRegister,UINT32 ulValue);
  1569. UINT8 check_usr_curve_setup_ok(void);
  1570. void PQ_GetHistBin(UINT32 *Y_Hist);
  1571. void PQ_SetHistBinindex(UINT8 index);
  1572. //==========================local func. end================================
  1573. BOOL PQ_SetGammaTable(UINT32 *pulAddr);
  1574. UINT32 PQ_LoadGammaTable(UINT32 *pulAddr);
  1575. void PQ_SetLocationMode(UINT8 ucMode);
  1576. void PQ_SetCurrContrastValue(INT32 iValue);
  1577. INT32 PQ_GetCurrContrastValue(void);
  1578. INT32 PQ_GetMenuColorBias(UINT8 index);
  1579. BOOL PQ_GetColorProcessor(void);
  1580. void PQ_SetupColorSpaceConversionTable(void);
  1581. void PQ_PureColorControl(INT16 ucPure, INT8 ucPicture);
  1582. void PQ_ColorTempBias(PQ_COLOR_TEMP_BIAS ucType, INT32 iValue);
  1583. void PQ_SetColorMatrix(UINT8 ucEnable);
  1584. void PQ_FilterSetup(UINT8 ucSource, UINT8 ucSubSource);
  1585. void PQ_LowAngleSetting(void);
  1586. void PQ_PeakingFilterSetup(void);
  1587. void PQ_InitialTable(void);
  1588. void PQ_DefaultSetting(void);
  1589. void PQ_ColorProcesserDisable(void);
  1590. void PQ_ColorProcesser(UINT8 ucEnable);
  1591. BOOL PQ_ParsePQCmdSet(UINT32 *pulAddr);
  1592. void PQ_GetYavg(UINT32 *Y_AVG);
  1593. int PQ_GetYHistOverValueCount(int YValue);
  1594. UINT8 PQ_GetAvgY_Value(void);
  1595. void PQ_GammaCorrect(UINT8);
  1596. void PQ_Hue(UINT8 ucIndex);
  1597. void PQ_ColorStyleSaturation(UINT8 ucType);
  1598. void PQ_Saturation(INT32 iValue);
  1599. void PQ_Brightness(UINT8 bReset, INT32 iValue);
  1600. void PQ_Sharpness(BOOL bReset,UINT8 ucValue);
  1601. void PQ_DemoModeWidth(void);
  1602. void PQ_Contrast(UINT8 bReset, INT32 iValue);
  1603. void PQ_EnablePrint(UINT8 ucEnable);
  1604. void PQ_GetVtabHwRange(UINT8 ucFunID, INT32* pMin, INT32* pMax, INT32* pMiddle);
  1605. void PQ_GetVtabHwRangeExt(UINT8 ucFunID, INT32* pMidLeft, INT32* pMidRight);
  1606. void PQ_VDISize(void);
  1607. INT32 PQ_WatchDemo_Get_AvgY(void);
  1608. void PQ_ColorTempGain(PQ_COLOR_TEMP_GAIN ucType, INT32 iValue);
  1609. void PQ_3DNoiseReductoin(UINT8 ucMode,UINT8 iUserMin, UINT8 iUserMax);
  1610. void PQ_Set_NR_BlockAlpha(UINT8 NRBlockAlphaType);
  1611. void PQ_Set_NR_SLR_SNR(UINT8 ucSLR_SNR_TYPE);
  1612. void PQ_MPEGNoiseReductoin(UINT8 ucLevel,UINT8 iUserMin, UINT8 iUserMax);
  1613. void PQ_SetupGammaTable(UINT8 ucEnable, UINT8 ucTableIndex, UINT8 ucRGBGainAdjust);
  1614. void PQ_DemoModeEnable(UINT8 demo_enable);
  1615. void PQ_DPYDemoModeEnable(UINT8 demo_enable);
  1616. void PQ_StaticGammaSetup(INT8 cOffset);
  1617. void PQ_SetDithering(UINT8 ucStatus);
  1618. void PQ_DitheringLevel(UINT8 ucLevel);
  1619. void PQ_DitheringAlgo(UINT8 ucAlgo);
  1620. void PQ_SourceSetting(UINT8 ucSource, UINT8 ucSubSource);
  1621. void PQ_SourceSelect(UINT8 ucUserInputSource);
  1622. void PQ_SetMenuValue(UINT8 ucFunID, INT32 iValue);
  1623. void PQ_DPYSetup(UINT8 ucUserSource,UINT8 ucSubSource);
  1624. void PQ_HWDestroyWorkqueue(void);
  1625. INT32 PQ_GetMenuHueValue(void);
  1626. UINT8 PQ_GetGammaEnableSt(void);
  1627. void PQ_GetRegInfo(PQ_RegInfo* pRegInfo);
  1628. //#ifdef VIP_SW_DC
  1629. #if 1
  1630. void PQ_GetSWDCParameter(void);
  1631. void PQ_SW_DynamicContrast_UserCurveAdjust(void);
  1632. void PQ_GetSWDCParamCmd(ST_SWDC_Param *param);
  1633. void PQ_SetSWDCParamCmd(ST_SWDC_Param *param);
  1634. void PQ_GetSWDCSlopeCmd(ST_SWDC_Slope *pstSlope);
  1635. void PQ_SetSWDCSlopeCmd(ST_SWDC_Slope *pstSlope);
  1636. void PQ_GetSWDCChromaCmd(ST_SWDC_Chroma*pstChroma);
  1637. void PQ_SetSWDCChromaCmd(ST_SWDC_Chroma*pstChroma);
  1638. void PQ_GetSWDCInfoCmd(ST_SWDC_Info *info);
  1639. void PQ_GetSWDCSourceCmd(UINT8 *param);
  1640. void PQ_SetSWDCSourceCmd(UINT8 *param);
  1641. void PQ_GetDrvCurrentSourceCmd(UINT8 *param);
  1642. void PQ_SW_DynamicContrast_UserCurveAdjust(void);
  1643. void PQ_SW_DynamicContrast_Param(UINT8 ucSource);
  1644. void PQ_SW_DynamicContrast_Enable(UINT8 wValue);
  1645. void PQ_SW_DynamicContrast_Y_Level(UINT16 wValue);
  1646. void PQ_SW_DynamicContrast_C_Level(UINT16 wValue);
  1647. void PQ_SW_DynamicContrast_Alpha_Mode(UINT8 bMode ,UINT8 bValue);
  1648. #endif
  1649. UINT8 VIP_Get_PQ_Source(UINT8 ucSource, UINT8 ucSubSource);
  1650. //330
  1651. UINT8 PQ_Get_Source_Grouped_Index(void);
  1652. void PQ_Default_Color_Lut_Setting(void);
  1653. BOOL PQ_SetupLUTTable(UINT8 ucEnable);
  1654. void PQ_SetupSaturationGainCurve(SatGainMethod opt);
  1655. BOOL PQ_IsFadeEn(void);
  1656. void PQ_SetFadeValue(BOOL bFadeEn, UINT8 ucStartValue, UINT8 ucEndValue, UINT8 ucIncValue);
  1657. void PQ_SetFadeInOut(void);
  1658. void PQ_Set_UV_Coring(void);
  1659. void PQ_Set_UV_Offset(void);
  1660. void PQ_regionLumaAverage(UINT8 bRegionIndex,UINT8 bTotalHnum,UINT8 bTotalVnum);
  1661. void PQ_GetRegionLumaAverage(UINT16* bRegionYaverage);
  1662. void PQ_SetATVStatus(BOOL bstatus);
  1663. #ifdef DYNAMIC_BACKLIGHT
  1664. UINT8 PQ_GETAllBlackStatus(void);
  1665. UINT32 PQ_GetBackLight(void);
  1666. void PQ_SetBackLight(UINT32 dwValue);
  1667. UINT32 PQ_GetRealBackLight(void);
  1668. void PQ_SetRealBackLight(UINT32 dwValue);
  1669. UINT32 PQ_GetHomeModeValue(UINT32 *pValue);
  1670. void PQ_GetLightSensorInfo(UINT8 ucLSensorEn,UINT8 ucIndex, UINT32 dwLight);
  1671. void PQ_SetBacklightParameter(UINT8 ucTop,UINT8 ucBot,UINT8 ucTh_low,UINT8 ucTh_High);
  1672. void PQ_LightSensorChange(void);
  1673. void PQ_InitDynamicBackLight(void);
  1674. void PQ_DynamicBackLightAP(UINT8 ucLevel, UINT32 dwMap);
  1675. void PQ_EnableDynamicBackLight(UINT8 ucLevel, UINT32 dwLightUser);
  1676. UINT32 PQ_BackLightTarget(UINT8 nDBLStatus, UINT8 nWhiteCondition, UINT32 dwCur);
  1677. BOOL PQ_ColorSearchAutoDet(UINT8 ucPath, UINT8 ucColorType ,UINT32 *pulMaxValue, UINT32*pulMinValue);
  1678. UINT8 PQ_AllBlackDetect(void);
  1679. void PQ_LEDBackLightDetect(BOOL bReset);
  1680. void PQ_FormalBackLightDetect(BOOL bReset);
  1681. UINT32 PQ_EEBackLightTarget(UINT8 nDBLStatus, UINT32 dwWhiteLevel, UINT32 dwCur);
  1682. void PQ_EEBackLightDetect(BOOL bReset);
  1683. void PQ_PresetContrast(BOOL bReset, INT32 iValue, INT32 nSpeed);
  1684. void PQ_PresetBackLight(BOOL bReset, UINT32 dwLightTarget, INT32 nSpeed);
  1685. void PQ_SISPresetContrast(UINT8 ucValue, INT32 nSpeed);
  1686. void PQ_SetDynamicBacklightMode(UINT8 ucMode);
  1687. void PQ_SetBacklightLevel(UINT8 ucLevel);
  1688. void PQ_SetBacklightHistMin(UINT8 ucValue);
  1689. void PQ_SetDynamicBLType(UINT8 ucType);
  1690. UINT8 PQ_GetDynamicBLType(void);
  1691. UINT8 PQ_GetOrderedBackLight(UINT32 *pLight);
  1692. void PQ_SetMaxPWM(UINT32 ucValue);
  1693. void PQ_FlDetLevel(UINT8 ucLevel);
  1694. UINT8 PQ_GetDefinitionIndex(void);
  1695. #endif
  1696. void PQ_HW_Initial(void);
  1697. UINT8 _VIP_InputWidthEnlargeRate(void);
  1698. void PQ_SigmaNR(BOOL bReset, UINT8 ucLevel,UINT8 iUserMin, UINT8 iUserMax );
  1699. UINT32 PQ_Get_VDI_VSize(void);
  1700. void PQ_GetRGBGainAdjustModuleCmd(UINT8 *param);
  1701. void PQ_GetRGBGainParamCmd(RGB_GAIN *param);
  1702. void PQ_MbwCtl(BOOL bReset,UINT8 ucValue);
  1703. void PQ_ChromaMotionDetectControl(void);
  1704. /**
  1705. * @brief Check current CVD2 signal if stand or non-standard
  1706. *
  1707. * This function check if current input CVD2 signal is standard or non-standard
  1708. *
  1709. * @param n/a
  1710. * @return TRUE : non-standard signal, FALSE : standard signal
  1711. */
  1712. BOOL PQ_CheckCvd2NonSTDStatus(void);
  1713. /**
  1714. * @brief check current frame is motion frame or static frame
  1715. *
  1716. * This function check VDI statistical data to define current frame is motion frame or static frame
  1717. *
  1718. * @param reset, 1 is reset the static parameter, 0 is do the regular frame difference statistic
  1719. * @return n/a
  1720. */
  1721. void PQ_CheckMotionStatusMethod2(BOOL reset);
  1722. /**
  1723. * @brief get the status of current frame, to verify current frame is motion frame or static frame
  1724. *
  1725. * This function get the status of current frame is motion frame or static frame
  1726. *
  1727. * @param n/a
  1728. * @return 1 : motion frmae, 0 : static frame
  1729. */
  1730. BOOL PQ_GetMotionStatusByMethod2(void);
  1731. /**
  1732. * @brief check current frame is motion frame or static frame
  1733. *
  1734. * This function check VDI statistical data to define current frame is motion frame or static frame
  1735. *
  1736. * @param reset, 1 is reset the static parameter, 0 is do the regular frame difference statistic
  1737. * @return n/a
  1738. */
  1739. void PQ_CheckMotionStatusMethod3(BOOL reset);
  1740. /**
  1741. * @brief get the status of current frame, to verify current frame is motion frame or static frame
  1742. *
  1743. * This function get the status of current frame is motion frame or static frame
  1744. *
  1745. * @param n/a
  1746. * @return 1 : motion frmae, 0 : static frame
  1747. */
  1748. BOOL PQ_GetMotionStatusByMethod3(void);
  1749. #endif //#ifndef _PQ_HW_H