// static void DataSource::RegisterDefaultSniffers() { RegisterSniffer(SniffMPEG4); RegisterSniffer(SniffMatroska); RegisterSniffer(SniffOgg); RegisterSniffer(SniffWAV); RegisterSniffer(SniffAMR); RegisterSniffer(SniffMPEG2TS); RegisterSniffer(SniffMP3); #ifdef OMAP_ENHANCEMENT if(isASFParserAvailable()){ RegisterSniffer(SniffASF); } #endif }
// static sp<MediaExtractor> MediaExtractor::Create(const sp<DataSource> &source, const char *mime) { sp<AMessage> meta; String8 tmp; if (mime == NULL) { float confidence; if (!source->sniff(&tmp, &confidence, &meta)) { LOGV("FAILED to autodetect media content."); return NULL; } mime = tmp.string(); LOGV("Autodetected media content as '%s' with confidence %.2f", mime, confidence); } #if 1 if (source->uri_file_tommy != NULL) { // if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_WMA)) // { // return new FFExtractor(source, meta); // } // if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) // { // return new FFExtractor(source, meta); // } if (!strcasecmp(mime, "audio/ffone")) return new FFExtractor(source, meta); if (!strcasecmp(mime, "video/ffone")) return new FFExtractor(source, meta); } #endif if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4) || !strcasecmp(mime, "audio/mp4")) { return new MPEG4Extractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) { return new MP3Extractor(source, meta); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_NB) || !strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AMR_WB)) { return new AMRExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WAV)) { return new WAVExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_OGG)) { return new OggExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MATROSKA)) { return new MatroskaExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2TS)) { return new MPEG2TSExtractor(source); } #ifdef OMAP_ENHANCEMENT else if(!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_ASF)) { if(isASFParserAvailable()) { return new ASFExtractor(source); } else { return NULL; } } #endif return NULL; }