mistserver/MP4/box_rtmp.cpp
2011-02-03 15:01:40 +01:00

57 lines
1.5 KiB
C++

#include "box_rtmp.h"
Box_rtmp::Box_rtmp( ) {
Container = new Box( 0x72746D70 );
SetReserved();
SetDefaults();
}
Box_rtmp::~Box_rtmp() {
delete Container;
}
Box * Box_rtmp::GetBox() {
return Container;
}
void Box_rtmp::SetReserved( ) {
Container->SetPayload((uint32_t)4,Box::uint32_to_uint8(0));
Container->SetPayload((uint32_t)2,Box::uint16_to_uint8(0));
}
void Box_rtmp::SetDefaults( ) {
SetDataReferenceIndex( );
SetHintTrackVersion( );
SetHighestCompatibleVersion( );
SetMaxPacketSize( );
}
void Box_rtmp::SetDataReferenceIndex( uint16_t NewIndex ) {
Container->SetPayload((uint32_t)2,Box::uint16_to_uint8(NewIndex),6);
}
void Box_rtmp::SetHintTrackVersion( uint16_t NewVersion ) {
Container->SetPayload((uint32_t)2,Box::uint16_to_uint8(NewVersion),8);
}
void Box_rtmp::SetHighestCompatibleVersion( uint16_t NewVersion ) {
Container->SetPayload((uint32_t)2,Box::uint16_to_uint8(NewVersion),10);
}
void Box_rtmp::SetMaxPacketSize( uint16_t NewSize ) {
Container->SetPayload((uint32_t)2,Box::uint16_to_uint8(NewSize),12);
}
void Box_rtmp::AddContent( Box * newcontent ) {
if(Content) {
delete Content;
Content = NULL;
}
Content = newcontent;
}
void Box_rtmp::WriteContent( ) {
Container->ResetPayload( );
SetDefaults( );
std::string serializedbox = "";
serializedbox.append((char*)Content->GetBoxedData(),Content->GetBoxedDataSize());
Container->SetPayload((uint32_t)serializedbox.size(),(uint8_t*)serializedbox.c_str(),14);
}