From eccb780d076a72a5d3fcafcfd9540b044458f4a2 Mon Sep 17 00:00:00 2001 From: Byunghun Jeon Date: Tue, 10 May 2016 16:59:33 -0700 Subject: SnapdragonCamera: Add video to Camera2 module Add video to Camera2 module and combine the UI Change-Id: I0bcd86eb6b95fe2180856780ddd794682259e799 --- .../android/camera/util/SettingTranslation.java | 117 +++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/com/android/camera/util/SettingTranslation.java (limited to 'src/com/android/camera/util/SettingTranslation.java') diff --git a/src/com/android/camera/util/SettingTranslation.java b/src/com/android/camera/util/SettingTranslation.java new file mode 100644 index 000000000..6aee0ede0 --- /dev/null +++ b/src/com/android/camera/util/SettingTranslation.java @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2016, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.android.camera.util; + +import android.hardware.camera2.CameraMetadata; +import android.media.MediaRecorder; + +import java.util.HashMap; +import java.util.Map; + +public class SettingTranslation { + public static final int NOT_FOUND = -1; + private static final TwoWayMap VIDEO_ENCODER_TABLE = new TwoWayMap(); + private static final TwoWayMap AUDIO_ENCODER_TABLE = new TwoWayMap(); + private static final TwoWayMap NOISE_REDUCTION_TABLE = new TwoWayMap(); + + static { + VIDEO_ENCODER_TABLE.put("default", MediaRecorder.VideoEncoder.DEFAULT); + VIDEO_ENCODER_TABLE.put("h263", MediaRecorder.VideoEncoder.H263); + VIDEO_ENCODER_TABLE.put("h264", MediaRecorder.VideoEncoder.H264); + int h265 = ApiHelper.getIntFieldIfExists(MediaRecorder.VideoEncoder.class, + "HEVC", null, MediaRecorder.VideoEncoder.DEFAULT); + if (h265 == MediaRecorder.VideoEncoder.DEFAULT) { + h265 = ApiHelper.getIntFieldIfExists(MediaRecorder.VideoEncoder.class, + "H265", null, MediaRecorder.VideoEncoder.DEFAULT); + } + VIDEO_ENCODER_TABLE.put("h265", h265); + VIDEO_ENCODER_TABLE.put("mpeg-4-sp", MediaRecorder.VideoEncoder.MPEG_4_SP); + VIDEO_ENCODER_TABLE.put("vp8", MediaRecorder.VideoEncoder.VP8); + + AUDIO_ENCODER_TABLE.put("aac", MediaRecorder.AudioEncoder.AAC); + AUDIO_ENCODER_TABLE.put("aac-eld", MediaRecorder.AudioEncoder.AAC_ELD); + AUDIO_ENCODER_TABLE.put("amr-nb", MediaRecorder.AudioEncoder.AMR_NB); + AUDIO_ENCODER_TABLE.put("amr-wb", MediaRecorder.AudioEncoder.AMR_WB); + AUDIO_ENCODER_TABLE.put("default", MediaRecorder.AudioEncoder.DEFAULT); + AUDIO_ENCODER_TABLE.put("he-aac", MediaRecorder.AudioEncoder.HE_AAC); + AUDIO_ENCODER_TABLE.put("vorbis", MediaRecorder.AudioEncoder.VORBIS); + + NOISE_REDUCTION_TABLE.put("off", CameraMetadata.NOISE_REDUCTION_MODE_OFF); + NOISE_REDUCTION_TABLE.put("fast", CameraMetadata.NOISE_REDUCTION_MODE_FAST); + NOISE_REDUCTION_TABLE.put("high-quality", CameraMetadata + .NOISE_REDUCTION_MODE_HIGH_QUALITY); + NOISE_REDUCTION_TABLE.put("minimal", CameraMetadata.NOISE_REDUCTION_MODE_MINIMAL); + NOISE_REDUCTION_TABLE.put("zero-shutter-lag", CameraMetadata + .NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG); + } + + public static int getVideoEncoder(String key) { + return VIDEO_ENCODER_TABLE.get(key); + } + + public static String getVideoEncoder(int key) { + return VIDEO_ENCODER_TABLE.get(key); + } + + public static int getAudioEncoder(String key) { + return AUDIO_ENCODER_TABLE.get(key); + } + + public static String getAudioEncoder(int key) { + return AUDIO_ENCODER_TABLE.get(key); + } + + public static int getNoiseReduction(String key) { + return NOISE_REDUCTION_TABLE.get(key); + } + + public static String getNoiseReduction(int key) { + return NOISE_REDUCTION_TABLE.get(key); + } + + private static class TwoWayMap { + private Map strToInt = new HashMap<>(); + private Map intToStr = new HashMap<>(); + + public void put(String key, int value) { + strToInt.put(key, value); + intToStr.put(value, key); + } + + public int get(String key) { + Integer res = strToInt.get(key); + if (res != null) return res; + else return NOT_FOUND; + } + + public String get(int key) { + return intToStr.get(key); + } + } +} -- cgit v1.2.3