Test1
This commit is contained in:
parent
bbffd87ec6
commit
251cd12710
3 changed files with 10 additions and 181 deletions
|
@ -222,176 +222,6 @@ void Parse( Box * source ,std::string PrintOffset ) {
|
|||
}
|
||||
}
|
||||
|
||||
void * Parse( Box * source ) {
|
||||
if( source->header.BoxType == 0x61627374 ) { //abst
|
||||
uint8_t Version = source->Payload[0];
|
||||
uint32_t Flags = (source->Payload[1] << 16) + (source->Payload[2] << 8) + (source->Payload[3]); //uint24_t
|
||||
uint32_t BootstrapInfoVersion = (source->Payload[4] << 24) + (source->Payload[5] << 16) +(source->Payload[6] << 8) + (source->Payload[7]);
|
||||
uint8_t Profile = (source->Payload[8] >> 6); //uint2_t
|
||||
uint8_t Live = (( source->Payload[8] >> 5 ) & 0x1); //uint1_t
|
||||
uint8_t Update = (( source->Payload[8] >> 4 ) & 0x1); //uint1_t
|
||||
uint8_t Reserved = ( source->Payload[8] & 0x4); //uint4_t
|
||||
uint32_t Timescale = (source->Payload[9] << 24) + (source->Payload[10] << 16) +(source->Payload[11] << 8) + (source->Payload[12]);
|
||||
uint32_t CurrentMediaTime_Upperhalf = (source->Payload[13] << 24) + (source->Payload[14] << 16) +(source->Payload[15] << 8) + (source->Payload[16]);
|
||||
uint32_t CurrentMediaTime_Lowerhalf = (source->Payload[17] << 24) + (source->Payload[18] << 16) +(source->Payload[19] << 8) + (source->Payload[20]);
|
||||
uint32_t SmpteTimeCodeOffset_Upperhalf = (source->Payload[21] << 24) + (source->Payload[22] << 16) +(source->Payload[23] << 8) + (source->Payload[24]);
|
||||
uint32_t SmpteTimeCodeOffset_Lowerhalf = (source->Payload[25] << 24) + (source->Payload[26] << 16) +(source->Payload[27] << 8) + (source->Payload[28]);
|
||||
|
||||
std::string MovieIdentifier;
|
||||
uint8_t ServerEntryCount = -1;
|
||||
std::vector<std::string> ServerEntryTable;
|
||||
uint8_t QualityEntryCount = -1;
|
||||
std::vector<std::string> QualityEntryTable;
|
||||
std::string DrmData;
|
||||
std::string MetaData;
|
||||
uint8_t SegmentRunTableCount = -1;
|
||||
std::vector<Box_asrt*> SegmentRunTableEntries;
|
||||
uint8_t FragmentRunTableCount = -1;
|
||||
std::vector<Box_afrt*> FragmentRunTableEntries;
|
||||
|
||||
uint32_t CurrentOffset = 29;
|
||||
uint32_t TempSize;
|
||||
Box_asrt* TempAsrt;
|
||||
Box_afrt* TempAfrt;
|
||||
std::string temp;
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { MovieIdentifier += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
CurrentOffset ++;
|
||||
ServerEntryCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < ServerEntryCount; i++ ) {
|
||||
temp = "";
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { temp += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
ServerEntryTable.push_back(temp);
|
||||
CurrentOffset++;
|
||||
}
|
||||
QualityEntryCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < QualityEntryCount; i++ ) {
|
||||
temp = "";
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { temp += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
QualityEntryTable.push_back(temp);
|
||||
CurrentOffset++;
|
||||
}
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { DrmData += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
CurrentOffset ++;
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { MetaData += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
CurrentOffset ++;
|
||||
SegmentRunTableCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < SegmentRunTableCount; i++ ) {
|
||||
TempSize = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1]<< 16) + (source->Payload[CurrentOffset+2]<< 8) + (source->Payload[CurrentOffset+3]);
|
||||
TempAsrt = (Box_asrt*)Parse( new Box( &source->Payload[CurrentOffset], TempSize ) );
|
||||
SegmentRunTableEntries.push_back(TempAsrt);
|
||||
CurrentOffset += TempSize;
|
||||
}
|
||||
FragmentRunTableCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < FragmentRunTableCount; i++ ) {
|
||||
TempSize = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1]<< 16) + (source->Payload[CurrentOffset+2]<< 8) + (source->Payload[CurrentOffset+3]);
|
||||
TempAfrt = (Box_afrt*)Parse( new Box( &source->Payload[CurrentOffset], TempSize ) );
|
||||
FragmentRunTableEntries.push_back(TempAfrt);
|
||||
CurrentOffset += TempSize;
|
||||
}
|
||||
Box_abst * returnval = new Box_abst( );
|
||||
returnval->SetVersion( Version );
|
||||
returnval->SetBootstrapVersion( BootstrapInfoVersion );
|
||||
returnval->SetProfile( Profile );
|
||||
returnval->SetLive( Live );
|
||||
returnval->SetUpdate( Update );
|
||||
returnval->SetTimeScale( Timescale );
|
||||
returnval->SetMediaTime( CurrentMediaTime_Lowerhalf );
|
||||
returnval->SetSMPTE( SmpteTimeCodeOffset_Lowerhalf );
|
||||
returnval->SetMovieIdentifier( MovieIdentifier );
|
||||
returnval->SetDRM( DrmData );
|
||||
returnval->SetMetaData( MetaData );
|
||||
for( uint8_t i = 0; i < ServerEntryTable.size( ); i++ ) { returnval->AddServerEntry( ServerEntryTable[i], i); }
|
||||
for( uint8_t i = 0; i < QualityEntryTable.size( ); i++ ) { returnval->AddQualityEntry( QualityEntryTable[i], i ); }
|
||||
for( uint8_t i = 0; i < SegmentRunTableEntries.size( ); i++ ) { returnval->AddSegmentRunTable( SegmentRunTableEntries[i]->GetBox( ), i ); }
|
||||
for( uint8_t i = 0; i < FragmentRunTableEntries.size( ); i++ ) { returnval->AddFragmentRunTable( FragmentRunTableEntries[i]->GetBox( ), i ); }
|
||||
return(void *)returnval;
|
||||
} else if ( source->header.BoxType == 0x61737274 ) { //asrt
|
||||
uint8_t Version = source->Payload[0];
|
||||
uint32_t Flags = (source->Payload[1] << 16) + (source->Payload[2] << 8) + (source->Payload[3]); //uint24_t
|
||||
uint8_t QualityEntryCount;
|
||||
std::vector<std::string> QualitySegmentUrlModifiers;
|
||||
uint32_t SegmentRunEntryCount;
|
||||
std::vector< std::pair<uint32_t,uint32_t> > SegmentRunEntryTable;
|
||||
|
||||
uint32_t CurrentOffset = 4;
|
||||
std::string temp;
|
||||
std::pair<uint32_t,uint32_t> TempPair;
|
||||
QualityEntryCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < QualityEntryCount; i++ ) {
|
||||
temp = "";
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { temp += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
QualitySegmentUrlModifiers.push_back(temp);
|
||||
CurrentOffset++;
|
||||
}
|
||||
SegmentRunEntryCount = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
for( uint8_t i = 0; i < SegmentRunEntryCount; i++ ) {
|
||||
TempPair.first = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2] << 8) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset+=4;
|
||||
TempPair.second = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2] << 8) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset+=4;
|
||||
SegmentRunEntryTable.push_back(TempPair);
|
||||
}
|
||||
Box_asrt * returnval = new Box_asrt( );
|
||||
returnval->SetVersion(Version);
|
||||
returnval->SetUpdate( );
|
||||
for( uint8_t i = 0; i < QualitySegmentUrlModifiers.size( ); i++ ) { returnval->AddQualityEntry( QualitySegmentUrlModifiers[i], i ); }
|
||||
for( uint8_t i = 0; i < SegmentRunEntryTable.size( ); i++ ) { returnval->AddSegmentRunEntry( SegmentRunEntryTable[i].first, SegmentRunEntryTable[i].second, i); }
|
||||
return (void*)returnval;
|
||||
} else if ( source->header.BoxType == 0x61667274 ) { //afrt
|
||||
uint8_t Version = source->Payload[0];
|
||||
uint32_t Flags = (source->Payload[1] << 16) + (source->Payload[2] << 8) + (source->Payload[3]); //uint24_t
|
||||
uint32_t TimeScale = (source->Payload[4] << 24) + (source->Payload[5] << 16) + (source->Payload[6] << 8) + (source->Payload[7]);
|
||||
uint8_t QualityEntryCount;
|
||||
std::vector<std::string> QualitySegmentUrlModifiers;
|
||||
uint32_t FragmentRunEntryCount;
|
||||
std::vector<afrt_fragmentrunentry> FragmentRunEntryTable;
|
||||
|
||||
uint32_t CurrentOffset = 8;
|
||||
std::string temp;
|
||||
afrt_fragmentrunentry TempEntry;
|
||||
QualityEntryCount = source->Payload[CurrentOffset];
|
||||
CurrentOffset ++;
|
||||
for( uint8_t i = 0; i < QualityEntryCount; i++ ) {
|
||||
temp = "";
|
||||
while( source->Payload[CurrentOffset] != '\0' ) { temp += source->Payload[CurrentOffset]; CurrentOffset ++; }
|
||||
QualitySegmentUrlModifiers.push_back(temp);
|
||||
CurrentOffset++;
|
||||
}
|
||||
FragmentRunEntryCount = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
for( uint8_t i = 0; i < FragmentRunEntryCount; i ++ ) {
|
||||
TempEntry.FirstFragment = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
TempEntry.FirstFragmentTimestamp_Upperhalf = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
TempEntry.FirstFragmentTimestamp = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
TempEntry.FragmentDuration = (source->Payload[CurrentOffset] << 24) + (source->Payload[CurrentOffset+1] << 16) + (source->Payload[CurrentOffset+2]) + (source->Payload[CurrentOffset+3]);
|
||||
CurrentOffset +=4;
|
||||
if( TempEntry.FragmentDuration == 0 ) {
|
||||
TempEntry.DiscontinuityIndicator = source->Payload[CurrentOffset];
|
||||
CurrentOffset++;
|
||||
}
|
||||
FragmentRunEntryTable.push_back(TempEntry);
|
||||
}
|
||||
|
||||
} else {
|
||||
std::cerr << "BoxType '"
|
||||
<< (char)(source->header.BoxType >> 24)
|
||||
<< (char)((source->header.BoxType << 8) >> 24)
|
||||
<< (char)((source->header.BoxType << 16) >> 24)
|
||||
<< (char)((source->header.BoxType << 24) >> 24)
|
||||
<< "' not yet implemented!\n";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main( ) {
|
||||
std::string temp;
|
||||
bool validinp = true;
|
||||
|
@ -405,10 +235,6 @@ int main( ) {
|
|||
}
|
||||
}
|
||||
Box * TestBox = new Box((uint8_t*)temp.c_str( ), temp.size( ));
|
||||
Box_abst * TestABST;
|
||||
TestABST = (Box_abst*)Parse( TestBox );
|
||||
std::cout << "Box Created\n";
|
||||
Parse( TestABST->GetBox(), "" );
|
||||
delete TestABST;
|
||||
Parse( TestBox, "" );
|
||||
delete TestBox;
|
||||
}
|
||||
|
|
|
@ -101,8 +101,8 @@ std::string BuildManifest( std::string MetaData, std::string MovieId, int Curren
|
|||
Result += "<streamType>live</streamType>\n";
|
||||
Result += "<deliveryType>streaming</deliveryType>\n";
|
||||
Result += "<bootstrapInfo profile=\"named\" id=\"bootstrap1\">";
|
||||
// Result += base64_encode(temp->GenerateLiveBootstrap(1));
|
||||
Result += "AAAMzmFic3QBAAAAAAAAAQAAAAPoAAAAAAAJGeoAAAAAAAAAAAABAAEAAAABAAAAGmFzcnQBAAAAAQAAAAABAAAAAQAAAMcBAAAMhmFmcnQBAAAAAAAD6AEAAAAAxwAAAAEAAAAAAAALuAAAC7gAAAACAAAAAAAAF3AAAAu4AAAAAwAAAAAAACMoAAALuAAAAAQAAAAAAAAu4AAAC7gAAAAFAAAAAAAAOpgAAAu4AAAABgAAAAAAAEZQAAALuAAAAAcAAAAAAABSCAAAC7gAAAAIAAAAAAAAXcAAAAu4AAAACQAAAAAAAGl4AAALuAAAAAoAAAAAAAB1MAAAC7gAAAALAAAAAAAAgOgAAAu4AAAADAAAAAAAAIygAAALuAAAAA0AAAAAAACYWAAAC7gAAAAOAAAAAAAApBAAAAu4AAAADwAAAAAAAK/IAAALuAAAABAAAAAAAAC7gAAAC7gAAAARAAAAAAAAxzgAAAu4AAAAEgAAAAAAANLwAAALuAAAABMAAAAAAADeqAAAC7gAAAAUAAAAAAAA6mAAAAu4AAAAFQAAAAAAAPYYAAALuAAAABYAAAAAAAEB0AAAC7gAAAAXAAAAAAABDYgAAAu4AAAAGAAAAAAAARlAAAALuAAAABkAAAAAAAEk+AAAC7gAAAAaAAAAAAABMLAAAAu4AAAAGwAAAAAAATxoAAALuAAAABwAAAAAAAFIIAAAC7gAAAAdAAAAAAABU9gAAAu4AAAAHgAAAAAAAV+QAAALuAAAAB8AAAAAAAFrSAAAC7gAAAAgAAAAAAABdwAAAAu4AAAAIQAAAAAAAYK4AAALuAAAACIAAAAAAAGOcAAAC7gAAAAjAAAAAAABmigAAAu4AAAAJAAAAAAAAaXgAAALuAAAACUAAAAAAAGxmAAAC7gAAAAmAAAAAAABvVAAAAu4AAAAJwAAAAAAAckIAAALuAAAACgAAAAAAAHUwAAAC7gAAAApAAAAAAAB4HgAAAu4AAAAKgAAAAAAAewwAAALuAAAACsAAAAAAAH36AAAC7gAAAAsAAAAAAACA6AAAAu4AAAALQAAAAAAAg9YAAALuAAAAC4AAAAAAAIbEAAAC7gAAAAvAAAAAAACJsgAAAu4AAAAMAAAAAAAAjKAAAALuAAAADEAAAAAAAI+OAAAC7gAAAAyAAAAAAACSfAAAAu4AAAAMwAAAAAAAlWoAAALuAAAADQAAAAAAAJhYAAAC7gAAAA1AAAAAAACbRgAAAu4AAAANgAAAAAAAnjQAAALuAAAADcAAAAAAAKEiAAAC7gAAAA4AAAAAAACkEAAAAu4AAAAOQAAAAAAApv4AAALuAAAADoAAAAAAAKnsAAAC7gAAAA7AAAAAAACs2gAAAu4AAAAPAAAAAAAAr8gAAALuAAAAD0AAAAAAALK2AAAC7gAAAA+AAAAAAAC1pAAAAu4AAAAPwAAAAAAAuJIAAALuAAAAEAAAAAAAALuAAAAC7gAAABBAAAAAAAC+bgAAAu4AAAAQgAAAAAAAwVwAAALuAAAAEMAAAAAAAMRKAAAC7gAAABEAAAAAAADHOAAAAu4AAAARQAAAAAAAyiYAAALuAAAAEYAAAAAAAM0UAAAC7gAAABHAAAAAAADQAgAAAu4AAAASAAAAAAAA0vAAAALuAAAAEkAAAAAAANXeAAAC7gAAABKAAAAAAADYzAAAAu4AAAASwAAAAAAA27oAAALuAAAAEwAAAAAAAN6oAAAC7gAAABNAAAAAAADhlgAAAu4AAAATgAAAAAAA5IQAAALuAAAAE8AAAAAAAOdyAAAC7gAAABQAAAAAAADqYAAAAu4AAAAUQAAAAAAA7U4AAALuAAAAFIAAAAAAAPA8AAAC7gAAABTAAAAAAADzKgAAAu4AAAAVAAAAAAAA9hgAAALuAAAAFUAAAAAAAPkGAAAC7gAAABWAAAAAAAD79AAAAu4AAAAVwAAAAAAA/uIAAALuAAAAFgAAAAAAAQHQAAAC7gAAABZAAAAAAAEEvgAAAu4AAAAWgAAAAAABB6wAAALuAAAAFsAAAAAAAQqaAAAC7gAAABcAAAAAAAENiAAAAu4AAAAXQAAAAAABEHYAAALuAAAAF4AAAAAAARNkAAAC7gAAABfAAAAAAAEWUgAAAu4AAAAYAAAAAAABGUAAAALuAAAAGEAAAAAAARwuAAAC7gAAABiAAAAAAAEfHAAAAu4AAAAYwAAAAAABIgoAAALuAAAAGQAAAAAAAST4AAAC7gAAABlAAAAAAAEn5gAAAu4AAAAZgAAAAAABKtQAAALuAAAAGcAAAAAAAS3CAAAC7gAAABoAAAAAAAEwsAAAAu4AAAAaQAAAAAABM54AAALuAAAAGoAAAAAAATaMAAAC7gAAABrAAAAAAAE5egAAAu4AAAAbAAAAAAABPGgAAALuAAAAG0AAAAAAAT9WAAAC7gAAABuAAAAAAAFCRAAAAu4AAAAbwAAAAAABRTIAAALuAAAAHAAAAAAAAUggAAAC7gAAABxAAAAAAAFLDgAAAu4AAAAcgAAAAAABTfwAAALuAAAAHMAAAAAAAVDqAAAC7gAAAB0AAAAAAAFT2AAAAu4AAAAdQAAAAAABVsYAAALuAAAAHYAAAAAAAVm0AAAC7gAAAB3AAAAAAAFcogAAAu4AAAAeAAAAAAABX5AAAALuAAAAHkAAAAAAAWJ+AAAC7gAAAB6AAAAAAAFlbAAAAu4AAAAewAAAAAABaFoAAALuAAAAHwAAAAAAAWtIAAAC7gAAAB9AAAAAAAFuNgAAAu4AAAAfgAAAAAABcSQAAALuAAAAH8AAAAAAAXQSAAAC7gAAACAAAAAAAAF3AAAAAu4AAAAgQAAAAAABee4AAALuAAAAIIAAAAAAAXzcAAAC7gAAACDAAAAAAAF/ygAAAu4AAAAhAAAAAAABgrgAAALuAAAAIUAAAAAAAYWmAAAC7gAAACGAAAAAAAGIlAAAAu4AAAAhwAAAAAABi4IAAALuAAAAIgAAAAAAAY5wAAAC7gAAACJAAAAAAAGRXgAAAu4AAAAigAAAAAABlEwAAALuAAAAIsAAAAAAAZc6AAAC7gAAACMAAAAAAAGaKAAAAu4AAAAjQAAAAAABnRYAAALuAAAAI4AAAAAAAaAEAAAC7gAAACPAAAAAAAGi8gAAAu4AAAAkAAAAAAABpeAAAALuAAAAJEAAAAAAAajOAAAC7gAAACSAAAAAAAGrvAAAAu4AAAAkwAAAAAABrqoAAALuAAAAJQAAAAAAAbGYAAAC7gAAACVAAAAAAAG0hgAAAu4AAAAlgAAAAAABt3QAAALuAAAAJcAAAAAAAbpiAAAC7gAAACYAAAAAAAG9UAAAAu4AAAAmQAAAAAABwD4AAALuAAAAJoAAAAAAAcMsAAAC7gAAACbAAAAAAAHGGgAAAu4AAAAnAAAAAAAByQgAAALuAAAAJ0AAAAAAAcv2AAAC7gAAACeAAAAAAAHO5AAAAu4AAAAnwAAAAAAB0dIAAALuAAAAKAAAAAAAAdTAAAAC7gAAAChAAAAAAAHXrgAAAu4AAAAogAAAAAAB2pwAAALuAAAAKMAAAAAAAd2KAAAC7gAAACkAAAAAAAHgeAAAAu4AAAApQAAAAAAB42YAAALuAAAAKYAAAAAAAeZUAAAC7gAAACnAAAAAAAHpQgAAAu4AAAAqAAAAAAAB7DAAAALuAAAAKkAAAAAAAe8eAAAC7gAAACqAAAAAAAHyDAAAAu4AAAAqwAAAAAAB9PoAAALuAAAAKwAAAAAAAffoAAAC7gAAACtAAAAAAAH61gAAAu4AAAArgAAAAAAB/cQAAALuAAAAK8AAAAAAAgCyAAAC7gAAACwAAAAAAAIDoAAAAu4AAAAsQAAAAAACBo4AAALuAAAALIAAAAAAAgl8AAAC7gAAACzAAAAAAAIMagAAAu4AAAAtAAAAAAACD1gAAALuAAAALUAAAAAAAhJGAAAC7gAAAC2AAAAAAAIVNAAAAu4AAAAtwAAAAAACGCIAAALuAAAALgAAAAAAAhsQAAAC7gAAAC5AAAAAAAId/gAAAu4AAAAugAAAAAACIOwAAALuAAAALsAAAAAAAiPaAAAC7gAAAC8AAAAAAAImyAAAAu4AAAAvQAAAAAACKbYAAALuAAAAL4AAAAAAAiykAAAC7gAAAC/AAAAAAAIvkgAAAu4AAAAwAAAAAAACMoAAAALuAAAAMEAAAAAAAjVuAAAC7gAAADCAAAAAAAI4XAAAAu4AAAAwwAAAAAACO0oAAALuAAAAMQAAAAAAAj44AAAC7gAAADFAAAAAAAJBJgAAAu4AAAAxgAAAAAACRBQAAALuAAAAMcAAAAAAAkZ6gAACZo=";
|
||||
Result += base64_encode(temp->GenerateLiveBootstrap(1));
|
||||
// Result += "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";
|
||||
Result += "</bootstrapInfo>\n";
|
||||
Result += "<media streamId=\"1\" bootstrapInfoId=\"bootstrap1\" url=\"";
|
||||
Result += MovieId;
|
||||
|
|
|
@ -547,22 +547,25 @@ std::string Interface::GenerateLiveBootstrap( uint32_t CurMediaTime ) {
|
|||
afrt->SetUpdate(false);
|
||||
afrt->SetTimeScale( 1000 );
|
||||
afrt->AddQualityEntry( "" );
|
||||
afrt->AddFragmentRunEntry( 1, CurMediaTime, 4000 );
|
||||
for(int i = 0; i < 198 ; i++ ) {
|
||||
afrt->AddFragmentRunEntry( i+1, (195*(i+1)) , 195, i );
|
||||
}
|
||||
afrt->AddFragmentRunEntry( 199, 590083 , 163, 198 );
|
||||
afrt->WriteContent( );
|
||||
|
||||
//SetUpASRT
|
||||
asrt->SetUpdate(false);
|
||||
asrt->AddQualityEntry( "" );
|
||||
asrt->AddSegmentRunEntry( 1, 0xFFFFFFFF );
|
||||
asrt->AddSegmentRunEntry( 1, 199 );
|
||||
asrt->WriteContent( );
|
||||
|
||||
//SetUpABST
|
||||
abst->SetBootstrapVersion( 1 );
|
||||
abst->SetProfile( 0 );
|
||||
// abst->SetLive( true );
|
||||
abst->SetLive( false );
|
||||
abst->SetUpdate( false );
|
||||
abst->SetTimeScale( 1000 );
|
||||
abst->SetMediaTime( CurMediaTime );
|
||||
abst->SetMediaTime( 596458 );
|
||||
abst->SetSMPTE( 0 );
|
||||
abst->SetMovieIdentifier( "" );
|
||||
abst->SetDRM( "" );
|
||||
|
|
Loading…
Add table
Reference in a new issue