Merge remote-tracking branch 'origin/main'

rtmpsuck
jxjajs 5 months ago
commit eb26477067

@ -5,7 +5,7 @@ plugins {
// 10,00,000 major-minor-build
def AppMajorVersion = 1
def AppMinorVersion = 1
def AppBuildNumber = 40
def AppBuildNumber = 47
def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber
def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber

@ -47,12 +47,11 @@ add_definitions(-DUSING_EXEC_HDRP=1)
set(USING_EXEC_HDRP 1)
# add_definitions(-DUSING_PLZ)
if(ANDROID_ABI STREQUAL "armeabi-v7a")
add_definitions(-DUSING_N938)
elseif(ANDROID_ABI STREQUAL "arm64-v8a")
# add_definitions(-DUSING_N938)
add_definitions(-DUSING_PLZ)
endif()
# include_directories(${OpenCV_DIR}/include)

@ -35,6 +35,7 @@ size_t GpioControl::turnOnImpl(const IOT_PARAM& param)
std::vector<ITEM>::iterator it;
int res = 0;
int fd = -1;
time_t now = time(NULL);
fd = open(GPIO_NODE_MP, O_RDONLY);
if( fd > 0 )
@ -47,16 +48,20 @@ size_t GpioControl::turnOnImpl(const IOT_PARAM& param)
if (it->cmd == param.cmd)
{
it->references++;
it->closeTime = 0;
// it->closeTime = 0;
references = it->references;
if(it->openTime == 0)
it->openTime = now;
SetCamerastatus(it->cmd, true);
break;
}
}
if (it == m_items.end())
{
ITEM item = {param.cmd, references, 0, 0};
ITEM item = {param.cmd, references, 0, 0, 0};
item.openTime = now;
m_items.push_back(item);
SetCamerastatus(param.cmd, true);
}
}
#ifdef _DEBUG
@ -327,7 +332,10 @@ bool GpioControl::SetCamerastatus(int cmd, bool status)
#endif
#ifdef USING_PLZ
if(cmd == CMD_SET_PTZ_PWR_ENABLE)
{
m_cameraPowerStatus = status;
}
#endif
return true;
}
@ -336,6 +344,28 @@ bool GpioControl::GetCamerastatus()
return m_cameraPowerStatus;
}
bool GpioControl::GetSelftestStatus(time_t wait_time)
{
int cmd;
#ifdef USING_N938
cmd = CMD_SET_PIC1_POWER;
#endif
#ifdef USING_PLZ
cmd = CMD_SET_PTZ_PWR_ENABLE;
#endif
time_t now = time(NULL);
std::vector<ITEM>::iterator it;
for (it = m_items.begin(); it != m_items.end(); ++it)
{
if (it->cmd == cmd && (now - it->openTime >= wait_time))
{
return true;
}
}
return false;
}
void GpioControl::PowerControlThreadProc()
{
time_t ts = 0;
@ -360,7 +390,7 @@ void GpioControl::PowerControlThreadProc()
if (it->references == 0 && it->closeCmds == 0 && it->closeTime == 0)
{
#ifdef _DEBUG
ALOGI("PWR TH cmd=%d ref=%u closeCmds=%u", it->cmd, (uint32_t)it->references, (uint32_t)it->closeCmds);
ALOGI("PWR THREAD cmd=%d ref=%u closeCmds=%u", it->cmd, (uint32_t)it->references, (uint32_t)it->closeCmds);
#endif
continue;
}
@ -388,8 +418,9 @@ void GpioControl::PowerControlThreadProc()
// close it directly
setInt(it->cmd, 0);
it->closeTime = 0;
it->openTime = 0;
#ifdef _DEBUG
ALOGI("PWR TH DO TurnOff cmd=%d", it->cmd);
ALOGI("PWR THREAD DO TurnOff cmd=%d", it->cmd);
#endif
SetCamerastatus(it->cmd, false);
}
@ -404,7 +435,7 @@ void GpioControl::PowerControlThreadProc()
}
}
#ifdef _DEBUG
ALOGI("PWR TH cmd=%d ref=%u closeCmds=%u", it->cmd, (uint32_t)it->references, (uint32_t)it->closeCmds);
ALOGI("PWR THREAD cmd=%d ref=%u closeCmds=%u", it->cmd, (uint32_t)it->references, (uint32_t)it->closeCmds);
#endif
}
m_locker.unlock();

@ -26,16 +26,16 @@
#define CMD_SET_NETWORK_STATE 106
#define CMD_SET_OTG_STATE 107
#define CMD_GET_OTG_STATE 108
#define CMD_GET_CHARGING_VOL_STATE 110
#define CMD_GET_CHARGING_SHUNT_VOLTAGE_STATE 111
//#define CMD_GET_CHARGING_VOL_STATE 110
//#define CMD_GET_CHARGING_SHUNT_VOLTAGE_STATE 111
#define CMD_GET_CHARGING_BUS_VOLTAGE_STATE 112
#define CMD_GET_CHARGING_POWER_STATE 113
#define CMD_GET_CHARGING_CURRENT_STATE 114
#define CMD_GET_BAT_VOL_STATE 115
#define CMD_GET_BAT_SHUNT_VOLTAGE_STATE 116
//#define CMD_GET_CHARGING_POWER_STATE 113
//#define CMD_GET_CHARGING_CURRENT_STATE 114
//#define CMD_GET_BAT_VOL_STATE 115
//#define CMD_GET_BAT_SHUNT_VOLTAGE_STATE 116
#define CMD_GET_BAT_BUS_VOLTAGE_STATE 117
#define CMD_GET_BAT_POWER_STATE 118
#define CMD_GET_BAT_CURRENT_STATE 119
//#define CMD_GET_BAT_POWER_STATE 118
//#define CMD_GET_BAT_CURRENT_STATE 119
#define CMD_SET_485_STATE 121
#define CMD_SET_SPI_MODE 123
#define CMD_SET_SPI_BITS_PER_WORD 124
@ -56,18 +56,13 @@
#define CMD_GET_OTG_STATE 108
#define CMD_SET_SPI_POWER 129
#define CMD_SET_12V_EN_STATE 0 // TO BE ADDED
#define CMD_SET_SYSTEM_RESET 0 // TO BE ADDED
#define CMD_GET_CHARGING_VOL_STATE 0 // TO BE ADDED
#define CMD_GET_CHARGING_SHUNT_VOLTAGE_STATE 0 // TO BE ADDED
#define CMD_GET_CHARGING_BUS_VOLTAGE_STATE 0 // TO BE ADDED
#define CMD_GET_CHARGING_POWER_STATE 0 // TO BE ADDED
#define CMD_GET_CHARGING_CURRENT_STATE 0 // TO BE ADDED
#define CMD_GET_BAT_VOL_STATE 0 // TO BE ADDED
#define CMD_GET_BAT_SHUNT_VOLTAGE_STATE 0 // TO BE ADDED
#define CMD_GET_BAT_BUS_VOLTAGE_STATE 0 // TO BE ADDED
#define CMD_GET_BAT_POWER_STATE 0 // TO BE ADDED
#define CMD_GET_BAT_CURRENT_STATE 0 // TO BE ADDED
#define CMD_SET_SYSTEM_RESET 202
#define CMD_GET_LIGHT_ADC 101
#define CMD_SET_LIGHT_ADC 102
#define CMD_GET_CHARGING_BUS_VOLTAGE_STATE 112
#define CMD_GET_BAT_BUS_VOLTAGE_STATE 117
#define CMD_SET_SPI_MODE 0 // TO BE ADDED
#define CMD_SET_SPI_BITS_PER_WORD 0 // TO BE ADDED
#define CMD_SET_SPI_MAXSPEEDHZ 0 // TO BE ADDED
@ -132,6 +127,9 @@
#define CMD_SET_485_EN_STATE 131
#define CMD_SET_OTG_STATE 107
#define CMD_GET_CHARGING_BUS_VOLTAGE_STATE 112
#define CMD_GET_BAT_BUS_VOLTAGE_STATE 117
#endif // USING_N938
@ -156,6 +154,7 @@ public:
size_t references;
size_t closeCmds;
time_t closeTime;
time_t openTime;
};
private:
@ -181,6 +180,7 @@ public:
static size_t TurnOffImmediately(int cmd);
static bool SetCamerastatus(int cmd, bool status);
static bool GetCamerastatus();
static bool GetSelftestStatus(time_t wait_time);
static void PowerControlThreadProc();
@ -320,12 +320,13 @@ public:
static int getChargingVoltage()
{
#ifndef USING_N938
return getInt(CMD_GET_CHARGING_VOL_STATE);
return getInt(CMD_GET_CHARGING_BUS_VOLTAGE_STATE);
#else
return -1;
#endif
}
#if 0
static int getChargingShuntVoltage()
{
#ifndef USING_N938
@ -334,6 +335,7 @@ public:
return -1;
#endif
}
#endif
static int getChargingBusVoltage() {
#ifndef USING_N938
@ -343,6 +345,7 @@ public:
#endif
}
#if 0
static int getChargingPower() {
#ifndef USING_N938
return getInt(CMD_GET_CHARGING_POWER_STATE);
@ -358,15 +361,13 @@ public:
return -1;
#endif
}
#endif
static int getBatteryVoltage() {
#ifndef USING_N938
return getInt(CMD_GET_BAT_VOL_STATE);
#else
return -1;
#endif
return getInt(CMD_GET_BAT_BUS_VOLTAGE_STATE);
}
#if 0
static int getBatteryShuntVoltage() {
#ifndef USING_N938
return getInt(CMD_GET_BAT_SHUNT_VOLTAGE_STATE);
@ -374,15 +375,13 @@ public:
return -1;
#endif
}
#endif
static int getBatteryBusVoltage() {
#ifndef USING_N938
return getInt(CMD_GET_BAT_BUS_VOLTAGE_STATE);
#else
return -1;
#endif
}
#if 0
static int getBatteryPower() {
#ifndef USING_N938
return getInt(CMD_GET_BAT_POWER_STATE);
@ -398,6 +397,7 @@ public:
return -1;
#endif
}
#endif
static void set485WriteMode() {
#if 0
@ -463,7 +463,7 @@ public:
m_cmds.resize(4, cmd1);
m_cmds[1] = cmd2;
m_cmds[2] = cmd3;
m_cmds[3] = cmd3;
m_cmds[3] = cmd4;
TurnOn();
}
PowerControl(int cmd1, int cmd2, int cmd3, int cmd4, int cmd5, uint32_t closeDelayTime) : m_delayCloseTime(closeDelayTime)
@ -471,8 +471,30 @@ public:
m_cmds.resize(5, cmd1);
m_cmds[1] = cmd2;
m_cmds[2] = cmd3;
m_cmds[3] = cmd3;
m_cmds[4] = cmd4;
m_cmds[3] = cmd4;
m_cmds[4] = cmd5;
TurnOn();
}
PowerControl(int cmd1, int cmd2, int cmd3, int cmd4, int cmd5, int cmd6, uint32_t closeDelayTime) : m_delayCloseTime(closeDelayTime)
{
m_cmds.resize(6, cmd1);
m_cmds[1] = cmd2;
m_cmds[2] = cmd3;
m_cmds[3] = cmd4;
m_cmds[4] = cmd5;
m_cmds[5] = cmd6;
TurnOn();
}
PowerControl(int cmd1, int cmd2, int cmd3, int cmd4, int cmd5, int cmd6, int cmd7, uint32_t closeDelayTime) : m_delayCloseTime(closeDelayTime)
{
m_cmds.resize(7, cmd1);
m_cmds[1] = cmd2;
m_cmds[2] = cmd3;
m_cmds[3] = cmd4;
m_cmds[4] = cmd5;
m_cmds[5] = cmd6;
m_cmds[6] = cmd7;
TurnOn();
}
@ -534,7 +556,7 @@ public:
PowerControl(CMD_SET_OTG_STATE, CMD_SET_NETWORK_POWER_EN, CMD_SET_PIC1_POWER, CMD_SET_485_EN_STATE, closeDelayTime)
#else // USING_N938
#ifdef USING_PLZ
PowerControl(CMD_SET_OTG_STATE, CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime)
PowerControl(CMD_SET_3V3_PWR_EN, CMD_SET_OTG_STATE, CMD_SET_PTZ_PWR_ENABLE, CMD_SET_100M_ENABLE, CMD_SET_100M_SWITCH_PWR_ENABLE, CMD_SET_485_ENABLE, CMD_SET_12V_EN_STATE, closeDelayTime)
#else // USING_PLZ
PowerControl(CMD_SET_OTG_STATE, CMD_SET_12V_EN_STATE, closeDelayTime)
#endif // USING_PLZ

@ -970,6 +970,7 @@ bool CPhoneDevice::QuerySystemProperties(std::map<std::string, std::string>& pro
int val = GpioControl::getLightAdc();
it->second = std::to_string(val);
}
#if 0
else if (it->first == (PROP_CHARGING_CURRENT))
{
it->second = std::to_string(GpioControl::getChargingCurrent());
@ -978,6 +979,7 @@ bool CPhoneDevice::QuerySystemProperties(std::map<std::string, std::string>& pro
{
it->second = std::to_string(GpioControl::getChargingPower());
}
#endif
else if (it->first == (PROP_CHARGING_BUS_VOL) || it->first == (PROP_CHARGING_VOLTAGE))
{
double val = -1;
@ -994,10 +996,12 @@ bool CPhoneDevice::QuerySystemProperties(std::map<std::string, std::string>& pro
break;
}
}
#if 0
else if (it->first == (PROP_BATTERY_POWER))
{
it->second = std::to_string(GpioControl::getBatteryPower());
}
#endif
else if (it->first == (PROP_BATTERY_BUS_VOL) || it->first == (PROP_BATTERY_VOLTAGE))
{
int val = QueryBatteryVoltage(DEFAULT_BATTERY_QUERY_RETRIES); // // BatVol
@ -1487,8 +1491,11 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
// AutoEnv autoEnv(pThis->m_vm);
time_t ts = time(NULL);
uint32_t waitTime = localPhotoInfo.selfTestingTime;
waitTime = (waitTime!= 0) ? (waitTime * 1024) : 10240;
std::this_thread::sleep_for(std::chrono::milliseconds(waitTime));
if(!GpioControl::GetSelftestStatus(waitTime))
{
waitTime = (waitTime != 0) ? (waitTime * 1024) : 10240;
std::this_thread::sleep_for(std::chrono::milliseconds(waitTime));
}
SetStaticIp();
std::this_thread::sleep_for(std::chrono::milliseconds(256));
@ -1526,7 +1533,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
{
// Hai Kang
netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST;
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/ISAPI/Streaming/channels/%u/picture", (uint32_t)localPhotoInfo.channel);
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/ISAPI/Streaming/channels/%u/picture", (uint32_t)localPhotoInfo.cameraId);
}
else if (localPhotoInfo.vendor == 2)
{
@ -1538,7 +1545,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
// Yu Shi
netPhotoInfo.authType = HTTP_AUTH_TYPE_DIGEST;
int streamSid = 0; // should put into config
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.channel, streamSid);
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/LAPI/V1.0/Channels/%u/Media/Video/Streams/%d/Snapshot", (uint32_t)localPhotoInfo.cameraId, streamSid);
}
else if (localPhotoInfo.vendor == 5)
{
@ -1547,7 +1554,7 @@ bool CPhoneDevice::TakePhotoWithNetCamera(IDevice::PHOTO_INFO& localPhotoInfo, c
// http://192.168.1.46/Snapshot/%u/RemoteImageCapture?ImageFormat=2&HorizontalPixel=1920&VerticalPixel=1080
// http://192.168.1.101/Snapshot/1/2/RemoteImageCaptureV2?ImageFormat=jpg
// http://192.168.1.101/Snapshot/1/1/RemoteImageCaptureV2?ImageFormat=jpg
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/1/RemoteImageCaptureV2?ImageFormat=jpg", (uint32_t)localPhotoInfo.channel);
snprintf(netPhotoInfo.url, sizeof(netPhotoInfo.url), "/Snapshot/%u/1/RemoteImageCaptureV2?ImageFormat=jpg", (uint32_t)localPhotoInfo.cameraId);
}
else
{
@ -3421,6 +3428,8 @@ bool CPhoneDevice::PostProcessPhoto(const PHOTO_INFO& photoInfo, const vector<ID
cv::Point lt(0, mat.rows - fs - 20 * ratio);
cv::Point lt2(0, lt.y - 2 * ratio);
cv::Point rb(0 + textSize.width + 2 * ratio, lt2.y + textSize.height + 8 * ratio);
cv::Point rt(0 + textSize.width + 2 * ratio, mat.rows - fs - 20 * ratio);
if (rb.x > (int)width - 1)
{
@ -3467,6 +3476,16 @@ bool CPhoneDevice::PostProcessPhoto(const PHOTO_INFO& photoInfo, const vector<ID
}
else if (it->alignment == OSD_ALIGNMENT_TOP_RIGHT)
{
std::size_t newlinePos = it->text.find('\n');
if (newlinePos != std::string::npos)
{
std::string textBeforeNewline = it->text.substr(0, newlinePos);
std::string textAfterNewline = it->text.substr(newlinePos + 1);
if(textBeforeNewline.length()>=textAfterNewline.length())
textSize = ft2->getTextSize(textBeforeNewline, fontSize, thickness, &baseline);
else
textSize = ft2->getTextSize(textAfterNewline, fontSize, thickness, &baseline);
}
pt.x = width - textSize.width - it->x * ratio;
pt.y= it->y * ratio;
}
@ -3746,10 +3765,12 @@ void CPhoneDevice::CameraCtrl(unsigned short waitTime, unsigned short delayTime,
std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfileStr, baud,
addr]() mutable {
uint64_t wid = pThis->RequestWakelock(0);
XYLOG(XYLOG_SEVERITY_INFO,"CameraCtrl Command= %d, preset = %u", cmdidx, preset);
pThis->OpenPTZSensors(waitTime);
CameraPhotoCmd(time(NULL), channel, cmdidx, 0, preset, serfileStr.c_str(), baud,
addr);
pThis->ClosePTZSensors(delayTime);
XYLOG(XYLOG_SEVERITY_INFO,"CameraCtrl over");
pThis->ReleaseWakelock(wid);
});
ctrlThread.detach();

@ -2969,7 +2969,7 @@ void ShxyProtocolDataProcess(int devno)
int i, j, aipnt, datanum;
SERIAL_DEV_DEF *pPortParam;
SIO_PARAM_SERIAL_DEF *curserial;
char szbuf[64];
char szbuf[128];
pPortParam = &srdt.ms_dev[devno];
curserial = &serialport[devparam[devno].commid];

@ -81,7 +81,7 @@ static void onSessionReady(void* context, ACameraCaptureSession *session)
static void onSessionClosed(void* context, ACameraCaptureSession *session)
{
XYLOG(XYLOG_SEVERITY_INFO, "onSessionClosed %p", session);
XYLOG(XYLOG_SEVERITY_DEBUG, "onSessionClosed %p", session);
}
void onCaptureFailed(void* context, ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure)
@ -164,6 +164,7 @@ NdkCamera::NdkCamera(int32_t width, int32_t height, const NdkCamera::CAMERA_PARA
mHeight = height;
mCaptureTriggered = false;
mFocusTriggered = false;
maxFrameDuration = 0;
afSupported = false;
@ -732,201 +733,6 @@ int NdkCamera::open(const std::string& cameraId) {
CaptureRequest *request = CreateRequest(true);
mCaptureRequests.push_back(request);
#if 0
for (int idx = 0; idx <= burstCaptures; idx++)
{
CaptureRequest *request = new CaptureRequest();
std::memset(request, 0, sizeof(CaptureRequest));
bool isPreviewRequest = (idx == PREVIEW_REQUEST_IDX);
request->pThis = this;
request->imageReader = isPreviewRequest ? mPreviewImageReader : mImageReader;
request->imageWindow = isPreviewRequest ? mPreviewImageWindow : mImageWindow;
request->imageTarget = isPreviewRequest ? mPreviewOutputTarget : mOutputTarget;
request->templateId = isPreviewRequest ? TEMPLATE_PREVIEW : (ACameraDevice_request_template)m_params.requestTemplate;
// capture request
status = ACameraDevice_createCaptureRequest(camera_device, request->templateId, &request->request);
ACaptureRequest_setUserContext(request->request, request);
// uint8_t ctrlMode = sceneModeSupported ? ACAMERA_CONTROL_MODE_USE_SCENE_MODE : ACAMERA_CONTROL_MODE_AUTO;
uint8_t ctrlMode = ACAMERA_CONTROL_MODE_AUTO;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_MODE, 1, &ctrlMode);
uint8_t captureIntent = isPreviewRequest ? ACAMERA_CONTROL_CAPTURE_INTENT_PREVIEW : GetCaptureIntent(ACameraDevice_request_template)m_params.requestTemplate);
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_CAPTURE_INTENT, 1, &captureIntent);
uint8_t flashMode = ACAMERA_FLASH_MODE_OFF;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_FLASH_MODE, 1, &flashMode);
uint8_t nrMode = ACAMERA_NOISE_REDUCTION_MODE_HIGH_QUALITY;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_NOISE_REDUCTION_MODE, 1, &nrMode);
uint8_t edgeMode = ACAMERA_EDGE_MODE_FAST;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_EDGE_MODE, 1, &edgeMode);
if (afSupported && m_params.autoFocus)
{
if (!m_params.zoom)
{
if (maxRegions[2] > 0)
{
int32_t centerX = activeArraySize[0] >> 1;
int32_t centerY = activeArraySize[1] >> 1;
int32_t sizeX = activeArraySize[0] >> 4;
int32_t sizeY = activeArraySize[1] >> 4;
int32_t afRegions[] = { centerX - sizeX, centerY - sizeY, centerX + sizeX, centerY + sizeY, 1000 };
// status = ACaptureRequest_setEntry_i32(request->request, ACAMERA_CONTROL_AF_REGIONS, 5, afRegions);
if (status == ACAMERA_OK)
{
#ifdef _DEBUG
int aa = 0;
#endif
}
}
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_VIDEO;
uint8_t afMode = ACAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE;
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_MODE, 1, &afMode);
// uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_CANCEL;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
trig = ACAMERA_CONTROL_AF_TRIGGER_START;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
}
}
else
{
uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_START;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
}
if (m_params.sceneMode != 0)
{
uint8_t sceneMode = m_params.sceneMode;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_SCENE_MODE, 1, &sceneMode);
}
if (m_params.autoExposure)
{
uint8_t aeMode = ACAMERA_CONTROL_AE_MODE_ON;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_MODE, 1, &aeMode);
// ACaptureRequest_setEntry_i32(capture_request, ACAMERA_SENSOR_SENSITIVITY, 1, &sensitivity_);
if ((aeCompensationRange.min_ != 0 || aeCompensationRange.max_ != 0) && m_params.compensation != 0)
{
int32_t compensation = m_params.compensation;
if (compensation < aeCompensationRange.min_)
{
compensation = aeCompensationRange.min_;
}
if (compensation > aeCompensationRange.max_)
{
compensation = aeCompensationRange.max_;
}
// int32_t aeCompensation = aeCompensationRange.max_;
status = ACaptureRequest_setEntry_i32(request->request, ACAMERA_CONTROL_AE_EXPOSURE_COMPENSATION, 1, &compensation);
if (status != ACAMERA_OK)
{
int aa = 0;
}
}
if (maxRegions[0] > 0)
{
int32_t aeRegions[] = { 0, 0, activeArraySize[0] - 1, activeArraySize[1] - 1, 1000 };
// status = ACaptureRequest_setEntry_i32(capture_request, ACAMERA_CONTROL_AE_REGIONS, 5, aeRegions);
if (status == ACAMERA_OK)
{
#ifdef _DEBUG
int aa = 0;
#endif
}
}
if (isPreviewRequest)
{
if (aeLockAvailable && (m_params.wait3ALocked & WAIT_AE_LOCKED))
{
uint8_t aeLock = ACAMERA_CONTROL_AE_LOCK_ON;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLock);
XYLOG(XYLOG_SEVERITY_DEBUG, "Try to Lock AE");
mResult.aeLockSetted = 1;
}
else
{
uint8_t aeLock = ACAMERA_CONTROL_AE_LOCK_OFF;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLock);
XYLOG(XYLOG_SEVERITY_DEBUG, "AE_Lock Not Supported");
}
uint8_t aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger);
XYLOG(XYLOG_SEVERITY_DEBUG, "Trigger PRECAPTURE status=%d", (int)status);
m_precaptureStartTime = m_startTime;
// ACaptureRequest_setEntry_u8(capture_request, ACAMERA_CONTROL_AE_LOCK, 1, &aeLockOff);
}
}
else
{
uint8_t aeMode = ACAMERA_CONTROL_AE_MODE_OFF;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_MODE, 1, &aeMode);
if (m_params.sensitivity > 0)
{
int32_t sensitivity = m_params.sensitivity;
status = ACaptureRequest_setEntry_i32(request->request, ACAMERA_SENSOR_SENSITIVITY, 1, &sensitivity);
}
if (m_params.exposureTime > 0)
{
int64_t exposureTime = m_params.exposureTime;
status = ACaptureRequest_setEntry_i64(request->request, ACAMERA_SENSOR_EXPOSURE_TIME, 1, &exposureTime);
}
int64_t frameDuration = maxFrameDuration / 2;
// status = ACaptureRequest_setEntry_i64(request->request, ACAMERA_SENSOR_FRAME_DURATION, 1, &frameDuration);
}
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AWB_MODE, 1, &awbMode);
if ((awbMode == ACAMERA_CONTROL_AWB_MODE_AUTO) && awbLockAvailable && (m_params.wait3ALocked & WAIT_AWB_LOCKED))
{
uint8_t awbLock = ACAMERA_CONTROL_AWB_LOCK_ON;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AWB_LOCK, 1, &awbLock);
mResult.awbLockSetted = 1;
XYLOG(XYLOG_SEVERITY_DEBUG, "Try to Lock AWB AWBS=%u", (unsigned int)mResult.awbState);
}
#if 0
uint8_t antiBandingMode = ACAMERA_CONTROL_AE_ANTIBANDING_MODE_60HZ;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AE_ANTIBANDING_MODE, 1, &antiBandingMode);
uint8_t flicker = ACAMERA_STATISTICS_SCENE_FLICKER_60HZ;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_STATISTICS_SCENE_FLICKER, 1, &flicker);
#endif
if (m_params.zoom)
{
float zoomRatio = m_params.zoomRatio;
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_float(request->request, ACAMERA_CONTROL_ZOOM_RATIO, 1, &zoomRatio);
if (status != ACAMERA_OK)
{
}
}
status = ACaptureRequest_addTarget(request->request, request->imageTarget);
status = ACaptureSessionOutput_create(request->imageWindow, &request->sessionOutput);
status = ACaptureSessionOutputContainer_add(capture_session_output_container, request->sessionOutput);
}
#endif
// capture session
ACameraCaptureSession_stateCallbacks camera_capture_session_state_callbacks;
@ -1023,14 +829,18 @@ NdkCamera::CaptureRequest* NdkCamera::CreateRequest(bool isPreviewRequest)
// uint8_t afMode = ACAMERA_CONTROL_AF_MODE_AUTO;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_MODE, 1, &afMode);
#if 0
// For ACAMERA_CONTROL_AF_MODE_CONTINUOUS_PICTURE, we SHOULD NOT call ACAMERA_CONTROL_AF_TRIGGER_START
// Refer to: https://source.android.google.cn/docs/core/camera/camera3_3Amodes?hl=zh-cn
if (isPreviewRequest)
{
uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_CANCEL;
// uint8_t trig = ACAMERA_CONTROL_AF_TRIGGER_CANCEL;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
trig = ACAMERA_CONTROL_AF_TRIGGER_START;
status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
// trig = ACAMERA_CONTROL_AF_TRIGGER_START;
// status = ACaptureRequest_setEntry_u8(request->request, ACAMERA_CONTROL_AF_TRIGGER, 1, &trig);
}
#endif
}
}
else
@ -1163,6 +973,11 @@ NdkCamera::CaptureRequest* NdkCamera::CreateRequest(bool isPreviewRequest)
return request;
}
void NdkCamera::DestroyRequest(CaptureRequest* request)
{
}
void NdkCamera::close()
{
XYLOG(XYLOG_SEVERITY_DEBUG, "CameraStatus::try close %s", mCameraId.c_str());
@ -1724,8 +1539,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
status = ACameraMetadata_getConstEntry(result, ACAMERA_CONTROL_AF_STATE, &val);
afState = (status == ACAMERA_OK) ? *(val.data.u8) : ACAMERA_CONTROL_AF_STATE_INACTIVE;
// XYLOG(XYLOG_SEVERITY_DEBUG, "Preview State AFS=%u AES=%u AWBS=%u Time=%u",
// (unsigned int)afState, (unsigned int)aeState, (unsigned int)awbState, (unsigned int)(ts - m_startTime));
// XYLOG(XYLOG_SEVERITY_DEBUG, "Preview State AFS=%u AES=%u AWBS=%u Time=%u", (unsigned int)afState, (unsigned int)aeState, (unsigned int)awbState, (unsigned int)(ts - m_startTime));
// Check if timeout
if (ts - m_startTime < m_params.focusTimeout)
@ -1749,8 +1563,8 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
*/
if (afState != ACAMERA_CONTROL_AF_STATE_PASSIVE_FOCUSED &&
afState != ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED &&
afState != ACAMERA_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED)
afState != ACAMERA_CONTROL_AF_STATE_FOCUSED_LOCKED/* &&
afState != ACAMERA_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED*/)
// if (afState != ACAMERA_CONTROL_AF_STATE_INACTIVE)
{
//XYLOG(XYLOG_SEVERITY_DEBUG, "AF Enabled And Focused");
@ -1767,7 +1581,7 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
aePrecatureTrigger = ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER_START;
status = ACaptureRequest_setEntry_u8(request, ACAMERA_CONTROL_AE_PRECAPTURE_TRIGGER, 1, &aePrecatureTrigger);
//XYLOG(XYLOG_SEVERITY_DEBUG, "Trigger PRECAPTURE status=%d AES=%u", (int)status, (unsigned int)mResult.aeState);
//XYLOG(XYLOG_SEVERITY_DEBUG, "Trigger PRECAPTURE status=%d AES=%u", (int)status, (unsigned int)aeState);
AASSERT(status == ACAMERA_OK, "Failed to call PRECAPTURE_TRIGGER, status=%d", status);
readyForCapture = false;
@ -1894,11 +1708,10 @@ void NdkCamera::onCaptureCompleted(ACameraCaptureSession* session, ACaptureReque
status = ACameraMetadata_getConstEntry(result, ACAMERA_SENSOR_SENSITIVITY, &val);
int sensitivity = (status == ACAMERA_OK) ? *(val.data.i32) : 0;
uint8_t aeModeOff = ACAMERA_CONTROL_AE_MODE_OFF;
XYLOG(XYLOG_SEVERITY_INFO, "HDR: Base Exp=%lld ISO=%d", exTime / 1000, sensitivity);
if (exTime != -1 && sensitivity > 0)
{
uint8_t aeModeOff = ACAMERA_CONTROL_AE_MODE_OFF;
for (int idx = 0; idx < burstCaptures; idx++)
{
ACaptureRequest_setEntry_u8(requests[idx], ACAMERA_CONTROL_AE_MODE, 1, &aeModeOff);

@ -161,6 +161,7 @@ public:
void CreateSession(ANativeWindow* previewWindow);
CaptureRequest* CreateRequest(bool isPreviewRequest);
void DestroyRequest(CaptureRequest* request);
void DestroySession();
@ -234,6 +235,7 @@ protected:
int32_t maxRegions[3];
bool mCaptureTriggered;
bool mFocusTriggered;
CAPTURE_RESULT mResult;
unsigned long long m_startTime;

@ -50,9 +50,12 @@ public:
Halide::Runtime::Buffer<uint16_t> imgs = burst.ToBuffer();
if (imgs.dimensions() != 3 || imgs.extent(2) < 2) {
return output_img;
#if 0
throw std::invalid_argument(
"The input of HDRPlus must be a 3-dimensional buffer with at least "
"two channels.");
#endif
}
const int cfa_pattern = static_cast<int>(burst.GetCfaPattern());

@ -136,7 +136,9 @@ CfaPattern RawImage::GetCfaPattern() const {
} else if (cfa_pattern == std::string{1, 2, 0, 1}) {
return CfaPattern::CFA_GBRG;
}
#if 0
throw std::invalid_argument("Unsupported CFA pattern: " + cfa_pattern);
#endif
return CfaPattern::CFA_UNKNOWN;
}

@ -90,7 +90,7 @@ int DoGetRequest(const char* url, int authType, const char* userName, const char
char * log = new char[data.size() + 1];
log[data.size()] = 0;
memcpy(log, &data[0], data.size());
printf(log);
printf("%s", log);
delete[] log;
#endif
}

@ -426,7 +426,6 @@ public class MainActivity extends AppCompatActivity {
public void onClick(View view) {
MicroPhotoService.setOtgState(true);
// SysApi.setOtgState(true);
MicroPhotoService.setCam3V3Enable(true);
Runnable runnable = new Runnable() {
@ -439,7 +438,7 @@ public class MainActivity extends AppCompatActivity {
MicroPhotoService.setCam3V3Enable(false);
MicroPhotoService.setOtgState(false);
binding.logs.append(cameraInfo + "\r\n");
MicroPhotoService.infoLog(cameraInfo);
Toast.makeText(view.getContext(), cameraInfo, Toast.LENGTH_LONG).show();
}
};

@ -78,6 +78,7 @@ import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;
import java.lang.reflect.Method;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.URI;
import java.nio.channels.FileLock;
@ -812,8 +813,8 @@ public class MicroPhotoService extends Service {
long ts = System.currentTimeMillis() / 1000;
// long val = (ts << 24);
long val = 0;
val |= ((long)channel << 16);
val |= ((long)preset << 8);
val |= ((long)channel << 12);
val |= ((long)preset << 4);
val |= photoOrVideo ? 0L : 1L;
schedules.add(Long.valueOf(val));
@ -1519,9 +1520,12 @@ public class MicroPhotoService extends Service {
if (lp != null) {
List<LinkAddress> addresses = lp.getLinkAddresses();
if (addresses != null && addresses.size() > 0) {
InetAddress inetAddress = addresses.get(0).getAddress();
if (inetAddress != null) {
ip = inetAddress.getHostAddress();
for (LinkAddress linkAddress : addresses) {
InetAddress inetAddress = linkAddress.getAddress();
if (inetAddress != null && inetAddress instanceof Inet4Address) {
ip = inetAddress.getHostAddress();
break;
}
}
}
}

@ -390,9 +390,6 @@ public class MpMasterService extends Service {
public boolean shouldSyncTime() { return mSyncTime; }
public void startMpApp() {
if (true) {
return;
}
try {
final Context context = getApplicationContext();
long ts = System.currentTimeMillis();
@ -422,7 +419,7 @@ public class MpMasterService extends Service {
long tempduration = mMpHeartbeatDuration;
if(mMpHeartbeatDuration < 600000)
tempduration = 300000;
tempduration = 290000;
if (mPreviousMpHbTime <= ts && ts - mPreviousMpHbTime > tempduration * 2) {
// MpApp is not running
if (ts - mTimeToStartMpApp >= 1800000) {

Loading…
Cancel
Save