DSMSplitterFile.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:1k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #pragma once
  2. #include "..BaseSplitterBaseSplitter.h"
  3. #include "........includedsmdsm.h"
  4. #include "......DSUtilDSMPropertyBag.h"
  5. class CDSMSplitterFile : public CBaseSplitterFile
  6. {
  7. HRESULT Init(IDSMResourceBagImpl& res, IDSMChapterBagImpl& chap);
  8. public:
  9. CDSMSplitterFile(IAsyncReader* pReader, HRESULT& hr, IDSMResourceBagImpl& res, IDSMChapterBagImpl& chap);
  10. CAtlMap<BYTE, CMediaType> m_mts;
  11. REFERENCE_TIME m_rtFirst, m_rtDuration;
  12. struct SyncPoint {REFERENCE_TIME rt; __int64 fp;};
  13. CArray<SyncPoint> m_sps;
  14. typedef CAtlMap<CStringA, CStringW, CStringElementTraits<CStringA>, CStringElementTraits<CStringW> > CStreamInfoMap;
  15. CStreamInfoMap m_fim;
  16. CAtlMap<BYTE, CStreamInfoMap> m_sim;
  17. bool Sync(dsmp_t& type, UINT64& len, __int64 limit = 65536);
  18. bool Sync(UINT64& syncpos, dsmp_t& type, UINT64& len, __int64 limit = 65536);
  19. bool Read(__int64 len, BYTE& id, CMediaType& mt);
  20. bool Read(__int64 len, Packet* p, bool fData = true);
  21. bool Read(__int64 len, CArray<SyncPoint>& sps);
  22. bool Read(__int64 len, CStreamInfoMap& im);
  23. bool Read(__int64 len, IDSMResourceBagImpl& res);
  24. bool Read(__int64 len, IDSMChapterBagImpl& chap);
  25. __int64 Read(__int64 len, CStringW& str);
  26. __int64 FindSyncPoint(REFERENCE_TIME rt);
  27. };