Edited SetDuration en SetTimescale zodat we ze apart per track kunnen setten
This commit is contained in:
parent
0d974a7df8
commit
f986339488
2 changed files with 48 additions and 21 deletions
|
@ -194,22 +194,46 @@ void Interface::SetHeight( uint16_t NewHeight ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Interface::SetDurationTime( uint32_t NewDuration ) {
|
void Interface::SetDurationTime( uint32_t NewDuration, uint32_t Track ) {
|
||||||
if( Duration != NewDuration ) {
|
if( Duration.size() < Track ) { Duration.resize(Track+1); }
|
||||||
Duration = NewDuration;
|
if( Duration[Track] != NewDuration ) {
|
||||||
mvhd->SetDurationTime( Duration );
|
Duration[Track] = NewDuration;
|
||||||
mdhd_vide->SetDurationTime( Duration );
|
switch( Track ) {
|
||||||
tkhd_vide->SetDurationTime( Duration );
|
case 0:
|
||||||
mdhd_soun->SetDurationTime( Duration );
|
mvhd->SetDurationTime( Duration[Track] );
|
||||||
tkhd_soun->SetDurationTime( Duration );
|
break;
|
||||||
|
case 1:
|
||||||
|
mdhd_vide->SetDurationTime( Duration[Track] );
|
||||||
|
tkhd_vide->SetDurationTime( Duration[Track] );
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mdhd_soun->SetDurationTime( Duration[Track] );
|
||||||
|
tkhd_soun->SetDurationTime( Duration[Track] );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf( stderr, "WARNING, Setting Duration for track %d does have any effect\n", Track );
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Interface::SetTimeScale( uint32_t NewUnitsPerSecond ) {
|
}
|
||||||
if( UnitsPerSecond != NewUnitsPerSecond ) {
|
void Interface::SetTimeScale( uint32_t NewUnitsPerSecond, uint32_t Track ) {
|
||||||
UnitsPerSecond = NewUnitsPerSecond;
|
if( UnitsPerSecond.size() < Track ) { UnitsPerSecond.resize(Track+1); }
|
||||||
mvhd->SetTimeScale( UnitsPerSecond );
|
if( UnitsPerSecond[Track] != NewUnitsPerSecond ) {
|
||||||
mdhd_vide->SetTimeScale( UnitsPerSecond );
|
UnitsPerSecond[Track] = NewUnitsPerSecond;
|
||||||
mdhd_soun->SetTimeScale( UnitsPerSecond );
|
switch(Track) {
|
||||||
|
case 0:
|
||||||
|
mvhd->SetTimeScale( UnitsPerSecond[Track] );
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mdhd_vide->SetTimeScale( UnitsPerSecond[Track] );
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mdhd_soun->SetTimeScale( UnitsPerSecond[Track] );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf( stderr, "WARNING, Setting Timescale for track %d does have any effect\n", Track );
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,19 +10,22 @@ class Interface {
|
||||||
|
|
||||||
void SetWidth( uint16_t NewWidth );
|
void SetWidth( uint16_t NewWidth );
|
||||||
void SetHeight( uint16_t NewHeight );
|
void SetHeight( uint16_t NewHeight );
|
||||||
void SetDurationTime( uint32_t NewDuration );
|
void SetDurationTime( uint32_t NewDuration, uint32_t Track );
|
||||||
void SetTimeScale( uint32_t NewUnitsPerSecond );
|
void SetTimeScale( uint32_t NewUnitsPerSecond, uint32_t Track );
|
||||||
void AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta );
|
void AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta, uint32_t Track );
|
||||||
void EmptySTTS( );
|
void EmptySTTS( uint32_t Track );
|
||||||
|
void AddSTSCEntry( uint32_t FirstChunk, uint32_t SamplesPerChunk, uint32_t Track );
|
||||||
|
void EmptySTSC( uint32_t Track );
|
||||||
private:
|
private:
|
||||||
void SetStaticDefaults();
|
void SetStaticDefaults();
|
||||||
void UpdateContents();
|
void UpdateContents();
|
||||||
void WriteSTTS( );
|
void WriteSTTS( uint32_t Track );
|
||||||
|
void WriteSTSC( uint32_t Track );
|
||||||
bool AllBoxesExist();
|
bool AllBoxesExist();
|
||||||
uint16_t Width;
|
uint16_t Width;
|
||||||
uint16_t Height;
|
uint16_t Height;
|
||||||
uint32_t Duration;
|
std::vector<uint32_t> Duration;
|
||||||
uint32_t UnitsPerSecond;
|
std::vector<uint32_t> UnitsPerSecond;
|
||||||
std::vector<stts_record> stts;
|
std::vector<stts_record> stts;
|
||||||
Box_ftyp * ftyp;
|
Box_ftyp * ftyp;
|
||||||
Box_moov * moov;
|
Box_moov * moov;
|
||||||
|
|
Loading…
Add table
Reference in a new issue