libaribb25/aribb25/libaribb25.h

57 lines
1.9 KiB
C++

// libaribb25.h: CB25Decoder クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////
#pragma once
#include <windows.h>
#include <ctime>
#include <mutex>
#include "IB25Decoder.h"
#include "arib_std_b25.h"
#include "arib_std_b25_error_code.h"
#define RETRY_INTERVAL 10 // 10sec interval
class CB25Decoder : public IB25Decoder2
{
public:
// IB25Decoder
virtual const BOOL Initialize(DWORD dwRound = 4);
virtual const BOOL Decode(BYTE *pSrcBuf, const DWORD dwSrcSize, BYTE **ppDstBuf, DWORD *pdwDstSize);
virtual const BOOL Flush(BYTE **ppDstBuf, DWORD *pdwDstSize);
virtual const BOOL Reset(void);
// IB25Decoder2
virtual void DiscardNullPacket(const bool bEnable = true);
virtual void DiscardScramblePacket(const bool bEnable = true);
virtual void EnableEmmProcess(const bool bEnable = true);
virtual void SetMulti2Round(const int32_t round = 4);
virtual void SetSimdMode(const int32_t instruction = 2);
virtual const DWORD GetDescramblingState(const WORD wProgramID);
virtual void ResetStatistics(void);
virtual const DWORD GetPacketStride(void);
virtual const DWORD GetInputPacketNum(const WORD wPID = TS_INVALID_PID);
virtual const DWORD GetOutputPacketNum(const WORD wPID = TS_INVALID_PID);
virtual const DWORD GetSyncErrNum(void);
virtual const DWORD GetFormatErrNum(void);
virtual const DWORD GetTransportErrNum(void);
virtual const DWORD GetContinuityErrNum(const WORD wPID = TS_INVALID_PID);
virtual const DWORD GetScramblePacketNum(const WORD wPID = TS_INVALID_PID);
virtual const DWORD GetEcmProcessNum(void);
virtual const DWORD GetEmmProcessNum(void);
// CB25Decoder
CB25Decoder(void);
virtual ~CB25Decoder(void);
void Release(void);
static CB25Decoder *m_pThis;
private:
std::mutex _mtx;
B_CAS_CARD *_bcas;
ARIB_STD_B25 *_b25;
BYTE *_data;
time_t _errtime;
};