MediaProfileReader.java revision 1b7babd2cce5bb10adac7b061cf7ba065d480edb
1package com.android.mediaframeworktest; 2 3import android.media.MediaRecorder; 4import android.media.EncoderCapabilities; 5import android.media.EncoderCapabilities.VideoEncoderCap; 6import android.media.EncoderCapabilities.AudioEncoderCap; 7import android.media.DecoderCapabilities; 8import android.media.DecoderCapabilities.VideoDecoder; 9import android.media.DecoderCapabilities.AudioDecoder; 10 11import android.os.SystemProperties; 12import java.util.List; 13import java.util.HashMap; 14 15public class MediaProfileReader 16{ 17 private static final List<VideoDecoder> videoDecoders = DecoderCapabilities.getVideoDecoders(); 18 private static final List<AudioDecoder> audioDecoders = DecoderCapabilities.getAudioDecoders(); 19 private static final List<VideoEncoderCap> videoEncoders = EncoderCapabilities.getVideoEncoders(); 20 private static final List<AudioEncoderCap> audioEncoders = EncoderCapabilities.getAudioEncoders(); 21 private static final HashMap<Integer, String> encoderMap = new HashMap<Integer, String>(); 22 23 static { 24 initEncoderMap(); 25 }; 26 27 public static List<VideoEncoderCap> getVideoEncoders() { 28 return videoEncoders; 29 } 30 31 public static List<AudioEncoderCap> getAudioEncoders() { 32 return audioEncoders; 33 } 34 35 public static String getDeviceType() { 36 // push all the property into one big table 37 String s; 38 s = SystemProperties.get("ro.product.name"); 39 return s; 40 } 41 42 public static boolean getWMAEnable() { 43 for (AudioDecoder decoder: audioDecoders) { 44 if (decoder == AudioDecoder.AUDIO_DECODER_WMA) { 45 return true; 46 } 47 } 48 return false; 49 } 50 51 public static boolean getWMVEnable(){ 52 for (VideoDecoder decoder: videoDecoders) { 53 if (decoder == VideoDecoder.VIDEO_DECODER_WMV) { 54 return true; 55 } 56 } 57 return false; 58 } 59 60 public static String getVideoCodecName(int videoEncoder) { 61 if (videoEncoder != MediaRecorder.VideoEncoder.H263 && 62 videoEncoder != MediaRecorder.VideoEncoder.H264 && 63 videoEncoder != MediaRecorder.VideoEncoder.MPEG_4_SP) { 64 throw new IllegalArgumentException("Unsupported video encoder " + videoEncoder); 65 } 66 return encoderMap.get(videoEncoder); 67 } 68 69 public static String getAudioCodecName(int audioEncoder) { 70 if (audioEncoder != MediaRecorder.AudioEncoder.AMR_NB && 71 audioEncoder != MediaRecorder.AudioEncoder.AMR_WB && 72 audioEncoder != MediaRecorder.AudioEncoder.AAC && 73 audioEncoder != MediaRecorder.AudioEncoder.AAC_PLUS && 74 audioEncoder != MediaRecorder.AudioEncoder.EAAC_PLUS) { 75 throw new IllegalArgumentException("Unsupported audio encodeer " + audioEncoder); 76 } 77 return encoderMap.get(audioEncoder); 78 } 79 80 private MediaProfileReader() {} // Don't call me 81 82 private static void initEncoderMap() { 83 // video encoders 84 encoderMap.put(MediaRecorder.VideoEncoder.H263, "h263"); 85 encoderMap.put(MediaRecorder.VideoEncoder.H264, "h264"); 86 encoderMap.put(MediaRecorder.VideoEncoder.MPEG_4_SP, "m4v"); 87 88 // audio encoders 89 encoderMap.put(MediaRecorder.AudioEncoder.AMR_NB, "amrnb"); 90 encoderMap.put(MediaRecorder.AudioEncoder.AMR_WB, "amrwb"); 91 encoderMap.put(MediaRecorder.AudioEncoder.AAC, "aac"); 92 encoderMap.put(MediaRecorder.AudioEncoder.AAC_PLUS, "aacplus"); 93 encoderMap.put(MediaRecorder.AudioEncoder.EAAC_PLUS, "eaacplus"); 94 } 95} 96