video: move user define mem_ops into imgdata_ops.

Signed-off-by: yaojingwei <yaojingwei@xiaomi.com>
This commit is contained in:
yaojingwei 2023-12-26 09:11:20 +08:00 committed by Xiang Xiao
parent 64aecbcc5c
commit f03a1a14f3
2 changed files with 16 additions and 16 deletions

View File

@ -1174,9 +1174,9 @@ static void cleanup_streamresources(FAR capture_type_inf_t *type_inf,
nxmutex_destroy(&type_inf->lock_state);
if (type_inf->bufheap != NULL)
{
if (cmng->imgdata->mem_ops && cmng->imgdata->mem_ops->mem_free)
if (cmng->imgdata->ops->free)
{
cmng->imgdata->mem_ops->mem_free(type_inf->bufheap);
cmng->imgdata->ops->free(cmng->imgdata, type_inf->bufheap);
}
else
{
@ -2120,7 +2120,7 @@ static int capture_reqbufs(FAR struct v4l2_s *v4l2,
{
FAR capture_mng_t *cmng = (FAR capture_mng_t *)v4l2;
FAR capture_type_inf_t *type_inf;
const imgdata_mem_ops_t *mem_ops = cmng->imgdata->mem_ops;
struct imgdata_s *imgdata = cmng->imgdata;
irqstate_t flags;
int ret = OK;
@ -2158,9 +2158,9 @@ static int capture_reqbufs(FAR struct v4l2_s *v4l2,
{
if (type_inf->bufheap != NULL)
{
if (mem_ops && mem_ops->mem_free)
if (imgdata->ops->free)
{
mem_ops->mem_free(type_inf->bufheap);
imgdata->ops->free(imgdata, type_inf->bufheap);
}
else
{
@ -2168,9 +2168,10 @@ static int capture_reqbufs(FAR struct v4l2_s *v4l2,
}
}
if (mem_ops && mem_ops->mem_malloc)
if (imgdata->ops->alloc)
{
type_inf->bufheap = mem_ops->mem_malloc(32, reqbufs->count *
type_inf->bufheap = imgdata->ops->alloc(imgdata, 32,
reqbufs->count *
get_bufsize(&type_inf->fmt[CAPTURE_FMT_MAIN]));
}
else

View File

@ -83,14 +83,6 @@ typedef struct imgdata_interval_s
uint32_t denominator;
} imgdata_interval_t;
/* Structure for memory operations */
typedef struct imgdata_mem_ops_s
{
CODE void *(*mem_malloc)(uint32_t align_size, uint32_t size);
CODE void (*mem_free)(void *data);
} imgdata_mem_ops_t;
typedef int (*imgdata_capture_t)(uint8_t result, uint32_t size,
FAR const struct timeval *ts,
FAR void *arg);
@ -119,6 +111,14 @@ struct imgdata_ops_s
FAR imgdata_capture_t callback,
FAR void *arg);
CODE int (*stop_capture)(FAR struct imgdata_s *data);
/* This is a pair of user define frame memory allocation interface.
* If both are NULL, just using system memory operations.
*/
CODE void *(*alloc)(FAR struct imgdata_s *data,
uint32_t align_size, uint32_t size);
CODE void (*free)(FAR struct imgdata_s *data, void *addr);
};
/* Image data private data. This structure only defines the initial fields
@ -129,7 +129,6 @@ struct imgdata_ops_s
struct imgdata_s
{
FAR const struct imgdata_ops_s *ops;
FAR const struct imgdata_mem_ops_s *mem_ops;
};
#ifdef __cplusplus