From 18a8ecb60012335259135a45cbe05d8bf0f93190 Mon Sep 17 00:00:00 2001 From: Weijie Wang Date: Thu, 17 Aug 2017 16:49:51 +0800 Subject: SnapdragonCamera: Support HLG and HDR10 Support HLG and HDR10 Change-Id: I1dd8a40a85e9cc0115515217b4ec75a726b6f41e --- .../android/camera/util/SettingTranslation.java | 15 +++++++++++++ src/com/android/camera/util/VendorTagUtil.java | 25 +++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) (limited to 'src/com/android/camera/util') diff --git a/src/com/android/camera/util/SettingTranslation.java b/src/com/android/camera/util/SettingTranslation.java index 6aee0ede0..2151f66e0 100644 --- a/src/com/android/camera/util/SettingTranslation.java +++ b/src/com/android/camera/util/SettingTranslation.java @@ -29,6 +29,7 @@ package com.android.camera.util; import android.hardware.camera2.CameraMetadata; +import android.media.MediaCodecInfo; import android.media.MediaRecorder; import java.util.HashMap; @@ -39,6 +40,7 @@ public class SettingTranslation { 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(); + private static final TwoWayMap VIDEO_ENCODER_PROFILE_TABLE = new TwoWayMap(); static { VIDEO_ENCODER_TABLE.put("default", MediaRecorder.VideoEncoder.DEFAULT); @@ -69,6 +71,11 @@ public class SettingTranslation { NOISE_REDUCTION_TABLE.put("minimal", CameraMetadata.NOISE_REDUCTION_MODE_MINIMAL); NOISE_REDUCTION_TABLE.put("zero-shutter-lag", CameraMetadata .NOISE_REDUCTION_MODE_ZERO_SHUTTER_LAG); + + VIDEO_ENCODER_PROFILE_TABLE.put("HEVCProfileMain10", + MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10); + VIDEO_ENCODER_PROFILE_TABLE.put("HEVCProfileMain10HDR10", + MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10HDR10); } public static int getVideoEncoder(String key) { @@ -95,6 +102,14 @@ public class SettingTranslation { return NOISE_REDUCTION_TABLE.get(key); } + public static int getVideoEncoderProfile(String key) { + return VIDEO_ENCODER_PROFILE_TABLE.get(key); + } + + public static String getVideoEncoderProfile(int key) { + return VIDEO_ENCODER_PROFILE_TABLE.get(key); + } + private static class TwoWayMap { private Map strToInt = new HashMap<>(); private Map intToStr = new HashMap<>(); diff --git a/src/com/android/camera/util/VendorTagUtil.java b/src/com/android/camera/util/VendorTagUtil.java index 9c2f6cc1c..fb8aee010 100644 --- a/src/com/android/camera/util/VendorTagUtil.java +++ b/src/com/android/camera/util/VendorTagUtil.java @@ -28,6 +28,8 @@ */ package com.android.camera.util; +import android.hardware.camera2.CameraAccessException; +import android.hardware.camera2.CameraDevice; import android.hardware.camera2.CaptureRequest; import android.util.Log; @@ -52,7 +54,8 @@ public class VendorTagUtil { private static CaptureRequest.Key ISO_EXP = new CaptureRequest.Key<>("org.codeaurora.qcamera3.iso_exp_priority.use_iso_exp_priority", Long.class); - + private static final CaptureRequest.Key HDRVideoMode = + new CaptureRequest.Key<>("org.quic.camera2.streamconfigs.HDRVideoMode", Byte.class); private static boolean isSupported(CaptureRequest.Builder builder, CaptureRequest.Key key) { @@ -62,6 +65,7 @@ public class VendorTagUtil { }catch(IllegalArgumentException exception){ supported = false; Log.d(TAG, "vendor tag " + key.getName() + " is not supported"); + exception.printStackTrace(); } if ( supported ) { Log.d(TAG, "vendor tag " + key.getName() + " is supported"); @@ -131,4 +135,23 @@ public class VendorTagUtil { return isSupported(builder, ISO_EXP); } + public static void setHDRVideoMode(CaptureRequest.Builder builder, byte mode) { + if ( isHDRVideoModeSupported(builder) ) { + builder.set(HDRVideoMode, mode); + } + } + + public static boolean isHDRVideoModeSupported(CaptureRequest.Builder builder) { + return isSupported(builder, HDRVideoMode); + } + + public static boolean isHDRVideoModeSupported(CameraDevice camera) { + try { + CaptureRequest.Builder builder = camera.createCaptureRequest(CameraDevice.TEMPLATE_RECORD); + return isHDRVideoModeSupported(builder); + }catch(CameraAccessException exception) { + exception.printStackTrace(); + return false; + } + } } -- cgit v1.2.3