Camera Services: Difference between revisions
Steveice10 (talk | contribs) Links, cleanup. |
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 | | [[Y2R:SetInputFormat|SetInputFormat]] | ||
|- | |- | ||
| | | 0x00020000 | ||
| GetInputFormat | | [[Y2R:GetInputFormat|GetInputFormat]] | ||
|- | |- | ||
| 0x00030040 | | 0x00030040 | ||
| SetOutputFormat | | [[Y2R:SetOutputFormat|SetOutputFormat]] | ||
|- | |- | ||
| | | 0x00040000 | ||
| GetOutputFormat | | [[Y2R:GetOutputFormat|GetOutputFormat]] | ||
|- | |- | ||
| 0x00050040 | | 0x00050040 | ||
| SetRotation | | [[Y2R:SetRotation|SetRotation]] | ||
|- | |- | ||
| | | 0x00060000 | ||
| GetRotation | | [[Y2R:GetRotation|GetRotation]] | ||
|- | |- | ||
| 0x00070040 | | 0x00070040 | ||
| SetBlockAlignment | | [[Y2R:SetBlockAlignment|SetBlockAlignment]] | ||
|- | |- | ||
| | | 0x00080000 | ||
| GetBlockAlignment | | [[Y2R:GetBlockAlignment|GetBlockAlignment]] | ||
|- | |- | ||
| | | 0x00090040 | ||
| | | [[Y2R:SetSpacialDithering|SetSpacialDithering]] | ||
|- | |- | ||
| | | 0x000A0000 | ||
| | | [[Y2R:GetSpacialDithering|GetSpacialDithering]] | ||
|- | |- | ||
| | | 0x000B0040 | ||
| | | [[Y2R:SetTemporalDithering|SetTemporalDithering]] | ||
|- | |- | ||
| | | 0x000C0000 | ||
| | | [[Y2R:GetTemporalDithering|GetTemporalDithering]] | ||
|- | |- | ||
| 0x000D0040 | | 0x000D0040 | ||
| SetTransferEndInterrupt | | [[Y2R:SetTransferEndInterrupt|SetTransferEndInterrupt]] | ||
|- | |- | ||
| | | 0x000E0000 | ||
| GetTransferEndInterrupt | | [[Y2R:GetTransferEndInterrupt|GetTransferEndInterrupt]] | ||
|- | |- | ||
| 0x000F0000 | | 0x000F0000 | ||
| GetTransferEndEvent | | [[Y2R:GetTransferEndEvent|GetTransferEndEvent]] | ||
|- | |- | ||
| 0x00100102 | | 0x00100102 | ||
Line 840: | Line 1,060: | ||
|- | |- | ||
| 0x00130102 | | 0x00130102 | ||
| [[Y2R: | | [[Y2R:SetSendingYuv|SetSendingYuv]] | ||
|- | |- | ||
| 0x00140000 | | 0x00140000 | ||
| | | [[Y2R:IsFinishedSendingYuv|IsFinishedSendingYuv]] | ||
|- | |- | ||
| 0x00150000 | | 0x00150000 | ||
| | | [[Y2R:IsFinishedSendingY|IsFinishedSendingY]] | ||
|- | |- | ||
| 0x00160000 | | 0x00160000 | ||
| | | [[Y2R:IsFinishedSendingU|IsFinishedSendingU]] | ||
|- | |- | ||
| 0x00170000 | | 0x00170000 | ||
| | | [[Y2R:IsFinishedSendingV|IsFinishedSendingV]] | ||
|- | |- | ||
| 0x00180102 | | 0x00180102 | ||
| SetReceiving | | [[Y2R:SetReceiving|SetReceiving]] | ||
|- | |- | ||
| 0x00190000 | | 0x00190000 | ||
| | | [[Y2R:IsFinishedReceiving|IsFinishedReceiving]] | ||
|- | |- | ||
| 0x001A0040 | | 0x001A0040 | ||
| SetInputLineWidth | | [[Y2R:SetInputLineWidth|SetInputLineWidth]] | ||
|- | |- | ||
| | | 0x001B0000 | ||
| GetInputLineWidth | | [[Y2R:GetInputLineWidth|GetInputLineWidth]] | ||
|- | |- | ||
| 0x001C0040 | | 0x001C0040 | ||
| SetInputLines | | [[Y2R:SetInputLines|SetInputLines]] | ||
|- | |- | ||
| | | 0x001D0000 | ||
| GetInputLines | | [[Y2R:GetInputLines|GetInputLines]] | ||
|- | |- | ||
| | | 0x001E0100 | ||
| | | [[Y2R:SetCoefficientParams|SetCoefficientParams]] | ||
|- | |- | ||
| | | 0x001F0000 | ||
| | | [[Y2R:GetCoefficientParams|GetCoefficientParams]] | ||
|- | |- | ||
| 0x00200040 | | 0x00200040 | ||
| SetStandardCoefficient | | [[Y2R:SetStandardCoefficient|SetStandardCoefficient]] | ||
|- | |- | ||
| | | 0x00210040 | ||
| | | [[Y2R:GetStandardCoefficientParams|GetStandardCoefficientParams]] | ||
|- | |- | ||
| 0x00220040 | | 0x00220040 | ||
| SetAlpha | | [[Y2R:SetAlpha|SetAlpha]] | ||
|- | |- | ||
| | | 0x00230000 | ||
| GetAlpha | | [[Y2R:GetAlpha|GetAlpha]] | ||
|- | |- | ||
| | | 0x00240200 | ||
| | | [[Y2R:SetDitheringWeightParams|SetDitheringWeightParams]] | ||
|- | |- | ||
| | | 0x00250000 | ||
| | | [[Y2R:GetDitheringWeightParams|GetDitheringWeightParams]] | ||
|- | |- | ||
| 0x00260000 | | 0x00260000 | ||
| StartConversion | | [[Y2R:StartConversion|StartConversion]] | ||
|- | |- | ||
| 0x00270000 | | 0x00270000 | ||
| StopConversion | | [[Y2R:StopConversion|StopConversion]] | ||
|- | |- | ||
| 0x00280000 | | 0x00280000 | ||
| IsBusyConversion | | [[Y2R:IsBusyConversion|IsBusyConversion]] | ||
|- | |- | ||
| 0x002901C0 | | 0x002901C0 | ||
| [[Y2R: | | [[Y2R:SetPackageParameter|SetPackageParameter]] | ||
|- | |- | ||
| 0x002A0000 | | 0x002A0000 | ||
| PingProcess | | [[Y2R:PingProcess|PingProcess]] | ||
|- | |- | ||
| 0x002B0000 | | 0x002B0000 | ||
| DriverInitialize | | [[Y2R:DriverInitialize|DriverInitialize]] | ||
|- | |- | ||
| 0x002C0000 | | 0x002C0000 | ||
| DriverFinalize | | [[Y2R:DriverFinalize|DriverFinalize]] | ||
|- | |- | ||
| | | 0x002D0000 | ||
| [[Y2R: | | [[Y2R:GetPackageParameter|GetPackageParameter]] | ||
|} | |} | ||
===InputFormat=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 945: | Line 1,163: | ||
|} | |} | ||
===OutputFormat=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 965: | Line 1,182: | ||
|} | |} | ||
===Rotation=== | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 985: | Line 1,201: | ||
|} | |} | ||
===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=== | |||
{| 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 | |||
|- | |- | ||
| | | 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=== | |||
{| 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]] |