|
MythTV
0.26-pre
|
00001 00002 #include <QMutex> 00003 #include <QMap> 00004 00005 #include "mythlogging.h" 00006 #include "dtvconfparserhelpers.h" 00007 00008 bool DTVParamHelper::ParseParam(const QString &symbol, int &value, 00009 const DTVParamHelperStruct *table) 00010 { 00011 const DTVParamHelperStruct *p = table; 00012 00013 while (!p->symbol.isEmpty()) 00014 { 00015 if (p->symbol == symbol) //.left(p->symbol.length())) 00016 { 00017 //symbol = symbol.mid(p->symbol.length()); 00018 value = p->value; 00019 return true; 00020 } 00021 p++; 00022 } 00023 00024 return false; 00025 } 00026 00027 QString DTVParamHelper::toString(const char *strings[], int index, 00028 uint strings_size) 00029 { 00030 if ((index < 0) || ((uint)index >= strings_size)) 00031 { 00032 LOG(VB_GENERAL, LOG_ERR, 00033 "DTVParamHelper::toString() index out of bounds"); 00034 00035 return QString::null; 00036 } 00037 00038 return strings[index]; 00039 } 00040 00041 const int DTVTunerType::kTunerTypeDVBS1 = 0x0000; 00042 const int DTVTunerType::kTunerTypeDVBS2 = 0x0020; 00043 const int DTVTunerType::kTunerTypeDVBC = 0x0001; 00044 const int DTVTunerType::kTunerTypeDVBT = 0x0002; 00045 const int DTVTunerType::kTunerTypeATSC = 0x0003; 00046 const int DTVTunerType::kTunerTypeASI = 0x1000; 00047 const int DTVTunerType::kTunerTypeOCUR = 0x2000; 00048 const int DTVTunerType::kTunerTypeUnknown = 0x80000000; 00049 00050 static QMutex dtv_tt_canonical_str_lock; 00051 static QMap<int,QString> dtv_tt_canonical_str; 00052 void DTVTunerType::initStr(void) 00053 { 00054 QMutexLocker locker(&dtv_tt_canonical_str_lock); 00055 dtv_tt_canonical_str[kTunerTypeATSC] = "ATSC"; 00056 dtv_tt_canonical_str[kTunerTypeDVBT] = "OFDM"; 00057 dtv_tt_canonical_str[kTunerTypeDVBC] = "QAM"; 00058 dtv_tt_canonical_str[kTunerTypeDVBS1] = "QPSK"; 00059 dtv_tt_canonical_str[kTunerTypeDVBS2] = "DVB_S2"; 00060 dtv_tt_canonical_str[kTunerTypeASI] = "ASI"; 00061 dtv_tt_canonical_str[kTunerTypeOCUR] = "OCUR"; 00062 dtv_tt_canonical_str[kTunerTypeUnknown] = "UNKNOWN"; 00063 } 00064 00065 QString DTVTunerType::toString(int _value) 00066 { 00067 QMutexLocker locker(&dtv_tt_canonical_str_lock); 00068 QMap<int,QString>::const_iterator it = dtv_tt_canonical_str.find(_value); 00069 if (it != dtv_tt_canonical_str.end()) 00070 return *it; 00071 return dtv_tt_canonical_str[kTunerTypeUnknown]; 00072 } 00073 00074 const DTVParamHelperStruct DTVTunerType::parseTable[] = 00075 { 00076 { "QPSK", kTunerTypeDVBS1 }, 00077 { "QAM", kTunerTypeDVBC }, 00078 { "OFDM", kTunerTypeDVBT }, 00079 { "ATSC", kTunerTypeATSC }, 00080 { "DVB_S2", kTunerTypeDVBS2 }, 00081 { "ASI", kTunerTypeASI }, 00082 { "OCUR", kTunerTypeOCUR }, 00083 { "UNKNOWN", kTunerTypeUnknown }, 00084 { NULL, kTunerTypeUnknown }, 00085 }; 00086 00087 const DTVParamHelperStruct DTVInversion::confTable[] = 00088 { 00089 { "INVERSION_AUTO", kInversionAuto }, 00090 { "INVERSION_OFF", kInversionOff }, 00091 { "INVERSION_ON", kInversionOn }, 00092 { NULL, kInversionAuto }, 00093 }; 00094 00095 const DTVParamHelperStruct DTVInversion::vdrTable[] = 00096 { 00097 { "999", kInversionAuto }, 00098 { "0", kInversionOff }, 00099 { "1", kInversionOn }, 00100 { NULL, kInversionAuto }, 00101 }; 00102 00103 const DTVParamHelperStruct DTVInversion::parseTable[] = 00104 { 00105 { "a", kInversionAuto }, 00106 { "0", kInversionOff }, 00107 { "1", kInversionOn }, 00108 { NULL, kInversionAuto }, 00109 }; 00110 00111 const char *DTVInversion::dbStr[DTVInversion::kDBStrCnt] = 00112 { 00113 "0", 00114 "1", 00115 "a" 00116 }; 00117 00118 const DTVParamHelperStruct DTVBandwidth::confTable[] = 00119 { 00120 { "BANDWIDTH_AUTO", kBandwidthAuto }, 00121 { "BANDWIDTH_8_MHZ", kBandwidth8MHz }, 00122 { "BANDWIDTH_7_MHZ", kBandwidth7MHz }, 00123 { "BANDWIDTH_6_MHZ", kBandwidth6MHz }, 00124 { NULL, kBandwidthAuto }, 00125 }; 00126 00127 const DTVParamHelperStruct DTVBandwidth::vdrTable[] = 00128 { 00129 { "999", kBandwidthAuto }, 00130 { "8", kBandwidth8MHz }, 00131 { "7", kBandwidth7MHz }, 00132 { "6", kBandwidth6MHz }, 00133 { NULL, kBandwidthAuto }, 00134 }; 00135 00136 const DTVParamHelperStruct DTVBandwidth::parseTable[] = 00137 { 00138 { "a", kBandwidthAuto }, 00139 { "8", kBandwidth8MHz }, 00140 { "7", kBandwidth7MHz }, 00141 { "6", kBandwidth6MHz }, 00142 { NULL, kBandwidthAuto }, 00143 }; 00144 00145 const char *DTVBandwidth::dbStr[DTVBandwidth::kDBStrCnt] = 00146 { 00147 "8", 00148 "7", 00149 "6", 00150 "a" 00151 }; 00152 00153 const DTVParamHelperStruct DTVCodeRate::confTable[] = 00154 { 00155 { "FEC_AUTO", kFECAuto }, 00156 { "FEC_1_2", kFEC_1_2 }, 00157 { "FEC_2_3", kFEC_2_3 }, 00158 { "FEC_3_4", kFEC_3_4 }, 00159 { "FEC_4_5", kFEC_4_5 }, 00160 { "FEC_5_6", kFEC_5_6 }, 00161 { "FEC_6_7", kFEC_6_7 }, 00162 { "FEC_7_8", kFEC_7_8 }, 00163 { "FEC_8_9", kFEC_8_9 }, 00164 { "FEC_NONE", kFECNone }, 00165 { "FEC_3_5", kFEC_3_5 }, 00166 { "FEC_9_10", kFEC_9_10 }, 00167 { NULL, kFECAuto }, 00168 }; 00169 00170 const DTVParamHelperStruct DTVCodeRate::vdrTable[] = 00171 { 00172 { "999", kFECAuto }, 00173 { "12", kFEC_1_2 }, 00174 { "23", kFEC_2_3 }, 00175 { "34", kFEC_3_4 }, 00176 { "45", kFEC_4_5 }, 00177 { "56", kFEC_5_6 }, 00178 { "67", kFEC_6_7 }, 00179 { "78", kFEC_7_8 }, 00180 { "89", kFEC_8_9 }, 00181 { "0", kFECNone }, 00182 { "35", kFEC_3_5 }, 00183 { "910", kFEC_9_10 }, 00184 { NULL, kFECAuto } 00185 }; 00186 00187 const DTVParamHelperStruct DTVCodeRate::parseTable[] = 00188 { 00189 { "auto", kFECAuto }, 00190 { "1/2", kFEC_1_2 }, 00191 { "2/3", kFEC_2_3 }, 00192 { "3/4", kFEC_3_4 }, 00193 { "4/5", kFEC_4_5 }, 00194 { "5/6", kFEC_5_6 }, 00195 { "6/7", kFEC_6_7 }, 00196 { "7/8", kFEC_7_8 }, 00197 { "8/9", kFEC_8_9 }, 00198 { "none", kFECNone }, 00199 { "3/5", kFEC_3_5 }, 00200 { "9/10", kFEC_9_10}, 00201 { NULL, kFECAuto } 00202 }; 00203 00204 const char *DTVCodeRate::dbStr[DTVCodeRate::kDBStrCnt] = 00205 { 00206 "none", 00207 "1/2", 00208 "2/3", 00209 "3/4", 00210 "4/5", 00211 "5/6", 00212 "6/7", 00213 "7/8", 00214 "8/9", 00215 "auto", 00216 "3/5", 00217 "9/10", 00218 }; 00219 00220 const DTVParamHelperStruct DTVModulation::confTable[] = 00221 { 00222 { "QAM_AUTO", kModulationQAMAuto }, 00223 { "QAM_16", kModulationQAM16 }, 00224 { "QAM_32", kModulationQAM32 }, 00225 { "QAM_64", kModulationQAM64 }, 00226 { "QAM_128", kModulationQAM128 }, 00227 { "QAM_256", kModulationQAM256 }, 00228 { "QPSK", kModulationQPSK }, 00229 { "8VSB", kModulation8VSB }, 00230 { "16VSB", kModulation16VSB }, 00231 { "8PSK", kModulation8PSK }, 00232 { "16APSK", kModulation16APSK }, 00233 { "32APSK", kModulation32APSK }, 00234 { "DQPSK", kModulationDQPSK }, 00235 { "16PSK", kModulationInvalid }, 00236 { "2VSB", kModulationInvalid }, 00237 { "4VSB", kModulationInvalid }, 00238 { "BPSK", kModulationInvalid }, 00239 { "analog", kModulationAnalog }, 00240 { NULL, kModulationQAMAuto }, 00241 }; 00242 00243 const DTVParamHelperStruct DTVModulation::vdrTable[] = 00244 { 00245 { "998", kModulationQAMAuto }, 00246 { "16", kModulationQAM16 }, 00247 { "32", kModulationQAM32 }, 00248 { "64", kModulationQAM64 }, 00249 { "128", kModulationQAM128 }, 00250 { "256", kModulationQAM256 }, 00251 { "2", kModulationQPSK }, 00252 { "5", kModulation8PSK }, 00253 { "6", kModulation16APSK }, 00254 { "7", kModulation32APSK }, 00255 { "10", kModulation8VSB }, 00256 { "11", kModulation16VSB }, 00257 { NULL, kModulationQAMAuto }, 00258 }; 00259 00260 const DTVParamHelperStruct DTVModulation::parseTable[] = 00261 { 00262 { "auto", kModulationQAMAuto }, 00263 { "qam_16", kModulationQAM16 }, 00264 { "qam_32", kModulationQAM32 }, 00265 { "qam_64", kModulationQAM64 }, 00266 { "qam_128", kModulationQAM128 }, 00267 { "qam_256", kModulationQAM256 }, 00268 { "qpsk", kModulationQPSK }, 00269 { "8vsb", kModulation8VSB }, 00270 { "16vsb", kModulation16VSB }, 00271 { "8psk", kModulation8PSK }, 00272 { "16apsk", kModulation16APSK }, 00273 { "32apsk", kModulation32APSK }, 00274 { "dqpsk", kModulationDQPSK }, 00275 // alternates 00276 { "a", kModulationQAMAuto }, 00277 { "qam_auto", kModulationQAMAuto }, 00278 { "qam-16", kModulationQAM16 }, 00279 { "qam-32", kModulationQAM32 }, 00280 { "qam-64", kModulationQAM64 }, 00281 { "qam-128", kModulationQAM128 }, 00282 { "qam-256", kModulationQAM256 }, 00283 // qpsk, no alternative 00284 { "8-vsb", kModulation8VSB }, 00285 { "16-vsb", kModulation16VSB }, 00286 // bpsk, no alternative 00287 { "16-apsk", kModulation16APSK }, 00288 { "32-apsk", kModulation32APSK }, 00289 { "8-psk", kModulation8PSK }, 00290 // removed modulations and alternatives 00291 { "bpsk", kModulationInvalid }, 00292 { "2vsb", kModulationInvalid }, 00293 { "2-vsb", kModulationInvalid }, 00294 { "4vsb", kModulationInvalid }, 00295 { "4-vsb", kModulationInvalid }, 00296 { "16psk", kModulationInvalid }, 00297 { "16-psk", kModulationInvalid }, 00298 { NULL, kModulationQAMAuto }, 00299 }; 00300 00301 const char *DTVModulation::dbStr[DTVModulation::kDBStrCnt] = 00302 { 00303 "qpsk", 00304 "qam_16", 00305 "qam_32", 00306 "qam_64", 00307 "qam_128", 00308 "qam_256", 00309 "auto", 00310 "8vsb", 00311 "16vsb", 00312 "8psk", 00313 "16apsk", 00314 "32apsk", 00315 "dqpsk" 00316 }; 00317 00318 const DTVParamHelperStruct DTVTransmitMode::confTable[] = 00319 { 00320 { "TRANSMISSION_MODE_AUTO", kTransmissionModeAuto }, 00321 { "TRANSMISSION_MODE_2K", kTransmissionMode2K }, 00322 { "TRANSMISSION_MODE_8K", kTransmissionMode8K }, 00323 { NULL, kTransmissionModeAuto }, 00324 }; 00325 00326 const DTVParamHelperStruct DTVTransmitMode::vdrTable[] = 00327 { 00328 { "999", kTransmissionModeAuto }, 00329 { "2", kTransmissionMode2K }, 00330 { "8", kTransmissionMode8K }, 00331 { NULL, kTransmissionModeAuto }, 00332 }; 00333 00334 const DTVParamHelperStruct DTVTransmitMode::parseTable[] = 00335 { 00336 { "a", kTransmissionModeAuto }, 00337 { "2", kTransmissionMode2K }, 00338 { "8", kTransmissionMode8K }, 00339 { NULL, kTransmissionModeAuto }, 00340 }; 00341 00342 const char *DTVTransmitMode::dbStr[DTVTransmitMode::kDBStrCnt] = 00343 { 00344 "2", 00345 "8", 00346 "a" 00347 }; 00348 00349 const DTVParamHelperStruct DTVGuardInterval::confTable[] = 00350 { 00351 { "GUARD_INTERVAL_AUTO", kGuardIntervalAuto }, 00352 { "GUARD_INTERVAL_1_32", kGuardInterval_1_32 }, 00353 { "GUARD_INTERVAL_1_16", kGuardInterval_1_16 }, 00354 { "GUARD_INTERVAL_1_8", kGuardInterval_1_8 }, 00355 { "GUARD_INTERVAL_1_4", kGuardInterval_1_4 }, 00356 { NULL, kGuardIntervalAuto }, 00357 }; 00358 00359 const DTVParamHelperStruct DTVGuardInterval::vdrTable[] = 00360 { 00361 { "999", kGuardIntervalAuto }, 00362 { "32", kGuardInterval_1_32 }, 00363 { "16", kGuardInterval_1_16 }, 00364 { "8", kGuardInterval_1_8 }, 00365 { "4", kGuardInterval_1_4 }, 00366 { NULL, kGuardIntervalAuto }, 00367 }; 00368 00369 const DTVParamHelperStruct DTVGuardInterval::parseTable[] = 00370 { 00371 { "auto", kGuardIntervalAuto }, 00372 { "1/32", kGuardInterval_1_32 }, 00373 { "1/16", kGuardInterval_1_16 }, 00374 { "1/8", kGuardInterval_1_8 }, 00375 { "1/4", kGuardInterval_1_4 }, 00376 { NULL, kGuardIntervalAuto }, 00377 }; 00378 00379 const char *DTVGuardInterval::dbStr[DTVGuardInterval::kDBStrCnt] = 00380 { 00381 "1/32", 00382 "1/16", 00383 "1/8", 00384 "1/4", 00385 "auto" 00386 }; 00387 00388 const DTVParamHelperStruct DTVHierarchy::confTable[] = 00389 { 00390 { "HIERARCHY_NONE", kHierarchyNone }, 00391 { "HIERARCHY_1", kHierarchy1 }, 00392 { "HIERARCHY_2", kHierarchy2 }, 00393 { "HIERARCHY_4", kHierarchy4 }, 00394 { "HIERARCHY_AUTO", kHierarchyAuto }, 00395 { NULL, kHierarchyAuto }, 00396 }; 00397 00398 const DTVParamHelperStruct DTVHierarchy::vdrTable[] = 00399 { 00400 { "0", kHierarchyNone }, 00401 { "1", kHierarchy1 }, 00402 { "2", kHierarchy2 }, 00403 { "4", kHierarchy4 }, 00404 { "999", kHierarchyAuto }, 00405 { NULL, kHierarchyAuto }, 00406 }; 00407 00408 const DTVParamHelperStruct DTVHierarchy::parseTable[] = 00409 { 00410 { "n", kHierarchyNone }, 00411 { "1", kHierarchy1 }, 00412 { "2", kHierarchy2 }, 00413 { "4", kHierarchy4 }, 00414 { "a", kHierarchyAuto }, 00415 { NULL, kHierarchyAuto }, 00416 }; 00417 00418 const char *DTVHierarchy::dbStr[DTVHierarchy::kDBStrCnt] = 00419 { 00420 "n", 00421 "1", 00422 "2", 00423 "4", 00424 "a" 00425 }; 00426 00427 const DTVParamHelperStruct DTVPolarity::parseTable[] = 00428 { 00429 { "v", kPolarityVertical }, 00430 { "h", kPolarityHorizontal }, 00431 { "r", kPolarityRight }, 00432 { "l", kPolarityLeft }, 00433 { NULL, kPolarityVertical }, 00434 }; 00435 00436 const char *DTVPolarity::dbStr[DTVPolarity::kDBStrCnt] = 00437 { 00438 "v", 00439 "h", 00440 "r", 00441 "l" 00442 }; 00443 00444 const DTVParamHelperStruct DTVModulationSystem::confTable[] = 00445 { 00446 { "SYS_UNDEFINED", kModulationSystem_UNDEFINED }, 00447 { "SYS_DVBC_ANNEX_AC", kModulationSystem_DVBC_ANNEX_AC }, 00448 { "SYS_DVBC_ANNEX_B", kModulationSystem_DVBC_ANNEX_B }, 00449 { "SYS_DVBT", kModulationSystem_DVBT }, 00450 { "SYS_DSS", kModulationSystem_DSS }, 00451 { "SYS_DVBS", kModulationSystem_DVBS }, 00452 { "SYS_DVBS2", kModulationSystem_DVBS2 }, 00453 { "SYS_DVBH", kModulationSystem_DVBH }, 00454 { "SYS_ISDBT", kModulationSystem_ISDBT }, 00455 { "SYS_ISDBS", kModulationSystem_ISDBS }, 00456 { "SYS_ISDBC", kModulationSystem_ISDBC }, 00457 { "SYS_ATSC", kModulationSystem_ATSC }, 00458 { "SYS_ATSCMH", kModulationSystem_ATSCMH }, 00459 { "SYS_DMBTH", kModulationSystem_DMBTH }, 00460 { "SYS_CMMB", kModulationSystem_CMMB }, 00461 { "SYS_DAB", kModulationSystem_DAB }, 00462 { NULL, kModulationSystem_UNDEFINED }, 00463 }; 00464 00465 const DTVParamHelperStruct DTVModulationSystem::vdrTable[] = 00466 { 00467 { "0", kModulationSystem_DVBS }, 00468 { "1", kModulationSystem_DVBS2 }, 00469 { NULL, kModulationSystem_UNDEFINED }, 00470 }; 00471 00472 const DTVParamHelperStruct DTVModulationSystem::parseTable[] = 00473 { 00474 { "UNDEFINED", kModulationSystem_UNDEFINED }, 00475 { "DVBC_AC", kModulationSystem_DVBC_ANNEX_AC }, 00476 { "DVBC_B", kModulationSystem_DVBC_ANNEX_B }, 00477 { "DVBT", kModulationSystem_DVBT }, 00478 { "DSS", kModulationSystem_DSS }, 00479 { "DVB-S", kModulationSystem_DVBS }, 00480 { "DVB-S2", kModulationSystem_DVBS2 }, 00481 { "DVBH", kModulationSystem_DVBH }, 00482 { "ISDBT", kModulationSystem_ISDBT }, 00483 { "ISDBS", kModulationSystem_ISDBS }, 00484 { "ISDBC", kModulationSystem_ISDBC }, 00485 { "ATSC", kModulationSystem_ATSC }, 00486 { "ATSCMH", kModulationSystem_ATSCMH }, 00487 { "DMBTH", kModulationSystem_DMBTH }, 00488 { "CMMB", kModulationSystem_CMMB }, 00489 { "DAB", kModulationSystem_DAB }, 00490 { NULL, kModulationSystem_UNDEFINED }, 00491 }; 00492 00493 const char *DTVModulationSystem::dbStr[DTVModulationSystem::kDBStrCnt] = 00494 { 00495 "UNDEFINED", 00496 "DVBCAC", 00497 "DVBC_B", 00498 "DVBT", 00499 "DSS", 00500 "DVB-S", 00501 "DVB-S2", 00502 "DVBH", 00503 "ISDBT", 00504 "ISDBS", 00505 "ISDBC", 00506 "ATSC", 00507 "ATSCMH", 00508 "DMBTH", 00509 "CMMB", 00510 "DAB", 00511 }; 00512 00513 const DTVParamHelperStruct DTVRollOff::confTable[] = 00514 { 00515 { "ROLLOFF_35", kRollOff_35 }, 00516 { "ROLLOFF_20", kRollOff_20 }, 00517 { "ROLLOFF_25", kRollOff_25 }, 00518 { "ROLLOFF_AUTO", kRollOff_Auto }, 00519 { NULL, kRollOff_35 }, 00520 }; 00521 00522 const DTVParamHelperStruct DTVRollOff::vdrTable[] = 00523 { 00524 { "35", kRollOff_35 }, 00525 { "20", kRollOff_20 }, 00526 { "25", kRollOff_25 }, 00527 { "0", kRollOff_Auto }, 00528 { NULL, kRollOff_35 }, 00529 }; 00530 const DTVParamHelperStruct DTVRollOff::parseTable[] = 00531 { 00532 { "0.35", kRollOff_35 }, 00533 { "0.20", kRollOff_20 }, 00534 { "0.25", kRollOff_25 }, 00535 { "auto", kRollOff_Auto }, 00536 { NULL, kRollOff_35 }, 00537 }; 00538 00539 const char *DTVRollOff::dbStr[DTVRollOff::kDBStrCnt] = 00540 { 00541 "0.35", 00542 "0.20", 00543 "0.25", 00544 "auto", 00545 };
1.7.6.1