opt: Add av_opt_set_bin()
Introduce a new function to set binary data through AVOption, avoiding having to convert the binary data to a string inbetween. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
a1a6cdc26e
commit
154486f9ad
@ -13,6 +13,9 @@ libavutil: 2011-04-18
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2012-05-25 - e0e0793 - lavu 51.31.0 - opt.h
|
||||||
|
Add av_opt_set_bin()
|
||||||
|
|
||||||
2012-05-xx - xxxxxxx - lavf 54.3.0
|
2012-05-xx - xxxxxxx - lavf 54.3.0
|
||||||
Add AVFMT_TS_NONSTRICT format flag to indicate that a muxer supports
|
Add AVFMT_TS_NONSTRICT format flag to indicate that a muxer supports
|
||||||
non-increasing monotone timestamps.
|
non-increasing monotone timestamps.
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_MAJOR 51
|
#define LIBAVUTIL_VERSION_MAJOR 51
|
||||||
#define LIBAVUTIL_VERSION_MINOR 30
|
#define LIBAVUTIL_VERSION_MINOR 31
|
||||||
#define LIBAVUTIL_VERSION_MICRO 0
|
#define LIBAVUTIL_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
||||||
|
@ -316,6 +316,35 @@ int av_opt_set_q(void *obj, const char *name, AVRational val, int search_flags)
|
|||||||
return set_number(obj, name, val.num, val.den, 1, search_flags);
|
return set_number(obj, name, val.num, val.den, 1, search_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int av_opt_set_bin(void *obj, const char *name, const uint8_t *val, int len, int search_flags)
|
||||||
|
{
|
||||||
|
void *target_obj;
|
||||||
|
const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj);
|
||||||
|
uint8_t *ptr;
|
||||||
|
uint8_t **dst;
|
||||||
|
int *lendst;
|
||||||
|
|
||||||
|
if (!o || !target_obj)
|
||||||
|
return AVERROR_OPTION_NOT_FOUND;
|
||||||
|
|
||||||
|
if (o->type != AV_OPT_TYPE_BINARY)
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
|
ptr = av_malloc(len);
|
||||||
|
if (!ptr)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
|
dst = (uint8_t **)(((uint8_t *)target_obj) + o->offset);
|
||||||
|
lendst = (int *)(dst + 1);
|
||||||
|
|
||||||
|
av_free(*dst);
|
||||||
|
*dst = ptr;
|
||||||
|
*lendst = len;
|
||||||
|
memcpy(ptr, val, len);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#if FF_API_OLD_AVOPTIONS
|
#if FF_API_OLD_AVOPTIONS
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -560,6 +560,7 @@ int av_opt_set (void *obj, const char *name, const char *val, int search_f
|
|||||||
int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags);
|
int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags);
|
||||||
int av_opt_set_double(void *obj, const char *name, double val, int search_flags);
|
int av_opt_set_double(void *obj, const char *name, double val, int search_flags);
|
||||||
int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags);
|
int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags);
|
||||||
|
int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user