summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorSurajit Podder <spodder@codeaurora.org>2014-01-23 13:24:34 +0530
committerSteve Kondik <steve@cyngn.com>2015-10-28 16:44:24 -0700
commit4440ef8efc77d1bd7838885e83d41e54deb5a3b8 (patch)
treea0ebcd05f477f7e4fd0a856e228d489213445e54 /media
parent440b54cbef4a20caeb18bf6927bc728645f649e2 (diff)
downloadframeworks_av-4440ef8efc77d1bd7838885e83d41e54deb5a3b8.zip
frameworks_av-4440ef8efc77d1bd7838885e83d41e54deb5a3b8.tar.gz
frameworks_av-4440ef8efc77d1bd7838885e83d41e54deb5a3b8.tar.bz2
DataSource: Remove global variables in DataSource related to sniff
Remove global variables related to sniff, and added Sniffer class to implement the sniff functionality with non-static members. Change-Id: I6fbd0ba5b686e09fda11d78cdd687a69c81a6bdf CRs-Fixed: 567753
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/DataSource.cpp86
1 files changed, 47 insertions, 39 deletions
diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp
index 85d0292..9230329 100644
--- a/media/libstagefright/DataSource.cpp
+++ b/media/libstagefright/DataSource.cpp
@@ -112,29 +112,42 @@ status_t DataSource::getSize(off64_t *size) {
////////////////////////////////////////////////////////////////////////////////
-Mutex DataSource::gSnifferMutex;
-List<DataSource::SnifferFunc> DataSource::gSniffers;
-bool DataSource::gSniffersRegistered = false;
-
bool DataSource::sniff(
String8 *mimeType, float *confidence, sp<AMessage> *meta) {
+
+ return mSniffer->sniff(this, mimeType, confidence, meta);
+}
+
+// static
+void DataSource::RegisterSniffer_l(SnifferFunc func) {
+ return;
+}
+
+// static
+void DataSource::RegisterDefaultSniffers() {
+ return;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+Sniffer::Sniffer() {
+ registerDefaultSniffers();
+}
+
+bool Sniffer::sniff(
+ DataSource *source, String8 *mimeType, float *confidence, sp<AMessage> *meta) {
+
*mimeType = "";
*confidence = 0.0f;
meta->clear();
- {
- Mutex::Autolock autoLock(gSnifferMutex);
- if (!gSniffersRegistered) {
- return false;
- }
- }
-
- for (List<SnifferFunc>::iterator it = gSniffers.begin();
- it != gSniffers.end(); ++it) {
+ Mutex::Autolock autoLock(mSnifferMutex);
+ for (List<SnifferFunc>::iterator it = mSniffers.begin();
+ it != mSniffers.end(); ++it) {
String8 newMimeType;
float newConfidence;
sp<AMessage> newMeta;
- if ((*it)(this, &newMimeType, &newConfidence, &newMeta)) {
+ if ((*it)(source, &newMimeType, &newConfidence, &newMeta)) {
if (newConfidence > *confidence) {
*mimeType = newMimeType;
*confidence = newConfidence;
@@ -146,45 +159,40 @@ bool DataSource::sniff(
return *confidence > 0.0;
}
-// static
-void DataSource::RegisterSniffer_l(SnifferFunc func) {
- for (List<SnifferFunc>::iterator it = gSniffers.begin();
- it != gSniffers.end(); ++it) {
+void Sniffer::registerSniffer_l(SnifferFunc func) {
+
+ for (List<SnifferFunc>::iterator it = mSniffers.begin();
+ it != mSniffers.end(); ++it) {
if (*it == func) {
return;
}
}
- gSniffers.push_back(func);
+ mSniffers.push_back(func);
}
-// static
-void DataSource::RegisterDefaultSniffers() {
- Mutex::Autolock autoLock(gSnifferMutex);
- if (gSniffersRegistered) {
- return;
- }
-
- RegisterSniffer_l(SniffMPEG4);
- RegisterSniffer_l(SniffMatroska);
- RegisterSniffer_l(SniffOgg);
- RegisterSniffer_l(SniffWAV);
- RegisterSniffer_l(SniffFLAC);
- RegisterSniffer_l(SniffAMR);
- RegisterSniffer_l(SniffMPEG2TS);
- RegisterSniffer_l(SniffMP3);
- RegisterSniffer_l(SniffAAC);
- RegisterSniffer_l(SniffMPEG2PS);
- RegisterSniffer_l(SniffWVM);
+void Sniffer::registerDefaultSniffers() {
+ Mutex::Autolock autoLock(mSnifferMutex);
+
+ registerSniffer_l(SniffMPEG4);
+ registerSniffer_l(SniffMatroska);
+ registerSniffer_l(SniffOgg);
+ registerSniffer_l(SniffWAV);
+ registerSniffer_l(SniffFLAC);
+ registerSniffer_l(SniffAMR);
+ registerSniffer_l(SniffMPEG2TS);
+ registerSniffer_l(SniffMP3);
+ registerSniffer_l(SniffAAC);
+ registerSniffer_l(SniffMPEG2PS);
+ registerSniffer_l(SniffWVM);
RegisterSniffer_l(SniffMidi);
RegisterSniffer_l(AVUtils::get()->getExtendedSniffer());
char value[PROPERTY_VALUE_MAX];
if (property_get("drm.service.enabled", value, NULL)
&& (!strcmp(value, "1") || !strcasecmp(value, "true"))) {
- RegisterSniffer_l(SniffDRM);
+ registerSniffer_l(SniffDRM);
}
- gSniffersRegistered = true;
}
// static