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

43 lines
963 B
C
Raw Permalink Normal View History

#ifndef _VIDEOSTREAM_READSLICE_H_
#define _VIDEOSTREAM_READSLICE_H_
#include <functional>
#include "VideoStream_Program.h"
#include "VideoStream_ReadMacroblock.h"
namespace VideoStream
{
class ReadSlice : public Program
{
public:
typedef ReadMacroblock::OnMacroblockDecodedHandler OnMacroblockDecodedHandler;
2018-04-30 21:01:23 +01:00
typedef std::function<void(MPEG_VIDEO_STATE*)> OnPictureDecodedHandler;
2018-04-30 21:01:23 +01:00
ReadSlice();
virtual ~ReadSlice();
2018-04-30 21:01:23 +01:00
void Reset();
void Execute(void*, Framework::CBitStream&);
void RegisterOnMacroblockDecodedHandler(const OnMacroblockDecodedHandler&);
void RegisterOnPictureDecodedHandler(const OnPictureDecodedHandler&);
private:
enum PROGRAM_STATE
{
STATE_INIT,
STATE_READQUANTIZERSCALECODE,
STATE_READEXTRASLICEINFOFLAG,
STATE_CHECKEND,
STATE_READMACROBLOCK,
STATE_DONE,
};
2018-04-30 21:01:23 +01:00
PROGRAM_STATE m_programState;
ReadMacroblock m_macroblockReader;
OnPictureDecodedHandler m_OnPictureDecodedHandler;
};
}
#endif