Camera Services: Difference between revisions

Steveice10 (talk | contribs)
Links, cleanup.
ElementW (talk | contribs)
m Add anchors
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__TOC__
{{Anchor|CAMC}}{{Anchor|cam:c}}
==cam:c (PORT_REG) ==
==cam:c (PORT_REG) ==
Same as [[#cam:u_.28PORT_USER.29|cam:u]]


{{Anchor|CAMS}}{{Anchor|cam:s}}
==cam:s (PORT_CAL) ==
==cam:s (PORT_CAL) ==
Same as [[#cam:u_.28PORT_USER.29|cam:u]]


{{Anchor|CAMQ}}{{Anchor|cam:q}}
==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
| [[CAMU:StartCapture|StartCapture]]
|-
| 0x00020040
| [[CAMU:StopCapture|StopCapture]]
|-
| 0x0003004?
| [[CAMU:IsBusy|IsBusy]]
|-
| 0x00040040
| [[CAMU:ClearBuffer|ClearBuffer]]
|-
| 0x0005004?
| [[CAMU:GetVsyncInterruptEvent|GetVsyncInterruptEvent]]
|-
| 0x0006004?
| [[CAMU:GetBufferErrorInterruptEvent|GetBufferErrorInterruptEvent]]
|-
| 0x0007????
| [[CAMU:StartRecieving|StartRecieving]]
|-
| 0x00080040
| [[CAMU:IsFinishedRecieving|IsFinishedRecieving]]
|-
| 0x00090100
| [[CAMU:SetTransferLines|SetTransferLines]]
|-
| 0x000A008?
| [[CAMU:GetMaxLines|GetMaxLines]]
|-
| 0x000B0100
| [[CAMU:SetTransferBytes|SetTransferBytes]]
|-
| 0x000C004?
| [[CAMU:GetTransferBytes|GetTransferBytes]]
|-
| 0x000D008?
| [[CAMU:GetMaxBytes|GetMaxBytes]]
|-
| 0x000E0080
| [[CAMU:SetTrimming|SetTrimming]]
|-
| 0x000F004?
| [[CAMU:IsTrimming|IsTrimming]]
|-
| 0x00100140
| [[CAMU:SetTrimmingParams|SetTrimmingParams]]
|-
| 0x0011????
| [[CAMU:GetTrimmingParams|GetTrimmingParams]]
|-
| 0x00120140
| [[CAMU:SetTrimmingParamsCenter|SetTrimmingParamsCenter]]
|-
| 0x00130040
| [[CAMU:Activate|Activate]]
|-
| 0x00140080
| [[CAMU:SwitchContext|SwitchContext]]
|-
| 0x00150080
| [[CAMU:SetExposure|SetExposure]]
|-
| 0x00160080
| [[CAMU:SetWhiteBalance|SetWhiteBalance]]
|-
| 0x00170080
| [[CAMU:SetSharpness|SetSharpness]]
|-
| 0x00180080
| [[CAMU:SetAutoExposure|SetAutoExposure]]
|-
| 0x0019004?
| [[CAMU:IsAutoExposure|IsAutoExposure]]
|-
| 0x001A0080
| [[CAMU:SetAutoWhiteBalance|SetAutoWhiteBalance]]
|-
| 0x001B004?
| [[CAMU:IsAutoWhiteBalance|IsAutoWhiteBalance]]
|-
| 0x001C00C0
| [[CAMU:FlipImage|FlipImage]]
|-
| 0x001D020?
| [[CAMU:SetDetailSize|SetDetailSize]]
|-
| 0x001E00C0
| [[CAMU:SetSize|SetSize]]
|-
| 0x001F0080
| [[CAMU:SetFrameRate|SetFrameRate]]
|-
| 0x00200080
| [[CAMU:SetPhotoMode|SetPhotoMode]]
|-
| 0x002100C0
| [[CAMU:SetEffect|SetEffect]]
|-
| 0x00220080
| [[CAMU:SetContrast|SetContrast]]
|-
| 0x00230080
| [[CAMU:SetLensCorrection|SetLensCorrection]]
|-
| 0x002400C0
| [[CAMU:SetOutputFormat|SetOutputFormat]]
|-
| 0x0025014?
| [[CAMU:SetAutoExposureWindow|SetAutoExposureWindow]]
|-
| 0x0026014?
| [[CAMU:SetAutoWhiteBalanceWindow|SetAutoWhiteBalanceWindow]]
|-
| 0x00270080
| [[CAMU:SetNoiseFilter|SetNoiseFilter]]
|-
| 0x00280080
| [[CAMU:SyncronizeVsyncTiming|SyncronizeVsyncTiming]]
|-
| 0x0029????
| [[CAMU:GetLatestVsyncTiming|GetLatestVsyncTiming]]
|-
| 0x002A????
| [[CAMU:GetStereoCallibrationData|GetStereoCallibrationData]]
|-
| 0x002B????
| [[CAMU:SetPackageParameterWithoutContext|SetPackageParameterWithoutContext]]
|-
| 0x002C0080
| [[CAMU:SetPackageParameterWithContext|SetPackageParameterWithContext]]
|-
| 0x002D????
| [[CAMU:SetPackageParameterWithContextDetail|SetPackageParameterWithContextDetail]]
|-
| 0x002E???
| [[CAMU:GetSuitableY2RStandardCoeffecient|GetSuitableY2RStandardCoeffecient]]
|-
| 0x002F
| [[CAMU:PlayShutterSoundWithWave|PlayShutterSoundWithWave]]
|-
| 0x0030????
| [[CAMU:PlayShutterSound|GetShutterSound]]
|-
| 0x0031000?
| [[CAMU:DriverInitailize|DriverInitialize]]
|-
| 0x0032000?
| [[CAMU:DriverFinalize|DriverFinalize]]
|-
| 0x0033000?
| [[CAMU:GetActivatedCamera|GetActivatedCamera]]
|-
| 0x0034000?
| [[CAMU:GetSleepCamera|GetSleepCamera]]
|-
| 0x00350040
| [[CAMU:SetSleepCamera|SetSleepCamera]]
|-
| 0x00360040
| [[CAMU:SetBrightnessSyncronization|SetBrightnessSyncronization]]
|-
| 0x0037004?
| ???
|-
| 0x0038000?
| ???
|-
| 0x0039004?
| ???
|-
| 0x003A0080
| ???
|-
| 0x003B004?
| ???
|-
| 0x003C0080
| ???
|-
| 0x003D000?
| ???
|-
| 0x003E0000
| ???
|}
Most commands are same as cam:u, although, with different command headers since some commands which are available in cam:u do not exist in cam:q
{{Anchor|CAMU}}{{Anchor|cam:u}}
==cam:u (PORT_USER)==
==cam:u (PORT_USER)==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 197: Line 398:
| 0x003E0040
| 0x003E0040
| [[CAMU:SetBrightnessSynchronization|SetBrightnessSynchronization]]
| [[CAMU:SetBrightnessSynchronization|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
|}
|}


Line 779: Line 998:
|}
|}


{{Anchor|Y2R}}{{Anchor|Y2RU}}{{Anchor|y2r:u}}
== y2r:u ==
== y2r:u ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 786: Line 1,006:
|-
|-
| 0x00010040
| 0x00010040
| SetInputFormat(InputFormat)
| [[Y2R:SetInputFormat|SetInputFormat]]
|-
|-
| 0x0002...
| 0x00020000
| GetInputFormat()
| [[Y2R:GetInputFormat|GetInputFormat]]
|-
|-
| 0x00030040
| 0x00030040
| SetOutputFormat(OutputFormat)
| [[Y2R:SetOutputFormat|SetOutputFormat]]
|-
|-
| 0x0004...
| 0x00040000
| GetOutputFormat()
| [[Y2R:GetOutputFormat|GetOutputFormat]]
|-
|-
| 0x00050040
| 0x00050040
| SetRotation(Rotation)
| [[Y2R:SetRotation|SetRotation]]
|-
|-
| 0x0006...
| 0x00060000
| GetRotation()
| [[Y2R:GetRotation|GetRotation]]
|-
|-
| 0x00070040
| 0x00070040
| SetBlockAlignment(BlockAlignment)
| [[Y2R:SetBlockAlignment|SetBlockAlignment]]
|-
|-
| 0x0008...
| 0x00080000
| GetBlockAlignment()
| [[Y2R:GetBlockAlignment|GetBlockAlignment]]
|-
|-
| 0x0009...
| 0x00090040
| SetCntBit16(Value)
| [[Y2R:SetSpacialDithering|SetSpacialDithering]]
|-
|-
| 0x000A...
| 0x000A0000
| GetCntBit16()
| [[Y2R:GetSpacialDithering|GetSpacialDithering]]
|-
|-
| 0x000B...
| 0x000B0040
| SetCntBit17(Value)
| [[Y2R:SetTemporalDithering|SetTemporalDithering]]
|-
|-
| 0x000C...
| 0x000C0000
| GetCntBit17()
| [[Y2R:GetTemporalDithering|GetTemporalDithering]]
|-
|-
| 0x000D0040
| 0x000D0040
| SetTransferEndInterrupt(bool)
| [[Y2R:SetTransferEndInterrupt|SetTransferEndInterrupt]]
|-
|-
| 0x000E...
| 0x000E0000
| GetTransferEndInterrupt()
| [[Y2R:GetTransferEndInterrupt|GetTransferEndInterrupt]]
|-
|-
| 0x000F0000
| 0x000F0000
| GetTransferEndEvent(Handle*)
| [[Y2R:GetTransferEndEvent|GetTransferEndEvent]]
|-
|-
| 0x00100102
| 0x00100102
Line 840: Line 1,060:
|-
|-
| 0x00130102
| 0x00130102
| [[Y2R:SetSendingYUYV|SetSendingYUYV]]
| [[Y2R:SetSendingYuv|SetSendingYuv]]
|-
|-
| 0x00140000
| 0x00140000
| IsDoneSendingYUYV(bool* state)
| [[Y2R:IsFinishedSendingYuv|IsFinishedSendingYuv]]
|-
|-
| 0x00150000
| 0x00150000
| IsDoneSendingY(bool* state)
| [[Y2R:IsFinishedSendingY|IsFinishedSendingY]]
|-
|-
| 0x00160000
| 0x00160000
| IsDoneSendingU(bool* state)
| [[Y2R:IsFinishedSendingU|IsFinishedSendingU]]
|-
|-
| 0x00170000
| 0x00170000
| IsDoneSendingV(bool* state)
| [[Y2R:IsFinishedSendingV|IsFinishedSendingV]]
|-
|-
| 0x00180102
| 0x00180102
| SetReceiving(unsigned int pDst, unsigned int imageSize, short transferUnit, short transferStride, 0, Handle dstProcess).
| [[Y2R:SetReceiving|SetReceiving]]
|-
|-
| 0x00190000
| 0x00190000
| IsDoneReceiving(bool* state)
| [[Y2R:IsFinishedReceiving|IsFinishedReceiving]]
|-
|-
| 0x001A0040
| 0x001A0040
| SetInputLineWidth(short)
| [[Y2R:SetInputLineWidth|SetInputLineWidth]]
|-
|-
| 0x001B...
| 0x001B0000
| GetInputLineWidth()
| [[Y2R:GetInputLineWidth|GetInputLineWidth]]
|-
|-
| 0x001C0040
| 0x001C0040
| SetInputLines(short)
| [[Y2R:SetInputLines|SetInputLines]]
|-
|-
| 0x001D...
| 0x001D0000
| GetInputLines()
| [[Y2R:GetInputLines|GetInputLines]]
|-
|-
| 0x001E....
| 0x001E0100
| SetCoefficient(0x10-byte CoefficientStruct)
| [[Y2R:SetCoefficientParams|SetCoefficientParams]]
|-
|-
| 0x001F....
| 0x001F0000
| GetCoefficient()
| [[Y2R:GetCoefficientParams|GetCoefficientParams]]
|-
|-
| 0x00200040
| 0x00200040
| SetStandardCoefficient(StandardCoefficient)
| [[Y2R:SetStandardCoefficient|SetStandardCoefficient]]
This command is equivalent to SetCoefficient(GenerateStandardCoefficient(StandardCoefficient)).
|-
|-
| 0x0021....
| 0x00210040
| GenerateStandardCoefficient(StandardCoefficient)
| [[Y2R:GetStandardCoefficientParams|GetStandardCoefficientParams]]
|-
|-
| 0x00220040
| 0x00220040
| SetAlpha(short)
| [[Y2R:SetAlpha|SetAlpha]]
|-
|-
| 0x0023....
| 0x00230000
| GetAlpha()
| [[Y2R:GetAlpha|GetAlpha]]
|-
|-
| 0x0024....
| 0x00240200
| SetUnknownParams(0x20 bytes UnknownParamBlock)
| [[Y2R:SetDitheringWeightParams|SetDitheringWeightParams]]
|-
|-
| 0x0025....
| 0x00250000
| GetUnknownParams
| [[Y2R:GetDitheringWeightParams|GetDitheringWeightParams]]
|-
|-
| 0x00260000
| 0x00260000
| StartConversion
| [[Y2R:StartConversion|StartConversion]]
|-
|-
| 0x00270000
| 0x00270000
| StopConversion
| [[Y2R:StopConversion|StopConversion]]
|-
|-
| 0x00280000
| 0x00280000
| IsBusyConversion(bool * state)
| [[Y2R:IsBusyConversion|IsBusyConversion]]
|-
|-
| 0x002901C0
| 0x002901C0
| [[Y2R:SetConversionParams|SetConversionParams]]
| [[Y2R:SetPackageParameter|SetPackageParameter]]
|-
|-
| 0x002A0000
| 0x002A0000
| PingProcess(unsigned char * connectedNumber)
| [[Y2R:PingProcess|PingProcess]]
|-
|-
| 0x002B0000
| 0x002B0000
| DriverInitialize
| [[Y2R:DriverInitialize|DriverInitialize]]
|-
|-
| 0x002C0000
| 0x002C0000
| DriverFinalize
| [[Y2R:DriverFinalize|DriverFinalize]]
|-
|-
| 0x002D....
| 0x002D0000
| [[Y2R:GetConversionParams|GetConversionParams]]
| [[Y2R:GetPackageParameter|GetPackageParameter]]
|}
|}


 
===InputFormat===
'''InputFormat'''
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 945: Line 1,163:
|}
|}


 
===OutputFormat===
'''OutputFormat'''
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 965: Line 1,182:
|}
|}


 
===Rotation===
'''Rotation'''
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 985: Line 1,201:
|}
|}


 
===BlockAlignment===
'''BlockAlignment'''
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 1,002: Line 1,217:
|}
|}


===CoefficientParams===
{| class="wikitable" border="1"
!  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'''
===StandardCoefficient===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 1,020: Line 1,264:
| COEFFICIENT_ITU_R_BT_709_SCALING
| COEFFICIENT_ITU_R_BT_709_SCALING
| 0x3
| 0x3
|}
===DitheringWeightParams===
{| class="wikitable" border="1"
!  Type
!  Field
|-
|-
| COEFFICIENT_MAX
| u16
| 0x4
| 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===
{| class="wikitable" border="1"
!  Type
!  Field
|-
| u8
| [[Camera_Services#InputFormat|InputFormat]] inputFormat
|-
| u8
| [[Camera_Services#OutputFormat_2|OutputFormat]] outputFormat
|-
| u8
| [[Camera_Services#Rotation|Rotation]] rotation
|-
| u8
| [[Camera_Services#BlockAlignment|BlockAlignment]] blockAlignment
|-
| s16
| inputLineWidth
|-
| s16
| inputLines
|-
| u8
| [[Camera_Services#StandardCoefficient|StandardCoefficient]] standardCoefficient
|-
| u8
| padding
|-
| s16
| alpha
|}
|}
[[Category:Services]]