Advertisement
Guest User

Untitled

a guest
May 14th, 2015
1,416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 37.69 KB | None | 0 0
  1. diff -u -r -N a/src/BonDriver_PT/BonDriver_PT1/BonDriver_PT1.rc b/src/BonDriver_PT/BonDriver_PT1/BonDriver_PT1.rc
  2. --- a/src/BonDriver_PT/BonDriver_PT1/BonDriver_PT1.rc   2011-01-16 13:59:22.000000000 +0900
  3. +++ b/src/BonDriver_PT/BonDriver_PT1/BonDriver_PT1.rc   2014-11-13 19:24:36.000000000 +0900
  4. @@ -7,7 +7,7 @@
  5.  //
  6.  // Generated from the TEXTINCLUDE 2 resource.
  7.  //
  8. -#include "afxres.h"
  9. +#include "winres.h"
  10.  
  11.  /////////////////////////////////////////////////////////////////////////////
  12.  #undef APSTUDIO_READONLY_SYMBOLS
  13. @@ -34,7 +34,7 @@
  14.  
  15.  2 TEXTINCLUDE
  16.  BEGIN
  17. -    "#include ""afxres.h""\r\n"
  18. +    "#include ""winres.h""\r\n"
  19.      "\0"
  20.  END
  21.  
  22. diff -u -r -N a/src/BonDriver_PT/BonDriver_PT1/BonTuner.cpp b/src/BonDriver_PT/BonDriver_PT1/BonTuner.cpp
  23. --- a/src/BonDriver_PT/BonDriver_PT1/BonTuner.cpp   2011-01-16 13:59:22.000000000 +0900
  24. +++ b/src/BonDriver_PT/BonDriver_PT1/BonTuner.cpp   2014-11-13 19:24:36.000000000 +0900
  25. @@ -6,182 +6,11 @@
  26.  #include "inc/OS_Library.h"
  27.  using namespace EARTH;
  28.  
  29. -//#include "Resource.h"
  30.  #include "BonTuner.h"
  31.  
  32. -#define _ISDB_T
  33. -#ifdef _ISDB_T
  34. -#define TUNER_NAME L"PTx ISDB-T"
  35. -#define TUNER_NAME2 L"PT%d ISDB-T (%d)"
  36. -#define SPACE_1 L"地デジ(UHF)"
  37. -#define SPACE_2 L"地デジ(CATV)"
  38. -#define SPACE_3 L"地デジ(VHF)"
  39. -#else
  40. -#define TUNER_NAME L"PTx ISDB-S"
  41. -#define TUNER_NAME2 L"PT%d ISDB-S (%d)"
  42. -#define SPACE_1 L"BS"
  43. -#define SPACE_2 L"CS110"
  44. -#endif
  45. +#define USE_PT2
  46. +static BOOL isISDB_S;
  47.  
  48. -/*
  49. -static const CH_DATA stUHF[]=
  50. -{
  51. -   {L"13Ch", 0, 0, 63},
  52. -   {L"14Ch", 0, 1, 64},
  53. -   {L"15Ch", 0, 2, 65},
  54. -   {L"16Ch", 0, 3, 66},
  55. -   {L"17Ch", 0, 4, 67},
  56. -   {L"18Ch", 0, 5, 68},
  57. -   {L"19Ch", 0, 6, 69},
  58. -   {L"20Ch", 0, 7, 70},
  59. -   {L"21Ch", 0, 8, 71},
  60. -   {L"22Ch", 0, 9, 72},
  61. -   {L"23Ch", 0,10, 73},
  62. -   {L"24Ch", 0,11, 74},
  63. -   {L"25Ch", 0,12, 75},
  64. -   {L"26Ch", 0,13, 76},
  65. -   {L"27Ch", 0,14, 77},
  66. -   {L"28Ch", 0,15, 78},
  67. -   {L"29Ch", 0,16, 79},
  68. -   {L"30Ch", 0,17, 80},
  69. -   {L"31Ch", 0,18, 81},
  70. -   {L"32Ch", 0,19, 82},
  71. -   {L"33Ch", 0,20, 83},
  72. -   {L"34Ch", 0,21, 84},
  73. -   {L"35Ch", 0,22, 85},
  74. -   {L"36Ch", 0,23, 86},
  75. -   {L"37Ch", 0,24, 87},
  76. -   {L"38Ch", 0,25, 88},
  77. -   {L"39Ch", 0,26, 89},
  78. -   {L"40Ch", 0,27, 90},
  79. -   {L"41Ch", 0,28, 91},
  80. -   {L"42Ch", 0,29, 92},
  81. -   {L"43Ch", 0,30, 93},
  82. -   {L"44Ch", 0,31, 94},
  83. -   {L"45Ch", 0,32, 95},
  84. -   {L"46Ch", 0,33, 96},
  85. -   {L"47Ch", 0,34, 97},
  86. -   {L"48Ch", 0,35, 98},
  87. -   {L"49Ch", 0,36, 99},
  88. -   {L"50Ch", 0,37,100},
  89. -   {L"51Ch", 0,38,101},
  90. -   {L"52Ch", 0,39,102},
  91. -   {L"53Ch", 0,40,103},
  92. -   {L"54Ch", 0,41,104},
  93. -   {L"55Ch", 0,42,105},
  94. -   {L"56Ch", 0,43,106},
  95. -   {L"57Ch", 0,44,107},
  96. -   {L"58Ch", 0,45,108},
  97. -   {L"59Ch", 0,46,109},
  98. -   {L"60Ch", 0,47,110},
  99. -   {L"61Ch", 0,48,111},
  100. -   {L"62Ch", 0,49,112}
  101. -};
  102. -
  103. -static const CH_DATA stCATV[]=
  104. -{
  105. -   {L"C13Ch", 1, 0,  3},
  106. -   {L"C14Ch", 1, 1,  4},
  107. -   {L"C15Ch", 1, 2,  5},
  108. -   {L"C16Ch", 1, 3,  6},
  109. -   {L"C17Ch", 1, 4,  7},
  110. -   {L"C18Ch", 1, 5,  8},
  111. -   {L"C19Ch", 1, 6,  9},
  112. -   {L"C20Ch", 1, 7, 10},
  113. -   {L"C21Ch", 1, 8, 11},
  114. -   {L"C22Ch", 1, 9, 12},
  115. -   {L"C23Ch", 1,10, 22},
  116. -   {L"C24Ch", 1,11, 23},
  117. -   {L"C25Ch", 1,12, 24},
  118. -   {L"C26Ch", 1,13, 25},
  119. -   {L"C27Ch", 1,14, 26},
  120. -   {L"C28Ch", 1,15, 27},
  121. -   {L"C29Ch", 1,16, 28},
  122. -   {L"C30Ch", 1,17, 29},
  123. -   {L"C31Ch", 1,18, 30},
  124. -   {L"C32Ch", 1,19, 31},
  125. -   {L"C33Ch", 1,20, 32},
  126. -   {L"C34Ch", 1,21, 33},
  127. -   {L"C35Ch", 1,22, 34},
  128. -   {L"C36Ch", 1,23, 35},
  129. -   {L"C37Ch", 1,24, 36},
  130. -   {L"C38Ch", 1,25, 37},
  131. -   {L"C39Ch", 1,26, 38},
  132. -   {L"C40Ch", 1,27, 39},
  133. -   {L"C41Ch", 1,28, 40},
  134. -   {L"C42Ch", 1,29, 41},
  135. -   {L"C43Ch", 1,30, 42},
  136. -   {L"C44Ch", 1,31, 43},
  137. -   {L"C45Ch", 1,32, 44},
  138. -   {L"C46Ch", 1,33, 45},
  139. -   {L"C47Ch", 1,34, 46},
  140. -   {L"C48Ch", 1,35, 47},
  141. -   {L"C49Ch", 1,36, 48},
  142. -   {L"C50Ch", 1,37, 49},
  143. -   {L"C51Ch", 1,38, 50},
  144. -   {L"C52Ch", 1,39, 51},
  145. -   {L"C53Ch", 1,40, 52},
  146. -   {L"C54Ch", 1,41, 53},
  147. -   {L"C55Ch", 1,42, 54},
  148. -   {L"C56Ch", 1,43, 55},
  149. -   {L"C57Ch", 1,44, 56},
  150. -   {L"C58Ch", 1,45, 57},
  151. -   {L"C59Ch", 1,46, 58},
  152. -   {L"C60Ch", 1,47, 59},
  153. -   {L"C61Ch", 1,48, 60},
  154. -   {L"C62Ch", 1,49, 61},
  155. -   {L"C63Ch", 1,49, 62}
  156. -};
  157. -
  158. -static const CH_DATA stVHF[]=
  159. -{
  160. -   {L"1Ch",  2, 0,  0},
  161. -   {L"2Ch",  2, 1,  1},
  162. -   {L"3Ch",  2, 2,  2},
  163. -   {L"4Ch",  2, 3, 13},
  164. -   {L"5Ch",  2, 4, 14},
  165. -   {L"6Ch",  2, 5, 15},
  166. -   {L"7Ch",  2, 6, 16},
  167. -   {L"8Ch",  2, 7, 17},
  168. -   {L"9Ch",  2, 8, 18},
  169. -   {L"10Ch", 2, 9, 19},
  170. -   {L"11Ch", 2,10, 20},
  171. -   {L"12Ch", 2,11, 21},
  172. -};
  173. -
  174. -static const CH_DATA stBS[]=
  175. -{
  176. -   {L"BS1/TS0 BS朝日",          0, 0,  0, 0x4010},
  177. -   {L"BS1/TS1 BS-i",            0, 1,  0, 0x4011},
  178. -   {L"BS3/TS0 WOWOW",           0, 2,  1, 0x4030},
  179. -   {L"BS3/TS1 BSジャパン",      0, 3,  1, 0x4031},
  180. -   {L"BS9/TS0 BS11",            0, 4,  4, 0x4090},
  181. -   {L"BS9/TS1 Star Channel HV", 0, 5,  4, 0x4091},
  182. -   {L"BS9/TS2 TwellV",          0, 6,  4, 0x4092},
  183. -   {L"BS13/TS0 BS日テレ",       0, 7,  6, 0x40D0},
  184. -   {L"BS13/TS1 BSフジ",         0, 8,  6, 0x40D1},
  185. -   {L"BS15/TS1 NHK BS1/2",      0, 9,  7, 0x40F1},
  186. -   {L"BS15/TS2 NHK BS-hi",      0,10,  7, 0x40F2},
  187. -   {L"BS17/TS1 難視聴対策",     0,11,  8, 0x4310},
  188. -   {L"BS17/TS2 難視聴対策",     0,12,  8, 0x4311},
  189. -};
  190. -
  191. -static const CH_DATA stCS[]=
  192. -{
  193. -   {L"ND2",  1, 0, 12, 0x6020},
  194. -   {L"ND4",  1, 1, 13, 0x7040},
  195. -   {L"ND6",  1, 2, 14, 0x7060},
  196. -   {L"ND8",  1, 3, 15, 0x6080},
  197. -   {L"ND10", 1, 4, 16, 0x60A0},
  198. -   {L"ND12", 1, 5, 17, 0x70C0},
  199. -   {L"ND14", 1, 6, 18, 0x70E0},
  200. -   {L"ND16", 1, 7, 19, 0x7100},
  201. -   {L"ND18", 1, 8, 20, 0x7120},
  202. -   {L"ND20", 1, 9, 21, 0x7140},
  203. -   {L"ND22", 1,10, 22, 0x7160},
  204. -   {L"ND24", 1,11, 23, 0x7180}
  205. -};
  206. -*/
  207.  #define DATA_BUFF_SIZE 188*256
  208.  #define MAX_BUFF_COUNT 500
  209.  
  210. @@ -224,7 +53,7 @@
  211.     _tmakepath_s(  szPath, _MAX_PATH, szDrive, szDir, NULL, NULL );
  212.  
  213.     m_strPT1CtrlExe = szPath;
  214. -   m_strPT1CtrlExe+= L"PTCtrl.exe";
  215. +   m_strPT1CtrlExe += L"PTCtrl.exe";
  216.  
  217.     wstring strIni;
  218.     strIni = szPath;
  219. @@ -236,30 +65,46 @@
  220.     m_bUseBS = GetPrivateProfileInt(L"SET", L"UseBS", 1, strIni.c_str());
  221.     m_bUseCS = GetPrivateProfileInt(L"SET", L"UseCS", 1, strIni.c_str());
  222.  
  223. +   isISDB_S = TRUE;
  224. +#ifdef USE_PT2
  225. +   int iPTn = 2;
  226. +#else
  227. +   int iPTn = 1;
  228. +#endif
  229. +   WCHAR szName[256];
  230.     m_iTunerID = -1;
  231.     if( wcslen(szFname) == wcslen(L"BonDriver_PT-**") ){
  232. +       const WCHAR *TUNER_NAME2;
  233. +       if (szFname[13] == L'T'){
  234. +           isISDB_S = FALSE;
  235. +           TUNER_NAME2 = L"PT%d ISDB-T (%d)";
  236. +       }else{
  237. +           TUNER_NAME2 = L"PT%d ISDB-S (%d)";
  238. +       }
  239.         m_iTunerID = _wtoi(szFname+wcslen(L"BonDriver_PT-*"));
  240. -       int iPTn = GetPTDeviceInfo(m_iTunerID/2);
  241. -       if( iPTn != -1 ){
  242. -           WCHAR szName[256] = L"";
  243. -           wsprintf(szName, TUNER_NAME2, iPTn, m_iTunerID);
  244. -           m_strTunerName = szName;
  245. +       wsprintfW(szName, TUNER_NAME2, iPTn, m_iTunerID);
  246. +       m_strTunerName = szName;
  247. +   }else if( wcslen(szFname) == wcslen(L"BonDriver_PT-*") ){
  248. +       const WCHAR *TUNER_NAME;
  249. +       if (szFname[13] == L'T'){
  250. +           isISDB_S = FALSE;
  251. +           TUNER_NAME = L"PT%d ISDB-T";
  252.         }else{
  253. -           WCHAR szName[256] = L"";
  254. -           wsprintf(szName, L"%s (%d)", TUNER_NAME, m_iTunerID);
  255. -           m_strTunerName = szName;
  256. +           TUNER_NAME = L"PT%d ISDB-S";
  257.         }
  258. +       wsprintfW(szName, TUNER_NAME, iPTn);
  259. +       m_strTunerName = szName;
  260.     }else{
  261. -       m_strTunerName = TUNER_NAME;
  262. +       wsprintfW(szName, L"PT%d ISDB-S", iPTn);
  263. +       m_strTunerName = szName;
  264.     }
  265.  
  266.     wstring strChSet;
  267.     strChSet = szPath;
  268. -#ifdef _ISDB_T
  269. -   strChSet += L"BonDriver_PT-T.ChSet.txt";
  270. -#else
  271. -   strChSet += L"BonDriver_PT-S.ChSet.txt";
  272. -#endif
  273. +   if (isISDB_S)
  274. +       strChSet += L"BonDriver_PT-S.ChSet.txt";
  275. +   else
  276. +       strChSet += L"BonDriver_PT-T.ChSet.txt";
  277.  
  278.     m_chSet.ParseText(strChSet.c_str());
  279.  }
  280. @@ -267,6 +112,11 @@
  281.  CBonTuner::~CBonTuner()
  282.  {
  283.     CloseTuner();
  284. +
  285. +   ::EnterCriticalSection(&m_CriticalSection);
  286. +   SAFE_DELETE(m_LastBuff);
  287. +   ::LeaveCriticalSection(&m_CriticalSection);
  288. +
  289.     ::CloseHandle(m_hStopEvent);
  290.     m_hStopEvent = NULL;
  291.  
  292. @@ -275,57 +125,6 @@
  293.     m_pThis = NULL;
  294.  }
  295.  
  296. -int CBonTuner::GetPTDeviceInfo(DWORD dwIndex)
  297. -{
  298. -   OS::Library* cLibrary = NULL;
  299. -   PT::Bus* cBus = NULL;
  300. -
  301. -   cLibrary = new OS::Library();
  302. -
  303. -   PT::Bus::NewBusFunction function = cLibrary->Function();
  304. -   if (function == NULL) {
  305. -       SAFE_DELETE(cLibrary);
  306. -       cLibrary = NULL;
  307. -       return -1;
  308. -   }
  309. -   status enStatus = function(&cBus);
  310. -   if( enStatus != PT::STATUS_OK ){
  311. -       SAFE_DELETE(cLibrary);
  312. -       cLibrary = NULL;
  313. -       return -1;
  314. -   }
  315. -
  316. -   //バージョンチェック
  317. -   uint version;
  318. -   cBus->GetVersion(&version);
  319. -   if ((version >> 8) != 2) {
  320. -       cBus->Delete();
  321. -       SAFE_DELETE(cLibrary);
  322. -       cLibrary = NULL;
  323. -       cBus = NULL;
  324. -       return -1;
  325. -   }
  326. -
  327. -   int iRet = -1;
  328. -   PT::Bus::DeviceInfo deviceInfo[9];
  329. -   uint deviceInfoCount = sizeof(deviceInfo)/sizeof(*deviceInfo);
  330. -   cBus->Scan(deviceInfo, &deviceInfoCount, 3);
  331. -   if( dwIndex < deviceInfoCount ){
  332. -       iRet = deviceInfo[dwIndex].PTn;
  333. -   }
  334. -
  335. -   if( cBus != NULL ){
  336. -       cBus->Delete();
  337. -       cBus = NULL;
  338. -   }
  339. -   if( cLibrary != NULL ){
  340. -       SAFE_DELETE(cLibrary);
  341. -       cLibrary = NULL;
  342. -   }
  343. -
  344. -   return iRet;
  345. -}
  346. -
  347.  const BOOL CBonTuner::OpenTuner(void)
  348.  {
  349.     //イベント
  350. @@ -341,19 +140,14 @@
  351.     CloseHandle(pi.hProcess);
  352.  
  353.     DWORD dwRet;
  354. -#ifdef _ISDB_T
  355. -   if( m_iTunerID >= 0 ){
  356. -       dwRet = SendOpenTuner2(FALSE, m_iTunerID, &m_iID);
  357. -   }else{
  358. -       dwRet = SendOpenTuner(FALSE, &m_iID);
  359. -   }
  360. -#else
  361.     if( m_iTunerID >= 0 ){
  362. -       dwRet = SendOpenTuner2(TRUE, m_iTunerID, &m_iID);
  363. +       dwRet = SendOpenTuner2(isISDB_S, m_iTunerID, &m_iID);
  364.     }else{
  365. -       dwRet = SendOpenTuner(TRUE, &m_iID);
  366. +       dwRet = SendOpenTuner(isISDB_S, &m_iID);
  367.     }
  368. -#endif
  369. +
  370. +   _RPT3(_CRT_WARN, "*** CBonTuner::OpenTuner() ***\nm_hOnStreamEvent[%p] bRet[%s] dwRet[%u]\n", m_hOnStreamEvent, bRet ? "TRUE" : "FALSE", dwRet);
  371. +
  372.     if( dwRet != CMD_SUCCESS ){
  373.         return FALSE;
  374.     }
  375. @@ -388,17 +182,14 @@
  376.         SendCloseTuner(m_iID);
  377.         m_iID = -1;
  378.     }
  379. -   Sleep(100);
  380.  
  381.     //バッファ解放
  382.     ::EnterCriticalSection(&m_CriticalSection);
  383. -   if( m_LastBuff != NULL ){
  384. -       SAFE_DELETE(m_LastBuff);
  385. +   while (!m_TsBuff.empty()){
  386. +       TS_DATA *p = m_TsBuff.front();
  387. +       m_TsBuff.pop_front();
  388. +       delete p;
  389.     }
  390. -   for( int i=0; i<(int)m_TsBuff.size(); i++ ){
  391. -       SAFE_DELETE(m_TsBuff[i])
  392. -   }
  393. -   m_TsBuff.clear();
  394.     ::LeaveCriticalSection(&m_CriticalSection);
  395.  }
  396.  
  397. @@ -470,26 +261,22 @@
  398.  
  399.  const BOOL CBonTuner::GetTsStream(BYTE **ppDst, DWORD *pdwSize, DWORD *pdwRemain)
  400.  {
  401. +   BOOL bRet;
  402.     ::EnterCriticalSection(&m_CriticalSection);
  403. -   if( m_LastBuff != NULL ){
  404. -       SAFE_DELETE(m_LastBuff);
  405. -   }
  406. -   ::LeaveCriticalSection(&m_CriticalSection);
  407. -   BOOL bRet = TRUE;
  408.     if( m_TsBuff.size() != 0 ){
  409. -       ::EnterCriticalSection(&m_CriticalSection);
  410. -       m_LastBuff = m_TsBuff[0];
  411. -       m_TsBuff.erase( m_TsBuff.begin() );
  412. -       ::LeaveCriticalSection(&m_CriticalSection);
  413. -
  414. +       delete m_LastBuff;
  415. +       m_LastBuff = m_TsBuff.front();
  416. +       m_TsBuff.pop_front();
  417.         *pdwSize = m_LastBuff->dwSize;
  418.         *ppDst = m_LastBuff->pbBuff;
  419.         *pdwRemain = (DWORD)m_TsBuff.size();
  420. +       bRet = TRUE;
  421.     }else{
  422.         *pdwSize = 0;
  423.         *pdwRemain = 0;
  424.         bRet = FALSE;
  425.     }
  426. +   ::LeaveCriticalSection(&m_CriticalSection);
  427.     return bRet;
  428.  }
  429.  
  430. @@ -497,15 +284,12 @@
  431.  {
  432.     //バッファ解放
  433.     ::EnterCriticalSection(&m_CriticalSection);
  434. -   if( m_LastBuff != NULL ){
  435. -       SAFE_DELETE(m_LastBuff);
  436. +   while (!m_TsBuff.empty()){
  437. +       TS_DATA *p = m_TsBuff.front();
  438. +       m_TsBuff.pop_front();
  439. +       delete p;
  440.     }
  441. -   for( int i=0; i<(int)m_TsBuff.size(); i++ ){
  442. -       SAFE_DELETE(m_TsBuff[i])
  443. -   }
  444. -   m_TsBuff.clear();
  445.     ::LeaveCriticalSection(&m_CriticalSection);
  446. -
  447.  }
  448.  
  449.  LPCTSTR CBonTuner::GetTunerName(void)
  450. @@ -527,29 +311,6 @@
  451.     }else{
  452.         return itr->second.wszName.c_str();
  453.     }
  454. -/*
  455. -#ifdef _ISDB_T
  456. -   switch(dwSpace){
  457. -       case 0:
  458. -           return SPACE_1;
  459. -       case 1:
  460. -           return SPACE_2;
  461. -       case 2:
  462. -           return SPACE_3;
  463. -       default:
  464. -           return NULL;
  465. -   }
  466. -#else
  467. -   switch(dwSpace){
  468. -       case 0:
  469. -           return SPACE_1;
  470. -       case 1:
  471. -           return SPACE_2;
  472. -       default:
  473. -           return NULL;
  474. -   }
  475. -#endif
  476. -*/
  477.  }
  478.  
  479.  LPCTSTR CBonTuner::EnumChannelName(const DWORD dwSpace, const DWORD dwChannel)
  480. @@ -562,50 +323,10 @@
  481.     }else{
  482.         return itr->second.wszName.c_str();
  483.     }
  484. -/*
  485. -#ifdef _ISDB_T
  486. -   switch(dwSpace){
  487. -       case 0:
  488. -           if( sizeof(stUHF)/sizeof(CH_DATA) > dwChannel && m_bUseUHF == TRUE){
  489. -               return stUHF[dwChannel].wszName;
  490. -           }
  491. -           break;
  492. -       case 1:
  493. -           if( sizeof(stCATV)/sizeof(CH_DATA) > dwChannel && m_bUseCATV == TRUE){
  494. -               return stCATV[dwChannel].wszName;
  495. -           }
  496. -           break;
  497. -       case 2:
  498. -           if( sizeof(stVHF)/sizeof(CH_DATA) > dwChannel && m_bUseVHF == TRUE){
  499. -               return stVHF[dwChannel].wszName;
  500. -           }
  501. -           break;
  502. -       default:
  503. -           return NULL;
  504. -   }
  505. -#else
  506. -   switch(dwSpace){
  507. -       case 0:
  508. -           if( sizeof(stBS)/sizeof(CH_DATA) > dwChannel && m_bUseBS == TRUE){
  509. -               return stBS[dwChannel].wszName;
  510. -           }
  511. -           break;
  512. -       case 1:
  513. -           if( sizeof(stCS)/sizeof(CH_DATA) > dwChannel && m_bUseCS == TRUE){
  514. -               return stCS[dwChannel].wszName;
  515. -           }
  516. -           break;
  517. -       default:
  518. -           return NULL;
  519. -   }
  520. -#endif
  521. -   return NULL;
  522. -*/
  523.  }
  524.  
  525.  const BOOL CBonTuner::SetChannel(const DWORD dwSpace, const DWORD dwChannel)
  526.  {
  527. -// if(!EnumChannelName(dwSpace, dwChannel))return FALSE;
  528.     DWORD key = dwSpace<<16 | dwChannel;
  529.     map<DWORD, CH_DATA>::iterator itr;
  530.     itr = m_chSet.chMap.find(key);
  531. @@ -616,38 +337,9 @@
  532.     DWORD dwRet=CMD_ERR;
  533.     if( m_iID != -1 ){
  534.         dwRet=SendSetCh(m_iID, itr->second.dwPT1Ch, itr->second.dwTSID);
  535. -/*
  536. -#ifdef _ISDB_T
  537. -       switch(dwSpace){
  538. -           case 0:
  539. -               dwRet=SendSetCh(m_iID, stUHF[dwChannel].dwPT1Ch, 0);
  540. -               break;
  541. -           case 1:
  542. -               dwRet=SendSetCh(m_iID, stCATV[dwChannel].dwPT1Ch, 0);
  543. -               break;
  544. -           case 2:
  545. -               dwRet=SendSetCh(m_iID, stVHF[dwChannel].dwPT1Ch, 0);
  546. -               break;
  547. -           default:
  548. -               return FALSE;
  549. -       }
  550. -#else
  551. -       switch(dwSpace){
  552. -           case 0:
  553. -               dwRet=SendSetCh(m_iID, stBS[dwChannel].dwPT1Ch, stBS[dwChannel].dwTSID);
  554. -               break;
  555. -           case 1:
  556. -               dwRet=SendSetCh(m_iID, stCS[dwChannel].dwPT1Ch, stCS[dwChannel].dwTSID);
  557. -               break;
  558. -           default:
  559. -               return FALSE;
  560. -       }
  561. -#endif
  562. -*/
  563.     }else{
  564.         return FALSE;
  565.     }
  566. -   Sleep(100);
  567.  
  568.     PurgeTsStream();
  569.  
  570. @@ -689,23 +381,21 @@
  571.             //中止
  572.             break;
  573.         }
  574. -       TS_DATA* pData = new TS_DATA;
  575. -       pData->dwSize = DATA_BUFF_SIZE;
  576. -       pData->pbBuff = new BYTE[pData->dwSize];
  577. -
  578. -       if( SendSendData(pSys->m_iID, pData->pbBuff, &pData->dwSize, strEvent, strPipe) == CMD_SUCCESS ){
  579. +       DWORD dwSize = DATA_BUFF_SIZE;
  580. +       BYTE *pbBuff = new BYTE[DATA_BUFF_SIZE];
  581. +       if( SendSendData(pSys->m_iID, pbBuff, &dwSize, strEvent, strPipe) == CMD_SUCCESS ){
  582. +           TS_DATA *pData = new TS_DATA(pbBuff, dwSize);
  583.             ::EnterCriticalSection(&pSys->m_CriticalSection);
  584. -           if( pSys->m_TsBuff.size() > MAX_BUFF_COUNT ){
  585. -               while( pSys->m_TsBuff.size() > MAX_BUFF_COUNT ){
  586. -                   SAFE_DELETE(pSys->m_TsBuff[0]);
  587. -                   pSys->m_TsBuff.erase( pSys->m_TsBuff.begin() );
  588. -               }
  589. +           while( pSys->m_TsBuff.size() > MAX_BUFF_COUNT ){
  590. +               TS_DATA *p = pSys->m_TsBuff.front();
  591. +               pSys->m_TsBuff.pop_front();
  592. +               delete p;
  593.             }
  594.             pSys->m_TsBuff.push_back(pData);
  595.             ::LeaveCriticalSection(&pSys->m_CriticalSection);
  596.             SetEvent(pSys->m_hOnStreamEvent);
  597.         }else{
  598. -           SAFE_DELETE(pData);
  599. +           delete[] pbBuff;
  600.             Sleep(5);
  601.         }
  602.     }
  603. diff -u -r -N a/src/BonDriver_PT/BonDriver_PT1/BonTuner.h b/src/BonDriver_PT/BonDriver_PT1/BonTuner.h
  604. --- a/src/BonDriver_PT/BonDriver_PT1/BonTuner.h 2011-01-14 19:58:32.000000000 +0900
  605. +++ b/src/BonDriver_PT/BonDriver_PT1/BonTuner.h 2014-11-13 19:24:36.000000000 +0900
  606. @@ -61,15 +61,13 @@
  607.     typedef struct _TS_DATA{
  608.         BYTE* pbBuff;
  609.         DWORD dwSize;
  610. -       _TS_DATA(void){
  611. -           pbBuff = NULL;
  612. -           dwSize = 0;
  613. +       _TS_DATA(BYTE* pb, DWORD dw) : pbBuff(pb), dwSize(dw){
  614.         }
  615.         ~_TS_DATA(void){
  616. -           SAFE_DELETE_ARRAY(pbBuff);
  617. +           delete[] pbBuff;
  618.         }
  619.     } TS_DATA;
  620. -   vector<TS_DATA*> m_TsBuff;
  621. +   deque<TS_DATA*> m_TsBuff;
  622.     TS_DATA* m_LastBuff;
  623.  
  624.     HANDLE m_hStopEvent;
  625. @@ -87,7 +85,7 @@
  626.  
  627.     wstring m_strTunerName;
  628.  
  629. -   CParseChSet m_chSet;   
  630. +   CParseChSet m_chSet;
  631.  
  632.  protected:
  633.     static UINT WINAPI RecvThread(LPVOID pParam);
  634. diff -u -r -N a/src/Common/Util.h b/src/Common/Util.h
  635. --- a/src/Common/Util.h 2011-01-16 13:55:36.000000000 +0900
  636. +++ b/src/Common/Util.h 2014-11-13 19:24:36.000000000 +0900
  637. @@ -17,6 +17,7 @@
  638.  #include <string>
  639.  #include <map>
  640.  #include <vector>
  641. +#include <deque>
  642.  #endif
  643.  using namespace std;
  644.  #include <TCHAR.h>
  645. diff -u -r -N a/src/PTCtrl/PT1Ctrl/DataIO.cpp b/src/PTCtrl/PT1Ctrl/DataIO.cpp
  646. --- a/src/PTCtrl/PT1Ctrl/DataIO.cpp 2009-01-02 19:09:06.000000000 +0900
  647. +++ b/src/PTCtrl/PT1Ctrl/DataIO.cpp 2014-11-13 19:24:36.000000000 +0900
  648. @@ -22,24 +22,26 @@
  649.     m_S1SetBuff = NULL;
  650.  
  651.     for( int i=0; i<4; i++ ){
  652. +#ifndef USE_DEQUE
  653.         BUFF_DATA* pDataBuff = new BUFF_DATA;
  654.         pDataBuff->dwSize = DATA_BUFF_SIZE;
  655.         pDataBuff->pbBuff = new BYTE[DATA_BUFF_SIZE];
  656. +#else
  657. +       BUFF_DATA *pDataBuff = new BUFF_DATA(DATA_BUFF_SIZE);
  658. +#endif
  659.         switch(i){
  660. -           case 1:
  661. +           case 0:
  662.                 m_T0SetBuff = pDataBuff;
  663.                 break;
  664. -           case 2:
  665. +           case 1:
  666.                 m_T1SetBuff = pDataBuff;
  667.                 break;
  668. -           case 3:
  669. +           case 2:
  670.                 m_S0SetBuff = pDataBuff;
  671.                 break;
  672. -           case 4:
  673. +           case 3:
  674.                 m_S1SetBuff = pDataBuff;
  675.                 break;
  676. -           default:
  677. -               break;
  678.         }
  679.     }
  680.  
  681. @@ -77,6 +79,7 @@
  682.     SAFE_DELETE(m_S0SetBuff);
  683.     SAFE_DELETE(m_S1SetBuff);
  684.  
  685. +#ifndef USE_DEQUE
  686.     for( int i=0; i<(int)m_T0Buff.size(); i++ ){
  687.         SAFE_DELETE(m_T0Buff[i]);
  688.     }
  689. @@ -89,7 +92,28 @@
  690.     for( int i=0; i<(int)m_S1Buff.size(); i++ ){
  691.         SAFE_DELETE(m_S1Buff[i]);
  692.     }
  693. -
  694. +#else
  695. +   while (!m_T0Buff.empty()){
  696. +       BUFF_DATA *p = m_T0Buff.front();
  697. +       m_T0Buff.pop_front();
  698. +       delete p;
  699. +   }
  700. +   while (!m_T1Buff.empty()){
  701. +       BUFF_DATA *p = m_T1Buff.front();
  702. +       m_T1Buff.pop_front();
  703. +       delete p;
  704. +   }
  705. +   while (!m_S0Buff.empty()){
  706. +       BUFF_DATA *p = m_S0Buff.front();
  707. +       m_S0Buff.pop_front();
  708. +       delete p;
  709. +   }
  710. +   while (!m_S1Buff.empty()){
  711. +       BUFF_DATA *p = m_S1Buff.front();
  712. +       m_S1Buff.pop_front();
  713. +       delete p;
  714. +   }
  715. +#endif
  716.     if( m_hEvent1 != NULL ){
  717.         UnLock1();
  718.         CloseHandle(m_hEvent1);
  719. @@ -193,40 +217,76 @@
  720.         if( iTuner == 0 ){
  721.             Lock1();
  722.             m_dwT0OverFlowCount = 0;
  723. +#ifndef USE_DEQUE
  724.             SAFE_DELETE(m_T0SetBuff);
  725.             for( int i=0; i<(int)m_T0Buff.size(); i++ ){
  726.                 SAFE_DELETE(m_T0Buff[i]);
  727.             }
  728.             m_T0Buff.clear();
  729. +#else
  730. +           m_T0SetBuff->dwSetSize = 0;
  731. +           while (!m_T0Buff.empty()){
  732. +               BUFF_DATA *p = m_T0Buff.front();
  733. +               m_T0Buff.pop_front();
  734. +               delete p;
  735. +           }
  736. +#endif
  737.             UnLock1();
  738.         }else{
  739.             Lock2();
  740.             m_dwT1OverFlowCount = 0;
  741. +#ifndef USE_DEQUE
  742.             SAFE_DELETE(m_T1SetBuff);
  743.             for( int i=0; i<(int)m_T1Buff.size(); i++ ){
  744.                 SAFE_DELETE(m_T1Buff[i]);
  745.             }
  746.             m_T1Buff.clear();
  747. +#else
  748. +           m_T1SetBuff->dwSetSize = 0;
  749. +           while (!m_T1Buff.empty()){
  750. +               BUFF_DATA *p = m_T1Buff.front();
  751. +               m_T1Buff.pop_front();
  752. +               delete p;
  753. +           }
  754. +#endif
  755.             UnLock2();
  756.         }
  757.     }else{
  758.         if( iTuner == 0 ){
  759.             Lock3();
  760.             m_dwS0OverFlowCount = 0;
  761. +#ifndef USE_DEQUE
  762.             SAFE_DELETE(m_S0SetBuff);
  763.             for( int i=0; i<(int)m_S0Buff.size(); i++ ){
  764.                 SAFE_DELETE(m_S0Buff[i]);
  765.             }
  766.             m_S0Buff.clear();
  767. +#else
  768. +           m_S0SetBuff->dwSetSize = 0;
  769. +           while (!m_S0Buff.empty()){
  770. +               BUFF_DATA *p = m_S0Buff.front();
  771. +               m_S0Buff.pop_front();
  772. +               delete p;
  773. +           }
  774. +#endif
  775.             UnLock3();
  776.         }else{
  777.             Lock4();
  778.             m_dwS1OverFlowCount = 0;
  779. +#ifndef USE_DEQUE
  780.             SAFE_DELETE(m_S1SetBuff);
  781.             for( int i=0; i<(int)m_S1Buff.size(); i++ ){
  782.                 SAFE_DELETE(m_S1Buff[i]);
  783.             }
  784.             m_S1Buff.clear();
  785. +#else
  786. +           m_S1SetBuff->dwSetSize = 0;
  787. +           while (!m_S1Buff.empty()){
  788. +               BUFF_DATA *p = m_S1Buff.front();
  789. +               m_S1Buff.pop_front();
  790. +               delete p;
  791. +           }
  792. +#endif
  793.             UnLock4();
  794.         }
  795.     }
  796. @@ -397,6 +457,7 @@
  797.     if( bEnable == TRUE ){
  798.         if( enISDB == PT::Device::ISDB_T ){
  799.             if( iTuner == 0 ){
  800. +#ifndef USE_DEQUE
  801.                 if( m_T0SetBuff == NULL ){
  802.                     Lock1();
  803.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  804. @@ -406,8 +467,10 @@
  805.                     m_dwT0OverFlowCount = 0;
  806.                     UnLock1();
  807.                 }
  808. +#endif
  809.                 m_cPipeT0.StartServer(strEvent.c_str(), strPipe.c_str(), OutsideCmdCallbackT0, this, THREAD_PRIORITY_ABOVE_NORMAL);
  810.             }else{
  811. +#ifndef USE_DEQUE
  812.                 if( m_T1SetBuff == NULL ){
  813.                     Lock2();
  814.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  815. @@ -417,10 +480,12 @@
  816.                     m_dwT1OverFlowCount = 0;
  817.                     UnLock2();
  818.                 }
  819. +#endif
  820.                 m_cPipeT1.StartServer(strEvent.c_str(), strPipe.c_str(), OutsideCmdCallbackT1, this, THREAD_PRIORITY_ABOVE_NORMAL);
  821.             }
  822.         }else{
  823.             if( iTuner == 0 ){
  824. +#ifndef USE_DEQUE
  825.                 if( m_S0SetBuff == NULL ){
  826.                     Lock3();
  827.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  828. @@ -430,8 +495,10 @@
  829.                     m_dwS0OverFlowCount = 0;
  830.                     UnLock3();
  831.                 }
  832. +#endif
  833.                 m_cPipeS0.StartServer(strEvent.c_str(), strPipe.c_str(), OutsideCmdCallbackS0, this, THREAD_PRIORITY_ABOVE_NORMAL);
  834.             }else{
  835. +#ifndef USE_DEQUE
  836.                 if( m_S1SetBuff == NULL ){
  837.                     Lock4();
  838.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  839. @@ -441,6 +508,7 @@
  840.                     m_dwS1OverFlowCount = 0;
  841.                     UnLock4();
  842.                 }
  843. +#endif
  844.                 m_cPipeS1.StartServer(strEvent.c_str(), strPipe.c_str(), OutsideCmdCallbackS1, this, THREAD_PRIORITY_ABOVE_NORMAL);
  845.             }
  846.         }
  847. @@ -450,21 +518,39 @@
  848.                 m_cPipeT0.StopServer();
  849.                 Lock1();
  850.                 m_dwT0OverFlowCount = 0;
  851. +#ifndef USE_DEQUE
  852.                 SAFE_DELETE(m_T0SetBuff);
  853.                 for( int i=0; i<(int)m_T0Buff.size(); i++ ){
  854.                     SAFE_DELETE(m_T0Buff[i]);
  855.                 }
  856.                 m_T0Buff.clear();
  857. +#else
  858. +               m_T0SetBuff->dwSetSize = 0;
  859. +               while (!m_T0Buff.empty()){
  860. +                   BUFF_DATA *p = m_T0Buff.front();
  861. +                   m_T0Buff.pop_front();
  862. +                   delete p;
  863. +               }
  864. +#endif
  865.                 UnLock1();
  866.             }else{
  867.                 m_cPipeT1.StopServer();
  868.                 Lock2();
  869.                 m_dwT1OverFlowCount = 0;
  870. +#ifndef USE_DEQUE
  871.                 SAFE_DELETE(m_T1SetBuff);
  872.                 for( int i=0; i<(int)m_T1Buff.size(); i++ ){
  873.                     SAFE_DELETE(m_T1Buff[i]);
  874.                 }
  875.                 m_T1Buff.clear();
  876. +#else
  877. +               m_T1SetBuff->dwSetSize = 0;
  878. +               while (!m_T1Buff.empty()){
  879. +                   BUFF_DATA *p = m_T1Buff.front();
  880. +                   m_T1Buff.pop_front();
  881. +                   delete p;
  882. +               }
  883. +#endif
  884.                 UnLock2();
  885.             }
  886.         }else{
  887. @@ -472,21 +558,39 @@
  888.                 m_cPipeS0.StopServer();
  889.                 Lock3();
  890.                 m_dwS0OverFlowCount = 0;
  891. +#ifndef USE_DEQUE
  892.                 SAFE_DELETE(m_S0SetBuff);
  893.                 for( int i=0; i<(int)m_S0Buff.size(); i++ ){
  894.                     SAFE_DELETE(m_S0Buff[i]);
  895.                 }
  896.                 m_S0Buff.clear();
  897. +#else
  898. +               m_S0SetBuff->dwSetSize = 0;
  899. +               while (!m_S0Buff.empty()){
  900. +                   BUFF_DATA *p = m_S0Buff.front();
  901. +                   m_S0Buff.pop_front();
  902. +                   delete p;
  903. +               }
  904. +#endif
  905.                 UnLock3();
  906.             }else{
  907.                 m_cPipeS1.StopServer();
  908.                 Lock4();
  909.                 m_dwS1OverFlowCount = 0;
  910. +#ifndef USE_DEQUE
  911.                 SAFE_DELETE(m_S1SetBuff);
  912.                 for( int i=0; i<(int)m_S1Buff.size(); i++ ){
  913.                     SAFE_DELETE(m_S1Buff[i]);
  914.                 }
  915.                 m_S1Buff.clear();
  916. +#else
  917. +               m_S1SetBuff->dwSetSize = 0;
  918. +               while (!m_S1Buff.empty()){
  919. +                   BUFF_DATA *p = m_S1Buff.front();
  920. +                   m_S1Buff.pop_front();
  921. +                   delete p;
  922. +               }
  923. +#endif
  924.                 UnLock4();
  925.             }
  926.         }
  927. @@ -663,25 +767,37 @@
  928.             bCreate1TS = m_cT0Micro.MicroPacket(pbPacket);
  929.             if( bCreate1TS == TRUE && m_T0SetBuff != NULL){
  930.                 Lock1();
  931. +#ifndef USE_DEQUE
  932.                 if( m_T0SetBuff == NULL ){
  933.                     UnLock1();
  934.                     return ;
  935.                 }
  936. +#endif
  937.                 memcpy(m_T0SetBuff->pbBuff+m_T0SetBuff->dwSetSize, m_cT0Micro.Get1TS(), 188);
  938.                 m_T0SetBuff->dwSetSize+=188;
  939.                 if( m_T0SetBuff->dwSetSize >= m_T0SetBuff->dwSize ){
  940.                     m_T0Buff.push_back(m_T0SetBuff);
  941.  
  942. +#ifndef USE_DEQUE
  943.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  944.                     pDataBuff->dwSize = DATA_BUFF_SIZE;
  945.                     pDataBuff->pbBuff = new BYTE[DATA_BUFF_SIZE];
  946.                     m_T0SetBuff = pDataBuff;
  947. +#else
  948. +                   m_T0SetBuff = new BUFF_DATA(DATA_BUFF_SIZE);
  949. +#endif
  950.  
  951.                     if( m_T0Buff.size() > MAX_DATA_BUFF_COUNT ){
  952. +#ifndef USE_DEQUE
  953.                         SAFE_DELETE(m_T0Buff[0]);
  954.                         m_T0Buff.erase(m_T0Buff.begin());
  955. +#else
  956. +                       BUFF_DATA *p = m_T0Buff.front();
  957. +                       m_T0Buff.pop_front();
  958. +                       delete p;
  959. +#endif
  960.                         m_dwT0OverFlowCount++;
  961. -                       OutputDebugString(L"Buff Full");
  962. +                       OutputDebugString(L"T0 Buff Full");
  963.                     }else{
  964.                         m_dwT0OverFlowCount = 0;
  965.                     }
  966. @@ -693,25 +809,37 @@
  967.             bCreate1TS = m_cT1Micro.MicroPacket(pbPacket);
  968.             if( bCreate1TS == TRUE && m_T1SetBuff != NULL){
  969.                 Lock2();
  970. +#ifndef USE_DEQUE
  971.                 if( m_T1SetBuff == NULL ){
  972.                     UnLock2();
  973.                     return ;
  974.                 }
  975. +#endif
  976.                 memcpy(m_T1SetBuff->pbBuff+m_T1SetBuff->dwSetSize, m_cT1Micro.Get1TS(), 188);
  977.                 m_T1SetBuff->dwSetSize+=188;
  978.                 if( m_T1SetBuff->dwSetSize >= m_T1SetBuff->dwSize ){
  979.                     m_T1Buff.push_back(m_T1SetBuff);
  980.  
  981. +#ifndef USE_DEQUE
  982.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  983.                     pDataBuff->dwSize = DATA_BUFF_SIZE;
  984.                     pDataBuff->pbBuff = new BYTE[DATA_BUFF_SIZE];
  985.                     m_T1SetBuff = pDataBuff;
  986. +#else
  987. +                   m_T1SetBuff = new BUFF_DATA(DATA_BUFF_SIZE);
  988. +#endif
  989.  
  990.                     if( m_T1Buff.size() > MAX_DATA_BUFF_COUNT ){
  991. +#ifndef USE_DEQUE
  992.                         SAFE_DELETE(m_T1Buff[0]);
  993.                         m_T1Buff.erase(m_T1Buff.begin());
  994. +#else
  995. +                       BUFF_DATA *p = m_T1Buff.front();
  996. +                       m_T1Buff.pop_front();
  997. +                       delete p;
  998. +#endif
  999.                         m_dwT1OverFlowCount++;
  1000. -                       OutputDebugString(L"Buff Full");
  1001. +                       OutputDebugString(L"T1 Buff Full");
  1002.                     }else{
  1003.                         m_dwT1OverFlowCount = 0;
  1004.                     }
  1005. @@ -723,25 +851,37 @@
  1006.             bCreate1TS = m_cS0Micro.MicroPacket(pbPacket);
  1007.             if( bCreate1TS == TRUE && m_S0SetBuff != NULL){
  1008.                 Lock3();
  1009. +#ifndef USE_DEQUE
  1010.                 if( m_S0SetBuff == NULL ){
  1011.                     UnLock3();
  1012.                     return ;
  1013.                 }
  1014. +#endif
  1015.                 memcpy(m_S0SetBuff->pbBuff+m_S0SetBuff->dwSetSize, m_cS0Micro.Get1TS(), 188);
  1016.                 m_S0SetBuff->dwSetSize+=188;
  1017.                 if( m_S0SetBuff->dwSetSize >= m_S0SetBuff->dwSize ){
  1018.                     m_S0Buff.push_back(m_S0SetBuff);
  1019.  
  1020. +#ifndef USE_DEQUE
  1021.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  1022.                     pDataBuff->dwSize = DATA_BUFF_SIZE;
  1023.                     pDataBuff->pbBuff = new BYTE[DATA_BUFF_SIZE];
  1024.                     m_S0SetBuff = pDataBuff;
  1025. +#else
  1026. +                   m_S0SetBuff = new BUFF_DATA(DATA_BUFF_SIZE);
  1027. +#endif
  1028.  
  1029.                     if( m_S0Buff.size() > MAX_DATA_BUFF_COUNT ){
  1030. +#ifndef USE_DEQUE
  1031.                         SAFE_DELETE(m_S0Buff[0]);
  1032.                         m_S0Buff.erase(m_S0Buff.begin());
  1033. +#else
  1034. +                       BUFF_DATA *p = m_S0Buff.front();
  1035. +                       m_S0Buff.pop_front();
  1036. +                       delete p;
  1037. +#endif
  1038.                         m_dwS0OverFlowCount++;
  1039. -                       OutputDebugString(L"Buff Full");
  1040. +                       OutputDebugString(L"S0 Buff Full");
  1041.                     }else{
  1042.                         m_dwS0OverFlowCount = 0;
  1043.                     }
  1044. @@ -753,25 +893,37 @@
  1045.             bCreate1TS = m_cS1Micro.MicroPacket(pbPacket);
  1046.             if( bCreate1TS == TRUE && m_S1SetBuff != NULL){
  1047.                 Lock4();
  1048. +#ifndef USE_DEQUE
  1049.                 if( m_S1SetBuff == NULL ){
  1050.                     UnLock4();
  1051.                     return ;
  1052.                 }
  1053. +#endif
  1054.                 memcpy(m_S1SetBuff->pbBuff+m_S1SetBuff->dwSetSize, m_cS1Micro.Get1TS(), 188);
  1055.                 m_S1SetBuff->dwSetSize+=188;
  1056.                 if( m_S1SetBuff->dwSetSize >= m_S1SetBuff->dwSize ){
  1057.                     m_S1Buff.push_back(m_S1SetBuff);
  1058.  
  1059. +#ifndef USE_DEQUE
  1060.                     BUFF_DATA* pDataBuff = new BUFF_DATA;
  1061.                     pDataBuff->dwSize = DATA_BUFF_SIZE;
  1062.                     pDataBuff->pbBuff = new BYTE[DATA_BUFF_SIZE];
  1063.                     m_S1SetBuff = pDataBuff;
  1064. +#else
  1065. +                   m_S1SetBuff = new BUFF_DATA(DATA_BUFF_SIZE);
  1066. +#endif
  1067.  
  1068.                     if( m_S1Buff.size() > MAX_DATA_BUFF_COUNT ){
  1069. +#ifndef USE_DEQUE
  1070.                         SAFE_DELETE(m_S1Buff[0]);
  1071.                         m_S1Buff.erase(m_S1Buff.begin());
  1072. +#else
  1073. +                       BUFF_DATA *p = m_S1Buff.front();
  1074. +                       m_S1Buff.pop_front();
  1075. +                       delete p;
  1076. +#endif
  1077.                         m_dwS1OverFlowCount++;
  1078. -                       OutputDebugString(L"Buff Full");
  1079. +                       OutputDebugString(L"S1 Buff Full");
  1080.                     }else{
  1081.                         m_dwS1OverFlowCount = 0;
  1082.                     }
  1083. @@ -850,48 +1002,84 @@
  1084.         case 0:
  1085.             Lock1();
  1086.             if( m_T0Buff.size() > 0 ){
  1087. +#ifndef USE_DEQUE
  1088.                 pResParam->dwSize = m_T0Buff[0]->dwSize;
  1089.                 pResParam->bData = new BYTE[pResParam->dwSize];
  1090.                 memcpy(pResParam->bData, m_T0Buff[0]->pbBuff, pResParam->dwSize);
  1091. -               bSend = TRUE;
  1092.                 SAFE_DELETE(m_T0Buff[0]);
  1093.                 m_T0Buff.erase(m_T0Buff.begin());
  1094. +#else
  1095. +               BUFF_DATA *p = m_T0Buff.front();
  1096. +               m_T0Buff.pop_front();
  1097. +               pResParam->dwSize = p->dwSize;
  1098. +               pResParam->bData = p->pbBuff;
  1099. +               p->pbBuff = NULL;   // ポインタをコピーしてるのでdelete pで削除されないようにする
  1100. +               delete p;
  1101. +#endif
  1102. +               bSend = TRUE;
  1103.             }
  1104.             UnLock1();
  1105.             break;
  1106.         case 1:
  1107.             Lock2();
  1108.             if( m_T1Buff.size() > 0 ){
  1109. +#ifndef USE_DEQUE
  1110.                 pResParam->dwSize = m_T1Buff[0]->dwSize;
  1111.                 pResParam->bData = new BYTE[pResParam->dwSize];
  1112.                 memcpy(pResParam->bData, m_T1Buff[0]->pbBuff, pResParam->dwSize);
  1113. -               bSend = TRUE;
  1114.                 SAFE_DELETE(m_T1Buff[0]);
  1115.                 m_T1Buff.erase(m_T1Buff.begin());
  1116. +#else
  1117. +               BUFF_DATA *p = m_T1Buff.front();
  1118. +               m_T1Buff.pop_front();
  1119. +               pResParam->dwSize = p->dwSize;
  1120. +               pResParam->bData = p->pbBuff;
  1121. +               p->pbBuff = NULL;   // ポインタをコピーしてるのでdelete pで削除されないようにする
  1122. +               delete p;
  1123. +#endif
  1124. +               bSend = TRUE;
  1125.             }
  1126.             UnLock2();
  1127.             break;
  1128.         case 2:
  1129.             Lock3();
  1130.             if( m_S0Buff.size() > 0 ){
  1131. +#ifndef USE_DEQUE
  1132.                 pResParam->dwSize = m_S0Buff[0]->dwSize;
  1133.                 pResParam->bData = new BYTE[pResParam->dwSize];
  1134.                 memcpy(pResParam->bData, m_S0Buff[0]->pbBuff, pResParam->dwSize);
  1135. -               bSend = TRUE;
  1136.                 SAFE_DELETE(m_S0Buff[0]);
  1137.                 m_S0Buff.erase(m_S0Buff.begin());
  1138. +#else
  1139. +               BUFF_DATA *p = m_S0Buff.front();
  1140. +               m_S0Buff.pop_front();
  1141. +               pResParam->dwSize = p->dwSize;
  1142. +               pResParam->bData = p->pbBuff;
  1143. +               p->pbBuff = NULL;   // ポインタをコピーしてるのでdelete pで削除されないようにする
  1144. +               delete p;
  1145. +#endif
  1146. +               bSend = TRUE;
  1147.             }
  1148.             UnLock3();
  1149.             break;
  1150.         case 3:
  1151.             Lock4();
  1152.             if( m_S1Buff.size() > 0 ){
  1153. +#ifndef USE_DEQUE
  1154.                 pResParam->dwSize = m_S1Buff[0]->dwSize;
  1155.                 pResParam->bData = new BYTE[pResParam->dwSize];
  1156.                 memcpy(pResParam->bData, m_S1Buff[0]->pbBuff, pResParam->dwSize);
  1157. -               bSend = TRUE;
  1158.                 SAFE_DELETE(m_S1Buff[0]);
  1159.                 m_S1Buff.erase(m_S1Buff.begin());
  1160. +#else
  1161. +               BUFF_DATA *p = m_S1Buff.front();
  1162. +               m_S1Buff.pop_front();
  1163. +               pResParam->dwSize = p->dwSize;
  1164. +               pResParam->bData = p->pbBuff;
  1165. +               p->pbBuff = NULL;   // ポインタをコピーしてるのでdelete pで削除されないようにする
  1166. +               delete p;
  1167. +#endif
  1168. +               bSend = TRUE;
  1169.             }
  1170.             UnLock4();
  1171.             break;
  1172. diff -u -r -N a/src/PTCtrl/PT1Ctrl/DataIO.h b/src/PTCtrl/PT1Ctrl/DataIO.h
  1173. --- a/src/PTCtrl/PT1Ctrl/DataIO.h   2008-11-06 00:02:26.000000000 +0900
  1174. +++ b/src/PTCtrl/PT1Ctrl/DataIO.h   2014-11-13 19:24:36.000000000 +0900
  1175. @@ -1,5 +1,7 @@
  1176.  #pragma once
  1177.  
  1178. +#define USE_DEQUE
  1179. +
  1180.  #include "inc/EARTH_PT.h"
  1181.  #include "inc/Prefix.h"
  1182.  #include "../../Common/PT1OutsideCtrlCmdDef.h"
  1183. @@ -47,6 +49,7 @@
  1184.     CPipeServer m_cPipeS0;
  1185.     CPipeServer m_cPipeS1;
  1186.  
  1187. +#ifndef USE_DEQUE
  1188.     typedef struct _BUFF_DATA{
  1189.         BYTE* pbBuff;
  1190.         DWORD dwSize;
  1191. @@ -65,6 +68,25 @@
  1192.     vector<BUFF_DATA*> m_T1Buff;
  1193.     vector<BUFF_DATA*> m_S0Buff;
  1194.     vector<BUFF_DATA*> m_S1Buff;
  1195. +#else
  1196. +   typedef struct _BUFF_DATA{
  1197. +       BYTE* pbBuff;
  1198. +       DWORD dwSize;
  1199. +       DWORD dwSetSize;
  1200. +       _BUFF_DATA(DWORD dw) : dwSize(dw){
  1201. +           pbBuff = new BYTE[dw];
  1202. +           dwSetSize = 0;
  1203. +       }
  1204. +       ~_BUFF_DATA(void){
  1205. +           delete[] pbBuff;
  1206. +       }
  1207. +   }BUFF_DATA;
  1208. +
  1209. +   deque<BUFF_DATA*> m_T0Buff;
  1210. +   deque<BUFF_DATA*> m_T1Buff;
  1211. +   deque<BUFF_DATA*> m_S0Buff;
  1212. +   deque<BUFF_DATA*> m_S1Buff;
  1213. +#endif
  1214.  
  1215.     BUFF_DATA* m_T0SetBuff;
  1216.     BUFF_DATA* m_T1SetBuff;
  1217. diff -u -r -N a/src/PTCtrl/PT1Ctrl/PT1Manager.cpp b/src/PTCtrl/PT1Ctrl/PT1Manager.cpp
  1218. --- a/src/PTCtrl/PT1Ctrl/PT1Manager.cpp 2009-11-23 19:45:38.000000000 +0900
  1219. +++ b/src/PTCtrl/PT1Ctrl/PT1Manager.cpp 2014-11-13 19:24:36.000000000 +0900
  1220. @@ -41,13 +41,11 @@
  1221.         PT::Bus::NewBusFunction function = m_cLibrary->Function();
  1222.         if (function == NULL) {
  1223.             SAFE_DELETE(m_cLibrary);
  1224. -           m_cLibrary = NULL;
  1225.             return FALSE;
  1226.         }
  1227.         status enStatus = function(&m_cBus);
  1228.         if( enStatus != PT::STATUS_OK ){
  1229.             SAFE_DELETE(m_cLibrary);
  1230. -           m_cLibrary = NULL;
  1231.             return FALSE;
  1232.         }
  1233.  
  1234. @@ -56,9 +54,8 @@
  1235.         m_cBus->GetVersion(&version);
  1236.         if ((version >> 8) != 2) {
  1237.             m_cBus->Delete();
  1238. -           SAFE_DELETE(m_cLibrary);
  1239. -           m_cLibrary = NULL;
  1240.             m_cBus = NULL;
  1241. +           SAFE_DELETE(m_cLibrary);
  1242.             return FALSE;
  1243.         }
  1244.     }
  1245. @@ -83,7 +80,6 @@
  1246.     }
  1247.     if( m_cLibrary != NULL ){
  1248.         SAFE_DELETE(m_cLibrary);
  1249. -       m_cLibrary = NULL;
  1250.     }
  1251.  }
  1252.  
  1253. @@ -177,20 +173,33 @@
  1254.         if( enStatus != PT::STATUS_OK ){
  1255.             return -1;
  1256.         }
  1257. -       enStatus = m_EnumDev[iDevID]->pcDevice->Open();
  1258. -       if( enStatus != PT::STATUS_OK ){
  1259. +       for( int i = 0; i < 5; i++ ){
  1260. +           enStatus = m_EnumDev[iDevID]->pcDevice->Open();
  1261. +           if( enStatus == PT::STATUS_OK ){
  1262. +               break;
  1263. +           }
  1264. +           m_EnumDev[iDevID]->pcDevice->Close();
  1265. +           Sleep(10);
  1266. +       }
  1267. +       if (enStatus != PT::STATUS_OK){
  1268. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1269. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1270.             return -1;
  1271.         }
  1272.  
  1273.         enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerPowerReset(PT::Device::TUNER_POWER_ON_RESET_ENABLE);
  1274.         if( enStatus != PT::STATUS_OK ){
  1275.             m_EnumDev[iDevID]->pcDevice->Close();
  1276. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1277. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1278.             return -1;
  1279.         }
  1280.         Sleep(21);
  1281.         enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerPowerReset(PT::Device::TUNER_POWER_ON_RESET_DISABLE);
  1282.         if( enStatus != PT::STATUS_OK ){
  1283.             m_EnumDev[iDevID]->pcDevice->Close();
  1284. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1285. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1286.             return -1;
  1287.         }
  1288.         Sleep(2);
  1289. @@ -198,6 +207,8 @@
  1290.             enStatus = m_EnumDev[iDevID]->pcDevice->InitTuner(i);
  1291.             if( enStatus != PT::STATUS_OK ){
  1292.                 m_EnumDev[iDevID]->pcDevice->Close();
  1293. +               m_EnumDev[iDevID]->pcDevice->Delete();
  1294. +               m_EnumDev[iDevID]->pcDevice = NULL;
  1295.                 return -1;
  1296.             }
  1297.         }
  1298. @@ -206,6 +217,8 @@
  1299.                 enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerSleep(i, static_cast<PT::Device::ISDB>(j), true);
  1300.                 if( enStatus != PT::STATUS_OK ){
  1301.                     m_EnumDev[iDevID]->pcDevice->Close();
  1302. +                   m_EnumDev[iDevID]->pcDevice->Delete();
  1303. +                   m_EnumDev[iDevID]->pcDevice = NULL;
  1304.                     return -1;
  1305.                 }
  1306.             }
  1307. @@ -386,7 +399,7 @@
  1308.             }
  1309.         }
  1310.         if( m_EnumDev[i]->bUseS1 == TRUE ){
  1311. -           iID = (i<<16) | (PT::Device::ISDB_S<<8) | 0;
  1312. +           iID = (i<<16) | (PT::Device::ISDB_S<<8) | 1;
  1313.             if(m_EnumDev[i]->cDataIO.GetOverFlowCount(iID) > 100){
  1314.                 OutputDebugString(L"S1 OverFlow Close");
  1315.                 CloseTuner(iID);
  1316. @@ -407,8 +420,12 @@
  1317.     int iDevID = -1;
  1318.     PT::Device::ISDB enISDB;
  1319.     uint iTuner = -1;
  1320. +   char log[256];
  1321. +
  1322.     //指定チューナーが空いてるか確認
  1323.     if( (int)m_EnumDev.size() <= iTunerID/2 ){
  1324. +       wsprintfA(log, "tuner not found: m_EnumDev.size()[%d] iTunerID[%d]\n", (int)m_EnumDev.size(), iTunerID);
  1325. +       OutputDebugStringA(log);
  1326.         return -1;
  1327.     }
  1328.     iDevID = iTunerID/2;
  1329. @@ -443,7 +460,9 @@
  1330.             }
  1331.         }
  1332.     }
  1333. +   _RPT3(_CRT_WARN, "*** CPT1Manager::OpenTuner2() : iDevID[%d] bSate[%d] iTunerID[%d] ***\n", iDevID, bSate, iTunerID);
  1334.     if( iTuner == -1 ){
  1335. +       OutputDebugStringA("unused tuner not found\n");
  1336.         return -1;
  1337.     }
  1338.     status enStatus;
  1339. @@ -451,22 +470,44 @@
  1340.         //デバイス初オープン
  1341.         enStatus = m_cBus->NewDevice(&m_EnumDev[iDevID]->stDevInfo, &m_EnumDev[iDevID]->pcDevice, NULL);
  1342.         if( enStatus != PT::STATUS_OK ){
  1343. +           wsprintfA(log, "m_cBus->NewDevice() error : enStatus[0x%x]\n", enStatus);
  1344. +           OutputDebugStringA(log);
  1345.             return -1;
  1346.         }
  1347. -       enStatus = m_EnumDev[iDevID]->pcDevice->Open();
  1348. +       for( int i = 0; i < 5; i++ ){
  1349. +           enStatus = m_EnumDev[iDevID]->pcDevice->Open();
  1350. +           if( enStatus == PT::STATUS_OK ){
  1351. +               break;
  1352. +           }
  1353. +           wsprintfA(log, "%d: pcDevice->Open() error : enStatus[0x%x]\n", i, enStatus);
  1354. +           OutputDebugStringA(log);
  1355. +           // PT::STATUS_DEVICE_IS_ALREADY_OPEN_ERRORの場合は考慮しない
  1356. +           m_EnumDev[iDevID]->pcDevice->Close();
  1357. +           Sleep(10);  // 保険
  1358. +       }
  1359.         if( enStatus != PT::STATUS_OK ){
  1360. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1361. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1362.             return -1;
  1363.         }
  1364.  
  1365.         enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerPowerReset(PT::Device::TUNER_POWER_ON_RESET_ENABLE);
  1366.         if( enStatus != PT::STATUS_OK ){
  1367.             m_EnumDev[iDevID]->pcDevice->Close();
  1368. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1369. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1370. +           wsprintfA(log, "pcDevice->SetTunerPowerReset(ENABLE) error : enStatus[0x%x]\n", enStatus);
  1371. +           OutputDebugStringA(log);
  1372.             return -1;
  1373.         }
  1374.         Sleep(20);
  1375.         enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerPowerReset(PT::Device::TUNER_POWER_ON_RESET_DISABLE);
  1376.         if( enStatus != PT::STATUS_OK ){
  1377.             m_EnumDev[iDevID]->pcDevice->Close();
  1378. +           m_EnumDev[iDevID]->pcDevice->Delete();
  1379. +           m_EnumDev[iDevID]->pcDevice = NULL;
  1380. +           wsprintfA(log, "pcDevice->SetTunerPowerReset(DISABLE) error : enStatus[0x%x]\n", enStatus);
  1381. +           OutputDebugStringA(log);
  1382.             return -1;
  1383.         }
  1384.         Sleep(1);
  1385. @@ -474,6 +515,10 @@
  1386.             enStatus = m_EnumDev[iDevID]->pcDevice->InitTuner(i);
  1387.             if( enStatus != PT::STATUS_OK ){
  1388.                 m_EnumDev[iDevID]->pcDevice->Close();
  1389. +               m_EnumDev[iDevID]->pcDevice->Delete();
  1390. +               m_EnumDev[iDevID]->pcDevice = NULL;
  1391. +               wsprintfA(log, "pcDevice->InitTuner(%d) error : enStatus[0x%x]\n", i, enStatus);
  1392. +               OutputDebugStringA(log);
  1393.                 return -1;
  1394.             }
  1395.         }
  1396. @@ -482,6 +527,10 @@
  1397.                 enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerSleep(i, static_cast<PT::Device::ISDB>(j), true);
  1398.                 if( enStatus != PT::STATUS_OK ){
  1399.                     m_EnumDev[iDevID]->pcDevice->Close();
  1400. +                   m_EnumDev[iDevID]->pcDevice->Delete();
  1401. +                   m_EnumDev[iDevID]->pcDevice = NULL;
  1402. +                   wsprintfA(log, "pcDevice->SetTunerSleep(%d, %d, true) error : enStatus[0x%x]\n", i, j, enStatus);
  1403. +                   OutputDebugStringA(log);
  1404.                     return -1;
  1405.                 }
  1406.             }
  1407. @@ -494,6 +543,8 @@
  1408.     //スリープから復帰
  1409.     enStatus = m_EnumDev[iDevID]->pcDevice->SetTunerSleep(iTuner, enISDB, false);
  1410.     if( enStatus != PT::STATUS_OK ){
  1411. +       wsprintfA(log, "pcDevice->SetTunerSleep(%d, %d, false) error : enStatus[0x%x]\n", iTuner, enISDB, enStatus);
  1412. +       OutputDebugStringA(log);
  1413.         return -1;
  1414.     }
  1415.  
  1416. @@ -503,6 +554,8 @@
  1417.  
  1418.     enStatus = m_EnumDev[iDevID]->pcDevice->SetStreamEnable(iTuner, enISDB, true);
  1419.     if( enStatus != PT::STATUS_OK ){
  1420. +       wsprintfA(log, "pcDevice->SetStreamEnable(%d, %d, true) error : enStatus[0x%x]\n", iTuner, enISDB, enStatus);
  1421. +       OutputDebugStringA(log);
  1422.         return -1;
  1423.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement