Track switching ingebouwd in STTS functionaliteit

This commit is contained in:
Erik Zandvliet 2011-01-24 11:49:10 +01:00
parent f986339488
commit 401e3a72aa
2 changed files with 47 additions and 13 deletions

View file

@ -246,20 +246,51 @@ void Interface::SetStaticDefaults() {
hdlr_vide->SetName( "Audio Track" ); hdlr_vide->SetName( "Audio Track" );
} }
void Interface::AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta ) { void Interface::AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta, uint32_t Track ) {
stts_record temp; stts_record temp;
temp.SampleCount = SampleCount; temp.SampleCount = SampleCount;
temp.SampleDelta = SampleDelta; temp.SampleDelta = SampleDelta;
stts.push_back(temp); switch(Track) {
case 1:
sttsvide.push_back(temp);
break;
case 2:
sttssoun.push_back(temp);
break;
default:
fprintf( stderr, "WARNING: Track %d does not exist, STTS not added\n", Track );
break;
}
} }
void Interface::EmptySTTS() { void Interface::EmptySTTS( uint32_t Track ) {
stts.clear(); switch(Track) {
case 1:
sttsvide.clear();
break;
case 2:
sttssoun.clear();
break;
default:
fprintf( stderr, "WARNING: Track %d does not exist, STTS not cleared\n", Track );
break;
}
} }
void Interface::WriteSTTS( ) { void Interface::WriteSTTS( uint32_t Track ) {
for( int i = stts.size() -1; i > 0; i -- ) { switch( Track ) {
stts_vide->AddEntry(stts[i].SampleCount,stts[i].SampleDelta,i); case 1:
stts_soun->AddEntry(stts[i].SampleCount,stts[i].SampleDelta,i); for( int i = sttsvide.size() -1; i > 0; i -- ) {
stts_vide->AddEntry(sttsvide[i].SampleCount,sttsvide[i].SampleDelta,i);
}
break;
case 2:
for( int i = sttssoun.size() -1; i > 0; i -- ) {
stts_soun->AddEntry(sttssoun[i].SampleCount,sttssoun[i].SampleDelta,i);
}
break;
default:
fprintf( stderr, "WARNING: Track %d does not exist, STTS not written\n", Track );
break;
} }
} }

View file

@ -26,7 +26,10 @@ class Interface {
uint16_t Height; uint16_t Height;
std::vector<uint32_t> Duration; std::vector<uint32_t> Duration;
std::vector<uint32_t> UnitsPerSecond; std::vector<uint32_t> UnitsPerSecond;
std::vector<stts_record> stts; std::vector<stts_record> sttsvide;
std::vector<stts_record> sttssoun;
std::vector<stsc_record> stscvide;
std::vector<stsc_record> stscsoun;
Box_ftyp * ftyp; Box_ftyp * ftyp;
Box_moov * moov; Box_moov * moov;
Box_mvhd * mvhd; Box_mvhd * mvhd;