|
|
|
@ -142,6 +142,7 @@ private:
|
|
|
|
|
uint8_t *mSrcBuffer;
|
|
|
|
|
|
|
|
|
|
bool mIsHeif;
|
|
|
|
|
bool mIsAudio;
|
|
|
|
|
sp<ItemTable> mItemTable;
|
|
|
|
|
|
|
|
|
|
// Start offset from composition time to presentation time.
|
|
|
|
@ -4530,6 +4531,7 @@ MPEG4Source::MPEG4Source(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mIsPcm = !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_RAW);
|
|
|
|
|
mIsAudio = !strncasecmp(mime, "audio/", 6);
|
|
|
|
|
|
|
|
|
|
if (mIsPcm) {
|
|
|
|
|
int32_t numChannels = 0;
|
|
|
|
@ -5416,8 +5418,11 @@ media_status_t MPEG4Source::read(
|
|
|
|
|
findFlags = SampleTable::kFlagBefore;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t syncSampleIndex;
|
|
|
|
|
if (err == OK) {
|
|
|
|
|
uint32_t syncSampleIndex = sampleIndex;
|
|
|
|
|
// assume every audio sample is a sync sample. This works around
|
|
|
|
|
// seek issues with files that were incorrectly written with an
|
|
|
|
|
// empty or single-sample stss block for the audio track
|
|
|
|
|
if (err == OK && !mIsAudio) {
|
|
|
|
|
err = mSampleTable->findSyncSampleNear(
|
|
|
|
|
sampleIndex, &syncSampleIndex, findFlags);
|
|
|
|
|
}
|
|
|
|
|