// 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
}
Пример #2
0
// 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;
}