Advertisement
Guest User

Untitled

a guest
Sep 1st, 2021
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.70 KB | None | 0 0
  1. diff -rua src.orig/EpgDataLoader.cpp src/EpgDataLoader.cpp
  2. --- src.orig/EpgDataLoader.cpp  2021-08-11 08:59:52.000000000 +0900
  3. +++ src/EpgDataLoader.cpp   2021-09-01 20:42:08.850224800 +0900
  4. @@ -102,7 +102,21 @@
  5.         Size = std::min(RemainSize, BUFFER_SIZE);
  6.         if (!::ReadFile(hFile, pBuffer, Size, &Read, nullptr))
  7.             break;
  8. -       BYTE *p = pBuffer, *pEnd = pBuffer + Read / 188 * 188;
  9. +       BYTE* p = pBuffer, * pEnd = pBuffer + Read / 188 * 188;
  10. +       // 先にTOTを1つ見つけて送出してやる
  11. +       while (p < pEnd) {
  12. +           const WORD PID = ((WORD)(p[1] & 0x1F) << 8) | (WORD)p[2];
  13. +           if (PID == 0x0014) {
  14. +               Packet.SetData(p, 188);
  15. +               if (Packet.ParsePacket() == LibISDB::TSPacket::ParseResult::OK) {
  16. +                   LibISDB::SingleDataStream<LibISDB::TSPacket> Stream(&Packet);
  17. +                   m_EPGDatabaseFilter.ReceiveData(&Stream);
  18. +               }
  19. +               break;
  20. +           }
  21. +           p += 188;
  22. +       }
  23. +       p = pBuffer, pEnd = pBuffer + Read / 188 * 188;
  24.         while (p < pEnd) {
  25.             const WORD PID = ((WORD)(p[1] & 0x1F) << 8) | (WORD)p[2];
  26.             // H-EIT / TOT / M-EIT / L-EIT
  27. diff -rua src.orig/LibISDB/LibISDB/Filters/EPGDatabaseFilter.cpp src/LibISDB/LibISDB/Filters/EPGDatabaseFilter.cpp
  28. --- src.orig/LibISDB/LibISDB/Filters/EPGDatabaseFilter.cpp  2021-08-11 08:57:04.000000000 +0900
  29. +++ src/LibISDB/LibISDB/Filters/EPGDatabaseFilter.cpp   2021-09-01 19:54:28.436255800 +0900
  30. @@ -37,6 +37,7 @@
  31.  
  32.  EPGDatabaseFilter::EPGDatabaseFilter()
  33.     : m_pEPGDatabase(nullptr)
  34. +   , m_fTOTReady(false)
  35.  {
  36.     Reset();
  37.  }
  38. @@ -59,6 +60,7 @@
  39.  
  40.     if (m_pEPGDatabase != nullptr)
  41.         m_pEPGDatabase->ResetTOTTime();
  42. +   m_fTOTReady = false;
  43.  }
  44.  
  45.  
  46. @@ -110,9 +112,10 @@
  47.             if (pEITTable != nullptr) {
  48.                 m_ResetTable = false;
  49.  
  50. -               m_pEPGDatabase->UpdateSection(pEITScheduleTable, pEITTable);
  51. +               if (m_fTOTReady)
  52. +                   m_pEPGDatabase->UpdateSection(pEITScheduleTable, pEITTable);
  53.  
  54. -               if (m_ResetTable) {
  55. +               if (m_ResetTable || !m_fTOTReady) {
  56.                     const uint16_t NetworkID = pEITTable->GetOriginalNetworkID();
  57.                     const uint16_t TransportStreamID = pEITTable->GetTransportStreamID();
  58.                     const uint16_t ServiceID = pEITTable->GetServiceID();
  59. @@ -138,6 +141,7 @@
  60.  
  61.         if (pTOTTable != nullptr)
  62.             m_pEPGDatabase->UpdateTOT(pTOTTable);
  63. +       m_fTOTReady = true;
  64.     }
  65.  }
  66.  
  67. diff -rua src.orig/LibISDB/LibISDB/Filters/EPGDatabaseFilter.hpp src/LibISDB/LibISDB/Filters/EPGDatabaseFilter.hpp
  68. --- src.orig/LibISDB/LibISDB/Filters/EPGDatabaseFilter.hpp  2021-08-11 08:57:04.000000000 +0900
  69. +++ src/LibISDB/LibISDB/Filters/EPGDatabaseFilter.hpp   2021-09-01 18:08:42.572708900 +0900
  70. @@ -63,6 +63,7 @@
  71.         PIDMapManager m_PIDMapManager;
  72.         EPGDatabase *m_pEPGDatabase;
  73.         bool m_ResetTable;
  74. +       bool m_fTOTReady;
  75.  
  76.     private:
  77.     // EPGDatabase::EventListener
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement