summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/MediaExtractor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/MediaExtractor.cpp')
-rw-r--r--media/libstagefright/MediaExtractor.cpp53
1 files changed, 7 insertions, 46 deletions
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp
index 1eb5c19..33e526a 100644
--- a/media/libstagefright/MediaExtractor.cpp
+++ b/media/libstagefright/MediaExtractor.cpp
@@ -35,6 +35,7 @@
#include "include/AACExtractor.h"
#ifdef QCOM_HARDWARE
#include "include/ExtendedExtractor.h"
+#include "include/QCUtilityClass.h"
#endif
#include "matroska/MatroskaExtractor.h"
@@ -60,7 +61,6 @@ uint32_t MediaExtractor::flags() const {
sp<MediaExtractor> MediaExtractor::Create(
const sp<DataSource> &source, const char *mime) {
sp<AMessage> meta;
- bool bCheckExtendedExtractor = false;
String8 tmp;
if (mime == NULL) {
@@ -107,9 +107,6 @@ sp<MediaExtractor> MediaExtractor::Create(
} else {
ret = new MPEG4Extractor(source);
}
-#ifdef QCOM_ENHANCED_AUDIO
- bCheckExtendedExtractor = true;
-#endif
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) {
ret = new MP3Extractor(source, meta);
} else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB)
@@ -147,49 +144,13 @@ sp<MediaExtractor> MediaExtractor::Create(
}
#ifdef QCOM_HARDWARE
- //If default extractor created and flag is not set to check extended extractor,
- // then pass default extractor.
- if (ret && (!bCheckExtendedExtractor) ) {
- ALOGD("returning default extractor");
- return ret;
- }
-
- //Create Extended Extractor only if default extractor are not selected
- ALOGV("Using ExtendedExtractor");
- sp<MediaExtractor> retextParser = ExtendedExtractor::CreateExtractor(source, mime);
- //if we came here, it means we do not have to use the default extractor, if created above.
- bool bUseDefaultExtractor = false;
-
- if(bCheckExtendedExtractor) {
- ALOGV("bCheckExtendedExtractor is true");
- //bCheckExtendedExtractor is true which means default extractor was found
- // but we want to give preference to extended extractor based on certain
- // codec type.Set bUseDefaultExtractor to true if extended extractor
- //does not return specific codec type that we are looking for.
- bUseDefaultExtractor = true;
- ALOGV(" bCheckExtendedExtractor is true..checking extended extractor");
- for (size_t i = 0; (retextParser!=NULL) && (i < retextParser->countTracks()); ++i) {
- sp<MetaData> meta = retextParser->getTrackMetaData(i);
- const char *mime;
- bool success = meta->findCString(kKeyMIMEType, &mime);
- if( (success == true) && !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB_PLUS)) {
- ALOGV("Discarding default extractor and using the extended one");
- //We found what we were looking for, set bUseDefaultExtractor to false;
- bUseDefaultExtractor = false;
- if(ret) {
- //delete the default extractor as we will be using extended extractor..
- delete ret;
- }
- break;
- }
- }
- }
- if( (retextParser != NULL) && (!bUseDefaultExtractor) ) {
- ALOGV("returning retextParser");
- return retextParser;
- }
-#endif
+ //ret will get deleted within if replaced
+ return QCUtilityClass::helper_MediaExtractor_CreateIfNeeded(ret,
+ source,
+ mime);
+#else
return ret;
+#endif
}
} // namespace android