MediaProfileReader.java revision 15a4d2ffd04dc6c70f2cd17dae12ac6bc14c69ab
1/* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.mediaframeworktest; 18 19import android.media.MediaRecorder; 20import android.media.EncoderCapabilities; 21import android.media.EncoderCapabilities.VideoEncoderCap; 22import android.media.EncoderCapabilities.AudioEncoderCap; 23import android.media.DecoderCapabilities; 24import android.media.DecoderCapabilities.VideoDecoder; 25import android.media.DecoderCapabilities.AudioDecoder; 26 27import android.os.SystemProperties; 28import java.util.List; 29import java.util.HashMap; 30 31public class MediaProfileReader 32{ 33 private static final List<VideoDecoder> videoDecoders = DecoderCapabilities.getVideoDecoders(); 34 private static final List<AudioDecoder> audioDecoders = DecoderCapabilities.getAudioDecoders(); 35 private static final List<VideoEncoderCap> videoEncoders = EncoderCapabilities.getVideoEncoders(); 36 private static final List<AudioEncoderCap> audioEncoders = EncoderCapabilities.getAudioEncoders(); 37 private static final HashMap<Integer, String> encoderMap = new HashMap<Integer, String>(); 38 39 static { 40 initEncoderMap(); 41 }; 42 43 public static List<VideoEncoderCap> getVideoEncoders() { 44 return videoEncoders; 45 } 46 47 public static List<AudioEncoderCap> getAudioEncoders() { 48 return audioEncoders; 49 } 50 51 public static String getDeviceType() { 52 // push all the property into one big table 53 String s; 54 s = SystemProperties.get("ro.product.name"); 55 return s; 56 } 57 58 public static boolean getWMAEnable() { 59 for (AudioDecoder decoder: audioDecoders) { 60 if (decoder == AudioDecoder.AUDIO_DECODER_WMA) { 61 return true; 62 } 63 } 64 return false; 65 } 66 67 public static boolean getWMVEnable(){ 68 for (VideoDecoder decoder: videoDecoders) { 69 if (decoder == VideoDecoder.VIDEO_DECODER_WMV) { 70 return true; 71 } 72 } 73 return false; 74 } 75 76 public static String getVideoCodecName(int videoEncoder) { 77 if (videoEncoder != MediaRecorder.VideoEncoder.H263 && 78 videoEncoder != MediaRecorder.VideoEncoder.H264 && 79 videoEncoder != MediaRecorder.VideoEncoder.MPEG_4_SP) { 80 throw new IllegalArgumentException("Unsupported video encoder " + videoEncoder); 81 } 82 return encoderMap.get(videoEncoder); 83 } 84 85 public static String getAudioCodecName(int audioEncoder) { 86 if (audioEncoder != MediaRecorder.AudioEncoder.AMR_NB && 87 audioEncoder != MediaRecorder.AudioEncoder.AMR_WB && 88 audioEncoder != MediaRecorder.AudioEncoder.AAC && 89 audioEncoder != MediaRecorder.AudioEncoder.AAC_PLUS && 90 audioEncoder != MediaRecorder.AudioEncoder.EAAC_PLUS) { 91 throw new IllegalArgumentException("Unsupported audio encodeer " + audioEncoder); 92 } 93 return encoderMap.get(audioEncoder); 94 } 95 96 private MediaProfileReader() {} // Don't call me 97 98 private static void initEncoderMap() { 99 // video encoders 100 encoderMap.put(MediaRecorder.VideoEncoder.H263, "h263"); 101 encoderMap.put(MediaRecorder.VideoEncoder.H264, "h264"); 102 encoderMap.put(MediaRecorder.VideoEncoder.MPEG_4_SP, "m4v"); 103 104 // audio encoders 105 encoderMap.put(MediaRecorder.AudioEncoder.AMR_NB, "amrnb"); 106 encoderMap.put(MediaRecorder.AudioEncoder.AMR_WB, "amrwb"); 107 encoderMap.put(MediaRecorder.AudioEncoder.AAC, "aac"); 108 encoderMap.put(MediaRecorder.AudioEncoder.AAC_PLUS, "aacplus"); 109 encoderMap.put(MediaRecorder.AudioEncoder.EAAC_PLUS, "eaacplus"); 110 } 111} 112