Play-/tools/MediaCenter/Source/VideoStream_ReadMacroblock.h

58 lines
1.3 KiB
C
Raw Permalink Normal View History

#ifndef _VIDEOSTREAM_READMACROBLOCK_H_
#define _VIDEOSTREAM_READMACROBLOCK_H_
#include <functional>
#include "MpegVideoState.h"
#include "VideoStream_Program.h"
#include "VideoStream_ReadMacroblockModes.h"
#include "VideoStream_ReadMotionVectors.h"
#include "VideoStream_ReadBlock.h"
namespace VideoStream
{
class ReadMacroblock
{
public:
2018-04-30 21:01:23 +01:00
typedef std::function<void(MPEG_VIDEO_STATE*)> OnMacroblockDecodedHandler;
2018-04-30 21:01:23 +01:00
ReadMacroblock();
virtual ~ReadMacroblock();
void Reset();
void Execute(void*, Framework::CBitStream&);
void RegisterOnMacroblockDecodedHandler(const OnMacroblockDecodedHandler&);
private:
enum PROGRAM_STATE
{
STATE_INIT,
STATE_ESCAPE,
STATE_SKIPESCAPE,
STATE_READMBINCREMENT,
STATE_READMBMODES,
STATE_READDCTTYPE,
STATE_CHECKMBMODES,
STATE_CHECKMBMODES_QSC,
STATE_CHECKMBMODES_FWM_INIT,
STATE_CHECKMBMODES_FWM,
STATE_CHECKMBMODES_BKM_INIT,
STATE_CHECKMBMODES_BKM,
STATE_CHECKMBMODES_CBP,
STATE_READBLOCKINIT,
STATE_READBLOCK,
};
2018-04-30 21:01:23 +01:00
ReadMacroblockModes m_macroblockModesReader;
ReadMotionVectors m_motionVectorsReader;
ReadMotionVector m_singleMotionVectorReader;
ReadBlock m_blockReader;
PROGRAM_STATE m_programState;
2018-04-30 21:01:23 +01:00
OnMacroblockDecodedHandler m_OnMacroblockDecodedHandler;
};
};
#endif