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 ) { | ||||
|   if( Duration != NewDuration ) { | ||||
|     Duration = NewDuration; | ||||
|     mvhd->SetDurationTime( Duration ); | ||||
|     mdhd_vide->SetDurationTime( Duration ); | ||||
|     tkhd_vide->SetDurationTime( Duration ); | ||||
|     mdhd_soun->SetDurationTime( Duration ); | ||||
|     tkhd_soun->SetDurationTime( Duration ); | ||||
| void Interface::SetDurationTime( uint32_t NewDuration, uint32_t Track ) { | ||||
|   if( Duration.size() < Track ) { Duration.resize(Track+1); } | ||||
|   if( Duration[Track] != NewDuration ) { | ||||
|     Duration[Track] = NewDuration; | ||||
|     switch( Track ) { | ||||
|       case 0: | ||||
|         mvhd->SetDurationTime( Duration[Track] ); | ||||
|         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 ) { | ||||
|     UnitsPerSecond = NewUnitsPerSecond; | ||||
|     mvhd->SetTimeScale( UnitsPerSecond ); | ||||
|     mdhd_vide->SetTimeScale( UnitsPerSecond ); | ||||
|     mdhd_soun->SetTimeScale( UnitsPerSecond ); | ||||
| void Interface::SetTimeScale( uint32_t NewUnitsPerSecond, uint32_t Track ) { | ||||
|   if( UnitsPerSecond.size() < Track ) { UnitsPerSecond.resize(Track+1); } | ||||
|   if( UnitsPerSecond[Track] != NewUnitsPerSecond ) { | ||||
|     UnitsPerSecond[Track] = NewUnitsPerSecond; | ||||
|     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 SetHeight( uint16_t NewHeight ); | ||||
|     void SetDurationTime( uint32_t NewDuration ); | ||||
|     void SetTimeScale( uint32_t NewUnitsPerSecond ); | ||||
|     void AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta ); | ||||
|     void EmptySTTS( ); | ||||
|     void SetDurationTime( uint32_t NewDuration, uint32_t Track ); | ||||
|     void SetTimeScale( uint32_t NewUnitsPerSecond, uint32_t Track ); | ||||
|     void AddSTTSEntry( uint32_t SampleCount, uint32_t SampleDelta, uint32_t Track ); | ||||
|     void EmptySTTS( uint32_t Track ); | ||||
|     void AddSTSCEntry( uint32_t FirstChunk, uint32_t SamplesPerChunk, uint32_t Track ); | ||||
|     void EmptySTSC( uint32_t Track ); | ||||
|   private: | ||||
|     void SetStaticDefaults(); | ||||
|     void UpdateContents(); | ||||
|     void WriteSTTS( ); | ||||
|     void WriteSTTS( uint32_t Track ); | ||||
|     void WriteSTSC( uint32_t Track ); | ||||
|     bool AllBoxesExist(); | ||||
|     uint16_t Width; | ||||
|     uint16_t Height; | ||||
|     uint32_t Duration; | ||||
|     uint32_t UnitsPerSecond; | ||||
|     std::vector<uint32_t> Duration; | ||||
|     std::vector<uint32_t> UnitsPerSecond; | ||||
|     std::vector<stts_record> stts; | ||||
|     Box_ftyp * ftyp; | ||||
|     Box_moov * moov; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Erik Zandvliet
						Erik Zandvliet