mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
[channels,rdpecam] fix integer types and warnings
This commit is contained in:
@@ -18,12 +18,14 @@
|
||||
define_channel("rdpecam")
|
||||
|
||||
if(WITH_SERVER_CHANNELS)
|
||||
include_directories(common)
|
||||
add_channel_server(${MODULE_PREFIX} ${CHANNEL_NAME})
|
||||
endif()
|
||||
|
||||
if(WITH_CLIENT_CHANNELS)
|
||||
option(RDPECAM_CLIENT_CHANNEL_STUB "Only build [MS-RDPECAM] channel stub" OFF)
|
||||
if(NOT RDPECAM_CLIENT_CHANNEL_STUB)
|
||||
include_directories(common)
|
||||
add_channel_client(${MODULE_PREFIX} ${CHANNEL_NAME})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -155,7 +155,7 @@ typedef UINT (*ICamHalEnumCallback)(CameraPlugin* ecam, GENERIC_CHANNEL_CALLBACK
|
||||
const char* deviceId, const char* deviceName);
|
||||
|
||||
/* may run in context of different thread */
|
||||
typedef UINT (*ICamHalSampleCapturedCallback)(CameraDevice* dev, int streamIndex,
|
||||
typedef UINT (*ICamHalSampleCapturedCallback)(CameraDevice* dev, size_t streamIndex,
|
||||
const BYTE* sample, size_t size);
|
||||
|
||||
/** @brief interface to implement for the camera HAL*/
|
||||
@@ -181,7 +181,7 @@ struct s_ICamHal
|
||||
* @return if the operation was successful
|
||||
* @since 3.18.0
|
||||
*/
|
||||
BOOL (*Activate)(ICamHal* ihal, const char* deviceId, UINT32* errorCode);
|
||||
BOOL (*Activate)(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode);
|
||||
|
||||
/**
|
||||
* callback to deactivate a given camera device
|
||||
@@ -191,7 +191,7 @@ struct s_ICamHal
|
||||
* @return if the operation was successful
|
||||
* @since 3.18.0
|
||||
*/
|
||||
BOOL (*Deactivate)(ICamHal* ihal, const char* deviceId, UINT32* errorCode);
|
||||
BOOL (*Deactivate)(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode);
|
||||
|
||||
/**
|
||||
* callback that returns the list of compatible media types given a set of supported formats
|
||||
@@ -205,7 +205,7 @@ struct s_ICamHal
|
||||
* @return number of matched supported formats
|
||||
*/
|
||||
INT16(*GetMediaTypeDescriptions)
|
||||
(ICamHal* ihal, const char* deviceId, int streamIndex,
|
||||
(ICamHal* ihal, const char* deviceId, size_t streamIndex,
|
||||
const CAM_MEDIA_FORMAT_INFO* supportedFormats, size_t nSupportedFormats,
|
||||
CAM_MEDIA_TYPE_DESCRIPTION* mediaTypes, size_t* nMediaTypes);
|
||||
|
||||
@@ -216,27 +216,27 @@ struct s_ICamHal
|
||||
* @param streamIndex stream index number
|
||||
* @param mediaType
|
||||
* @param callback
|
||||
* @return 0 on success, a CAM_Error otherwise
|
||||
* @return \b CAM_ERROR_CODE_None on success, a CAM_Error otherwise
|
||||
*/
|
||||
UINT(*StartStream)
|
||||
(ICamHal* ihal, CameraDevice* dev, int streamIndex, const CAM_MEDIA_TYPE_DESCRIPTION* mediaType,
|
||||
ICamHalSampleCapturedCallback callback);
|
||||
CAM_ERROR_CODE(*StartStream)
|
||||
(ICamHal* ihal, CameraDevice* dev, size_t streamIndex,
|
||||
const CAM_MEDIA_TYPE_DESCRIPTION* mediaType, ICamHalSampleCapturedCallback callback);
|
||||
|
||||
/**
|
||||
* callback to stop a stream
|
||||
* @param ihal the hal interface
|
||||
* @param deviceId the name of the device
|
||||
* @param streamIndex stream index number
|
||||
* @return 0 on success, a CAM_Error otherwise
|
||||
* @return \b CAM_ERROR_CODE_None on success, a CAM_Error otherwise
|
||||
*/
|
||||
UINT (*StopStream)(ICamHal* ihal, const char* deviceId, int streamIndex);
|
||||
CAM_ERROR_CODE (*StopStream)(ICamHal* ihal, const char* deviceId, size_t streamIndex);
|
||||
|
||||
/**
|
||||
* callback to free the ICamHal
|
||||
* @param hal the hal interface
|
||||
* @return 0 on success, a CAM_Error otherwise
|
||||
* @return \b CAM_ERROR_CODE_None on success, a CAM_Error otherwise
|
||||
*/
|
||||
UINT (*Free)(ICamHal* ihal);
|
||||
CAM_ERROR_CODE (*Free)(ICamHal* ihal);
|
||||
};
|
||||
|
||||
typedef UINT (*PREGISTERCAMERAHAL)(IWTSPlugin* plugin, ICamHal* hal);
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <winpr/interlocked.h>
|
||||
|
||||
#include "camera.h"
|
||||
#include "rdpecam-utils.h"
|
||||
|
||||
#define TAG CHANNELS_TAG("rdpecam-device.client")
|
||||
|
||||
@@ -64,14 +65,22 @@ static BOOL ecam_dev_read_media_type(wStream* s, CAM_MEDIA_TYPE_DESCRIPTION* med
|
||||
{
|
||||
WINPR_ASSERT(mediaType);
|
||||
|
||||
Stream_Read_UINT8(s, mediaType->Format);
|
||||
const uint8_t format = Stream_Get_UINT8(s);
|
||||
if (!rdpecam_valid_CamMediaFormat(format))
|
||||
return FALSE;
|
||||
|
||||
mediaType->Format = WINPR_ASSERTING_INT_CAST(CAM_MEDIA_FORMAT, format);
|
||||
Stream_Read_UINT32(s, mediaType->Width);
|
||||
Stream_Read_UINT32(s, mediaType->Height);
|
||||
Stream_Read_UINT32(s, mediaType->FrameRateNumerator);
|
||||
Stream_Read_UINT32(s, mediaType->FrameRateDenominator);
|
||||
Stream_Read_UINT32(s, mediaType->PixelAspectRatioNumerator);
|
||||
Stream_Read_UINT32(s, mediaType->PixelAspectRatioDenominator);
|
||||
Stream_Read_UINT8(s, mediaType->Flags);
|
||||
|
||||
const uint8_t flags = Stream_Get_UINT8(s);
|
||||
if (!rdpecam_valid_MediaTypeDescriptionFlags(flags))
|
||||
return FALSE;
|
||||
mediaType->Flags = WINPR_ASSERTING_INT_CAST(CAM_MEDIA_TYPE_DESCRIPTION_FLAGS, flags);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -163,12 +172,12 @@ static UINT ecam_dev_send_pending(CameraDevice* dev, size_t streamIndex, CameraD
|
||||
return ecam_dev_send_sample_response(dev, streamIndex, encodedSample, encodedSize);
|
||||
}
|
||||
|
||||
static UINT ecam_dev_sample_captured_callback(CameraDevice* dev, int streamIndex,
|
||||
static UINT ecam_dev_sample_captured_callback(CameraDevice* dev, size_t streamIndex,
|
||||
const BYTE* sample, size_t size)
|
||||
{
|
||||
WINPR_ASSERT(dev);
|
||||
|
||||
if ((streamIndex >= ECAM_DEVICE_MAX_STREAMS) || (streamIndex < 0))
|
||||
if (streamIndex >= ECAM_DEVICE_MAX_STREAMS)
|
||||
return ERROR_INVALID_INDEX;
|
||||
|
||||
CameraDeviceStream* stream = &dev->streams[streamIndex];
|
||||
@@ -228,7 +237,7 @@ static UINT ecam_dev_sample_captured_callback(CameraDevice* dev, int streamIndex
|
||||
Stream_SealLength(stream->pendingSample);
|
||||
stream->haveSample = TRUE;
|
||||
|
||||
ret = ecam_dev_send_pending(dev, WINPR_ASSERTING_INT_CAST(size_t, streamIndex), stream);
|
||||
ret = ecam_dev_send_pending(dev, streamIndex, stream);
|
||||
|
||||
out:
|
||||
LeaveCriticalSection(&stream->lock);
|
||||
@@ -367,8 +376,8 @@ static UINT ecam_dev_process_start_streams_request(CameraDevice* dev,
|
||||
return ERROR_INVALID_DATA;
|
||||
}
|
||||
|
||||
UINT error = dev->ihal->StartStream(dev->ihal, dev, streamIndex, &mediaType,
|
||||
ecam_dev_sample_captured_callback);
|
||||
const CAM_ERROR_CODE error = dev->ihal->StartStream(dev->ihal, dev, streamIndex, &mediaType,
|
||||
ecam_dev_sample_captured_callback);
|
||||
if (error)
|
||||
{
|
||||
WLog_ERR(TAG, "StartStream failure");
|
||||
@@ -656,7 +665,7 @@ static UINT ecam_dev_process_activate_device_request(CameraDevice* dev,
|
||||
WINPR_ATTR_UNUSED wStream* s)
|
||||
{
|
||||
WINPR_ASSERT(dev);
|
||||
UINT32 errorCode = 0;
|
||||
CAM_ERROR_CODE errorCode = CAM_ERROR_CODE_None;
|
||||
|
||||
if (dev->ihal->Activate(dev->ihal, dev->deviceId, &errorCode))
|
||||
return ecam_channel_send_generic_msg(dev->ecam, hchannel, CAM_MSG_ID_SuccessResponse);
|
||||
@@ -679,7 +688,7 @@ static UINT ecam_dev_process_deactivate_device_request(CameraDevice* dev,
|
||||
for (size_t i = 0; i < ECAM_DEVICE_MAX_STREAMS; i++)
|
||||
ecam_dev_stop_stream(dev, i);
|
||||
|
||||
UINT32 errorCode = 0;
|
||||
CAM_ERROR_CODE errorCode = CAM_ERROR_CODE_None;
|
||||
if (dev->ihal->Deactivate(dev->ihal, dev->deviceId, &errorCode))
|
||||
return ecam_channel_send_generic_msg(dev->ecam, hchannel, CAM_MSG_ID_SuccessResponse);
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ typedef struct
|
||||
|
||||
} CamV4lHal;
|
||||
|
||||
static CamV4lStream* cam_v4l_stream_create(const char* deviceId, int streamIndex);
|
||||
static CamV4lStream* cam_v4l_stream_create(const char* deviceId, size_t streamIndex);
|
||||
static void cam_v4l_stream_free(void* obj);
|
||||
static void cam_v4l_stream_close_device(CamV4lStream* stream);
|
||||
static UINT cam_v4l_stream_stop(CamV4lStream* stream);
|
||||
@@ -154,21 +154,21 @@ static int cam_v4l_open_device(const char* deviceId, int flags)
|
||||
return fd;
|
||||
}
|
||||
|
||||
static BOOL cam_v4l_activate(ICamHal* ihal, const char* deviceId, UINT32* errorCode)
|
||||
static BOOL cam_v4l_activate(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode)
|
||||
{
|
||||
WINPR_UNUSED(ihal);
|
||||
WINPR_UNUSED(deviceId);
|
||||
|
||||
*errorCode = 0;
|
||||
*errorCode = CAM_ERROR_CODE_None;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL cam_v4l_deactivate(ICamHal* ihal, const char* deviceId, UINT32* errorCode)
|
||||
static BOOL cam_v4l_deactivate(ICamHal* ihal, const char* deviceId, CAM_ERROR_CODE* errorCode)
|
||||
{
|
||||
WINPR_UNUSED(ihal);
|
||||
WINPR_UNUSED(deviceId);
|
||||
|
||||
*errorCode = 0;
|
||||
*errorCode = CAM_ERROR_CODE_None;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ static BOOL cam_v4l_deactivate(ICamHal* ihal, const char* deviceId, UINT32* erro
|
||||
* in
|
||||
*/
|
||||
static INT16 cam_v4l_get_media_type_descriptions(ICamHal* ihal, const char* deviceId,
|
||||
int streamIndex,
|
||||
size_t streamIndex,
|
||||
const CAM_MEDIA_FORMAT_INFO* supportedFormats,
|
||||
size_t nSupportedFormats,
|
||||
CAM_MEDIA_TYPE_DESCRIPTION* mediaTypes,
|
||||
@@ -520,7 +520,8 @@ void cam_v4l_stream_close_device(CamV4lStream* stream)
|
||||
*
|
||||
* @return Null on failure, otherwise pointer to new CamV4lStream
|
||||
*/
|
||||
static CamV4lStream* cam_v4l_stream_create(const char* deviceId, int streamIndex)
|
||||
WINPR_ATTR_MALLOC(cam_v4l_stream_free, 1)
|
||||
CamV4lStream* cam_v4l_stream_create(const char* deviceId, size_t streamIndex)
|
||||
{
|
||||
CamV4lStream* stream = calloc(1, sizeof(CamV4lStream));
|
||||
|
||||
@@ -548,10 +549,10 @@ static CamV4lStream* cam_v4l_stream_create(const char* deviceId, int streamIndex
|
||||
*
|
||||
* @return 0 on success, otherwise a Win32 error code
|
||||
*/
|
||||
UINT cam_v4l_stream_stop(CamV4lStream* stream)
|
||||
CAM_ERROR_CODE cam_v4l_stream_stop(CamV4lStream* stream)
|
||||
{
|
||||
if (!stream || !stream->streaming)
|
||||
return CHANNEL_RC_OK;
|
||||
return CAM_ERROR_CODE_None;
|
||||
|
||||
stream->streaming = FALSE; /* this will terminate capture thread */
|
||||
|
||||
@@ -578,33 +579,29 @@ UINT cam_v4l_stream_stop(CamV4lStream* stream)
|
||||
|
||||
LeaveCriticalSection(&stream->lock);
|
||||
|
||||
return CHANNEL_RC_OK;
|
||||
return CAM_ERROR_CODE_None;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function description
|
||||
*
|
||||
* @return 0 on success, otherwise CAM_ERROR_CODE
|
||||
*/
|
||||
static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamIndex,
|
||||
const CAM_MEDIA_TYPE_DESCRIPTION* mediaType,
|
||||
ICamHalSampleCapturedCallback callback)
|
||||
static CAM_ERROR_CODE cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, size_t streamIndex,
|
||||
const CAM_MEDIA_TYPE_DESCRIPTION* mediaType,
|
||||
ICamHalSampleCapturedCallback callback)
|
||||
{
|
||||
CamV4lHal* hal = (CamV4lHal*)ihal;
|
||||
WINPR_ASSERT(hal);
|
||||
|
||||
CamV4lStream* stream = (CamV4lStream*)HashTable_GetItemValue(hal->streams, dev->deviceId);
|
||||
|
||||
if (!stream)
|
||||
{
|
||||
WLog_ERR(TAG, "Unable to find stream, device %s, streamIndex %d", dev->deviceId,
|
||||
WLog_ERR(TAG, "Unable to find stream, device %s, streamIndex %" PRIuz, dev->deviceId,
|
||||
streamIndex);
|
||||
return CAM_ERROR_CODE_UnexpectedError;
|
||||
}
|
||||
|
||||
if (stream->streaming)
|
||||
{
|
||||
WLog_ERR(TAG, "Streaming already in progress, device %s, streamIndex %d", dev->deviceId,
|
||||
streamIndex);
|
||||
WLog_ERR(TAG, "Streaming already in progress, device %s, streamIndex %" PRIuz,
|
||||
dev->deviceId, streamIndex);
|
||||
return CAM_ERROR_CODE_UnexpectedError;
|
||||
}
|
||||
|
||||
@@ -724,7 +721,7 @@ static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamInd
|
||||
mediaType->Width, mediaType->Height, mediaType->FrameRateNumerator,
|
||||
mediaType->FrameRateDenominator);
|
||||
|
||||
return CHANNEL_RC_OK;
|
||||
return CAM_ERROR_CODE_None;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -732,15 +729,15 @@ static UINT cam_v4l_stream_start(ICamHal* ihal, CameraDevice* dev, int streamInd
|
||||
*
|
||||
* @return 0 on success, otherwise a Win32 error code
|
||||
*/
|
||||
static UINT cam_v4l_stream_stop_by_device_id(ICamHal* ihal, const char* deviceId,
|
||||
WINPR_ATTR_UNUSED int streamIndex)
|
||||
static CAM_ERROR_CODE cam_v4l_stream_stop_by_device_id(ICamHal* ihal, const char* deviceId,
|
||||
WINPR_ATTR_UNUSED size_t streamIndex)
|
||||
{
|
||||
CamV4lHal* hal = (CamV4lHal*)ihal;
|
||||
|
||||
CamV4lStream* stream = (CamV4lStream*)HashTable_GetItemValue(hal->streams, deviceId);
|
||||
|
||||
if (!stream)
|
||||
return CHANNEL_RC_OK;
|
||||
return CAM_ERROR_CODE_NotInitialized;
|
||||
|
||||
return cam_v4l_stream_stop(stream);
|
||||
}
|
||||
@@ -768,18 +765,18 @@ void cam_v4l_stream_free(void* obj)
|
||||
*
|
||||
* @return 0 on success, otherwise a Win32 error code
|
||||
*/
|
||||
static UINT cam_v4l_free(ICamHal* ihal)
|
||||
static CAM_ERROR_CODE cam_v4l_free(ICamHal* ihal)
|
||||
{
|
||||
CamV4lHal* hal = (CamV4lHal*)ihal;
|
||||
|
||||
if (hal == NULL)
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
return CAM_ERROR_CODE_NotInitialized;
|
||||
|
||||
HashTable_Free(hal->streams);
|
||||
|
||||
free(hal);
|
||||
|
||||
return CHANNEL_RC_OK;
|
||||
return CAM_ERROR_CODE_None;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -38,7 +38,7 @@ typedef struct
|
||||
|
||||
/* members used to call the callback */
|
||||
CameraDevice* dev;
|
||||
int streamIndex;
|
||||
size_t streamIndex;
|
||||
ICamHalSampleCapturedCallback sampleCallback;
|
||||
|
||||
BOOL streaming;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
define_channel_server("rdpecam")
|
||||
|
||||
set(${MODULE_PREFIX}_SRCS camera_device_enumerator_main.c camera_device_main.c rdpecam-utils.h)
|
||||
set(${MODULE_PREFIX}_SRCS camera_device_enumerator_main.c camera_device_main.c)
|
||||
|
||||
set(${MODULE_PREFIX}_LIBS freerdp)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "prim_test.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user