void STSDAtom::OnProcessMetaData() { FullAtom::OnProcessMetaData(); ReadArrayHeader(&theHeader); // This Atom allows for multiple Desc Entries, we don't // Ok the committee was drunk when they designed this. // We are actually reading a Atom/Box where the Atom Type is the codec id. uint32 Size; Read(&Size); Read(&codecid); Read(theSampleEntry.Reserved,6); Read(&theSampleEntry.DataReference); switch (GetMediaHandlerType()) { case 'soun': ReadSoundDescription(); theAudioDescription.codecid = codecid; break; case 'vide': ReadVideoDescription(); theVideoDescription.codecid = codecid; break; case 'hint': break; default: break; } }
void STSCAtom::OnProcessMetaData() { SampleToChunk *aSampleToChunk; FullAtom::OnProcessMetaData(); ReadArrayHeader(&theHeader); uint32 TotalPrevSamples = 0; for (uint32 i=0;i<theHeader.NoEntries;i++) { aSampleToChunk = new SampleToChunk; Read(&aSampleToChunk->FirstChunk); Read(&aSampleToChunk->SamplesPerChunk); Read(&aSampleToChunk->SampleDescriptionID); if (i > 0) { TotalPrevSamples = TotalPrevSamples + (aSampleToChunk->FirstChunk - theSampleToChunkArray[i-1]->FirstChunk) * theSampleToChunkArray[i-1]->SamplesPerChunk; aSampleToChunk->TotalPrevSamples = TotalPrevSamples; } else { aSampleToChunk->TotalPrevSamples = 0; } theSampleToChunkArray.push_back(aSampleToChunk); } }
void STSDAtom::OnProcessMetaData() { ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { switch (getMediaComponentSubType()) { case 'soun': ReadSoundDescription(); break; case 'vide': ReadVideoDescription(); break; default: // Skip SampleDescBase aSampleDescBase; Read(&aSampleDescBase.Size); Read(&aSampleDescBase.DataFormat); Read(aSampleDescBase.Reserved,6); Read(&aSampleDescBase.DataReference); printf("%c%c%c%c\n",char(aSampleDescBase.DataFormat>>24),char(aSampleDescBase.DataFormat>>16),char(aSampleDescBase.DataFormat>>8),char(aSampleDescBase.DataFormat)); theStream->Seek(aSampleDescBase.Size - SampleDescBaseSize, SEEK_CUR); break; } } }
void STSSAtom::OnProcessMetaData() { SyncSample *aSyncSample; ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aSyncSample = new SyncSample; Read(&aSyncSample->SyncSampleNo); theSyncSampleArray[i] = aSyncSample; } }
void STCOAtom::OnProcessMetaData() { ChunkToOffset *aChunkToOffset; ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aChunkToOffset = new ChunkToOffset; aChunkToOffset->Offset = OnGetChunkOffset(); theChunkToOffsetArray[i] = aChunkToOffset; } PRINT(("Chunk to Offset Array has %ld entries\n",theHeader.NoEntries)); }
void STCOAtom::OnProcessMetaData() { ChunkToOffset *aChunkToOffset; FullAtom::OnProcessMetaData(); ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aChunkToOffset = new ChunkToOffset; aChunkToOffset->Offset = OnGetChunkOffset(); theChunkToOffsetArray[i] = aChunkToOffset; } }
void STTSAtom::OnProcessMetaData() { TimeToSample *aTimeToSample; ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aTimeToSample = new TimeToSample; Read(&aTimeToSample->Count); Read(&aTimeToSample->Duration); theTimeToSampleArray[i] = aTimeToSample; SUMDurations += (theTimeToSampleArray[i]->Duration * theTimeToSampleArray[i]->Count); SUMCounts += theTimeToSampleArray[i]->Count; } }
void STSSAtom::OnProcessMetaData() { SyncSample *aSyncSample; FullAtom::OnProcessMetaData(); ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aSyncSample = new SyncSample; Read(&aSyncSample->SyncSampleNo); aSyncSample->SyncSampleNo--; // First frame is 0 for haiku theSyncSampleArray.push_back(aSyncSample); } }
void CTTSAtom::OnProcessMetaData() { CompTimeToSample* aCompTimeToSample; FullAtom::OnProcessMetaData(); ReadArrayHeader(&theHeader); for (uint32 i=0;i<theHeader.NoEntries;i++) { aCompTimeToSample = new CompTimeToSample; Read(&aCompTimeToSample->Count); Read(&aCompTimeToSample->Offset); theCompTimeToSampleArray[i] = aCompTimeToSample; } }