/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under The MIT license.
*/
package com.ttProject.frameutil;
import com.ttProject.frame.CodecType;
import com.ttProject.frame.IAnalyzer;
import com.ttProject.frame.aac.AacFrameAnalyzer;
import com.ttProject.frame.adpcmimawav.AdpcmImaWavFrameAnalyzer;
import com.ttProject.frame.adpcmswf.AdpcmswfFrameAnalyzer;
import com.ttProject.frame.flv1.Flv1FrameAnalyzer;
import com.ttProject.frame.h264.NalAnalyzer;
import com.ttProject.frame.mjpeg.MjpegFrameAnalyzer;
import com.ttProject.frame.mp3.Mp3FrameAnalyzer;
import com.ttProject.frame.nellymoser.NellymoserFrameAnalyzer;
import com.ttProject.frame.opus.OpusFrameAnalyzer;
import com.ttProject.frame.pcmalaw.PcmalawFrameAnalyzer;
import com.ttProject.frame.pcmmulaw.PcmmulawFrameAnalyzer;
import com.ttProject.frame.speex.SpeexFrameAnalyzer;
import com.ttProject.frame.theora.TheoraFrameAnalyzer;
import com.ttProject.frame.vorbis.VorbisFrameAnalyzer;
import com.ttProject.frame.vp6.Vp6FrameAnalyzer;
import com.ttProject.frame.vp8.Vp8FrameAnalyzer;
import com.ttProject.frame.vp9.Vp9FrameAnalyzer;
/**
* get the analyzer with specific codecType
* @author taktod
*/
public class AnalyzerChecker {
/**
* get the analyzer with input codecType
* @param codecType
* @return
* @throws Exception
*/
public IAnalyzer checkAnalyzer(CodecType codecType) throws Exception {
switch(codecType) {
case AAC:
return new AacFrameAnalyzer();
case ADPCM_IMA_WAV:
return new AdpcmImaWavFrameAnalyzer();
case ADPCM_SWF:
return new AdpcmswfFrameAnalyzer();
case FLV1:
return new Flv1FrameAnalyzer();
case H264:
return new NalAnalyzer();
case H265:
throw new RuntimeException("think about this, later.");
case MJPEG:
return new MjpegFrameAnalyzer();
case MP3:
return new Mp3FrameAnalyzer();
case NELLYMOSER:
return new NellymoserFrameAnalyzer();
case PCM_ALAW:
return new PcmalawFrameAnalyzer();
case PCM_MULAW:
return new PcmmulawFrameAnalyzer();
case OPUS:
return new OpusFrameAnalyzer();
case SPEEX:
return new SpeexFrameAnalyzer();
case THEORA:
return new TheoraFrameAnalyzer();
case VORBIS:
return new VorbisFrameAnalyzer();
case VP6:
return new Vp6FrameAnalyzer();
case VP8:
return new Vp8FrameAnalyzer();
case VP9:
return new Vp9FrameAnalyzer();
default:
throw new Exception("unknown codecType:" + codecType);
}
}
}