Loading media/extractors/mp4/MPEG4Extractor.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -1972,6 +1972,8 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { return err; } adjustRawDefaultFrameSize(); size_t max_size; err = mLastTrack->sampleTable->getMaxSampleSize(&max_size); Loading Loading @@ -4606,6 +4608,20 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( return OK; } void MPEG4Extractor::adjustRawDefaultFrameSize() { int32_t chanCount = 0; int32_t bitWidth = 0; const char *mimeStr = NULL; if(AMediaFormat_getString(mLastTrack->meta, AMEDIAFORMAT_KEY_MIME, &mimeStr) && !strcasecmp(mimeStr, MEDIA_MIMETYPE_AUDIO_RAW) && AMediaFormat_getInt32(mLastTrack->meta, AMEDIAFORMAT_KEY_CHANNEL_COUNT, &chanCount) && AMediaFormat_getInt32(mLastTrack->meta, AMEDIAFORMAT_KEY_BITS_PER_SAMPLE, &bitWidth)) { // samplesize in stsz may not right , so updade default samplesize mLastTrack->sampleTable->setPredictSampleSize(chanCount * bitWidth / 8); } } //////////////////////////////////////////////////////////////////////////////// MPEG4Source::MPEG4Source( Loading media/extractors/mp4/MPEG4Extractor.h +1 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ private: status_t parseAC3SpecificBox(off64_t offset); status_t parseEAC3SpecificBox(off64_t offset); status_t parseAC4SpecificBox(off64_t offset); void adjustRawDefaultFrameSize(); MPEG4Extractor(const MPEG4Extractor &); MPEG4Extractor &operator=(const MPEG4Extractor &); Loading media/extractors/mp4/SampleTable.h +4 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,10 @@ public: status_t findThumbnailSample(uint32_t *sample_index); void setPredictSampleSize(uint32_t sampleSize) { mDefaultSampleSize = sampleSize; } protected: ~SampleTable(); Loading Loading
media/extractors/mp4/MPEG4Extractor.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -1972,6 +1972,8 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { return err; } adjustRawDefaultFrameSize(); size_t max_size; err = mLastTrack->sampleTable->getMaxSampleSize(&max_size); Loading Loading @@ -4606,6 +4608,20 @@ status_t MPEG4Extractor::updateAudioTrackInfoFromESDS_MPEG4Audio( return OK; } void MPEG4Extractor::adjustRawDefaultFrameSize() { int32_t chanCount = 0; int32_t bitWidth = 0; const char *mimeStr = NULL; if(AMediaFormat_getString(mLastTrack->meta, AMEDIAFORMAT_KEY_MIME, &mimeStr) && !strcasecmp(mimeStr, MEDIA_MIMETYPE_AUDIO_RAW) && AMediaFormat_getInt32(mLastTrack->meta, AMEDIAFORMAT_KEY_CHANNEL_COUNT, &chanCount) && AMediaFormat_getInt32(mLastTrack->meta, AMEDIAFORMAT_KEY_BITS_PER_SAMPLE, &bitWidth)) { // samplesize in stsz may not right , so updade default samplesize mLastTrack->sampleTable->setPredictSampleSize(chanCount * bitWidth / 8); } } //////////////////////////////////////////////////////////////////////////////// MPEG4Source::MPEG4Source( Loading
media/extractors/mp4/MPEG4Extractor.h +1 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ private: status_t parseAC3SpecificBox(off64_t offset); status_t parseEAC3SpecificBox(off64_t offset); status_t parseAC4SpecificBox(off64_t offset); void adjustRawDefaultFrameSize(); MPEG4Extractor(const MPEG4Extractor &); MPEG4Extractor &operator=(const MPEG4Extractor &); Loading
media/extractors/mp4/SampleTable.h +4 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,10 @@ public: status_t findThumbnailSample(uint32_t *sample_index); void setPredictSampleSize(uint32_t sampleSize) { mDefaultSampleSize = sampleSize; } protected: ~SampleTable(); Loading