From b7a320fbbd2d281e37445422f1116a332ba39e65 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 27 Jun 2015 00:39:42 +0300 Subject: [PATCH] cellCamera fix --- rpcs3/Emu/SysCalls/Modules/cellCamera.cpp | 466 +++++----------------- rpcs3/Emu/SysCalls/Modules/cellCamera.h | 92 ++++- 2 files changed, 174 insertions(+), 384 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp index 05df0aeb3e..2a62b2a9ea 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.cpp @@ -6,79 +6,60 @@ #include "cellCamera.h" extern Module cellCamera; -//const char* attributes[] = {"GAIN", "REDBLUEGAIN", "SATURATION", "EXPOSURE", "BRIGHTNESS", "AEC", "AGC", "AWB", "ABC", "LED", "AUDIOGAIN", "QS", "NONZEROCOEFFS", "YUVFLAG", -// "JPEGFLAG", "BACKLIGHTCOMP", "MIRRORFLAG", "MEASUREDQS", "422FLAG", "USBLOAD", "GAMMA", "GREENGAIN", "AGCLIMIT", "DENOISE", "FRAMERATEADJUST", -// "PIXELOUTLIERFILTER", "AGCLOW", "AGCHIGH", "DEVICELOCATION", "FORMATCAP", "FORMATINDEX", "NUMFRAME", "FRAMEINDEX", "FRAMESIZE", "INTERVALTYPE", -// "INTERVALINDEX", "INTERVALVALUE", "COLORMATCHING", "PLFREQ", "DEVICEID", "DEVICECAP", "DEVICESPEED", "UVCREQCODE", "UVCREQDATA", "DEVICEID2", -// "READMODE", "GAMEPID", "PBUFFER", "READFINISH", "ATTRIBUTE_UNKNOWN"}; -struct cellCameraInternal -{ - bool m_bInitialized; - //CellCamera m_camera; - - cellCameraInternal() - : m_bInitialized(false) - { - } -}; - -cellCameraInternal cellCameraInstance; +std::unique_ptr g_camera; s32 cellCameraInit() { cellCamera.Warning("cellCameraInit()"); - if (cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_ALREADY_INIT; - if (Ini.Camera.GetValue() == 0) + { return CELL_CAMERA_ERROR_DEVICE_NOT_FOUND; + } + + if (g_camera->init.exchange(true)) + { + return CELL_CAMERA_ERROR_ALREADY_INIT; + } if (Ini.CameraType.GetValue() == 1) { - //CellCamera camera; - //camera.attributes.SATURATION = 164; - //camera.attributes.BRIGHTNESS = 96; - //camera.attributes.AEC = 1; - //camera.attributes.AGC = 1; - //camera.attributes.AWB = 1; - //camera.attributes.ABC = 0; - //camera.attributes.LED = 1; - //camera.attributes.QS = 0; - //camera.attributes.NONZEROCOEFFS[0] = 32; - //camera.attributes.NONZEROCOEFFS[1] = 32; - //camera.attributes.YUVFLAG = 0; - //camera.attributes.BACKLIGHTCOMP = 0; - //camera.attributes.MIRRORFLAG = 1; - //camera.attributes._422FLAG = 1; - //camera.attributes.USBLOAD = 4; - //cellCameraInstance.m_camera = camera; + g_camera->attr[CELL_CAMERA_SATURATION] = { 164 }; + g_camera->attr[CELL_CAMERA_BRIGHTNESS] = { 96 }; + g_camera->attr[CELL_CAMERA_AEC] = { 1 }; + g_camera->attr[CELL_CAMERA_AGC] = { 1 }; + g_camera->attr[CELL_CAMERA_AWB] = { 1 }; + g_camera->attr[CELL_CAMERA_ABC] = { 0 }; + g_camera->attr[CELL_CAMERA_LED] = { 1 }; + g_camera->attr[CELL_CAMERA_QS] = { 0 }; + g_camera->attr[CELL_CAMERA_NONZEROCOEFFS] = { 32, 32 }; + g_camera->attr[CELL_CAMERA_YUVFLAG] = { 0 }; + g_camera->attr[CELL_CAMERA_BACKLIGHTCOMP] = { 0 }; + g_camera->attr[CELL_CAMERA_MIRRORFLAG] = { 1 }; + g_camera->attr[CELL_CAMERA_422FLAG] = { 1 }; + g_camera->attr[CELL_CAMERA_USBLOAD] = { 4 }; } else if (Ini.CameraType.GetValue() == 2) { - //CellCamera camera; - //camera.attributes.SATURATION = 64; - //camera.attributes.BRIGHTNESS = 8; - //camera.attributes.AEC = 1; - //camera.attributes.AGC = 1; - //camera.attributes.AWB = 1; - //camera.attributes.LED = 1; - //camera.attributes.BACKLIGHTCOMP = 0; - //camera.attributes.MIRRORFLAG = 1; - //camera.attributes.GAMMA = 1; - //camera.attributes.AGCLIMIT = 4; - //camera.attributes.DENOISE = 0; - //camera.attributes.FRAMERATEADJUST = 0; - //camera.attributes.PIXELOUTLIERFILTER = 1; - //camera.attributes.AGCLOW = 48; - //camera.attributes.AGCHIGH = 64; - //cellCameraInstance.m_camera = camera; + g_camera->attr[CELL_CAMERA_SATURATION] = { 64 }; + g_camera->attr[CELL_CAMERA_BRIGHTNESS] = { 8 }; + g_camera->attr[CELL_CAMERA_AEC] = { 1 }; + g_camera->attr[CELL_CAMERA_AGC] = { 1 }; + g_camera->attr[CELL_CAMERA_AWB] = { 1 }; + g_camera->attr[CELL_CAMERA_LED] = { 1 }; + g_camera->attr[CELL_CAMERA_BACKLIGHTCOMP] = { 0 }; + g_camera->attr[CELL_CAMERA_MIRRORFLAG] = { 1 }; + g_camera->attr[CELL_CAMERA_GAMMA] = { 1 }; + g_camera->attr[CELL_CAMERA_AGCLIMIT] = { 4 }; + g_camera->attr[CELL_CAMERA_DENOISE] = { 0 }; + g_camera->attr[CELL_CAMERA_FRAMERATEADJUST] = { 0 }; + g_camera->attr[CELL_CAMERA_PIXELOUTLIERFILTER] = { 1 }; + g_camera->attr[CELL_CAMERA_AGCLOW] = { 48 }; + g_camera->attr[CELL_CAMERA_AGCHIGH] = { 64 }; } // TODO: Some other default attributes? Need to check the actual behaviour on a real PS3. - cellCameraInstance.m_bInitialized = true; - return CELL_OK; } @@ -86,10 +67,10 @@ s32 cellCameraEnd() { cellCamera.Warning("cellCameraEnd()"); - if (!cellCameraInstance.m_bInitialized) + if (!g_camera->init.exchange(false)) + { return CELL_CAMERA_ERROR_NOT_INIT; - - cellCameraInstance.m_bInitialized = false; + } return CELL_OK; } @@ -100,33 +81,21 @@ s32 cellCameraOpen() return CELL_OK; } -s32 cellCameraOpenEx() +s32 cellCameraOpenEx(s32 dev_num, vm::ptr info) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraClose() +s32 cellCameraClose(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraGetDeviceGUID() +s32 cellCameraGetDeviceGUID(s32 dev_num, vm::ptr guid) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } @@ -134,8 +103,10 @@ s32 cellCameraGetType(s32 dev_num, vm::ptr type) { cellCamera.Warning("cellCameraGetType(dev_num=%d, type=*0x%x)", dev_num, type); - if (!cellCameraInstance.m_bInitialized) + if (!g_camera->init.load()) + { return CELL_CAMERA_ERROR_NOT_INIT; + } switch (Ini.CameraType.GetValue()) { @@ -148,25 +119,25 @@ s32 cellCameraGetType(s32 dev_num, vm::ptr type) return CELL_OK; } -s32 cellCameraIsAvailable() +s32 cellCameraIsAvailable(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraIsAttached() +s32 cellCameraIsAttached(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraIsOpen() +s32 cellCameraIsOpen(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraIsStarted() +s32 cellCameraIsStarted(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; @@ -176,118 +147,20 @@ s32 cellCameraGetAttribute(s32 dev_num, s32 attrib, vm::ptr arg1, vm::ptrinit.load()) + { + return CELL_CAMERA_ERROR_NOT_INIT; + } + + if (!attr_name) // invalid attributes don't have a name + { + return CELL_CAMERA_ERROR_PARAM; + } + + *arg1 = g_camera->attr[attrib].v1; + *arg2 = g_camera->attr[attrib].v2; return CELL_OK; } @@ -296,129 +169,26 @@ s32 cellCameraSetAttribute(s32 dev_num, s32 attrib, u32 arg1, u32 arg2) { cellCamera.Warning("cellCameraSetAttribute(dev_num=%d, attrib=%d, arg1=%d, arg2=%d)", dev_num, attrib, arg1, arg2); - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; + const auto attr_name = camera_t::get_attr_name(attrib); - //switch (attrib) - //{ - //case 0: - // cellCameraInstance.m_camera.attributes.GAIN = arg1; break; - //case 1: - // cellCameraInstance.m_camera.attributes.REDBLUEGAIN = arg1; break; - //case 2: - // cellCameraInstance.m_camera.attributes.SATURATION = arg1; break; - //case 3: - // cellCameraInstance.m_camera.attributes.EXPOSURE = arg1; break; - //case 4: - // cellCameraInstance.m_camera.attributes.BRIGHTNESS = arg1; break; - //case 5: - // cellCameraInstance.m_camera.attributes.AEC = arg1; break; - //case 6: - // cellCameraInstance.m_camera.attributes.AGC = arg1; break; - //case 7: - // cellCameraInstance.m_camera.attributes.AWB = arg1; break; - //case 8: - // cellCameraInstance.m_camera.attributes.ABC = arg1; break; - //case 9: - // cellCameraInstance.m_camera.attributes.LED = arg1; break; - //case 10: - // cellCameraInstance.m_camera.attributes.AUDIOGAIN = arg1; break; - //case 11: - // cellCameraInstance.m_camera.attributes.QS = arg1; break; - //case 12: - //{ - // cellCameraInstance.m_camera.attributes.NONZEROCOEFFS[0] = arg1; - // cellCameraInstance.m_camera.attributes.NONZEROCOEFFS[1] = arg2; - // break; - //} - //case 13: - // cellCameraInstance.m_camera.attributes.YUVFLAG = arg1; break; - //case 14: - // cellCameraInstance.m_camera.attributes.JPEGFLAG = arg1; break; - //case 15: - // cellCameraInstance.m_camera.attributes.BACKLIGHTCOMP = arg1; break; - //case 16: - // cellCameraInstance.m_camera.attributes.MIRRORFLAG = arg1; break; - //case 17: - // return CELL_CAMERA_ERROR_PARAM; break; - //case 18: - // cellCameraInstance.m_camera.attributes._422FLAG = arg1; break; - //case 19: - // cellCameraInstance.m_camera.attributes.USBLOAD = arg1; break; - //case 20: - // cellCameraInstance.m_camera.attributes.GAMMA = arg1; break; - //case 21: - // cellCameraInstance.m_camera.attributes.GREENGAIN = arg1; break; - //case 22: - // cellCameraInstance.m_camera.attributes.AGCLIMIT = arg1; break; - //case 23: - // cellCameraInstance.m_camera.attributes.DENOISE = arg1; break; - //case 24: - // cellCameraInstance.m_camera.attributes.FRAMERATEADJUST = arg1; break; - //case 25: - // cellCameraInstance.m_camera.attributes.PIXELOUTLIERFILTER = arg1; break; - //case 26: - // cellCameraInstance.m_camera.attributes.AGCLOW = arg1; break; - //case 27: - // cellCameraInstance.m_camera.attributes.AGCHIGH = arg1; break; - //case 28: - // cellCameraInstance.m_camera.attributes.DEVICELOCATION = arg1; break; - //case 29: - // cellCamera.Error("Tried to write to read-only (?) value: FORMATCAP"); break; - //case 30: - // cellCameraInstance.m_camera.attributes.FORMATINDEX = arg1; break; - //case 31: - // cellCameraInstance.m_camera.attributes.NUMFRAME = arg1; break; - //case 32: - // cellCameraInstance.m_camera.attributes.FRAMEINDEX = arg1; break; - //case 33: - // cellCameraInstance.m_camera.attributes.FRAMESIZE = arg1; break; - //case 34: - // cellCameraInstance.m_camera.attributes.INTERVALTYPE = arg1; break; - //case 35: - // cellCameraInstance.m_camera.attributes.INTERVALINDEX = arg1; break; - //case 36: - // cellCameraInstance.m_camera.attributes.INTERVALVALUE = arg1; break; - //case 37: - // cellCameraInstance.m_camera.attributes.COLORMATCHING = arg1; break; - //case 38: - // cellCameraInstance.m_camera.attributes.PLFREQ = arg1; break; - //case 39: - // return CELL_CAMERA_ERROR_PARAM; break; - //case 40: - // cellCameraInstance.m_camera.attributes.DEVICECAP = arg1; break; - //case 41: - // cellCameraInstance.m_camera.attributes.DEVICESPEED = arg1; break; - //case 42: - // cellCameraInstance.m_camera.attributes.UVCREQCODE = arg1; break; - //case 43: - // cellCameraInstance.m_camera.attributes.UVCREQDATA = arg1; break; - //case 44: - // return CELL_CAMERA_ERROR_PARAM; break; - //case 45: - // cellCamera.Error("Tried to write to read-only (?) value: READMODE"); break; - //case 46: - // cellCameraInstance.m_camera.attributes.GAMEPID = arg1; break; - //case 47: - // cellCameraInstance.m_camera.attributes.PBUFFER = arg1; break; - //case 48: - // cellCameraInstance.m_camera.attributes.READFINISH = arg1; break; - //case 49: - // cellCamera.Error("Tried to write to read-only (?) value: ATTRIBUTE_UNKNOWN"); break; - //default: - // cellCamera.Error("Unexpected cellCameraGetAttribute attribute: %d", attrib); break; - //} + if (!g_camera->init.load()) + { + return CELL_CAMERA_ERROR_NOT_INIT; + } + + if (!attr_name) // invalid attributes don't have a name + { + return CELL_CAMERA_ERROR_PARAM; + } + + g_camera->attr[attrib] = { arg1, arg2 }; return CELL_OK; } -s32 cellCameraGetBufferSize() +s32 cellCameraGetBufferSize(s32 dev_num, vm::ptr info) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } @@ -428,143 +198,99 @@ s32 cellCameraGetBufferInfo() return CELL_OK; } -s32 cellCameraGetBufferInfoEx() -{ - UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - - return CELL_OK; -} - -s32 cellCameraPrepExtensionUnit() +s32 cellCameraGetBufferInfoEx(s32 dev_num, vm::ptr info) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraCtrlExtensionUnit() +s32 cellCameraPrepExtensionUnit(s32 dev_num, vm::ptr guidExtensionCode) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraGetExtensionUnit() +s32 cellCameraCtrlExtensionUnit(s32 dev_num, u8 request, u16 value, u16 length, vm::ptr data) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraSetExtensionUnit() +s32 cellCameraGetExtensionUnit(s32 dev_num, u16 value, u16 length, vm::ptr data) { UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } -s32 cellCameraReset() +s32 cellCameraSetExtensionUnit(s32 dev_num, u16 value, u16 length, vm::ptr data) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraStart() +s32 cellCameraReset(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraRead() +s32 cellCameraStart(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraReadEx() +s32 cellCameraRead(s32 dev_num, vm::ptr frame_num, vm::ptr bytes_read) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraReadComplete() +s32 cellCameraReadEx(s32 dev_num, vm::ptr read) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraStop() +s32 cellCameraReadComplete(s32 dev_num, u32 bufnum, u32 arg2) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraSetNotifyEventQueue() +s32 cellCameraStop(s32 dev_num) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraRemoveNotifyEventQueue() +s32 cellCameraSetNotifyEventQueue(u64 key) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraSetNotifyEventQueue2() +s32 cellCameraRemoveNotifyEventQueue(u64 key) { UNIMPLEMENTED_FUNC(cellCamera); - - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - return CELL_OK; } -s32 cellCameraRemoveNotifyEventQueue2() +s32 cellCameraSetNotifyEventQueue2(u64 key, u64 source, u64 flag) { UNIMPLEMENTED_FUNC(cellCamera); + return CELL_OK; +} - if (!cellCameraInstance.m_bInitialized) - return CELL_CAMERA_ERROR_NOT_INIT; - +s32 cellCameraRemoveNotifyEventQueue2(u64 key) +{ + UNIMPLEMENTED_FUNC(cellCamera); return CELL_OK; } Module cellCamera("cellCamera", []() { - cellCameraInstance.m_bInitialized = false; + g_camera = std::make_unique(); REG_FUNC(cellCamera, cellCameraInit); REG_FUNC(cellCamera, cellCameraEnd); diff --git a/rpcs3/Emu/SysCalls/Modules/cellCamera.h b/rpcs3/Emu/SysCalls/Modules/cellCamera.h index c2af508a8b..4a82a0b5b8 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellCamera.h +++ b/rpcs3/Emu/SysCalls/Modules/cellCamera.h @@ -5,19 +5,19 @@ namespace vm { using namespace ps3; } // Error Codes enum { - CELL_CAMERA_ERROR_ALREADY_INIT = 0x80140801, - CELL_CAMERA_ERROR_NOT_INIT = 0x80140803, - CELL_CAMERA_ERROR_PARAM = 0x80140804, - CELL_CAMERA_ERROR_ALREADY_OPEN = 0x80140805, - CELL_CAMERA_ERROR_NOT_OPEN = 0x80140806, - CELL_CAMERA_ERROR_DEVICE_NOT_FOUND = 0x80140807, + CELL_CAMERA_ERROR_ALREADY_INIT = 0x80140801, + CELL_CAMERA_ERROR_NOT_INIT = 0x80140803, + CELL_CAMERA_ERROR_PARAM = 0x80140804, + CELL_CAMERA_ERROR_ALREADY_OPEN = 0x80140805, + CELL_CAMERA_ERROR_NOT_OPEN = 0x80140806, + CELL_CAMERA_ERROR_DEVICE_NOT_FOUND = 0x80140807, CELL_CAMERA_ERROR_DEVICE_DEACTIVATED = 0x80140808, - CELL_CAMERA_ERROR_NOT_STARTED = 0x80140809, - CELL_CAMERA_ERROR_FORMAT_UNKNOWN = 0x8014080a, + CELL_CAMERA_ERROR_NOT_STARTED = 0x80140809, + CELL_CAMERA_ERROR_FORMAT_UNKNOWN = 0x8014080a, CELL_CAMERA_ERROR_RESOLUTION_UNKNOWN = 0x8014080b, - CELL_CAMERA_ERROR_BAD_FRAMERATE = 0x8014080c, - CELL_CAMERA_ERROR_TIMEOUT = 0x8014080d, - CELL_CAMERA_ERROR_FATAL = 0x8014080f, + CELL_CAMERA_ERROR_BAD_FRAMERATE = 0x8014080c, + CELL_CAMERA_ERROR_TIMEOUT = 0x8014080d, + CELL_CAMERA_ERROR_FATAL = 0x8014080f, }; // Event types @@ -313,8 +313,72 @@ struct CellCameraReadEx }; // Custom struct to keep track of cameras -struct Camera +struct camera_t { - u32 attr[512]; - //CellCameraInfoEx info; + struct attr_t + { + u32 v1, v2; + }; + + std::atomic init{ false }; + + attr_t attr[500]{}; + + static const char* get_attr_name(s32 value) + { + switch (value) + { + case CELL_CAMERA_GAIN: return "CELL_CAMERA_GAIN"; + case CELL_CAMERA_REDBLUEGAIN: return "CELL_CAMERA_REDBLUEGAIN"; + case CELL_CAMERA_SATURATION: return "CELL_CAMERA_SATURATION"; + case CELL_CAMERA_EXPOSURE: return "CELL_CAMERA_EXPOSURE"; + case CELL_CAMERA_BRIGHTNESS: return "CELL_CAMERA_BRIGHTNESS"; + case CELL_CAMERA_AEC: return "CELL_CAMERA_AEC"; + case CELL_CAMERA_AGC: return "CELL_CAMERA_AGC"; + case CELL_CAMERA_AWB: return "CELL_CAMERA_AWB"; + case CELL_CAMERA_ABC: return "CELL_CAMERA_ABC"; + case CELL_CAMERA_LED: return "CELL_CAMERA_LED"; + case CELL_CAMERA_AUDIOGAIN: return "CELL_CAMERA_AUDIOGAIN"; + case CELL_CAMERA_QS: return "CELL_CAMERA_QS"; + case CELL_CAMERA_NONZEROCOEFFS: return "CELL_CAMERA_NONZEROCOEFFS"; + case CELL_CAMERA_YUVFLAG: return "CELL_CAMERA_YUVFLAG"; + case CELL_CAMERA_JPEGFLAG: return "CELL_CAMERA_JPEGFLAG"; + case CELL_CAMERA_BACKLIGHTCOMP: return "CELL_CAMERA_BACKLIGHTCOMP"; + case CELL_CAMERA_MIRRORFLAG: return "CELL_CAMERA_MIRRORFLAG"; + case CELL_CAMERA_MEASUREDQS: return "CELL_CAMERA_MEASUREDQS"; + case CELL_CAMERA_422FLAG: return "CELL_CAMERA_422FLAG"; + case CELL_CAMERA_USBLOAD: return "CELL_CAMERA_USBLOAD"; + case CELL_CAMERA_GAMMA: return "CELL_CAMERA_GAMMA"; + case CELL_CAMERA_GREENGAIN: return "CELL_CAMERA_GREENGAIN"; + case CELL_CAMERA_AGCLIMIT: return "CELL_CAMERA_AGCLIMIT"; + case CELL_CAMERA_DENOISE: return "CELL_CAMERA_DENOISE"; + case CELL_CAMERA_FRAMERATEADJUST: return "CELL_CAMERA_FRAMERATEADJUST"; + case CELL_CAMERA_PIXELOUTLIERFILTER: return "CELL_CAMERA_PIXELOUTLIERFILTER"; + case CELL_CAMERA_AGCLOW: return "CELL_CAMERA_AGCLOW"; + case CELL_CAMERA_AGCHIGH: return "CELL_CAMERA_AGCHIGH"; + case CELL_CAMERA_DEVICELOCATION: return "CELL_CAMERA_DEVICELOCATION"; + case CELL_CAMERA_FORMATCAP: return "CELL_CAMERA_FORMATCAP"; + case CELL_CAMERA_FORMATINDEX: return "CELL_CAMERA_FORMATINDEX"; + case CELL_CAMERA_NUMFRAME: return "CELL_CAMERA_NUMFRAME"; + case CELL_CAMERA_FRAMEINDEX: return "CELL_CAMERA_FRAMEINDEX"; + case CELL_CAMERA_FRAMESIZE: return "CELL_CAMERA_FRAMESIZE"; + case CELL_CAMERA_INTERVALTYPE: return "CELL_CAMERA_INTERVALTYPE"; + case CELL_CAMERA_INTERVALINDEX: return "CELL_CAMERA_INTERVALINDEX"; + case CELL_CAMERA_INTERVALVALUE: return "CELL_CAMERA_INTERVALVALUE"; + case CELL_CAMERA_COLORMATCHING: return "CELL_CAMERA_COLORMATCHING"; + case CELL_CAMERA_PLFREQ: return "CELL_CAMERA_PLFREQ"; + case CELL_CAMERA_DEVICEID: return "CELL_CAMERA_DEVICEID"; + case CELL_CAMERA_DEVICECAP: return "CELL_CAMERA_DEVICECAP"; + case CELL_CAMERA_DEVICESPEED: return "CELL_CAMERA_DEVICESPEED"; + case CELL_CAMERA_UVCREQCODE: return "CELL_CAMERA_UVCREQCODE"; + case CELL_CAMERA_UVCREQDATA: return "CELL_CAMERA_UVCREQDATA"; + case CELL_CAMERA_DEVICEID2: return "CELL_CAMERA_DEVICEID2"; + case CELL_CAMERA_READMODE: return "CELL_CAMERA_READMODE"; + case CELL_CAMERA_GAMEPID: return "CELL_CAMERA_GAMEPID"; + case CELL_CAMERA_PBUFFER: return "CELL_CAMERA_PBUFFER"; + case CELL_CAMERA_READFINISH: return "CELL_CAMERA_READFINISH"; + } + + return nullptr; + } };