Skip to content

Instantly share code, notes, and snippets.

@tdrkDev
Last active March 7, 2024 20:49
Show Gist options
  • Save tdrkDev/c2e4f66481b5d5fb12f1245ded4fc49b to your computer and use it in GitHub Desktop.
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.
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);
}
}
}
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;
}
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);
}
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
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"
@Sekilsgs2
Copy link

Hi (привет)

Maybe you know - how make gcam working with front and tele cameras?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment