在stagefright中的DataSource.cpp文件中,有注册sniff的函数DataSource::RegisterSniffer和DataSource::sniff函数。
在音视频解析文件中有对应的SniffXXX函数,例如:
在MP3Extractor.cpp中有SniffMP3函数,
- C/C++ code
bool SniffMP3( const sp<DataSource> &source, String8 *mimeType, float *confidence, sp<AMessage> *meta) { off64_t pos = 0; uint32_t header; if (!Resync(source, 0, &pos, &header)) { return false; } *meta = new AMessage; (*meta)->setInt64("offset", pos); (*meta)->setInt32("header", header); *mimeType = MEDIA_MIMETYPE_AUDIO_MPEG; *confidence = 0.2f; return true;}
那么,sniff具体的作用是什么呢?
是为了确定mp3后缀名的文件是不是真正的mp3编码的文件吗?
另外,sniff在DataSource::RegisterDefaultSniffers()中被注册,那么什么时候会被调用呢?
Thx!
------解决方案--------------------
顶一下!