Advertisement
Guest User

TvTest a7823822fc orig to unko diff

a guest
Mar 1st, 2015
858
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 62.85 KB | None | 0 0
  1. diff -crN ./src_orig\AppCore.cpp ./src_unko\AppCore.cpp
  2. *** ./src_orig\AppCore.cpp  Sat Nov 22 04:36:26 2014
  3. --- ./src_unko\AppCore.cpp  Sun Nov 30 08:25:54 2014
  4. ***************
  5. *** 823,829 ****
  6.         m_App.CoreEngine.CloseTuner();
  7.     }
  8.  
  9. !   if (m_App.CoreEngine.IsCasCardOpen()) {
  10.         LPCTSTR pszOldDriver=m_App.CoreEngine.GetDriverFileName();
  11.         if (m_App.DriverOptions.IsNoDescramble(pszFileName)
  12.                 || m_App.CasLibraryManager.GetCasDeviceNameByTunerName(pszFileName)!=
  13. --- 823,829 ----
  14.         m_App.CoreEngine.CloseTuner();
  15.     }
  16.  
  17. !   if (m_App.CoreEngine.IsCasCardOpen() || m_App.CoreEngine.IsDriverCardReader()) {
  18.         LPCTSTR pszOldDriver=m_App.CoreEngine.GetDriverFileName();
  19.         if (m_App.DriverOptions.IsNoDescramble(pszFileName)
  20.                 || m_App.CasLibraryManager.GetCasDeviceNameByTunerName(pszFileName)!=
  21. diff -crN ./src_orig\BonTsEngine\CasProcessor.cpp ./src_unko\BonTsEngine\CasProcessor.cpp
  22. *** ./src_orig\BonTsEngine\CasProcessor.cpp Sat Nov 22 04:36:26 2014
  23. --- ./src_unko\BonTsEngine\CasProcessor.cpp Sat Sep 22 17:34:04 2012
  24. ***************
  25. *** 2,16 ****
  26.   //
  27.   //////////////////////////////////////////////////////////////////////
  28.  
  29. - /*
  30. -   このクラスはstubです
  31. -   CAS処理は実装されていません
  32. - */
  33. -
  34.   #include "stdafx.h"
  35.   #include "Common.h"
  36.   #include "CasProcessor.h"
  37.   #include "TsStream.h"
  38.  
  39.   #ifdef _DEBUG
  40.   #undef THIS_FILE
  41. --- 2,12 ----
  42.   //
  43.   //////////////////////////////////////////////////////////////////////
  44.  
  45.   #include "stdafx.h"
  46.   #include "Common.h"
  47.   #include "CasProcessor.h"
  48.   #include "TsStream.h"
  49. + #include "StdUtil.h"
  50.  
  51.   #ifdef _DEBUG
  52.   #undef THIS_FILE
  53. ***************
  54. *** 25,30 ****
  55. --- 21,33 ----
  56.  
  57.   CCasProcessor::CCasProcessor(IEventHandler *pEventHandler)
  58.     : CMediaDecoder(pEventHandler, 1UL, 1UL)
  59. +   , m_hCasLib(NULL)
  60. +   , m_pCasManager(NULL)
  61. +
  62. +   , m_bEnableDescramble(true)
  63. +   , m_bEnableContract(false)
  64. +   , m_Instruction(0)
  65. +
  66.     , m_InputPacketCount(0)
  67.     , m_ScramblePacketCount(0)
  68.   {
  69. ***************
  70. *** 39,44 ****
  71. --- 42,50 ----
  72.   {
  73.     CBlockLock Lock(&m_DecoderLock);
  74.  
  75. +   if (m_pCasManager != NULL)
  76. +       m_pCasManager->Reset();
  77. +
  78.     m_InputPacketCount = 0;
  79.     m_ScramblePacketCount = 0;
  80.   }
  81. ***************
  82. *** 51,58 ****
  83.  
  84.     CTsPacket *pPacket = static_cast<CTsPacket *>(pMediaData);
  85.  
  86. !   if (pPacket->IsScrambled())
  87. !       m_ScramblePacketCount++;
  88.  
  89.     // パケットを下流デコーダにデータを渡す
  90.     OutputMedia(pMediaData);
  91. --- 57,69 ----
  92.  
  93.     CTsPacket *pPacket = static_cast<CTsPacket *>(pMediaData);
  94.  
  95. !   if (m_pCasManager != NULL) {
  96. !       m_pCasManager->ProcessPacket(pPacket->GetData(), pPacket->GetSize());
  97. !       pPacket->m_Header.byTransportScramblingCtrl = pPacket->GetAt(3) >> 6;
  98. !   } else {
  99. !       if (pPacket->IsScrambled() && m_bEnableDescramble)
  100. !           m_ScramblePacketCount++;
  101. !   }
  102.  
  103.     // パケットを下流デコーダにデータを渡す
  104.     OutputMedia(pMediaData);
  105. ***************
  106. *** 62,173 ****
  107.  
  108.   bool CCasProcessor::LoadCasLibrary(LPCTSTR pszFileName)
  109.   {
  110. !   SetError(TEXT("Unimplemented"));
  111.  
  112. !   return false;
  113.   }
  114.  
  115.   bool CCasProcessor::FreeCasLibrary()
  116.   {
  117.     return true;
  118.   }
  119.  
  120.   bool CCasProcessor::IsCasLibraryLoaded() const
  121.   {
  122. !   return false;
  123.   }
  124.  
  125.   bool CCasProcessor::GetCasModuleInfo(CasModuleInfo *pInfo) const
  126.   {
  127. !   return false;
  128.   }
  129.  
  130.   bool CCasProcessor::EnableDescramble(bool bEnable)
  131.   {
  132. !   return false;
  133.   }
  134.  
  135.   bool CCasProcessor::EnableContract(bool bEnable)
  136.   {
  137. !   return false;
  138.   }
  139.  
  140.   int CCasProcessor::GetCasDeviceCount() const
  141.   {
  142. !   return 0;
  143.   }
  144.  
  145.   bool CCasProcessor::GetCasDeviceInfo(int Device, CasDeviceInfo *pInfo) const
  146.   {
  147. !   return false;
  148.   }
  149.  
  150.   bool CCasProcessor::GetCasDeviceCardList(int Device, StringList *pList)
  151.   {
  152. !   return false;
  153.   }
  154.  
  155.   bool CCasProcessor::IsCasDeviceAvailable(int Device)
  156.   {
  157. !   return false;
  158.   }
  159.  
  160.   bool CCasProcessor::CheckCasDeviceAvailability(int Device, bool *pbAvailable, LPWSTR pszMessage, int MaxLength)
  161.   {
  162.     if (pszMessage == NULL || MaxLength < 1)
  163.         return false;
  164. !   pszMessage[0] = L'\0';
  165. !   return false;
  166.   }
  167.  
  168.   int CCasProcessor::GetDefaultCasDevice()
  169.   {
  170. !   return -1;
  171.   }
  172.  
  173.   int CCasProcessor::GetCasDeviceByID(DWORD DeviceID) const
  174.   {
  175. !   return -1;
  176.   }
  177.  
  178.   int CCasProcessor::GetCasDeviceByName(LPCWSTR pszName) const
  179.   {
  180. !   return -1;
  181.   }
  182.  
  183.   bool CCasProcessor::OpenCasCard(int Device, LPCWSTR pszName)
  184.   {
  185. !   return false;
  186.   }
  187.  
  188.   bool CCasProcessor::CloseCasCard()
  189.   {
  190. !   return false;
  191.   }
  192.  
  193.   bool CCasProcessor::IsCasCardOpen() const
  194.   {
  195. !   return false;
  196.   }
  197.  
  198.   int CCasProcessor::GetCasDevice() const
  199.   {
  200. !   return -1;
  201.   }
  202.  
  203.   int CCasProcessor::GetCasCardName(LPWSTR pszName, int MaxName) const
  204.   {
  205. !   return 0;
  206.   }
  207.  
  208.   bool CCasProcessor::GetCasCardInfo(CasCardInfo *pInfo) const
  209.   {
  210. !   return false;
  211.   }
  212.  
  213.   bool CCasProcessor::SendCasCommand(const void *pSendData, DWORD SendSize, void *pRecvData, DWORD *pRecvSize)
  214.   {
  215. !   return false;
  216.   }
  217.  
  218.   ULONGLONG CCasProcessor::GetInputPacketCount() const
  219. --- 73,355 ----
  220.  
  221.   bool CCasProcessor::LoadCasLibrary(LPCTSTR pszFileName)
  222.   {
  223. !   if (pszFileName == NULL || pszFileName[0] == '\0') {
  224. !       SetError(TEXT("CASライブラリのファイル名が指定されていません。"));
  225. !       return false;
  226. !   }
  227. !
  228. !   CBlockLock Lock(&m_DecoderLock);
  229. !
  230. !   FreeCasLibrary();
  231. !
  232. !   m_hCasLib = ::LoadLibrary(pszFileName);
  233. !   if (m_hCasLib == NULL) {
  234. !       const DWORD ErrorCode = ::GetLastError();
  235. !       TCHAR szText[MAX_PATH + 32];
  236. !       StdUtil::snprintf(szText, _countof(szText),
  237. !           TEXT("CASライブラリ \"%s\" をロードできません。"), pszFileName);
  238. !       SetError(szText);
  239. !       switch (ErrorCode) {
  240. !       case ERROR_MOD_NOT_FOUND:
  241. !           SetErrorAdvise(TEXT("ファイルが見つかりません。"));
  242. !           break;
  243. !       case ERROR_BAD_EXE_FORMAT:
  244. !           SetErrorAdvise(
  245. ! #ifndef _WIN64
  246. !               TEXT("32")
  247. ! #else
  248. !               TEXT("64")
  249. ! #endif
  250. !               TEXT("ビット用のDLLではないか、ファイルが破損している可能性があります。"));
  251. !           break;
  252. !       default:
  253. !           StdUtil::snprintf(szText, _countof(szText), TEXT("エラーコード: 0x%x"), ErrorCode);
  254. !           SetErrorAdvise(szText);
  255. !       }
  256. !       return false;
  257. !   }
  258. !
  259. !   TVCAS::GetModuleInfoFunc pGetModuleInfo = TVCAS::Helper::Module::GetModuleInfo(m_hCasLib);
  260. !   if (pGetModuleInfo == NULL
  261. !           || !pGetModuleInfo(&m_CasModuleInfo)
  262. !           || m_CasModuleInfo.LibVersion != TVCAS::LIB_VERSION) {
  263. !       FreeCasLibrary();
  264. !       SetError(
  265. !           pGetModuleInfo == NULL ?
  266. !           TEXT("指定されたDLLがCASライブラリではありません。") :
  267. !           TEXT("CASライブラリのバージョンが非対応です。"));
  268. !       return false;
  269. !   }
  270. !
  271. !   TVCAS::CreateInstanceFunc pCreateInstance = TVCAS::Helper::Module::CreateInstance(m_hCasLib);
  272. !   if (pCreateInstance == NULL) {
  273. !       FreeCasLibrary();
  274. !       SetError(TEXT("CASライブラリから必要な関数を取得できません。"));
  275. !       return false;
  276. !   }
  277. !
  278. !   m_pCasManager = static_cast<TVCAS::ICasManager *>(pCreateInstance(__uuidof(TVCAS::ICasManager)));
  279. !   if (m_pCasManager == NULL) {
  280. !       FreeCasLibrary();
  281. !       SetError(TEXT("CASマネージャのインスタンスを作成できません。"));
  282. !       return false;
  283. !   }
  284. !
  285. !   if (!m_pCasManager->Initialize(this)) {
  286. !       FreeCasLibrary();
  287. !       SetError(TEXT("CASマネージャの初期化ができません。"));
  288. !       return false;
  289. !   }
  290. !
  291. !   m_pCasManager->EnableDescramble(m_bEnableDescramble);
  292. !   m_pCasManager->EnableContract(m_bEnableContract);
  293. !   m_pCasManager->SetInstruction(m_Instruction & m_pCasManager->GetAvailableInstructions());
  294.  
  295. !   ClearError();
  296. !
  297. !   return true;
  298.   }
  299.  
  300.   bool CCasProcessor::FreeCasLibrary()
  301.   {
  302. +   CBlockLock Lock(&m_DecoderLock);
  303. +
  304. +   if (m_pCasManager != NULL) {
  305. +       m_pCasManager->Release();
  306. +       m_pCasManager = NULL;
  307. +   }
  308. +
  309. +   if (m_hCasLib != NULL) {
  310. +       ::FreeLibrary(m_hCasLib);
  311. +       m_hCasLib = NULL;
  312. +   }
  313. +
  314.     return true;
  315.   }
  316.  
  317.   bool CCasProcessor::IsCasLibraryLoaded() const
  318.   {
  319. !   return m_hCasLib != NULL;
  320.   }
  321.  
  322.   bool CCasProcessor::GetCasModuleInfo(CasModuleInfo *pInfo) const
  323.   {
  324. !   if (m_pCasManager == NULL || pInfo == NULL)
  325. !       return false;
  326. !
  327. !   *pInfo = m_CasModuleInfo;
  328. !
  329. !   return true;
  330.   }
  331.  
  332.   bool CCasProcessor::EnableDescramble(bool bEnable)
  333.   {
  334. !   CBlockLock Lock(&m_DecoderLock);
  335. !
  336. !   if (m_pCasManager != NULL) {
  337. !       if (!m_pCasManager->EnableDescramble(bEnable))
  338. !           return false;
  339. !   }
  340. !
  341. !   m_bEnableDescramble = bEnable;
  342. !
  343. !   return true;
  344.   }
  345.  
  346.   bool CCasProcessor::EnableContract(bool bEnable)
  347.   {
  348. !   CBlockLock Lock(&m_DecoderLock);
  349. !
  350. !   if (m_pCasManager != NULL) {
  351. !       if (!m_pCasManager->EnableContract(bEnable))
  352. !           return false;
  353. !   }
  354. !
  355. !   m_bEnableContract = bEnable;
  356. !
  357. !   return true;
  358.   }
  359.  
  360.   int CCasProcessor::GetCasDeviceCount() const
  361.   {
  362. !   if (m_pCasManager == NULL)
  363. !       return 0;
  364. !
  365. !   return m_pCasManager->GetCasDeviceCount();
  366.   }
  367.  
  368.   bool CCasProcessor::GetCasDeviceInfo(int Device, CasDeviceInfo *pInfo) const
  369.   {
  370. !   if (m_pCasManager == NULL)
  371. !       return false;
  372. !
  373. !   return m_pCasManager->GetCasDeviceInfo(Device, pInfo);
  374.   }
  375.  
  376.   bool CCasProcessor::GetCasDeviceCardList(int Device, StringList *pList)
  377.   {
  378. !   if (m_pCasManager == NULL || pList == NULL)
  379. !       return false;
  380. !
  381. !   pList->clear();
  382. !
  383. !   TVCAS::ICasDevice *pDevice = m_pCasManager->OpenCasDevice(Device);
  384. !   if (pDevice == NULL)
  385. !       return false;
  386. !
  387. !   WCHAR szName[256];
  388. !   for (int i = 0; pDevice->GetCardName(i, szName, _countof(szName)); i++) {
  389. !       pList->push_back(szName);
  390. !   }
  391. !
  392. !   pDevice->Release();
  393. !
  394. !   return true;
  395.   }
  396.  
  397.   bool CCasProcessor::IsCasDeviceAvailable(int Device)
  398.   {
  399. !   if (m_pCasManager == NULL)
  400. !       return false;
  401. !
  402. !   return m_pCasManager->IsCasDeviceAvailable(Device);
  403.   }
  404.  
  405.   bool CCasProcessor::CheckCasDeviceAvailability(int Device, bool *pbAvailable, LPWSTR pszMessage, int MaxLength)
  406.   {
  407.     if (pszMessage == NULL || MaxLength < 1)
  408.         return false;
  409. !   if (m_pCasManager == NULL) {
  410. !       pszMessage[0] = L'\0';
  411. !       return false;
  412. !   }
  413. !
  414. !   return m_pCasManager->CheckCasDeviceAvailability(Device, pbAvailable, pszMessage, MaxLength);
  415.   }
  416.  
  417.   int CCasProcessor::GetDefaultCasDevice()
  418.   {
  419. !   if (m_pCasManager == NULL)
  420. !       return -1;
  421. !
  422. !   return m_pCasManager->GetDefaultCasDevice();
  423.   }
  424.  
  425.   int CCasProcessor::GetCasDeviceByID(DWORD DeviceID) const
  426.   {
  427. !   if (m_pCasManager == NULL)
  428. !       return -1;
  429. !
  430. !   return m_pCasManager->GetCasDeviceByID(DeviceID);
  431.   }
  432.  
  433.   int CCasProcessor::GetCasDeviceByName(LPCWSTR pszName) const
  434.   {
  435. !   if (m_pCasManager == NULL)
  436. !       return -1;
  437. !
  438. !   return m_pCasManager->GetCasDeviceByName(pszName);
  439.   }
  440.  
  441.   bool CCasProcessor::OpenCasCard(int Device, LPCWSTR pszName)
  442.   {
  443. !   if (m_pCasManager == NULL)
  444. !       return false;
  445. !
  446. !   ClearError();
  447. !
  448. !   if (!m_pCasManager->OpenCasCard(Device, pszName))
  449. !       return false;
  450. !
  451. !   return true;
  452.   }
  453.  
  454.   bool CCasProcessor::CloseCasCard()
  455.   {
  456. !   if (m_pCasManager == NULL)
  457. !       return false;
  458. !
  459. !   return m_pCasManager->CloseCasCard();
  460.   }
  461.  
  462.   bool CCasProcessor::IsCasCardOpen() const
  463.   {
  464. !   if (m_pCasManager == NULL)
  465. !       return false;
  466. !
  467. !   return m_pCasManager->IsCasCardOpen();
  468.   }
  469.  
  470.   int CCasProcessor::GetCasDevice() const
  471.   {
  472. !   if (m_pCasManager == NULL)
  473. !       return -1;
  474. !
  475. !   return m_pCasManager->GetCasDevice();
  476.   }
  477.  
  478.   int CCasProcessor::GetCasCardName(LPWSTR pszName, int MaxName) const
  479.   {
  480. !   if (m_pCasManager == NULL)
  481. !       return 0;
  482. !
  483. !   return m_pCasManager->GetCasCardName(pszName, MaxName);
  484.   }
  485.  
  486.   bool CCasProcessor::GetCasCardInfo(CasCardInfo *pInfo) const
  487.   {
  488. !   if (m_pCasManager == NULL)
  489. !       return false;
  490. !
  491. !   return m_pCasManager->GetCasCardInfo(pInfo);
  492.   }
  493.  
  494.   bool CCasProcessor::SendCasCommand(const void *pSendData, DWORD SendSize, void *pRecvData, DWORD *pRecvSize)
  495.   {
  496. !   if (m_pCasManager == NULL)
  497. !       return false;
  498. !
  499. !   return m_pCasManager->SendCasCommand(pSendData, SendSize, pRecvData, pRecvSize);
  500.   }
  501.  
  502.   ULONGLONG CCasProcessor::GetInputPacketCount() const
  503. ***************
  504. *** 177,241 ****
  505.  
  506.   ULONGLONG CCasProcessor::GetScramblePacketCount() const
  507.   {
  508. !   return m_ScramblePacketCount;
  509.   }
  510.  
  511.   void CCasProcessor::ResetScramblePacketCount()
  512.   {
  513.     m_ScramblePacketCount = 0;
  514.   }
  515.  
  516.   bool CCasProcessor::SetTargetServiceID(WORD ServiceID)
  517.   {
  518. !   return false;
  519.   }
  520.  
  521.   WORD CCasProcessor::GetTargetServiceID() const
  522.   {
  523. !   return 0;
  524.   }
  525.  
  526.   WORD CCasProcessor::GetEcmPIDByServiceID(WORD ServiceID) const
  527.   {
  528. !   return 0xFFFF;
  529.   }
  530.  
  531.   CCasProcessor::ContractStatus CCasProcessor::GetContractStatus(WORD NetworkID, WORD ServiceID, const SYSTEMTIME *pTime)
  532.   {
  533. !   return CONTRACT_ERROR;
  534.   }
  535.  
  536.   CCasProcessor::ContractStatus CCasProcessor::GetContractPeriod(WORD NetworkID, WORD ServiceID, SYSTEMTIME *pTime)
  537.   {
  538. !   return CONTRACT_ERROR;
  539.   }
  540.  
  541.   bool CCasProcessor::HasContractInfo(WORD NetworkID, WORD ServiceID) const
  542.   {
  543. !   return false;
  544.   }
  545.  
  546.   int CCasProcessor::GetInstructionName(int Instruction, LPWSTR pszName, int MaxName) const
  547.   {
  548. !   return 0;
  549.   }
  550.  
  551.   UINT CCasProcessor::GetAvailableInstructions() const
  552.   {
  553. !   return 0;
  554.   }
  555.  
  556.   bool CCasProcessor::SetInstruction(int Instruction)
  557.   {
  558. !   return false;
  559.   }
  560.  
  561.   int CCasProcessor::GetInstruction() const
  562.   {
  563. !   return 0;
  564.   }
  565.  
  566.   bool CCasProcessor::DescrambleBenchmarkTest(int Instruction, DWORD Round, DWORD *pTime)
  567.   {
  568. !   return false;
  569.   }
  570. --- 359,510 ----
  571.  
  572.   ULONGLONG CCasProcessor::GetScramblePacketCount() const
  573.   {
  574. !   ULONGLONG Count = m_ScramblePacketCount;
  575. !
  576. !   if (m_pCasManager != NULL)
  577. !       Count += m_pCasManager->GetScramblePacketCount();
  578. !
  579. !   return Count;
  580.   }
  581.  
  582.   void CCasProcessor::ResetScramblePacketCount()
  583.   {
  584.     m_ScramblePacketCount = 0;
  585. +
  586. +   if (m_pCasManager != NULL)
  587. +       m_pCasManager->ResetScramblePacketCount();
  588.   }
  589.  
  590.   bool CCasProcessor::SetTargetServiceID(WORD ServiceID)
  591.   {
  592. !   if (m_pCasManager == NULL)
  593. !       return false;
  594. !
  595. !   return m_pCasManager->SetDescrambleServiceID(ServiceID);
  596.   }
  597.  
  598.   WORD CCasProcessor::GetTargetServiceID() const
  599.   {
  600. !   if (m_pCasManager == NULL)
  601. !       return 0;
  602. !
  603. !   return m_pCasManager->GetDescrambleServiceID();
  604.   }
  605.  
  606.   WORD CCasProcessor::GetEcmPIDByServiceID(WORD ServiceID) const
  607.   {
  608. !   if (m_pCasManager == NULL)
  609. !       return 0xFFFF;
  610. !
  611. !   return m_pCasManager->GetEcmPIDByServiceID(ServiceID);
  612.   }
  613.  
  614.   CCasProcessor::ContractStatus CCasProcessor::GetContractStatus(WORD NetworkID, WORD ServiceID, const SYSTEMTIME *pTime)
  615.   {
  616. !   if (m_pCasManager == NULL)
  617. !       return CONTRACT_ERROR;
  618. !
  619. !   return (ContractStatus)m_pCasManager->GetContractStatus(NetworkID, ServiceID, pTime);
  620.   }
  621.  
  622.   CCasProcessor::ContractStatus CCasProcessor::GetContractPeriod(WORD NetworkID, WORD ServiceID, SYSTEMTIME *pTime)
  623.   {
  624. !   if (m_pCasManager == NULL)
  625. !       return CONTRACT_ERROR;
  626. !
  627. !   return (ContractStatus)m_pCasManager->GetContractPeriod(NetworkID, ServiceID, pTime);
  628.   }
  629.  
  630.   bool CCasProcessor::HasContractInfo(WORD NetworkID, WORD ServiceID) const
  631.   {
  632. !   if (m_pCasManager == NULL)
  633. !       return false;
  634. !
  635. !   return m_pCasManager->HasContractInfo(NetworkID, ServiceID);
  636.   }
  637.  
  638.   int CCasProcessor::GetInstructionName(int Instruction, LPWSTR pszName, int MaxName) const
  639.   {
  640. !   if (m_pCasManager == NULL)
  641. !       return 0;
  642. !
  643. !   return m_pCasManager->GetInstructionName(Instruction, pszName, MaxName);
  644.   }
  645.  
  646.   UINT CCasProcessor::GetAvailableInstructions() const
  647.   {
  648. !   if (m_pCasManager == NULL)
  649. !       return 0;
  650. !
  651. !   return m_pCasManager->GetAvailableInstructions();
  652.   }
  653.  
  654.   bool CCasProcessor::SetInstruction(int Instruction)
  655.   {
  656. !   if (m_pCasManager != NULL)
  657. !       return m_pCasManager->SetInstruction(Instruction);
  658. !
  659. !   m_Instruction = Instruction;
  660. !
  661. !   return true;
  662.   }
  663.  
  664.   int CCasProcessor::GetInstruction() const
  665.   {
  666. !   if (m_pCasManager != NULL)
  667. !       return m_pCasManager->GetInstruction();
  668. !
  669. !   return m_Instruction;
  670.   }
  671.  
  672.   bool CCasProcessor::DescrambleBenchmarkTest(int Instruction, DWORD Round, DWORD *pTime)
  673.   {
  674. !   if (m_pCasManager == NULL)
  675. !       return false;
  676. !
  677. !   return m_pCasManager->DescrambleBenchmarkTest(Instruction, Round, pTime);
  678. ! }
  679. !
  680. ! LPCWSTR CCasProcessor::GetName() const
  681. ! {
  682. !   return L"CasProcessor";
  683. ! }
  684. !
  685. ! LRESULT CCasProcessor::OnEvent(UINT Event, void *pParam)
  686. ! {
  687. !   switch (Event) {
  688. !   case TVCAS::EVENT_EMM_PROCESSED:
  689. !       SendDecoderEvent(EVENT_EMM_PROCESSED);
  690. !       return 0;
  691. !
  692. !   case TVCAS::EVENT_EMM_ERROR:
  693. !       SendDecoderEvent(EVENT_EMM_ERROR, pParam);
  694. !       return 0;
  695. !
  696. !   case TVCAS::EVENT_ECM_ERROR:
  697. !       SendDecoderEvent(EVENT_ECM_ERROR, pParam);
  698. !       return 0;
  699. !
  700. !   case TVCAS::EVENT_ECM_REFUSED:
  701. !       SendDecoderEvent(EVENT_ECM_REFUSED, pParam);
  702. !       return 0;
  703. !
  704. !   case TVCAS::EVENT_CARD_READER_HUNG:
  705. !       SendDecoderEvent(EVENT_CARD_READER_HUNG);
  706. !       return 0;
  707. !   }
  708. !
  709. !   return 0;
  710. ! }
  711. !
  712. ! LRESULT CCasProcessor::OnError(const TVCAS::ErrorInfo *pInfo)
  713. ! {
  714. !   SetError(pInfo->Code, pInfo->pszText, pInfo->pszAdvise, pInfo->pszSystemMessage);
  715. !
  716. !   return 0;
  717. ! }
  718. !
  719. ! void CCasProcessor::OutLog(TVCAS::LogType Type, LPCWSTR pszMessage)
  720. ! {
  721. !   Trace(pszMessage);
  722.   }
  723. diff -crN ./src_orig\BonTsEngine\CasProcessor.h ./src_unko\BonTsEngine\CasProcessor.h
  724. *** ./src_orig\BonTsEngine\CasProcessor.h   Sat Nov 22 04:36:26 2014
  725. --- ./src_unko\BonTsEngine\CasProcessor.h   Sat Sep 22 17:34:05 2012
  726. ***************
  727. *** 2,22 ****
  728.   //
  729.   //////////////////////////////////////////////////////////////////////
  730.  
  731. - /*
  732. -   このクラスはstubです
  733. -   CAS処理は実装されていません
  734. - */
  735. -
  736.   #pragma once
  737.  
  738.  
  739.   #include <vector>
  740.   #include <string>
  741.   #include "MediaDecoder.h"
  742.  
  743.  
  744.   class CCasProcessor
  745.     : public CMediaDecoder
  746.   {
  747.   public:
  748.     enum {
  749. --- 2,21 ----
  750.   //
  751.   //////////////////////////////////////////////////////////////////////
  752.  
  753.   #pragma once
  754.  
  755.  
  756.   #include <vector>
  757.   #include <string>
  758.   #include "MediaDecoder.h"
  759. + #include "TsUtilClass.h"
  760. + #include "TVCAS.h"
  761.  
  762.  
  763.   class CCasProcessor
  764.     : public CMediaDecoder
  765. +   , public TVCAS::ICasClient
  766. +   , protected TVCAS::Helper::CBaseImplNoRef
  767.   {
  768.   public:
  769.     enum {
  770. ***************
  771. *** 27,78 ****
  772.         EVENT_CARD_READER_HUNG = 0x00000005UL
  773.     };
  774.  
  775. !   enum
  776. !   {
  777. !       MAX_DEVICE_NAME = 64,
  778. !       MAX_DEVICE_TEXT = 64
  779. !   };
  780. !
  781. !   struct CasModuleInfo
  782. !   {
  783. !       DWORD LibVersion;
  784. !       DWORD Flags;
  785. !       LPCWSTR Name;
  786. !       LPCWSTR Version;
  787. !   };
  788. !
  789. !   struct CasDeviceInfo
  790. !   {
  791. !       DWORD DeviceID;
  792. !       DWORD Flags;
  793. !       WCHAR Name[MAX_DEVICE_NAME];
  794. !       WCHAR Text[MAX_DEVICE_TEXT];
  795. !   };
  796. !
  797. !   struct CasCardInfo
  798. !   {
  799. !       WORD CASystemID;
  800. !       BYTE CardID[6];
  801. !       BYTE CardType;
  802. !       BYTE MessagePartitionLength;
  803. !       BYTE SystemKey[32];
  804. !       BYTE InitialCBC[8];
  805. !       BYTE CardManufacturerID;
  806. !       BYTE CardVersion;
  807. !       WORD CheckCode;
  808. !       WCHAR CardIDText[32];
  809. !   };
  810. !
  811. !   struct EcmErrorInfo
  812. !   {
  813. !       LPCWSTR pszText;
  814. !       WORD EcmPID;
  815. !   };
  816. !
  817. !   struct EmmErrorInfo
  818. !   {
  819. !       LPCWSTR pszText;
  820. !   };
  821.  
  822.     enum ContractStatus {
  823.         CONTRACT_CONTRACTED,
  824. --- 26,36 ----
  825.         EVENT_CARD_READER_HUNG = 0x00000005UL
  826.     };
  827.  
  828. !   typedef TVCAS::ModuleInfo CasModuleInfo;
  829. !   typedef TVCAS::EcmErrorInfo EcmErrorInfo;
  830. !   typedef TVCAS::EmmErrorInfo EmmErrorInfo;
  831. !   typedef TVCAS::CasDeviceInfo CasDeviceInfo;
  832. !   typedef TVCAS::CasCardInfo CasCardInfo;
  833.  
  834.     enum ContractStatus {
  835.         CONTRACT_CONTRACTED,
  836. ***************
  837. *** 135,140 ****
  838. --- 93,115 ----
  839.     bool DescrambleBenchmarkTest(int Instruction, DWORD Round, DWORD *pTime);
  840.  
  841.   protected:
  842. + // TVCAS::IBase
  843. +   TVCAS_DECLARE_BASE
  844. +   LPCWSTR GetName() const override;
  845. +
  846. + // TVCAS::ICasClient
  847. +   LRESULT OnEvent(UINT Event, void *pParam) override;
  848. +   LRESULT OnError(const TVCAS::ErrorInfo *pInfo) override;
  849. +   void OutLog(TVCAS::LogType Type, LPCWSTR pszMessage) override;
  850. +
  851. +   HMODULE m_hCasLib;
  852. +   TVCAS::ICasManager *m_pCasManager;
  853. +   CasModuleInfo m_CasModuleInfo;
  854. +
  855. +   bool m_bEnableDescramble;
  856. +   bool m_bEnableContract;
  857. +   int m_Instruction;
  858. +
  859.     ULONGLONG m_InputPacketCount;
  860.     ULONGLONG m_ScramblePacketCount;
  861.   };
  862. diff -crN ./src_orig\BonTsEngine\TVCAS.h ./src_unko\BonTsEngine\TVCAS.h
  863. *** ./src_orig\BonTsEngine\TVCAS.h  Thu Jan 01 09:00:00 1970
  864. --- ./src_unko\BonTsEngine\TVCAS.h  Sat Sep 15 19:00:00 2012
  865. ***************
  866. *** 0 ****
  867. --- 1,259 ----
  868. + #ifndef TV_CAS_H
  869. + #define TV_CAS_H
  870. +
  871. +
  872. + #include <pshpack1.h>
  873. +
  874. +
  875. + namespace TVCAS
  876. + {
  877. +
  878. +   enum
  879. +   {
  880. +       LIB_VERSION = 0x00000001UL,
  881. +
  882. +       MAX_DEVICE_NAME = 64,
  883. +       MAX_DEVICE_TEXT = 64
  884. +   };
  885. +
  886. +   struct ModuleInfo
  887. +   {
  888. +       DWORD LibVersion;
  889. +       DWORD Flags;
  890. +       LPCWSTR Name;
  891. +       LPCWSTR Version;
  892. +   };
  893. +
  894. +   struct CasDeviceInfo
  895. +   {
  896. +       DWORD DeviceID;
  897. +       DWORD Flags;
  898. +       WCHAR Name[MAX_DEVICE_NAME];
  899. +       WCHAR Text[MAX_DEVICE_TEXT];
  900. +   };
  901. +
  902. +   struct CasCardInfo
  903. +   {
  904. +       WORD CASystemID;
  905. +       BYTE CardID[6];
  906. +       BYTE CardType;
  907. +       BYTE MessagePartitionLength;
  908. +       BYTE SystemKey[32];
  909. +       BYTE InitialCBC[8];
  910. +       BYTE CardManufacturerID;
  911. +       BYTE CardVersion;
  912. +       WORD CheckCode;
  913. +       WCHAR CardIDText[32];
  914. +   };
  915. +
  916. +   enum
  917. +   {
  918. +       EVENT_EMM_PROCESSED     = 0x00000001U,
  919. +       EVENT_EMM_ERROR         = 0x00000002U,
  920. +       EVENT_ECM_ERROR         = 0x00000003U,
  921. +       EVENT_ECM_REFUSED       = 0x00000004U,
  922. +       EVENT_CARD_READER_HUNG  = 0x00000005U
  923. +   };
  924. +
  925. +   enum LogType
  926. +   {
  927. +       LOG_VERBOSE,
  928. +       LOG_INFO,
  929. +       LOG_WARNING,
  930. +       LOG_ERROR
  931. +   };
  932. +
  933. +   struct ErrorInfo
  934. +   {
  935. +       int Code;
  936. +       LPCWSTR pszText;
  937. +       LPCWSTR pszAdvise;
  938. +       LPCWSTR pszSystemMessage;
  939. +   };
  940. +
  941. +   struct EcmErrorInfo
  942. +   {
  943. +       LPCWSTR pszText;
  944. +       WORD EcmPID;
  945. +   };
  946. +
  947. +   struct EmmErrorInfo
  948. +   {
  949. +       LPCWSTR pszText;
  950. +   };
  951. +
  952. +   enum ContractStatus
  953. +   {
  954. +       CONTRACT_CONTRACTED,
  955. +       CONTRACT_UNCONTRACTED,
  956. +       CONTRACT_UNKNOWN,
  957. +       CONTRACT_ERROR
  958. +   };
  959. +
  960. +   __interface __declspec(uuid("C19221E8-CBB1-4BEF-96A8-3F294244CBB0")) IBase
  961. +   {
  962. +       void Refer();
  963. +       void Release();
  964. +       LPCWSTR GetName() const;
  965. +       IBase * GetInterface(REFIID riid);
  966. +       bool GetProperty(LPCWSTR pszName, void *pProperty, SIZE_T *pSize) const;
  967. +       bool SetProperty(LPCWSTR pszName, const void *pProperty, SIZE_T Size);
  968. +   };
  969. +
  970. +   __interface __declspec(uuid("973B85B2-CF36-4DF5-A2E8-663550B3BAEA")) ICasClient : public IBase
  971. +   {
  972. +       LRESULT OnEvent(UINT Event, void *pParam);
  973. +       LRESULT OnError(const ErrorInfo *pInfo);
  974. +       void OutLog(LogType Type, LPCWSTR pszMessage);
  975. +   };
  976. +
  977. +   __interface __declspec(uuid("BC023720-CB97-462E-A142-ED37CE396FB3")) ICasDevice : public IBase
  978. +   {
  979. +       bool GetDeviceInfo(CasDeviceInfo *pInfo) const;
  980. +       int GetCardCount() const;
  981. +       bool GetCardName(int Index, LPWSTR pszName, int MaxName) const;
  982. +       bool IsCardAvailable(LPCWSTR pszName);
  983. +   };
  984. +
  985. +   __interface __declspec(uuid("080EDD04-8215-4037-8B66-E03954FD81BD")) ICasManager : public IBase
  986. +   {
  987. +       bool Initialize(ICasClient *pClient);
  988. +       bool Reset();
  989. +
  990. +       bool EnableDescramble(bool Enable);
  991. +       bool IsDescrambleEnabled() const;
  992. +       bool EnableContract(bool Enable);
  993. +       bool IsContractEnabled() const;
  994. +
  995. +       int GetCasDeviceCount() const;
  996. +       bool GetCasDeviceInfo(int Device, CasDeviceInfo *pInfo) const;
  997. +       ICasDevice * OpenCasDevice(int Device);
  998. +       bool IsCasDeviceAvailable(int Device);
  999. +       bool CheckCasDeviceAvailability(int Device, bool *pAvailable, LPWSTR pszMessage, int MaxLength);
  1000. +       int GetDefaultCasDevice();
  1001. +       int GetCasDeviceByID(DWORD DeviceID) const;
  1002. +       int GetCasDeviceByName(LPCWSTR pszName) const;
  1003. +
  1004. +       bool OpenCasCard(int Device, LPCWSTR pszName = NULL);
  1005. +       bool CloseCasCard();
  1006. +       bool IsCasCardOpen() const;
  1007. +       int GetCasDevice() const;
  1008. +       int GetCasCardName(LPWSTR pszName, int MaxName) const;
  1009. +       bool GetCasCardInfo(CasCardInfo *pInfo) const;
  1010. +       bool SendCasCommand(const void *pSendData, DWORD SendSize, void *pRecvData, DWORD *pRecvSize);
  1011. +
  1012. +       bool ProcessStream(const void *pSrcData, const DWORD SrcSize,
  1013. +                          void **ppDstData, DWORD *pDstSize);
  1014. +       bool ProcessPacket(void *pData, DWORD PacketSize);
  1015. +
  1016. +       ULONGLONG GetInputPacketCount() const;
  1017. +       ULONGLONG GetScramblePacketCount() const;
  1018. +       void ResetScramblePacketCount();
  1019. +
  1020. +       bool SetDescrambleServiceID(WORD ServiceID);
  1021. +       WORD GetDescrambleServiceID() const;
  1022. +       bool SetDescrambleServices(const WORD *pServiceIDList, int ServiceCount);
  1023. +       bool GetDescrambleServices(WORD *pServiceIDList, int *pServiceCount) const;
  1024. +       WORD GetEcmPIDByServiceID(WORD ServiceID) const;
  1025. +
  1026. +       ContractStatus GetContractStatus(WORD NetworkID, WORD ServiceID, const SYSTEMTIME *pTime = NULL);
  1027. +       ContractStatus GetContractPeriod(WORD NetworkID, WORD ServiceID, SYSTEMTIME *pTime);
  1028. +       bool HasContractInfo(WORD NetworkID, WORD ServiceID) const;
  1029. +
  1030. +       int GetInstructionName(int Instruction, LPWSTR pszName, int MaxName) const;
  1031. +       UINT GetAvailableInstructions() const;
  1032. +       bool SetInstruction(int Instruction);
  1033. +       int GetInstruction() const;
  1034. +       bool DescrambleBenchmarkTest(int Instruction, DWORD Round, DWORD *pTime);
  1035. +   };
  1036. +
  1037. +   typedef BOOL (WINAPI *GetModuleInfoFunc)(ModuleInfo *pInfo);
  1038. +   typedef IBase * (WINAPI *CreateInstanceFunc)(REFIID riid);
  1039. +
  1040. +
  1041. +   namespace Helper
  1042. +   {
  1043. +
  1044. +       namespace Module
  1045. +       {
  1046. +
  1047. +           inline GetModuleInfoFunc GetModuleInfo(HMODULE hLib)
  1048. +           {
  1049. +               return reinterpret_cast<GetModuleInfoFunc>(::GetProcAddress(hLib, "TVCAS_GetModuleInfo"));
  1050. +           }
  1051. +
  1052. +           inline CreateInstanceFunc CreateInstance(HMODULE hLib)
  1053. +           {
  1054. +               return reinterpret_cast<CreateInstanceFunc>(::GetProcAddress(hLib, "TVCAS_CreateInstance"));
  1055. +           }
  1056. +
  1057. +       }
  1058. +
  1059. + #if (__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1700))
  1060. + #define TVCAS_FINAL override final
  1061. + #elif defined(_MSC_VER)
  1062. + #define TVCAS_FINAL override
  1063. + #else
  1064. + #define TVCAS_FINAL
  1065. + #endif
  1066. +
  1067. +       class CBaseImplNoRef
  1068. +       {
  1069. +       protected:
  1070. +           virtual void ReferImpl() {}
  1071. +           virtual void ReleaseImpl() {}
  1072. +
  1073. +           virtual IBase * GetInterfaceImpl(REFIID riid)
  1074. +           {
  1075. +               return NULL;
  1076. +           }
  1077. +
  1078. +           virtual bool GetPropertyImpl(LPCWSTR pszName, void *pProperty, SIZE_T *pSize) const
  1079. +           {
  1080. +               return false;
  1081. +           }
  1082. +
  1083. +           virtual bool SetPropertyImpl(LPCWSTR pszName, const void *pProperty, SIZE_T Size)
  1084. +           {
  1085. +               return false;
  1086. +           }
  1087. +       };
  1088. +
  1089. +       class CBaseImpl : public CBaseImplNoRef
  1090. +       {
  1091. +       public:
  1092. +           CBaseImpl() : m_RefCount(1) {}
  1093. +           virtual ~CBaseImpl() {}
  1094. +
  1095. +       protected:
  1096. +           void ReferImpl() TVCAS_FINAL
  1097. +           {
  1098. +               ::InterlockedIncrement(&m_RefCount);
  1099. +           }
  1100. +
  1101. +           void ReleaseImpl() TVCAS_FINAL
  1102. +           {
  1103. +               if (::InterlockedDecrement(&m_RefCount) == 0)
  1104. +                   delete this;
  1105. +           }
  1106. +
  1107. +       private:
  1108. +           LONG m_RefCount;
  1109. +       };
  1110. +
  1111. + #define TVCAS_DECLARE_BASE \
  1112. +   void Refer() TVCAS_FINAL { ReferImpl(); } \
  1113. +   void Release() TVCAS_FINAL { ReleaseImpl(); } \
  1114. +   TVCAS::IBase * GetInterface(REFIID riid) TVCAS_FINAL { return GetInterfaceImpl(riid); } \
  1115. +   bool GetProperty(LPCWSTR pszName, void *pProperty, SIZE_T *pSize) const TVCAS_FINAL { return GetPropertyImpl(pszName, pProperty, pSize); } \
  1116. +   bool SetProperty(LPCWSTR pszName, const void *pProperty, SIZE_T Size) TVCAS_FINAL { return SetPropertyImpl(pszName, pProperty, Size); }
  1117. +
  1118. +   }   // namespace Helper
  1119. +
  1120. + } // namespace TVCAS
  1121. +
  1122. +
  1123. + #include <poppack.h>
  1124. +
  1125. +
  1126. + #endif
  1127. diff -crN ./src_orig\CoreEngine.cpp ./src_unko\CoreEngine.cpp
  1128. *** ./src_orig\CoreEngine.cpp   Sat Nov 22 04:36:26 2014
  1129. --- ./src_unko\CoreEngine.cpp   Sat Oct 11 03:15:17 2014
  1130. ***************
  1131. *** 79,93 ****
  1132.         ↓
  1133.     CTsAnalyzer
  1134.         ↓
  1135.     CMediaTee──────┐
  1136.         ↓               │
  1137. !   (CEventManager)  CCasProcessor
  1138.         ↓               ↓
  1139. !   CLogoDownloader  CCaptionDecoder
  1140.         ↓               ↓
  1141. !   CTsSelector      CMediaGrabber
  1142. !       ↓               ↓
  1143. !   CTsRecorder      CMediaViewer
  1144.     */
  1145.  
  1146.     struct {
  1147. --- 79,95 ----
  1148.         ↓
  1149.     CTsAnalyzer
  1150.         ↓
  1151. +   CCasProcessor
  1152. +       ↓
  1153.     CMediaTee──────┐
  1154.         ↓               │
  1155. !   (CEventManager)  CCaptionDecoder
  1156.         ↓               ↓
  1157. !   CLogoDownloader  CMediaGrabber
  1158.         ↓               ↓
  1159. !   CTsSelector      CMediaViewer
  1160. !       ↓
  1161. !   CTsRecorder
  1162.     */
  1163.  
  1164.     struct {
  1165. ***************
  1166. *** 106,111 ****
  1167. --- 108,115 ----
  1168.     ConnectionList.Add(CDtvEngine::DECODER_ID_TsPacketParser,
  1169.                        CDtvEngine::DECODER_ID_TsAnalyzer);
  1170.     ConnectionList.Add(CDtvEngine::DECODER_ID_TsAnalyzer,
  1171. +                      CDtvEngine::DECODER_ID_CasProcessor);
  1172. +   ConnectionList.Add(CDtvEngine::DECODER_ID_CasProcessor,
  1173.                        CDtvEngine::DECODER_ID_MediaTee);
  1174.     if (!m_fNoEpg) {
  1175.         ConnectionList.Add(CDtvEngine::DECODER_ID_MediaTee,
  1176. ***************
  1177. *** 117,129 ****
  1178.                            CDtvEngine::DECODER_ID_LogoDownloader,0);
  1179.     }
  1180.     ConnectionList.Add(CDtvEngine::DECODER_ID_MediaTee,
  1181. !                      CDtvEngine::DECODER_ID_CasProcessor,1);
  1182.     ConnectionList.Add(CDtvEngine::DECODER_ID_LogoDownloader,
  1183.                        CDtvEngine::DECODER_ID_TsSelector);
  1184.     ConnectionList.Add(CDtvEngine::DECODER_ID_TsSelector,
  1185.                        CDtvEngine::DECODER_ID_TsRecorder);
  1186. -   ConnectionList.Add(CDtvEngine::DECODER_ID_CasProcessor,
  1187. -                      CDtvEngine::DECODER_ID_CaptionDecoder);
  1188.     ConnectionList.Add(CDtvEngine::DECODER_ID_CaptionDecoder,
  1189.                        CDtvEngine::DECODER_ID_MediaGrabber);
  1190.     ConnectionList.Add(CDtvEngine::DECODER_ID_MediaGrabber,
  1191. --- 121,131 ----
  1192.                            CDtvEngine::DECODER_ID_LogoDownloader,0);
  1193.     }
  1194.     ConnectionList.Add(CDtvEngine::DECODER_ID_MediaTee,
  1195. !                      CDtvEngine::DECODER_ID_CaptionDecoder,1);
  1196.     ConnectionList.Add(CDtvEngine::DECODER_ID_LogoDownloader,
  1197.                        CDtvEngine::DECODER_ID_TsSelector);
  1198.     ConnectionList.Add(CDtvEngine::DECODER_ID_TsSelector,
  1199.                        CDtvEngine::DECODER_ID_TsRecorder);
  1200.     ConnectionList.Add(CDtvEngine::DECODER_ID_CaptionDecoder,
  1201.                        CDtvEngine::DECODER_ID_MediaGrabber);
  1202.     ConnectionList.Add(CDtvEngine::DECODER_ID_MediaGrabber,
  1203. ***************
  1204. *** 366,371 ****
  1205. --- 368,388 ----
  1206.  
  1207.   bool CCoreEngine::OpenCasCard(int Device,LPCTSTR pszName)
  1208.   {
  1209. +   if (Device==0 && IsStringEmpty(pszName) && IsDriverSpecified()) {
  1210. +       // 現在の BonDriver 専用の winscard.dll があればそれを利用する
  1211. +       TCHAR szFileName[MAX_PATH];
  1212. +
  1213. +       GetDriverPath(szFileName,lengthof(szFileName));
  1214. +       ::PathRenameExtension(szFileName,TEXT(".scard"));
  1215. +       if (::PathFileExists(szFileName)) {
  1216. +           if (!m_DtvEngine.OpenCasCard(Device,szFileName)) {
  1217. +               SetError(m_DtvEngine.GetLastErrorException());
  1218. +               return false;
  1219. +           }
  1220. +           return true;
  1221. +       }
  1222. +   }
  1223. +
  1224.     if (!SetDescramble(Device>=0))
  1225.         return false;
  1226.     if (!m_DtvEngine.OpenCasCard(Device,pszName)) {
  1227. ***************
  1228. *** 385,390 ****
  1229. --- 402,417 ----
  1230.   bool CCoreEngine::IsCasCardOpen() const
  1231.   {
  1232.     return m_DtvEngine.m_CasProcessor.IsCasCardOpen();
  1233. + }
  1234. +
  1235. +
  1236. + // ある BonDriver 専用の winscard.dll を使用しているか取得する
  1237. + bool CCoreEngine::IsDriverCardReader() const
  1238. + {
  1239. +   TCHAR szName[MAX_PATH];
  1240. +
  1241. +   return m_DtvEngine.m_CasProcessor.GetCasCardName(szName,lengthof(szName))>0
  1242. +       && ::PathMatchSpec(szName,TEXT("*.scard"));
  1243.   }
  1244.  
  1245.  
  1246. diff -crN ./src_orig\CoreEngine.h ./src_unko\CoreEngine.h
  1247. *** ./src_orig\CoreEngine.h Sat Nov 22 04:36:26 2014
  1248. --- ./src_unko\CoreEngine.h Sat Oct 11 03:16:04 2014
  1249. ***************
  1250. *** 67,72 ****
  1251. --- 67,73 ----
  1252.     bool OpenCasCard(int Device,LPCTSTR pszName=NULL);
  1253.     bool CloseCasCard();
  1254.     bool IsCasCardOpen() const;
  1255. +   bool IsDriverCardReader() const;
  1256.     bool SetDescramble(bool fDescramble);
  1257.     bool GetDescramble() const { return m_fDescramble; }
  1258.     bool GetCasDeviceList(CasDeviceList *pList);
  1259. diff -crN ./src_orig\Record.cpp ./src_unko\Record.cpp
  1260. *** ./src_orig\Record.cpp   Sat Nov 22 04:36:26 2014
  1261. --- ./src_unko\Record.cpp   Wed Nov 12 12:56:59 2014
  1262. ***************
  1263. *** 19,24 ****
  1264. --- 19,25 ----
  1265.   CRecordingSettings::CRecordingSettings()
  1266.     : m_fCurServiceOnly(false)
  1267.     , m_SaveStream(CTsSelector::STREAM_ALL)
  1268. +   , m_fDescrambleCurServiceOnly(false)
  1269.     , m_BufferSize(DEFAULT_BUFFER_SIZE)
  1270.     , m_PreAllocationUnit(0)
  1271.     , m_fTimeShift(false)
  1272. ***************
  1273. *** 132,137 ****
  1274. --- 133,140 ----
  1275.     DWORD OldWriteStream;
  1276.     pDtvEngine->GetWriteStream(NULL,&OldWriteStream);
  1277.     pDtvEngine->SetWriteCurServiceOnly(Settings.m_fCurServiceOnly,Settings.m_SaveStream);
  1278. +   bool fDescrambleCurOnly=pDtvEngine->GetDescrambleCurServiceOnly();
  1279. +   pDtvEngine->SetDescrambleCurServiceOnly(Settings.m_fDescrambleCurServiceOnly);
  1280.     pDtvEngine->m_TsRecorder.SetBufferSize(Settings.m_BufferSize);
  1281.     pDtvEngine->m_TsRecorder.SetPreAllocationUnit(Settings.m_PreAllocationUnit);
  1282.     if (!Settings.m_fTimeShift)
  1283. ***************
  1284. *** 165,170 ****
  1285. --- 168,174 ----
  1286.         ::FreeLibrary(hWriteLib);
  1287.     if (!fResult) {
  1288.         pDtvEngine->SetWriteCurServiceOnly(fOldWriteCurOnly,OldWriteStream);
  1289. +       pDtvEngine->SetDescrambleCurServiceOnly(fDescrambleCurOnly);
  1290.         return false;
  1291.     }
  1292.  
  1293. ***************
  1294. *** 1494,1499 ****
  1295. --- 1498,1510 ----
  1296.   bool CRecordManager::SetSaveStream(DWORD Stream)
  1297.   {
  1298.     m_Settings.m_SaveStream=Stream;
  1299. +   return true;
  1300. + }
  1301. +
  1302. +
  1303. + bool CRecordManager::SetDescrambleCurServiceOnly(bool fOnly)
  1304. + {
  1305. +   m_Settings.m_fDescrambleCurServiceOnly=fOnly;
  1306.     return true;
  1307.   }
  1308.  
  1309. diff -crN ./src_orig\Record.h ./src_unko\Record.h
  1310. *** ./src_orig\Record.h Sat Nov 22 04:36:26 2014
  1311. --- ./src_unko\Record.h Wed Nov 12 12:57:58 2014
  1312. ***************
  1313. *** 13,18 ****
  1314. --- 13,19 ----
  1315.  
  1316.     bool m_fCurServiceOnly;
  1317.     DWORD m_SaveStream;
  1318. +   bool m_fDescrambleCurServiceOnly;
  1319.     TVTest::String m_WritePlugin;
  1320.     DWORD m_BufferSize;
  1321.     ULONGLONG m_PreAllocationUnit;
  1322. ***************
  1323. *** 181,186 ****
  1324. --- 182,189 ----
  1325.     bool SetCurServiceOnly(bool fOnly);
  1326.     bool GetCurServiceOnly() const { return m_Settings.m_fCurServiceOnly; }
  1327.     bool SetSaveStream(DWORD Stream);
  1328. +   bool SetDescrambleCurServiceOnly(bool fOnly);
  1329. +   bool GetDescrambleCurServiceOnly() const { return m_Settings.m_fDescrambleCurServiceOnly; }
  1330.     bool SetWritePlugin(LPCTSTR pszPlugin);
  1331.     LPCTSTR GetWritePlugin() const;
  1332.     bool SetBufferSize(DWORD BufferSize);
  1333. diff -crN ./src_orig\RecordOptions.cpp ./src_unko\RecordOptions.cpp
  1334. *** ./src_orig\RecordOptions.cpp    Sat Nov 22 04:36:26 2014
  1335. --- ./src_unko\RecordOptions.cpp    Wed Oct 15 11:03:32 2014
  1336. ***************
  1337. *** 45,50 ****
  1338. --- 45,51 ----
  1339.     , m_fConfirmExit(true)
  1340.     , m_fConfirmStop(false)
  1341.     , m_fConfirmStopStatusBarOnly(false)
  1342. +   , m_fDescrambleCurServiceOnly(false)
  1343.     , m_fAlertLowFreeSpace(true)
  1344.     , m_LowFreeSpaceThreshold(2048)
  1345.     , m_TimeShiftBufferSize(TIMESHIFT_BUFFER_SIZE_DEFAULT)
  1346. ***************
  1347. *** 134,139 ****
  1348. --- 135,141 ----
  1349.     if (Settings.Read(TEXT("RecordDataCarrousel"),&f))
  1350.         m_Settings.SetSaveDataCarrousel(f);
  1351.     Settings.Read(TEXT("WritePlugin"),&m_Settings.m_WritePlugin);
  1352. +   Settings.Read(TEXT("RecordDescrambleCurServiceOnly"),&m_Settings.m_fDescrambleCurServiceOnly);
  1353.     if (Settings.Read(TEXT("RecordBufferSize"),&Value))
  1354.         m_Settings.m_BufferSize=CLAMP(Value,WRITE_BUFFER_SIZE_MIN,WRITE_BUFFER_SIZE_MAX);
  1355.     Settings.Read(TEXT("AlertLowFreeSpace"),&m_fAlertLowFreeSpace);
  1356. ***************
  1357. *** 172,177 ****
  1358. --- 174,180 ----
  1359.     Settings.Write(TEXT("RecordSubtitle"),m_Settings.IsSaveCaption());
  1360.     Settings.Write(TEXT("RecordDataCarrousel"),m_Settings.IsSaveDataCarrousel());
  1361.     Settings.Write(TEXT("WritePlugin"),m_Settings.m_WritePlugin);
  1362. +   Settings.Write(TEXT("RecordDescrambleCurServiceOnly"),m_Settings.m_fDescrambleCurServiceOnly);
  1363.     Settings.Write(TEXT("RecordBufferSize"),static_cast<unsigned int>(m_Settings.m_BufferSize));
  1364.     Settings.Write(TEXT("AlertLowFreeSpace"),m_fAlertLowFreeSpace);
  1365.     Settings.Write(TEXT("LowFreeSpaceThreshold"),m_LowFreeSpaceThreshold);
  1366. ***************
  1367. *** 375,380 ****
  1368. --- 378,385 ----
  1369.                               m_Settings.IsSaveCaption());
  1370.             DlgCheckBox_Check(hDlg,IDC_RECORDOPTIONS_SAVEDATACARROUSEL,
  1371.                               m_Settings.IsSaveDataCarrousel());
  1372. +           DlgCheckBox_Check(hDlg,IDC_RECORDOPTIONS_DESCRAMBLECURSERVICEONLY,
  1373. +                             m_Settings.m_fDescrambleCurServiceOnly);
  1374.  
  1375.             // 保存プラグイン
  1376.             DlgComboBox_AddString(hDlg,IDC_RECORDOPTIONS_WRITEPLUGIN,TEXT("使用しない (TS出力)"));
  1377. ***************
  1378. *** 576,581 ****
  1379. --- 581,591 ----
  1380.                 if (m_Settings.IsSaveDataCarrousel()!=f) {
  1381.                     m_Settings.SetSaveDataCarrousel(f);
  1382.                     fOptionChanged=true;
  1383. +               }
  1384. +               f = DlgCheckBox_IsChecked(hDlg, IDC_RECORDOPTIONS_DESCRAMBLECURSERVICEONLY);
  1385. +               if (m_Settings.m_fDescrambleCurServiceOnly!=f) {
  1386. +                   m_Settings.m_fDescrambleCurServiceOnly=f;
  1387. +                   fOptionChanged=true;
  1388.                 }
  1389.                 if (fOptionChanged)
  1390.                     SetUpdateFlag(UPDATE_RECORDSTREAM);
  1391. diff -crN ./src_orig\RecordOptions.h ./src_unko\RecordOptions.h
  1392. *** ./src_orig\RecordOptions.h  Sat Nov 22 04:36:26 2014
  1393. --- ./src_unko\RecordOptions.h  Sat Oct 11 03:47:26 2014
  1394. ***************
  1395. *** 14,19 ****
  1396. --- 14,20 ----
  1397.     bool m_fConfirmExit;
  1398.     bool m_fConfirmStop;
  1399.     bool m_fConfirmStopStatusBarOnly;
  1400. +   bool m_fDescrambleCurServiceOnly;
  1401.     bool m_fAlertLowFreeSpace;
  1402.     unsigned int m_LowFreeSpaceThreshold;
  1403.     unsigned int m_TimeShiftBufferSize;
  1404. diff -crN ./src_orig\resource.h ./src_unko\resource.h
  1405. *** ./src_orig\resource.h   Sat Nov 22 04:36:26 2014
  1406. --- ./src_unko\resource.h   Sun Nov 30 08:32:51 2014
  1407. ***************
  1408. *** 756,769 ****
  1409.   #define IDC_RECORDOPTIONS_CURSERVICEONLY              1015
  1410.   #define IDC_RECORDOPTIONS_SAVESUBTITLE                    1016
  1411.   #define IDC_RECORDOPTIONS_SAVEDATACARROUSEL               1017
  1412. ! #define IDC_RECORDOPTIONS_WRITEPLUGIN                 1018
  1413. ! #define IDC_RECORDOPTIONS_WRITEPLUGINSETTING          1019
  1414. ! #define IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE         1020
  1415. ! #define IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE_SPIN        1021
  1416. ! #define IDC_RECORDOPTIONS_BUFFERSIZE                  1022
  1417. ! #define IDC_RECORDOPTIONS_BUFFERSIZE_UD                   1023
  1418. ! #define IDC_RECORDOPTIONS_MAXPENDINGSIZE              1024
  1419. ! #define IDC_RECORDOPTIONS_MAXPENDINGSIZE_SPIN         1025
  1420.  
  1421.   #define IDC_CAPTUREOPTIONS_SAVEFOLDER         1000
  1422.   #define IDC_CAPTUREOPTIONS_SAVEFOLDER_BROWSE  1001
  1423. --- 756,770 ----
  1424.   #define IDC_RECORDOPTIONS_CURSERVICEONLY              1015
  1425.   #define IDC_RECORDOPTIONS_SAVESUBTITLE                    1016
  1426.   #define IDC_RECORDOPTIONS_SAVEDATACARROUSEL               1017
  1427. ! #define IDC_RECORDOPTIONS_DESCRAMBLECURSERVICEONLY        1018
  1428. ! #define IDC_RECORDOPTIONS_WRITEPLUGIN                 1019
  1429. ! #define IDC_RECORDOPTIONS_WRITEPLUGINSETTING          1020
  1430. ! #define IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE         1021
  1431. ! #define IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE_SPIN        1022
  1432. ! #define IDC_RECORDOPTIONS_BUFFERSIZE                  1023
  1433. ! #define IDC_RECORDOPTIONS_BUFFERSIZE_UD                   1024
  1434. ! #define IDC_RECORDOPTIONS_MAXPENDINGSIZE              1025
  1435. ! #define IDC_RECORDOPTIONS_MAXPENDINGSIZE_SPIN         1026
  1436.  
  1437.   #define IDC_CAPTUREOPTIONS_SAVEFOLDER         1000
  1438.   #define IDC_CAPTUREOPTIONS_SAVEFOLDER_BROWSE  1001
  1439. diff -crN ./src_orig\TVTest.rc ./src_unko\TVTest.rc
  1440. *** ./src_orig\TVTest.rc    Sat Nov 22 04:36:26 2014
  1441. --- ./src_unko\TVTest.rc    Sun Nov 30 08:34:20 2014
  1442. ***************
  1443. *** 1195,1216 ****
  1444.     AUTOCHECKBOX "現在のサービスのみ保存する(&V)",IDC_RECORDOPTIONS_CURSERVICEONLY,8,144,120,9
  1445.     AUTOCHECKBOX "字幕データを保存する(&U)",IDC_RECORDOPTIONS_SAVESUBTITLE,8,156,96,9
  1446.     AUTOCHECKBOX "データ放送を保存する(&A)",IDC_RECORDOPTIONS_SAVEDATACARROUSEL,8,168,96,9
  1447. !   LTEXT "保存プラグイン(&L):",-1,8,182,64,8
  1448. !   COMBOBOX IDC_RECORDOPTIONS_WRITEPLUGIN,76,180,136,80,WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
  1449. !   PUSHBUTTON "設定...",IDC_RECORDOPTIONS_WRITEPLUGINSETTING,216,179,32,14,WS_DISABLED
  1450.  
  1451. !   RTEXT "さかのぼり録画のメモリサイズ(&H):",-1,8,202,108,8
  1452. !   EDITTEXT IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE,120,200,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1453. !   CONTROL "",IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE_SPIN,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,200,10,12
  1454. !   LTEXT "MiB (1~1024)",-1,154,202,52,8
  1455. !   RTEXT "ファイル書き出し単位(&B):",-1,8,218,108,8
  1456. !   EDITTEXT IDC_RECORDOPTIONS_BUFFERSIZE,120,216,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1457. !   CONTROL "",IDC_RECORDOPTIONS_BUFFERSIZE_UD,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,216,10,12
  1458. !   LTEXT "KiB (1~32768)",-1,154,218,56,8
  1459. !   RTEXT "書き出し待ちのサイズ制限(&P):",-1,8,234,108,8
  1460. !   EDITTEXT IDC_RECORDOPTIONS_MAXPENDINGSIZE,120,232,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1461. !   CONTROL "",IDC_RECORDOPTIONS_MAXPENDINGSIZE_SPIN,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,232,10,12
  1462. !   LTEXT "MiB (32~1024)",-1,154,234,56,8
  1463.   END
  1464.  
  1465.   IDD_OPTIONS_CAPTURE DIALOG DISCARDABLE 0,0,256,288
  1466. --- 1195,1217 ----
  1467.     AUTOCHECKBOX "現在のサービスのみ保存する(&V)",IDC_RECORDOPTIONS_CURSERVICEONLY,8,144,120,9
  1468.     AUTOCHECKBOX "字幕データを保存する(&U)",IDC_RECORDOPTIONS_SAVESUBTITLE,8,156,96,9
  1469.     AUTOCHECKBOX "データ放送を保存する(&A)",IDC_RECORDOPTIONS_SAVEDATACARROUSEL,8,168,96,9
  1470. !   AUTOCHECKBOX "現在のサービスのみスクランブル解除する(&D)",IDC_RECORDOPTIONS_DESCRAMBLECURSERVICEONLY,8,180,156,9
  1471. !   LTEXT "保存プラグイン(&L):",-1,8,194,64,8
  1472. !   COMBOBOX IDC_RECORDOPTIONS_WRITEPLUGIN,76,192,136,80,WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST
  1473. !   PUSHBUTTON "設定...",IDC_RECORDOPTIONS_WRITEPLUGINSETTING,216,191,32,14,WS_DISABLED
  1474.  
  1475. !   RTEXT "さかのぼり録画のメモリサイズ(&H):",-1,8,214,108,8
  1476. !   EDITTEXT IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE,120,212,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1477. !   CONTROL "",IDC_RECORDOPTIONS_TIMESHIFTBUFFERSIZE_SPIN,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,212,10,12
  1478. !   LTEXT "MiB (1~1024)",-1,154,214,52,8
  1479. !   RTEXT "ファイル書き出し単位(&B):",-1,8,230,108,8
  1480. !   EDITTEXT IDC_RECORDOPTIONS_BUFFERSIZE,120,228,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1481. !   CONTROL "",IDC_RECORDOPTIONS_BUFFERSIZE_UD,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,228,10,12
  1482. !   LTEXT "KiB (1~32768)",-1,154,230,56,8
  1483. !   RTEXT "書き出し待ちのサイズ制限(&P):",-1,8,246,108,8
  1484. !   EDITTEXT IDC_RECORDOPTIONS_MAXPENDINGSIZE,120,244,32,12,ES_NUMBER | ES_AUTOHSCROLL
  1485. !   CONTROL "",IDC_RECORDOPTIONS_MAXPENDINGSIZE_SPIN,"msctls_updown32",WS_CHILD | WS_VISIBLE | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_NOTHOUSANDS | UDS_SETBUDDYINT,142,244,10,12
  1486. !   LTEXT "MiB (32~1024)",-1,154,246,56,8
  1487.   END
  1488.  
  1489.   IDD_OPTIONS_CAPTURE DIALOG DISCARDABLE 0,0,256,288
  1490. diff -crN ./src_orig\TVTest.sln ./src_unko\TVTest.sln
  1491. *** ./src_orig\TVTest.sln   Sat Nov 22 04:36:26 2014
  1492. --- ./src_unko\TVTest.sln   Tue Jun 10 12:09:43 2014
  1493. ***************
  1494. *** 1,6 ****
  1495.   ・ソ
  1496. ! Microsoft Visual Studio Solution File, Format Version 11.00
  1497. ! # Visual Studio 2010
  1498.   Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TVTest", "TVTest.vcxproj", "{88CAD0EE-D7F6-412D-8691-D1FF19534587}"
  1499.     ProjectSection(ProjectDependencies) = postProject
  1500.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114} = {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}
  1501. --- 1,6 ----
  1502.   ・ソ
  1503. ! Microsoft Visual Studio Solution File, Format Version 12.00
  1504. ! # Visual Studio 2012
  1505.   Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TVTest", "TVTest.vcxproj", "{88CAD0EE-D7F6-412D-8691-D1FF19534587}"
  1506.     ProjectSection(ProjectDependencies) = postProject
  1507.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114} = {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}
  1508. ***************
  1509. *** 9,22 ****
  1510.   EndProject
  1511.   Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BaseClasses", "BaseClasses\BaseClasses.vcxproj", "{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}"
  1512.   EndProject
  1513. ! Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "faad2\libfaad.vcxproj", "{BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}"
  1514.   EndProject
  1515.   Global
  1516.     GlobalSection(SolutionConfigurationPlatforms) = preSolution
  1517.         Debug|Win32 = Debug|Win32
  1518.         Debug|x64 = Debug|x64
  1519. -       Release_MD|Win32 = Release_MD|Win32
  1520. -       Release_MD|x64 = Release_MD|x64
  1521.         Release|Win32 = Release|Win32
  1522.         Release|x64 = Release|x64
  1523.     EndGlobalSection
  1524. --- 9,20 ----
  1525.   EndProject
  1526.   Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BaseClasses", "BaseClasses\BaseClasses.vcxproj", "{E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}"
  1527.   EndProject
  1528. ! Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "libfaad\libfaad.vcxproj", "{BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}"
  1529.   EndProject
  1530.   Global
  1531.     GlobalSection(SolutionConfigurationPlatforms) = preSolution
  1532.         Debug|Win32 = Debug|Win32
  1533.         Debug|x64 = Debug|x64
  1534.         Release|Win32 = Release|Win32
  1535.         Release|x64 = Release|x64
  1536.     EndGlobalSection
  1537. ***************
  1538. *** 25,34 ****
  1539.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Debug|Win32.Build.0 = Debug|Win32
  1540.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Debug|x64.ActiveCfg = Debug|x64
  1541.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Debug|x64.Build.0 = Debug|x64
  1542. -       {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release_MD|Win32.ActiveCfg = Release_MD|Win32
  1543. -       {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release_MD|Win32.Build.0 = Release_MD|Win32
  1544. -       {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release_MD|x64.ActiveCfg = Release_MD|x64
  1545. -       {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release_MD|x64.Build.0 = Release_MD|x64
  1546.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release|Win32.ActiveCfg = Release|Win32
  1547.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release|Win32.Build.0 = Release|Win32
  1548.         {88CAD0EE-D7F6-412D-8691-D1FF19534587}.Release|x64.ActiveCfg = Release|x64
  1549. --- 23,28 ----
  1550. ***************
  1551. *** 37,46 ****
  1552.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|Win32.Build.0 = Debug|Win32
  1553.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|x64.ActiveCfg = Debug|x64
  1554.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Debug|x64.Build.0 = Debug|x64
  1555. -       {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release_MD|Win32.ActiveCfg = Release_MD|Win32
  1556. -       {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release_MD|Win32.Build.0 = Release_MD|Win32
  1557. -       {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release_MD|x64.ActiveCfg = Release_MD|x64
  1558. -       {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release_MD|x64.Build.0 = Release_MD|x64
  1559.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|Win32.ActiveCfg = Release|Win32
  1560.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|Win32.Build.0 = Release|Win32
  1561.         {E8A3F6FA-AE1C-4C8E-A0B6-9C8480324EAA}.Release|x64.ActiveCfg = Release|x64
  1562. --- 31,36 ----
  1563. ***************
  1564. *** 49,58 ****
  1565.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Debug|Win32.Build.0 = Debug|Win32
  1566.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Debug|x64.ActiveCfg = Debug|x64
  1567.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Debug|x64.Build.0 = Debug|x64
  1568. -       {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release_MD|Win32.ActiveCfg = Release_MD|Win32
  1569. -       {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release_MD|Win32.Build.0 = Release_MD|Win32
  1570. -       {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release_MD|x64.ActiveCfg = Release_MD|x64
  1571. -       {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release_MD|x64.Build.0 = Release_MD|x64
  1572.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release|Win32.ActiveCfg = Release|Win32
  1573.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release|Win32.Build.0 = Release|Win32
  1574.         {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release|x64.ActiveCfg = Release|x64
  1575. --- 39,44 ----
  1576. diff -crN ./src_orig\TVTest.vcxproj ./src_unko\TVTest.vcxproj
  1577. *** ./src_orig\TVTest.vcxproj   Sat Nov 22 04:36:26 2014
  1578. --- ./src_unko\TVTest.vcxproj   Sat Nov 29 09:44:50 2014
  1579. ***************
  1580. *** 9,22 ****
  1581.         <Configuration>Debug</Configuration>
  1582.         <Platform>x64</Platform>
  1583.       </ProjectConfiguration>
  1584. -     <ProjectConfiguration Include="Release_MD|Win32">
  1585. -       <Configuration>Release_MD</Configuration>
  1586. -       <Platform>Win32</Platform>
  1587. -     </ProjectConfiguration>
  1588. -     <ProjectConfiguration Include="Release_MD|x64">
  1589. -       <Configuration>Release_MD</Configuration>
  1590. -       <Platform>x64</Platform>
  1591. -     </ProjectConfiguration>
  1592.       <ProjectConfiguration Include="Release|Win32">
  1593.         <Configuration>Release</Configuration>
  1594.         <Platform>Win32</Platform>
  1595. --- 9,14 ----
  1596. ***************
  1597. *** 37,70 ****
  1598.       <UseOfMfc>false</UseOfMfc>
  1599.       <CharacterSet>Unicode</CharacterSet>
  1600.       <WholeProgramOptimization>true</WholeProgramOptimization>
  1601. !   </PropertyGroup>
  1602. !   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'" Label="Configuration">
  1603. !     <ConfigurationType>Application</ConfigurationType>
  1604. !     <UseOfMfc>false</UseOfMfc>
  1605. !     <CharacterSet>Unicode</CharacterSet>
  1606. !     <WholeProgramOptimization>true</WholeProgramOptimization>
  1607.     </PropertyGroup>
  1608.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  1609.       <ConfigurationType>Application</ConfigurationType>
  1610.       <UseOfMfc>false</UseOfMfc>
  1611.       <CharacterSet>Unicode</CharacterSet>
  1612.     </PropertyGroup>
  1613.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  1614.       <ConfigurationType>Application</ConfigurationType>
  1615.       <UseOfMfc>false</UseOfMfc>
  1616.       <CharacterSet>Unicode</CharacterSet>
  1617.       <WholeProgramOptimization>true</WholeProgramOptimization>
  1618. !   </PropertyGroup>
  1619. !   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'" Label="Configuration">
  1620. !     <ConfigurationType>Application</ConfigurationType>
  1621. !     <UseOfMfc>false</UseOfMfc>
  1622. !     <CharacterSet>Unicode</CharacterSet>
  1623. !     <WholeProgramOptimization>true</WholeProgramOptimization>
  1624.     </PropertyGroup>
  1625.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
  1626.       <ConfigurationType>Application</ConfigurationType>
  1627.       <UseOfMfc>false</UseOfMfc>
  1628.       <CharacterSet>Unicode</CharacterSet>
  1629.     </PropertyGroup>
  1630.     <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  1631.     <ImportGroup Label="ExtensionSettings">
  1632. --- 29,54 ----
  1633.       <UseOfMfc>false</UseOfMfc>
  1634.       <CharacterSet>Unicode</CharacterSet>
  1635.       <WholeProgramOptimization>true</WholeProgramOptimization>
  1636. !     <PlatformToolset>v110</PlatformToolset>
  1637.     </PropertyGroup>
  1638.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
  1639.       <ConfigurationType>Application</ConfigurationType>
  1640.       <UseOfMfc>false</UseOfMfc>
  1641.       <CharacterSet>Unicode</CharacterSet>
  1642. +     <PlatformToolset>v110</PlatformToolset>
  1643.     </PropertyGroup>
  1644.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
  1645.       <ConfigurationType>Application</ConfigurationType>
  1646.       <UseOfMfc>false</UseOfMfc>
  1647.       <CharacterSet>Unicode</CharacterSet>
  1648.       <WholeProgramOptimization>true</WholeProgramOptimization>
  1649. !     <PlatformToolset>v110</PlatformToolset>
  1650.     </PropertyGroup>
  1651.     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
  1652.       <ConfigurationType>Application</ConfigurationType>
  1653.       <UseOfMfc>false</UseOfMfc>
  1654.       <CharacterSet>Unicode</CharacterSet>
  1655. +     <PlatformToolset>v110</PlatformToolset>
  1656.     </PropertyGroup>
  1657.     <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
  1658.     <ImportGroup Label="ExtensionSettings">
  1659. ***************
  1660. *** 72,89 ****
  1661.     <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
  1662.       <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1663.     </ImportGroup>
  1664. -   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'" Label="PropertySheets">
  1665. -     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1666. -   </ImportGroup>
  1667.     <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
  1668.       <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1669.     </ImportGroup>
  1670.     <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
  1671.       <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1672.     </ImportGroup>
  1673. -   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'" Label="PropertySheets">
  1674. -     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1675. -   </ImportGroup>
  1676.     <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
  1677.       <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
  1678.     </ImportGroup>
  1679. --- 56,67 ----
  1680. ***************
  1681. *** 97,113 ****
  1682.       <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
  1683.       <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
  1684.       <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
  1685. -     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
  1686.       <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
  1687. -     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'">$(Platform)\$(Configuration)\</IntDir>
  1688.       <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
  1689. -     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'">false</LinkIncremental>
  1690.       <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
  1691. -     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
  1692.       <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
  1693. -     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'">$(Platform)\$(Configuration)\</IntDir>
  1694.       <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
  1695. -     <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'">false</LinkIncremental>
  1696.       <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
  1697.       <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
  1698.       <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
  1699. --- 75,85 ----
  1700. ***************
  1701. *** 115,131 ****
  1702.       <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
  1703.       <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
  1704.       <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
  1705. -     <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
  1706.       <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
  1707. -     <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'" />
  1708.       <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
  1709. -     <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'" />
  1710.       <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
  1711. -     <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
  1712.       <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
  1713. -     <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'" />
  1714.       <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
  1715. -     <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'" />
  1716.     </PropertyGroup>
  1717.     <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  1718.       <Midl>
  1719. --- 87,97 ----
  1720. ***************
  1721. *** 279,395 ****
  1722.         <EnableDPIAwareness>true</EnableDPIAwareness>
  1723.       </Manifest>
  1724.     </ItemDefinitionGroup>
  1725. -   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|Win32'">
  1726. -     <Midl>
  1727. -       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1728. -       <MkTypLibCompatible>false</MkTypLibCompatible>
  1729. -       <ValidateAllParameters>false</ValidateAllParameters>
  1730. -     </Midl>
  1731. -     <ClCompile>
  1732. -       <Optimization>Full</Optimization>
  1733. -       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
  1734. -       <IntrinsicFunctions>false</IntrinsicFunctions>
  1735. -       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
  1736. -       <AdditionalIncludeDirectories>.\;.\Include;.\BonTsEngine;.\HelperClass;.\DirectShowFilter;.\DtvEngine;.\BaseClasses;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  1737. -       <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1738. -       <StringPooling>true</StringPooling>
  1739. -       <MinimalRebuild>false</MinimalRebuild>
  1740. -       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
  1741. -       <BufferSecurityCheck>false</BufferSecurityCheck>
  1742. -       <FunctionLevelLinking>true</FunctionLevelLinking>
  1743. -       <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
  1744. -       <PrecompiledHeader>NotUsing</PrecompiledHeader>
  1745. -       <WarningLevel>Level3</WarningLevel>
  1746. -       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
  1747. -       <CompileAs>Default</CompileAs>
  1748. -       <FloatingPointModel>Fast</FloatingPointModel>
  1749. -     </ClCompile>
  1750. -     <ResourceCompile>
  1751. -       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1752. -       <Culture>0x0411</Culture>
  1753. -       <AdditionalIncludeDirectories>$(IntDir);Resource;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  1754. -     </ResourceCompile>
  1755. -     <Link>
  1756. -       <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
  1757. -       <AdditionalLibraryDirectories>$(IntDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
  1758. -       <EnableUAC>false</EnableUAC>
  1759. -       <DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
  1760. -       <GenerateDebugInformation>false</GenerateDebugInformation>
  1761. -       <SubSystem>Windows</SubSystem>
  1762. -       <StackReserveSize>2097152</StackReserveSize>
  1763. -       <LargeAddressAware>true</LargeAddressAware>
  1764. -       <OptimizeReferences>true</OptimizeReferences>
  1765. -       <EnableCOMDATFolding>true</EnableCOMDATFolding>
  1766. -       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
  1767. -       <RandomizedBaseAddress>false</RandomizedBaseAddress>
  1768. -       <DataExecutionPrevention>
  1769. -       </DataExecutionPrevention>
  1770. -       <TargetMachine>MachineX86</TargetMachine>
  1771. -       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
  1772. -       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
  1773. -     </Link>
  1774. -     <Manifest>
  1775. -       <AdditionalManifestFiles>$(SolutionDir)Resource\compatibility.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
  1776. -       <OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile>
  1777. -       <EnableDPIAwareness>true</EnableDPIAwareness>
  1778. -     </Manifest>
  1779. -   </ItemDefinitionGroup>
  1780.     <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  1781. -     <Midl>
  1782. -       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1783. -       <MkTypLibCompatible>false</MkTypLibCompatible>
  1784. -       <TargetEnvironment>X64</TargetEnvironment>
  1785. -     </Midl>
  1786. -     <ClCompile>
  1787. -       <Optimization>Full</Optimization>
  1788. -       <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
  1789. -       <IntrinsicFunctions>false</IntrinsicFunctions>
  1790. -       <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
  1791. -       <AdditionalIncludeDirectories>.\;.\Include;.\BonTsEngine;.\HelperClass;.\DirectShowFilter;.\DtvEngine;.\BaseClasses;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  1792. -       <PreprocessorDefinitions>WIN32;WIN64;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1793. -       <StringPooling>true</StringPooling>
  1794. -       <MinimalRebuild>false</MinimalRebuild>
  1795. -       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
  1796. -       <BufferSecurityCheck>false</BufferSecurityCheck>
  1797. -       <FunctionLevelLinking>true</FunctionLevelLinking>
  1798. -       <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
  1799. -       <PrecompiledHeader>NotUsing</PrecompiledHeader>
  1800. -       <WarningLevel>Level3</WarningLevel>
  1801. -       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
  1802. -       <CompileAs>Default</CompileAs>
  1803. -       <FloatingPointModel>Fast</FloatingPointModel>
  1804. -     </ClCompile>
  1805. -     <ResourceCompile>
  1806. -       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1807. -       <Culture>0x0411</Culture>
  1808. -       <AdditionalIncludeDirectories>$(IntDir);Resource;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
  1809. -     </ResourceCompile>
  1810. -     <Link>
  1811. -       <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
  1812. -       <AdditionalLibraryDirectories>$(IntDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
  1813. -       <EnableUAC>false</EnableUAC>
  1814. -       <DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>
  1815. -       <GenerateDebugInformation>false</GenerateDebugInformation>
  1816. -       <SubSystem>Windows</SubSystem>
  1817. -       <StackReserveSize>2097152</StackReserveSize>
  1818. -       <LargeAddressAware>true</LargeAddressAware>
  1819. -       <OptimizeReferences>true</OptimizeReferences>
  1820. -       <EnableCOMDATFolding>true</EnableCOMDATFolding>
  1821. -       <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
  1822. -       <RandomizedBaseAddress>false</RandomizedBaseAddress>
  1823. -       <DataExecutionPrevention>
  1824. -       </DataExecutionPrevention>
  1825. -       <TargetMachine>MachineX64</TargetMachine>
  1826. -       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
  1827. -       <IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
  1828. -     </Link>
  1829. -     <Manifest>
  1830. -       <AdditionalManifestFiles>$(SolutionDir)Resource\compatibility.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
  1831. -       <OutputManifestFile>$(IntDir)$(TargetName)$(TargetExt).embed.manifest</OutputManifestFile>
  1832. -       <EnableDPIAwareness>true</EnableDPIAwareness>
  1833. -     </Manifest>
  1834. -   </ItemDefinitionGroup>
  1835. -   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_MD|x64'">
  1836.       <Midl>
  1837.         <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  1838.         <MkTypLibCompatible>false</MkTypLibCompatible>
  1839. --- 245,251 ----
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement