Difference between revisions of "Camera Services"

From 3dbrew
Jump to navigation Jump to search
m (All old3DS-compatible cam: ports have the same command handler function)
Line 7: Line 7:
 
==cam:q (PORT_QTM) ==
 
==cam:q (PORT_QTM) ==
 
This was added with New3DS.
 
This was added with New3DS.
 +
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Command Header
 +
!  Description
 +
|-
 +
| 0x00010040
 +
| ???
 +
|-
 +
| 0x00020040
 +
| ???
 +
|-
 +
| 0x0003004?
 +
| ???
 +
|-
 +
| 0x00040040
 +
| ???
 +
|-
 +
| 0x0005004?
 +
| ???
 +
|-
 +
| 0x0006004?
 +
| ???
 +
|-
 +
| 0x0007????
 +
| ???
 +
|-
 +
| 0x00080040
 +
| ???
 +
|-
 +
| 0x00090100
 +
| ???
 +
|-
 +
| 0x000A008?
 +
| ???
 +
|-
 +
| 0x000B0100
 +
| ???
 +
|-
 +
| 0x000C004?
 +
| ???
 +
|-
 +
| 0x000D008?
 +
| ???
 +
|-
 +
| 0x000E0080
 +
| ???
 +
|-
 +
| 0x000F004?
 +
| ???
 +
|-
 +
| 0x00100140
 +
| ???
 +
|-
 +
| 0x0011????
 +
| ???
 +
|-
 +
| 0x00120140
 +
| ???
 +
|-
 +
| 0x00130040
 +
| ???
 +
|-
 +
| 0x00140080
 +
| ???
 +
|-
 +
| 0x00150080
 +
| ???
 +
|-
 +
| 0x00160080
 +
| ???
 +
|-
 +
| 0x00170080
 +
| ???
 +
|-
 +
| 0x00180080
 +
| ???
 +
|-
 +
| 0x0019004?
 +
| ???
 +
|-
 +
| 0x001A0080
 +
| ???
 +
|-
 +
| 0x001B004?
 +
| ???
 +
|-
 +
| 0x001C00C0
 +
| ???
 +
|-
 +
| 0x001D020?
 +
| ???
 +
|-
 +
| 0x001E00C0
 +
| ???
 +
|-
 +
| 0x001F0080
 +
| ???
 +
|-
 +
| 0x00200080
 +
| ???
 +
|-
 +
| 0x002100C0
 +
| ???
 +
|-
 +
| 0x00220080
 +
| ???
 +
|-
 +
| 0x00230080
 +
| ???
 +
|-
 +
| 0x002400C0
 +
| ???
 +
|-
 +
| 0x0025014?
 +
| ???
 +
|-
 +
| 0x0026014?
 +
| ???
 +
|-
 +
| 0x00270080
 +
| ???
 +
|-
 +
| 0x00280080
 +
| ???
 +
|-
 +
| 0x0029????
 +
| ???
 +
|-
 +
| 0x002A????
 +
| ???
 +
|-
 +
| 0x002B????
 +
| ???
 +
|-
 +
| 0x002C0080
 +
| ???
 +
|-
 +
| 0x002D????
 +
| ???
 +
|-
 +
| 0x002E???
 +
| ???
 +
|-
 +
| 0x002F
 +
| ??????
 +
|-
 +
| 0x0030????
 +
| ???
 +
|-
 +
| 0x0031000?
 +
| ???
 +
|-
 +
| 0x0032000?
 +
| ???
 +
|-
 +
| 0x0033000?
 +
| ???
 +
|-
 +
| 0x0034000?
 +
| ???
 +
|-
 +
| 0x00350040
 +
| ???
 +
|-
 +
| 0x00360040
 +
| ???
 +
|-
 +
| 0x0037004?
 +
| ???
 +
|-
 +
| 0x0038000?
 +
| ???
 +
|-
 +
| 0x0039004?
 +
| ???
 +
|-
 +
| 0x003A0080
 +
| ???
 +
|-
 +
| 0x003B004?
 +
| ???
 +
|-
 +
| 0x003C0080
 +
| ???
 +
|-
 +
| 0x003D000?
 +
| ???
 +
|-
 +
| 0x003E0000
 +
| ???
 +
|}
  
 
==cam:u (PORT_USER)==
 
==cam:u (PORT_USER)==

Revision as of 19:23, 9 August 2018

cam:c (PORT_REG)

Same as cam:u

cam:s (PORT_CAL)

Same as cam:u

cam:q (PORT_QTM)

This was added with New3DS.

Command Header Description
0x00010040 ???
0x00020040 ???
0x0003004? ???
0x00040040 ???
0x0005004? ???
0x0006004? ???
0x0007???? ???
0x00080040 ???
0x00090100 ???
0x000A008? ???
0x000B0100 ???
0x000C004? ???
0x000D008? ???
0x000E0080 ???
0x000F004? ???
0x00100140 ???
0x0011???? ???
0x00120140 ???
0x00130040 ???
0x00140080 ???
0x00150080 ???
0x00160080 ???
0x00170080 ???
0x00180080 ???
0x0019004? ???
0x001A0080 ???
0x001B004? ???
0x001C00C0 ???
0x001D020? ???
0x001E00C0 ???
0x001F0080 ???
0x00200080 ???
0x002100C0 ???
0x00220080 ???
0x00230080 ???
0x002400C0 ???
0x0025014? ???
0x0026014? ???
0x00270080 ???
0x00280080 ???
0x0029???? ???
0x002A???? ???
0x002B???? ???
0x002C0080 ???
0x002D???? ???
0x002E??? ???
0x002F ??????
0x0030???? ???
0x0031000? ???
0x0032000? ???
0x0033000? ???
0x0034000? ???
0x00350040 ???
0x00360040 ???
0x0037004? ???
0x0038000? ???
0x0039004? ???
0x003A0080 ???
0x003B004? ???
0x003C0080 ???
0x003D000? ???
0x003E0000 ???

cam:u (PORT_USER)

Command Header Description
0x00010040 StartCapture
0x00020040 StopCapture
0x00030040 IsBusy
0x00040040 ClearBuffer
0x00050040 GetVsyncInterruptEvent
0x00060040 GetBufferErrorInterruptEvent
0x00070102 SetReceiving
0x00080040 IsFinishedReceiving
0x00090100 SetTransferLines
0x000A0080 GetMaxLines
0x000B0100 SetTransferBytes
0x000C0040 GetTransferBytes
0x000D0080 GetMaxBytes
0x000E0080 SetTrimming
0x000F0040 IsTrimming
0x00100140 SetTrimmingParams
0x00110040 GetTrimmingParams
0x00120140 SetTrimmingParamsCenter
0x00130040 Activate
0x00140080 SwitchContext
0x00150080 SetExposure
0x00160080 SetWhiteBalance
0x00170080 SetWhiteBalanceWithoutBaseUp
0x00180080 SetSharpness
0x00190080 SetAutoExposure
0x001A0040 IsAutoExposure
0x001B0080 SetAutoWhiteBalance
0x001C0040 IsAutoWhiteBalance
0x001D00C0 FlipImage
0x001E0200 SetDetailSize
0x001F00C0 SetSize
0x00200080 SetFrameRate
0x00210080 SetPhotoMode
0x002200C0 SetEffect
0x00230080 SetContrast
0x00240080 SetLensCorrection
0x002500C0 SetOutputFormat
0x00260140 SetAutoExposureWindow
0x00270140 SetAutoWhiteBalanceWindow
0x00280080 SetNoiseFilter
0x00290080 SynchronizeVsyncTiming
0x002A0080 GetLatestVsyncTiming
0x002B0000 GetStereoCameraCalibrationData
0x002C0400 SetStereoCameraCalibrationData
0x002D00C0 WriteRegisterI2c
0x002E00C0 WriteMcuVariableI2c
0x002F0080 ReadRegisterI2cExclusive
0x00300080 ReadMcuVariableI2cExclusive
0x00310180 SetImageQualityCalibrationData
0x00320000 GetImageQualityCalibrationData
0x003302C0 SetPackageParameterWithoutContext
0x00340140 SetPackageParameterWithContext
0x003501C0 SetPackageParameterWithContextDetail
0x00360000 GetSuitableY2rStandardCoefficient
0x00370202 PlayShutterSoundWithWave
0x00380040 PlayShutterSound
0x00390000 DriverInitialize
0x003A0000 DriverFinalize
0x003B0000 GetActivatedCamera
0x003C0000 GetSleepCamera
0x003D0040 SetSleepCamera
0x003E0040 SetBrightnessSynchronization
0x003F0040 Stubbed, always returns 0
0x004000C0 ???
0x00410040 Stubbed, returns D8A053EA if flag is not 1
0x00420040 ???
0x00430000 Stubbed, returns D8A053EA if flag is not 1
0x00440000 Stubbed, returns D8A053EA if flag is not 1

Port

Enum Value
PORT_NONE 0x0
PORT_CAM1 0x1 << 0x0
PORT_CAM2 0x1 << 0x1
PORT_BOTH PORT_CAM1 | PORT_CAM2

CameraSelect

Enum Value
SELECT_NONE 0x0
SELECT_OUT1 0x1 << 0x0
SELECT_IN1 0x1 << 0x1
SELECT_OUT2 0x1 << 0x2
SELECT_IN1_OUT1 SELECT_OUT1 | SELECT_IN1
SELECT_OUT1_OUT2 SELECT_OUT1 | SELECT_OUT2
SELECT_IN1_OUT2 SELECT_IN1 | SELECT_OUT2
SELECT_ALL SELECT_OUT1 | SELECT_IN1 | SELECT_OUT2

Context

Enum Value
CONTEXT_NONE 0x0
CONTEXT_A 0x1 << 0x0
CONTEXT_B 0x1 << 0x1
CONTEXT_BOTH CONTEXT_A | CONTEXT_B

Flip

Enum Value
FLIP_NONE 0x0
FLIP_HORIZONTAL 0x1
FLIP_VERTICAL 0x2
FLIP_REVERSE 0x3

Size

Enum Value
SIZE_VGA 0x0
SIZE_QVGA 0x1
SIZE_QQVGA 0x2
SIZE_CIF 0x3
SIZE_QCIF 0x4
SIZE_DS_LCD 0x5
SIZE_DS_LCDx4 0x6
SIZE_CTR_TOP_LCD 0x7
SIZE_CTR_BOTTOM_LCD SIZE_QVGA

FrameRate

Enum Value
FRAME_RATE_15 0x0
FRAME_RATE_15_TO_5 0x1
FRAME_RATE_15_TO_2 0x2
FRAME_RATE_10 0x3
FRAME_RATE_8_5 0x4
FRAME_RATE_5 0x5
FRAME_RATE_20 0x6
FRAME_RATE_20_TO_5 0x7
FRAME_RATE_30 0x8
FRAME_RATE_30_TO_5 0x9
FRAME_RATE_15_TO_10 0xA
FRAME_RATE_20_TO_10 0xB
FRAME_RATE_30_TO_10 0xC

WhiteBalance

Enum Value
WHITE_BALANCE_AUTO 0x0
WHITE_BALANCE_3200K 0x1
WHITE_BALANCE_4150K 0x2
WHITE_BALANCE_5200K 0x3
WHITE_BALANCE_6000K 0x4
WHITE_BALANCE_7000K 0x5
WHITE_BALANCE_MAX 0x6
WHITE_BALANCE_NORMAL WHITE_BALANCE_AUTO
WHITE_BALANCE_TUNGSTEN WHITE_BALANCE_3200K
WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT WHITE_BALANCE_4150K
WHITE_BALANCE_DAYLIGHT WHITE_BALANCE_5200K
WHITE_BALANCE_CLOUDY WHITE_BALANCE_6000K
WHITE_BALANCE_HORIZON WHITE_BALANCE_6000K
WHITE_BALANCE_SHADE WHITE_BALANCE_7000K

PhotoMode

Enum Value
PHOTO_MODE_NORMAL 0x0
PHOTO_MODE_PORTRAIT 0x1
PHOTO_MODE_LANDSCAPE 0x2
PHOTO_MODE_NIGHTVIEW 0x3
PHOTO_MODE_LETTER 0x4

Effect

Enum Value
EFFECT_NONE 0x0
EFFECT_MONO 0x1
EFFECT_SEPIA 0x2
EFFECT_NEGATIVE 0x3
EFFECT_NEGAFILM 0x4
EFFECT_SEPIA01 0x5

Contrast

Enum Value
CONTRAST_PATTERN_01 0x0
CONTRAST_PATTERN_02 0x1
CONTRAST_PATTERN_03 0x2
CONTRAST_PATTERN_04 0x3
CONTRAST_PATTERN_05 0x4
CONTRAST_PATTERN_06 0x5
CONTRAST_PATTERN_07 0x6
CONTRAST_PATTERN_08 0x7
CONTRAST_PATTERN_09 0x8
CONTRAST_PATTERN_10 0x9
CONTRAST_PATTERN_11 0xA
CONTRAST_LOW CONTRAST_PATTERN_05
CONTRAST_NORMAL CONTRAST_PATTERN_06
CONTRAST_HIGH CONTRAST_PATTERN_07

LensCorrection

Enum Value
LENS_CORRECTION_OFF 0x0
LENS_CORRECTION_ON_70 0x1
LENS_CORRECTION_ON_90 0x2
LENS_CORRECTION_DARK LENS_CORRECTION_OFF
LENS_CORRECTION_NORMAL LENS_CORRECTION_ON_70
LENS_CORRECTION_BRIGHT LENS_CORRECTION_ON_90

OutputFormat

Enum Value
OUTPUT_YUV_422 0x0
OUTPUT_RGB_565 0x1

ShutterSoundType

Enum Value
SHUTTER_SOUND_TYPE_NORMAL 0x0
SHUTTER_SOUND_TYPE_MOVIE 0x1
SHUTTER_SOUND_TYPE_MOVIE_END 0x2

ImageQualityCalibrationData

Type Field
s16 aeBaseTarget
s16 kRL
s16 kGL
s16 kBL
s16 ccmPosition
u16 awbCcmL9Right
u16 awbCcmL9Left
u16 awbCcmL10Right
u16 awbCcmL10Left
u16 awbX0Right
u16 awbX0Left

StereoCameraCalibrationData

Type Field
bool isValidRotationXY
bool[3] reservedFlag
float scale
float rotationZ
float translationX
float translationY
float rotationX
float rotationY
float angleOfViewRight
float angleOfViewLeft
float distanceToChart
float distanceCameras
s16 imageWidth
s16 imageHeight
u8[16] reserved

PackageParameterCameraSelect

Type Field
u8 CameraSelect camera
s8 exposure
u8 WhiteBalance whiteBalance
s8 sharpness
bool autoExposureOn
bool autoWhiteBalanceOn
u8 FrameRate frameRate
u8 PhotoMode photoMode
u8 contrast
u8 LensCorrection lensCorrection
bool noiseFilterOn
u8 padding
s16 autoExposureWindowX
s16 autoExposureWindowY
s16 autoExposureWindowWidth
s16 autoExposureWindowHeight
s16 autoWhiteBalanceWindowX
s16 autoWhiteBalanceWindowY
s16 autoWhiteBalanceWindowWidth
s16 autoWhiteBalanceWindowHeight

PackageParameterContext

Type Field
u8 CameraSelect camera
u8 Context context
u8 Flip flip
u8 Effect effect
u8 Size size

PackageParameterContextDetail

Type Field
u8 CameraSelect camera
u8 Context context
u8 Flip flip
u8 Effect effect
s16 width
s16 height
s16 cropX0
s16 cropY0
s16 cropX1
s16 cropY1

y2r:u

Command Header Description
0x00010040 SetInputFormat
0x00020000 GetInputFormat
0x00030040 SetOutputFormat
0x00040000 GetOutputFormat
0x00050040 SetRotation
0x00060000 GetRotation
0x00070040 SetBlockAlignment
0x00080000 GetBlockAlignment
0x00090040 SetSpacialDithering
0x000A0000 GetSpacialDithering
0x000B0040 SetTemporalDithering
0x000C0000 GetTemporalDithering
0x000D0040 SetTransferEndInterrupt
0x000E0000 GetTransferEndInterrupt
0x000F0000 GetTransferEndEvent
0x00100102 SetSendingY
0x00110102 SetSendingU
0x00120102 SetSendingV
0x00130102 SetSendingYuv
0x00140000 IsFinishedSendingYuv
0x00150000 IsFinishedSendingY
0x00160000 IsFinishedSendingU
0x00170000 IsFinishedSendingV
0x00180102 SetReceiving
0x00190000 IsFinishedReceiving
0x001A0040 SetInputLineWidth
0x001B0000 GetInputLineWidth
0x001C0040 SetInputLines
0x001D0000 GetInputLines
0x001E0100 SetCoefficientParams
0x001F0000 GetCoefficientParams
0x00200040 SetStandardCoefficient
0x00210040 GetStandardCoefficientParams
0x00220040 SetAlpha
0x00230000 GetAlpha
0x00240200 SetDitheringWeightParams
0x00250000 GetDitheringWeightParams
0x00260000 StartConversion
0x00270000 StopConversion
0x00280000 IsBusyConversion
0x002901C0 SetPackageParameter
0x002A0000 PingProcess
0x002B0000 DriverInitialize
0x002C0000 DriverFinalize
0x002D0000 GetPackageParameter

InputFormat

Enum Value
INPUT_YUV422_INDIV_8 0x0
INPUT_YUV420_INDIV_8 0x1
INPUT_YUV422_INDIV_16 0x2
INPUT_YUV420_INDIV_16 0x3
INPUT_YUV422_BATCH 0x4

OutputFormat

Enum Value
OUTPUT_RGB_32 0x0
OUTPUT_RGB_24 0x1
OUTPUT_RGB_16_555 0x2
OUTPUT_RGB_16_565 0x3

Rotation

Enum Value
ROTATION_NONE 0x0
ROTATION_CLOCKWISE_90 0x1
ROTATION_CLOCKWISE_180 0x2
ROTATION_CLOCKWISE_270 0x3

BlockAlignment

Enum Value Description
BLOCK_LINE 0x0 Output buffer's pixels are arranged linearly. Used when outputting to the framebuffer.
BLOCK_8_BY_8 0x1 Output buffer's pixels are morton swizzled. Used when outputting to a GPU texture.

CoefficientParams

Type Field
u16 Y_A
u16 R_V
u16 G_V
u16 G_U
u16 B_U
u16 R_Offset
u16 G_Offset
u16 B_Offset

StandardCoefficient

Enum Value
COEFFICIENT_ITU_R_BT_601 0x0
COEFFICIENT_ITU_R_BT_709 0x1
COEFFICIENT_ITU_R_BT_601_SCALING 0x2
COEFFICIENT_ITU_R_BT_709_SCALING 0x3

DitheringWeightParams

Type Field
u16 w0_xEven_yEven
u16 w0_xOdd_yEven
u16 w0_xEven_yOdd
u16 w0_xOdd_yOdd
u16 w1_xEven_yEven
u16 w1_xOdd_yEven
u16 w1_xEven_yOdd
u16 w1_xOdd_yOdd
u16 w2_xEven_yEven
u16 w2_xOdd_yEven
u16 w2_xEven_yOdd
u16 w2_xOdd_yOdd
u16 w3_xEven_yEven
u16 w3_xOdd_yEven
u16 w3_xEven_yOdd
u16 w3_xOdd_yOdd

PackageParameter

Type Field
u8 InputFormat inputFormat
u8 OutputFormat outputFormat
u8 Rotation rotation
u8 BlockAlignment blockAlignment
s16 inputLineWidth
s16 inputLines
u8 StandardCoefficient standardCoefficient
u8 padding
s16 alpha