所有
在DataSource :: sniff方法中获取置信度值。 那么信心的含义是什么?怎么理解呢? 当它的值大于或等于0.6f时,意味着找到了嗅觉。但在SniffMP3函数中,置信度设置为0.2f。为什么呢?
bool DataSource::sniff(
String8 *mimeType, float *confidence, sp<AMessage> *meta) {
*mimeType = "";
*confidence = 0.0f;
meta->clear();
Mutex::Autolock autoLock(gSnifferMutex);
for (List<SnifferFunc>::iterator it = gSniffers.begin();
it != gSniffers.end(); ++it) {
String8 newMimeType;
float newConfidence;
sp<AMessage> newMeta;
if ((*it)(this, &newMimeType, &newConfidence, &newMeta)) {
if (newConfidence > *confidence) {
*mimeType = newMimeType;
*confidence = newConfidence;
*meta = newMeta;
if(*confidence >= 0.6f) {
LOGV("Ignore other Sniffers - confidence = %f , mimeType = %s",*confidence,mimeType->string());
break;
}
}
}
}
return *confidence > 0.0;
}
答案 0 :(得分:1)
我认为它只会寻找文件的最佳解析器。如果
((*it)(this, &newMimeType, &newConfidence, &newMeta))
返回true,它已经是该文件的解析器。但是,可能存在一个案例,即该文件有超过1个解析器,因此它只会寻找最佳解析器。