#include "box.cpp" #include class Box_hdlr { public: Box_hdlr( ); ~Box_hdlr(); Box * GetBox(); void SetHandlerType( uint32_t HandlerType = 0 ); void SetName ( std::string Name = "" ); private: Box * Container; void SetReserved( ); void SetDefaults( ); uint32_t CurrentHandlerType; };//Box_ftyp Class Box_hdlr::Box_hdlr( ) { Container = new Box( 0x68646C72 ); CurrentHandlerType = 0; SetReserved(); } Box_hdlr::~Box_hdlr() { delete Container; } Box * Box_hdlr::GetBox() { return Container; } void Box_hdlr::SetReserved( ) { Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0),20); Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0),16); Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0),12); Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0),4); Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0)); } void Box_hdlr::SetHandlerType( uint32_t HandlerType ) { if( HandlerType != 0 ) { CurrentHandlerType = HandlerType; } Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(CurrentHandlerType),8); } void Box_hdlr::SetName ( std::string Name ) { char * tmp = new char[Name.size()+1]; strcpy(tmp,Name.c_str()); Container->ResetPayload(); SetReserved(); SetHandlerType(0); Container->SetPayload((uint32_t)strlen(tmp)+1,(uint8_t*)tmp,24); } void Box_hdlr::SetDefaults( ) { SetName( ); SetHandlerType( ); }