Last active
March 7, 2024 20:49
-
-
Save tdrkDev/c2e4f66481b5d5fb12f1245ded4fc49b to your computer and use it in GitHub Desktop.
Samsung Camera reverse engineering notes. See SemCameraParameter.java for more in-depth notes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.samsung.galaxytrash; | |
import android.hardware.camera2.CameraCharacteristics; | |
import android.hardware.camera2.CameraDevice; | |
import android.hardware.camera2.params.OutputConfiguration; | |
import android.os.Build; | |
import android.util.Log; | |
import android.util.Size; | |
import dalvik.system.PathClassLoader; | |
import java.lang.reflect.Constructor; | |
import java.lang.reflect.InvocationTargetException; | |
import java.lang.reflect.Method; | |
import java.util.List; | |
/* loaded from: classes2.dex */ | |
/* modified: removed legacy (Q and older) functions */ | |
public class PdkUtil { | |
private static final String CUSTOM_INTERFACE_HELPER_NAME = "com.samsung.android.sdk.camera.impl.internal.CustomInterfaceHelper"; | |
private static final String TAG = "PdkUtil-tdrk"; | |
private static ClassLoader mClassLoader; | |
private static Method mSetParameterMethods; | |
static { | |
PathClassLoader pathClassLoader = new PathClassLoader("/system/framework/scamera_sdk_util.jar", Log.class.getClassLoader()); | |
mClassLoader = pathClassLoader; | |
try { | |
mSetParameterMethods = Class.forName(CUSTOM_INTERFACE_HELPER_NAME, true, pathClassLoader).getMethod("setSamsungParameter", CameraDevice.class, String.class); | |
Log.v(TAG, "Custom interface setSamsungParameter Impl. from preloaded jar."); | |
} catch (ClassNotFoundException | NoSuchMethodException unused) { | |
mSetParameterMethods = null; | |
} | |
} | |
private PdkUtil() { | |
} | |
public static boolean isInitialized() { | |
return mSetParameterMethods != null && (Build.VERSION.SDK_INT >= 31 || mGetAvailableSamsungKeyList != null); | |
} | |
public static void setSamsungParameter(CameraDevice cameraDevice, String parameter) { | |
Method method = mSetParameterMethods; | |
if (method == null) { | |
Log.e(TAG, "Fail to set samsung parameter to camera device. (No implementation)"); | |
return; | |
} | |
try { | |
method.invoke(null, cameraDevice, parameter); | |
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { | |
Log.e(TAG, "Fail to set samsung parameter to camera device.", e); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.samsung.galaxytrash; | |
import android.util.Pair; | |
/* loaded from: classes2.dex */ | |
/* heavily debloated */ | |
public class SemCameraParameter { | |
// | |
// How is 3rd-party app detected - if INFO_FACTORY_TEST or INFO_SAMSUNG_CAMERA are not found, then it's third party app. | |
// | |
// Default PdkUtil parameters: | |
// INFO_FIRST_ENTRANCE -> false | |
// INFO_SAMSUNG_CAMERA -> false | |
// INFO_FACTORY_TEST -> false | |
// CONTROL_SHOOTING_MODE -> 0 | |
// CONTROL_RECORDING_MAX_FPS -> 0 | |
// CONTROL_SW_VDIS -> false | |
// CONTROL_VIDEO_BEAUTY_FACE -> false | |
// CONTROL_DEVICE_SWITCHING -> null | |
// CONTROL_VT_MODE -> 0 | |
// CONTROL_OPERATION_MODE -> OPERATION_MODE_NONE | |
// CONTROL_SSM_SHOT_MODE -> 0 | |
// CONTROL_RECORDING_DR_MODE -> RECORDING_DR_MODE_SDR | |
// CONTROL_SW_SUPER_VDIS -> false | |
// SENSOR_STREAM_TYPE -> SENSOR_STREAM_TYPE_NORMAL | |
// | |
// Also it'll work only in case it's one of these package names: | |
// com.sec.android.app.camera | |
// com.samsung.android.aremoji | |
// com.samsung.android.livestickers | |
// com.samsung.android.ardrawing | |
// com.samsung.android.arsceneplay | |
// com.samsung.android.app.galaxyraw | |
// | |
// Samsung Camera's case: | |
// 1) check CONTROL_AVAILABLE_FEATURES for 54 (core2.capability.FeatureCapability.getSamsungFeatureNoFirstSetParam) | |
// 2) if it is not present, after camera device opening (in a callback), set default parameters with these changes: | |
// INFO_FIRST_ENTRANCE -> true | |
// INFO_SAMSUNG_CAMERA -> true | |
// 3) camera settings depending on session config isn't our case, it's samsung camera internal thing. | |
// | |
public static final Boolean INFO_FIRST_ENTRANCE = "first-entrance"; | |
public static final Boolean INFO_SAMSUNG_CAMERA = "samsungcamera"; | |
public static final Boolean INFO_FACTORY_TEST = "factorytest"; | |
public static final Integer CONTROL_SHOOTING_MODE = "shootingmode"; | |
public static final Integer CONTROL_RECORDING_MAX_FPS = "recording-fps"; | |
public static final Boolean CONTROL_SW_VDIS = "sw-vdis"; | |
public static final Boolean CONTROL_VIDEO_BEAUTY_FACE = "video-beautyface"; | |
public static final Pair<String, String> CONTROL_DEVICE_SWITCHING = "device-switching"; | |
public static final Integer CONTROL_VT_MODE = "vtmode"; | |
public static final String CONTROL_OPERATION_MODE = "operation_mode"; | |
public static final Integer CONTROL_SSM_SHOT_MODE = "ssm_shot_mode"; | |
public static final String CONTROL_RECORDING_DR_MODE = "recording_dr_mode"; | |
public static final Boolean CONTROL_SW_SUPER_VDIS = "sw-super_vdis"; | |
public static final Integer SENSOR_STREAM_TYPE = "stream_type"; | |
// CONTROL_OPERATION_MODE | |
public static final String OPERATION_MODE_AR_CORE = "arcore"; | |
public static final String OPERATION_MODE_NONE = "none"; | |
public static final String OPERATION_MODE_SMART_STAY = "smartstay"; | |
// CONTROL_RECORDING_DR_MODE | |
public static final String RECORDING_DR_MODE_3HDR = "3hdr"; | |
public static final String RECORDING_DR_MODE_HDR10 = "hdr10"; | |
public static final String RECORDING_DR_MODE_SDR = "sdr"; | |
// CONTROL_SSM_SHOT_MODE | |
public static final Integer SSM_SHOT_MODE_MULTI = 1; | |
public static final Integer SSM_SHOT_MODE_SINGLE = 2; | |
public static final Integer SSM_SHOT_MODE_MULTI_FRC = 3; | |
public static final Integer SSM_SHOT_MODE_SINGLE_FRC = 4; | |
// SENSOR_STREAM_TYPE | |
public static final Integer SENSOR_STREAM_TYPE_NORMAL = 0; | |
public static final Integer SENSOR_STREAM_TYPE_CROP = 1; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.samsung.galaxytrash; | |
import android.hardware.camera2.CaptureRequest; | |
import android.hardware.camera2.params.MeteringRectangle; | |
/* loaded from: classes2.dex */ | |
/* debloated */ | |
public final class SemCaptureRequest extends SemCameraMetadata { | |
public static final CaptureRequest.Key<Integer> CONTROL_ADAPTIVE_LENS_MODE = new CaptureRequest.Key<>("samsung.android.control.adaptiveLensMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_AE_EXTRA_MODE = new CaptureRequest.Key<>("samsung.android.control.aeExtraMode", Integer.class); | |
public static final CaptureRequest.Key<MeteringRectangle[]> CONTROL_AUTO_FRAMING_MANUAL_TRACKING_REGIONS = new CaptureRequest.Key<>("samsung.android.control.autoFramingManualTrackingRegions", MeteringRectangle[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_BEAUTY_FACE_RETOUCH_LEVEL = new CaptureRequest.Key<>("samsung.android.control.beautyFaceRetouchLevel", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_BEAUTY_FACE_SKIN_COLOR = new CaptureRequest.Key<>("samsung.android.control.beautyFaceSkinColor", Integer.class); | |
public static final CaptureRequest.Key<int[]> CONTROL_BODY_BEAUTY_PARAMETERS = new CaptureRequest.Key<>("samsung.android.control.bodyBeautyParameters", int[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_BOKEH_BLUR_STRENGTH = new CaptureRequest.Key<>("samsung.android.control.bokehBlurStrength", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_BOKEH_RELIGHT_LEVEL = new CaptureRequest.Key<>("samsung.android.control.bokehRelightLevel", Integer.class); | |
public static final CaptureRequest.Key<int[]> CONTROL_BOKEH_SPECIAL_EFFECT_INFO = new CaptureRequest.Key<>("samsung.android.control.bokehSpecialEffectInfo", int[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_BURST_SHOT_FPS = new CaptureRequest.Key<>("samsung.android.control.burstShotFps", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_CAMERA_CLIENT = new CaptureRequest.Key<>("samsung.android.control.cameraClient", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_CAPTURE_HINT = new CaptureRequest.Key<>("samsung.android.control.captureHint", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_CAPTURE_PHYSICAL_ID = new CaptureRequest.Key<>("samsung.android.control.capturePhysicalId", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_COLOR_TEMPERATURE = new CaptureRequest.Key<>("samsung.android.control.colorTemperature", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_COMPOSITION_GUIDE_MODE = new CaptureRequest.Key<>("samsung.android.control.compositionGuideMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_COMPOSITION_GUIDE_TRIGGER = new CaptureRequest.Key<>("samsung.android.control.compositionGuideTrigger", Integer.class); | |
public static final CaptureRequest.Key<Boolean> CONTROL_DUAL_CAMERA_DISABLE = new CaptureRequest.Key<>("samsung.android.control.dualCameraDisable", Boolean.class); | |
public static final CaptureRequest.Key<Long> CONTROL_DYNAMIC_SHOT_DEVICE_INFO = new CaptureRequest.Key<>("samsung.android.control.dynamicShotDeviceInfo", Long.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_DYNAMIC_SHOT_EXTRA_INFO = new CaptureRequest.Key<>("samsung.android.control.dynamicShotExtraInfo", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_DYNAMIC_SHOT_HINT = new CaptureRequest.Key<>("samsung.android.control.dynamicShotHint", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_EVENT_FINDER_MODE = new CaptureRequest.Key<>("samsung.android.control.eventFinderMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_HAND_GESTURE_MODE = new CaptureRequest.Key<>("samsung.android.control.handGestureMode", Integer.class); | |
public static final CaptureRequest.Key<Long> CONTROL_LATEST_PREVIEW_TIMESTAMP = new CaptureRequest.Key<>("samsung.android.control.latestPreviewTimestamp", Long.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_LENS_DISTORTION_CORRECTION_MODE = new CaptureRequest.Key<>("samsung.android.control.lensDistortionCorrectionMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_LIGHT_CONDITION_ENABLE_MODE = new CaptureRequest.Key<>("samsung.android.control.lightConditionEnableMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_LIVE_HDR_MODE = new CaptureRequest.Key<>("samsung.android.control.liveHdrMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_METERING_MODE = new CaptureRequest.Key<>("samsung.android.control.meteringMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_MULTI_AF_MODE = new CaptureRequest.Key<>("samsung.android.control.multiAfMode", Integer.class); | |
public static final CaptureRequest.Key<byte[]> CONTROL_MULTI_FRAME_EV_LIST = new CaptureRequest.Key<>("samsung.android.control.multiFrameEvList", byte[].class); | |
public static final CaptureRequest.Key<MeteringRectangle[]> CONTROL_MULTIVIEW_CROP_ROI = new CaptureRequest.Key<>("samsung.android.control.multiviewCropRoi", MeteringRectangle[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_OVER_HEAT_HINT = new CaptureRequest.Key<>("samsung.android.control.overHeatHint", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_PAF_MODE = new CaptureRequest.Key<>("samsung.android.control.pafMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_PERSONAL_PRESET_INDEX = new CaptureRequest.Key<>("samsung.android.control.personalPresetIndex", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RANGE_SENSOR_MODE = new CaptureRequest.Key<>("samsung.android.control.rangeSensorMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_DR_MODE = new CaptureRequest.Key<>("samsung.android.control.recordingDrMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_EXTRA_MODE = new CaptureRequest.Key<>("samsung.android.control.recordingExtraMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_MAX_FPS = new CaptureRequest.Key<>("samsung.android.control.recordingMaxFps", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_MIN_FPS = new CaptureRequest.Key<>("samsung.android.control.recordingMinFps", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_MOTION_SPEED_MODE = new CaptureRequest.Key<>("samsung.android.control.recordingMotionSpeedMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_RECORDING_TRIGGER = new CaptureRequest.Key<>("samsung.android.control.recordingTrigger", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_REPEATING_REQUEST_HINT = new CaptureRequest.Key<>("samsung.android.control.repeatingRequestHint", Integer.class); | |
public static final CaptureRequest.Key<Long> CONTROL_REQUEST_BUILD_NUMBER = new CaptureRequest.Key<>("samsung.android.control.requestBuildNumber", Long.class); | |
public static final CaptureRequest.Key<long[]> CONTROL_SCENE_DETECTION_INFO = new CaptureRequest.Key<>("samsung.android.control.sceneDetectionInfo", long[].class); | |
public static final CaptureRequest.Key<int[]> CONTROL_SET_BARCODE_APP = new CaptureRequest.Key<>("samsung.android.control.setBarcodeApp", int[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SHOOTING_MODE = new CaptureRequest.Key<>("samsung.android.control.shootingMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SSM_SHOT_MODE = new CaptureRequest.Key<>("samsung.android.control.ssmShotMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SSRM_HINT = new CaptureRequest.Key<>("samsung.android.control.ssrmHint", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SUPER_NIGHT_SHOT_MODE = new CaptureRequest.Key<>("samsung.android.control.superNightShotMode", Integer.class); | |
public static final CaptureRequest.Key<MeteringRectangle[]> CONTROL_SUPER_SLOW_MOTION_AUTO_DETECT_REGIONS = new CaptureRequest.Key<>("samsung.android.control.superSlowMotionAutoDetectRegions", MeteringRectangle[].class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SUPER_SLOW_MOTION_MODE = new CaptureRequest.Key<>("samsung.android.control.superSlowMotionMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_SUPER_SLOW_MOTION_TRIGGER = new CaptureRequest.Key<>("samsung.android.control.superSlowMotionTrigger", Integer.class); | |
public static final CaptureRequest.Key<Boolean> CONTROL_SW_SUPER_VIDEO_STABILIZATION = new CaptureRequest.Key<>("samsung.android.control.swSuperVideoStabilization", Boolean.class); | |
public static final CaptureRequest.Key<Byte> CONTROL_SW_VIDEO_STABILIZATION = new CaptureRequest.Key<>("samsung.android.control.swVideoStabilization", Byte.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_TRANSIENT_ACTION = new CaptureRequest.Key<>("samsung.android.control.transientAction", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_TRANSIENT_CAPTURE_ACTION = new CaptureRequest.Key<>("samsung.android.control.transientCaptureAction", Integer.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_UNIHAL_ENABLE_MODE = new CaptureRequest.Key<>("samsung.android.control.unihalEnableMode", Integer.class); | |
public static final CaptureRequest.Key<Boolean> CONTROL_VIDEO_BEAUTY_FACE = new CaptureRequest.Key<>("samsung.android.control.videoBeautyFace", Boolean.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_WB_LEVEL = new CaptureRequest.Key<>("samsung.android.control.wbLevel", Integer.class); | |
public static final CaptureRequest.Key<Float> CONTROL_ZOOM_JUMP_TARGET_RATIO = new CaptureRequest.Key<>("samsung.android.control.zoomJumpTargetRatio", Float.class); | |
public static final CaptureRequest.Key<Integer> CONTROL_ZOOM_LOCK_TRIGGER = new CaptureRequest.Key<>("samsung.android.control.zoomLockTrigger", Integer.class); | |
public static final CaptureRequest.Key<Integer> DEPTH_FILTER_TYPE = new CaptureRequest.Key<>("samsung.android.depth.filterType", Integer.class); | |
public static final CaptureRequest.Key<Integer> LENS_FOCUS_LENS_POS = new CaptureRequest.Key<>("samsung.android.lens.focusLensPos", Integer.class); | |
public static final CaptureRequest.Key<Integer> LENS_FOCUS_LENS_POS_STALL = new CaptureRequest.Key<>("samsung.android.lens.focusLensPosStall", Integer.class); | |
public static final CaptureRequest.Key<Integer> LENS_OPTICAL_STABILIZATION_OPERATION_MODE = new CaptureRequest.Key<>("samsung.android.lens.opticalStabilizationOperationMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> SCALER_FLIP_MODE = new CaptureRequest.Key<>("samsung.android.scaler.flipMode", Integer.class); | |
public static final CaptureRequest.Key<Float> SCALER_ZOOM_RATIO = new CaptureRequest.Key<>("samsung.android.scaler.zoomRatio", Float.class); | |
public static final CaptureRequest.Key<Integer> SENSOR_GAIN = new CaptureRequest.Key<>("samsung.android.sensor.gain", Integer.class); | |
public static final CaptureRequest.Key<Integer> SENSOR_SENSOR_FLIP_MODE = new CaptureRequest.Key<>("samsung.android.sensor.sensorFlipMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> SENSOR_STREAM_TYPE = new CaptureRequest.Key<>("samsung.android.sensor.streamType", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_AUTO_FRAMING_MODE = new CaptureRequest.Key<>("samsung.android.unihal.videoAutoFramingMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_BEAUTY_LEVEL = new CaptureRequest.Key<>("samsung.android.unihal.videoBeautyLevel", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_BOKEH_LEVEL = new CaptureRequest.Key<>("samsung.android.unihal.videoBokehLevel", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_BOKEH_MODE = new CaptureRequest.Key<>("samsung.android.unihal.videoBokehMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_MODE = new CaptureRequest.Key<>("samsung.android.unihal.videoMode", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_SEGMENTATION_BG_IMG_NUM = new CaptureRequest.Key<>("samsung.android.unihal.videoSegmentationBgImgNum", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_SEGMENTATION_BLUR_LEVEL = new CaptureRequest.Key<>("samsung.android.unihal.videoSegmentationBlurLevel", Integer.class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_SEGMENTATION_MODE = new CaptureRequest.Key<>("samsung.android.unihal.videoSegmentationMode", Integer.class); | |
public static final CaptureRequest.Key<int[]> UNIHAL_VIDEO_SEGMENTATION_RGB_VALUE = new CaptureRequest.Key<>("samsung.android.unihal.videoSegmentationRgbValue", int[].class); | |
public static final CaptureRequest.Key<Integer> UNIHAL_VIDEO_VDIS_MODE = new CaptureRequest.Key<>("samsung.android.unihal.videoVdisMode", Integer.class); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
IsExtraTag -> tag >= 135 && tag < 170 | |
if extra, unihal::SamsungExtraData::GetData, else unihal::TagManager::GetTagInfo | |
unihal::SamsungExtraData::GetData -> unihal::CameraMetadata::GetData | |
Addr 10D000 - some strings (buffer, scenario, pipeline, filter) | |
135 - PARAMETER_SAMSUNG_EXTRA_IS_SAMSUNG_APP | |
145 - PARAMETER_SAMSUNG_EXTRA_IS_FACTORY_TEST | |
158 - PARAMETER_SAMSUNG_EXTRA_PACKAGE_NAME | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
0 = "UNI_SHOOTING_MODE_SINGLE" | |
1 = "UNI_SHOOTING_MODE_AUTO" | |
2 = "UNI_SHOOTING_MODE_BEAUTY" | |
3 = "UNI_SHOOTING_MODE_VIDEO" | |
4 = "UNI_SHOOTING_MODE_PANORAMA" | |
5 = "UNI_SHOOTING_MODE_PRO" | |
6 = "UNI_SHOOTING_MODE_SELECTIVE_FOCUS" | |
7 = "UNI_SHOOTING_MODE_HDR" | |
8 = "UNI_SHOOTING_MODE_NIGHT" | |
9 = "UNI_SHOOTING_MODE_FOOD" | |
10 = "UNI_SHOOTING_MODE_DUAL" | |
11 = "UNI_SHOOTING_MODE_ANTIFOG" | |
12 = "UNI_SHOOTING_MODE_WIDE_SELFIE" | |
13 = "UNI_SHOOTING_MODE_SLOW_MOTION" | |
14 = "UNI_SHOOTING_MODE_INTERACTIVE" | |
15 = "UNI_SHOOTING_MODE_SPORTS" | |
16 = "UNI_SHOOTING_MODE_HYPER_MOTION" | |
17 = "UNI_SHOOTING_MODE_ANIMATED_GIF" | |
18 = "UNI_SHOOTING_MODE_COLOR_IRIS" | |
19 = "UNI_SHOOTING_MODE_AQUA_SCENE" | |
20 = "UNI_SHOOTING_MODE_SUPER_SLOW_MOTION" | |
21 = "UNI_SHOOTING_MODE_LIVE_FOCUS" | |
22 = "UNI_SHOOTING_MODE_FACE_LOCK" | |
23 = "UNI_SHOOTING_MODE_MULTI_BIOMETRIC" | |
24 = "UNI_SHOOTING_MODE_STICKER" | |
25 = "UNI_SHOOTING_MODE_SELFIE_FOCUS" | |
26 = "UNI_SHOOTING_MODE_LABS" | |
27 = "UNI_SHOOTING_MODE_REAR_SELFIE" | |
28 = "UNI_SHOOTING_MODE_BOKEH_VIDEO" | |
29 = "UNI_SHOOTING_MODE_INSTAGRAM_VIDEO" | |
30 = "UNI_SHOOTING_MODE_ILLUMINANCE" | |
31 = "UNI_SHOOTING_MODE_SUPER_NIGHT" | |
32 = "UNI_SHOOTING_MODE_DIRECTORS_VIEW" | |
33 = "UNI_SHOOTING_MODE_SINGLE_TAKE_PHOTO" | |
34 = "UNI_SHOOTING_MODE_SINGLE_TAKE_PHOTO_FRONT" | |
35 = "UNI_SHOOTING_MODE_PRO_VIDEO" | |
36 = "UNI_SHOOTING_MODE_QUICK_TAKE_VIDEO" | |
37 = "UNI_SHOOTING_MODE_MAX" | |
38 = "UNI_SHOOTING_MODE_GALAXY_RAW" | |
39 = "UNI_SHOOTING_MODE_INVALID" | |
65536 = "UNI_SHOOTING_MODE_INTERNAL_START" | |
65537 = "UNI_SHOOTING_MODE_3RD_PARTY_DEFAULT" | |
65538 = "UNI_SHOOTING_MODE_3RD_PARTY_DEFAULT_VDIS" | |
65539 = "UNI_SHOOTING_MODE_3RD_PARTY_VT" | |
65540 = "UNI_SHOOTING_MODE_3RD_PARTY_VT_VDIS" | |
65541 = "UNI_SHOOTING_MODE_3RD_PARTY_SIE" | |
65542 = "UNI_SHOOTING_MODE_3RD_PARTY_SIE_VDIS" | |
65543 = "UNI_SHOOTING_MODE_3RD_PARTY_SDK_VDIS" | |
65544 = "UNI_SHOOTING_MODE_3RD_PARTY_SDK_BOKEH" | |
65545 = "UNI_SHOOTING_MODE_3RD_PARTY_UDC_DEFAULT" | |
65546 = "UNI_SHOOTING_MODE_3RD_PARTY_INSTAGRAM" | |
65547 = "UNI_SHOOTING_MODE_3RD_PARTY_INSTAGRAM_VDIS" | |
65548 = "UNI_SHOOTING_MODE_INSTAGRAM_SIE" | |
65549 = "UNI_SHOOTING_MODE_INSTAGRAM_SIE_VDIS" | |
65550 = "UNI_SHOOTING_MODE_SAMSUNG_EXTRA_AUTOFRAMING" | |
65551 = "UNI_SHOOTING_MODE_INTERNAL_END" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi (привет)
Maybe you know - how make gcam working with front and tele cameras?