Merge pull request #11197 from akallabeth/nightly

Nightly deb sdl3 optional
This commit is contained in:
akallabeth
2025-02-17 07:11:57 +01:00
committed by GitHub
3 changed files with 52 additions and 20 deletions

View File

@@ -356,7 +356,9 @@ static size_t cam_v4l_stream_alloc_buffers(CamV4lStream* stream)
if (ioctl(stream->fd, VIDIOC_REQBUFS, &rbuffer) < 0 || rbuffer.count == 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_REQBUFS, errno %d, count %d", errno, rbuffer.count);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_REQBUFS, errno %s [%d], count %d",
winpr_strerror(errno, buffer, sizeof(buffer)), errno, rbuffer.count);
return 0;
}
@@ -372,35 +374,41 @@ static size_t cam_v4l_stream_alloc_buffers(CamV4lStream* stream)
for (unsigned int i = 0; i < rbuffer.count; i++)
{
struct v4l2_buffer buffer = { 0 };
buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buffer.memory = V4L2_MEMORY_MMAP;
buffer.index = i;
struct v4l2_buffer vbuffer = { 0 };
vbuffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
vbuffer.memory = V4L2_MEMORY_MMAP;
vbuffer.index = i;
if (ioctl(stream->fd, VIDIOC_QUERYBUF, &buffer) < 0)
if (ioctl(stream->fd, VIDIOC_QUERYBUF, &vbuffer) < 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_QUERYBUF, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_QUERYBUF, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
cam_v4l_stream_free_buffers(stream);
return 0;
}
stream->buffers[i].start = mmap(NULL, buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED,
stream->fd, buffer.m.offset);
stream->buffers[i].start = mmap(NULL, vbuffer.length, PROT_READ | PROT_WRITE, MAP_SHARED,
stream->fd, vbuffer.m.offset);
if (MAP_FAILED == stream->buffers[i].start)
{
WLog_ERR(TAG, "Failure in mmap, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in mmap, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
cam_v4l_stream_free_buffers(stream);
return 0;
}
stream->buffers[i].length = buffer.length;
stream->buffers[i].length = vbuffer.length;
WLog_DBG(TAG, "Buffer %d mapped, size: %d", i, buffer.length);
WLog_DBG(TAG, "Buffer %d mapped, size: %d", i, vbuffer.length);
if (ioctl(stream->fd, VIDIOC_QBUF, &buffer) < 0)
if (ioctl(stream->fd, VIDIOC_QBUF, &vbuffer) < 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_QBUF, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_QBUF, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
cam_v4l_stream_free_buffers(stream);
return 0;
}
@@ -437,7 +445,9 @@ static UINT cam_v4l_stream_capture_thread(void* param)
}
else if (retVal < 0)
{
WLog_DBG(TAG, "Failure in poll, errno %d", errno);
char buffer[64] = { 0 };
WLog_DBG(TAG, "Failure in poll, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
Sleep(CAM_V4L2_CAPTURE_THREAD_SLEEP_MS); /* trying to recover */
continue;
}
@@ -464,7 +474,9 @@ static UINT cam_v4l_stream_capture_thread(void* param)
/* enqueue buffer back */
if (ioctl(fd, VIDIOC_QBUF, &buf) == -1)
{
WLog_ERR(TAG, "Failure in VIDIOC_QBUF, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_QBUF, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
}
}
}
@@ -537,7 +549,9 @@ UINT cam_v4l_stream_stop(CamV4lStream* stream)
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl(stream->fd, VIDIOC_STREAMOFF, &type) < 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_STREAMOFF, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_STREAMOFF, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
}
cam_v4l_stream_free_buffers(stream);
@@ -611,7 +625,9 @@ static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamInd
/* set format and frame size */
if (ioctl(stream->fd, VIDIOC_S_FMT, &video_fmt) < 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_S_FMT, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_S_FMT, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
cam_v4l_stream_close_device(stream);
return CAM_ERROR_CODE_InvalidMediaType;
}
@@ -635,7 +651,9 @@ static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamInd
if (ioctl(stream->fd, VIDIOC_S_PARM, &sp2) < 0)
{
WLog_INFO(TAG, "Failed to set the framerate, errno %d", errno);
char buffer[64] = { 0 };
WLog_INFO(TAG, "Failed to set the framerate, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
}
}
@@ -666,7 +684,9 @@ static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamInd
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (ioctl(stream->fd, VIDIOC_STREAMON, &type) < 0)
{
WLog_ERR(TAG, "Failure in VIDIOC_STREAMON, errno %d", errno);
char buffer[64] = { 0 };
WLog_ERR(TAG, "Failure in VIDIOC_STREAMON, errno %s [%d]",
winpr_strerror(errno, buffer, sizeof(buffer)), errno);
cam_v4l_stream_stop(stream);
return CAM_ERROR_CODE_UnexpectedError;
}

View File

@@ -45,6 +45,10 @@ Build-Depends:
libpam0g-dev,
uuid-dev,
libjson-c-dev | libcjson-dev,
libsdl2-2.0-0,
libsdl2-dev,
libsdl2-ttf-dev,
libsdl2-image-dev,
libsdl3-0 | libsdl2-2.0-0,
libsdl3-dev | libsdl2-dev,
libsdl3-ttf-dev | libsdl2-ttf-dev,

View File

@@ -4,10 +4,16 @@ NULL =
DEB_HOST_ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_FDK_SUPPORT=$(shell dpkg-query -s libfdk-aac-dev 2>&1 >/dev/null; echo $$?)
DEB_SDL3_SUPPORT=$(shell dpkg-query -s libsdl3-dev libsdl3-image-dev libsdl3-ttf-dev 2>&1 >/dev/null; echo $$?)
ifeq ($(DEB_FDK_SUPPORT),0)
AAC_SUPPORT = -DWITH_FDK_AAC=ON
endif
ifeq ($(DEB_SDL3_SUPPORT),0)
SDL3_SUPPORT = -DWITH_CLIENT_SDL3=ON
else
SDL3_SUPPORT = -DWITH_CLIENT_SDL3=OFF
endif
SANITIZE_ADDRESS = -DWITH_SANITIZE_ADDRESS=ON
DEB_CMAKE_EXTRA_FLAGS := -GNinja \
@@ -38,6 +44,7 @@ DEB_CMAKE_EXTRA_FLAGS := -GNinja \
-DWITH_TIMEZONE_FROM_FILE=ON \
-DSDL_USE_COMPILED_RESOURCES=OFF \
-DWITH_SDL_IMAGE_DIALOGS=ON \
-DWITH_CLIENT_SDL_VERSIONED=ON \
-DRDTK_FORCE_STATIC_BUILD=ON \
-DUWAC_FORCE_STATIC_BUILD=ON \
-DWITH_BINARY_VERSIONING=ON \
@@ -53,6 +60,7 @@ DEB_CMAKE_EXTRA_FLAGS := -GNinja \
-DSAMPLE_USE_VENDOR_PRODUCT_CONFIG_DIR=ON \
-DSDL_USE_VENDOR_PRODUCT_CONFIG_DIR=ON \
$(AAC_SUPPORT) \
$(SDL3_SUPPORT) \
$(SANITIZE_ADDRESS) \
$(NULL)