avutil/frame: Rename av_frame_side_data_get and add wrapper for it
av_frame_side_data_get() has a const AVFrameSideData * const *sd parameter; so calling it with an AVFramesSideData **sd like AVCodecContext.decoded_side_data (or with a AVFramesSideData * const *sd) is safe, but the conversion is not performed automatically in C. All users of this function therefore resort to a cast. This commit changes this: av_frame_side_data_get() is renamed to av_frame_side_data_get_c(); furthermore, a static inline wrapper for it name av_frame_side_data_get() is added that accepts an AVFramesSideData * const * and converts this to const AVFramesSideData * const * in a Wcast-qual safe way. This also allows to remove the casts from the current users. Reviewed-by: Jan Ekström <jeebjp@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
26398da8f3
commit
b7bec5d3c9
@ -3,7 +3,10 @@ The last version increases of all libraries were on 2024-03-07
|
|||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
2024-03-22 - xxxxxxxxxx - lavu 59.4.100 - frame.h
|
2024-03-22 - xxxxxxxxxx - lavu 59.4.100 - frame.h
|
||||||
Constified the first-level pointee of av_frame_side_data_get().
|
Constified the first-level pointee of av_frame_side_data_get()
|
||||||
|
and renamed it to av_frame_side_data_get_c(). From now on,
|
||||||
|
av_frame_side_data_get() is a wrapper around av_frame_side_data_get_c()
|
||||||
|
that accepts AVFrameSideData * const *sd.
|
||||||
|
|
||||||
2024-03-xx - xxxxxxxxxx - lavc 61.2.100 - avcodec.h
|
2024-03-xx - xxxxxxxxxx - lavc 61.2.100 - avcodec.h
|
||||||
Add AVCodecContext.[nb_]decoded_side_data.
|
Add AVCodecContext.[nb_]decoded_side_data.
|
||||||
|
@ -180,12 +180,10 @@ static void handle_side_data(AVCodecContext *avctx,
|
|||||||
EbSvtAv1EncConfiguration *param)
|
EbSvtAv1EncConfiguration *param)
|
||||||
{
|
{
|
||||||
const AVFrameSideData *cll_sd =
|
const AVFrameSideData *cll_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
||||||
const AVFrameSideData *mdcv_sd =
|
const AVFrameSideData *mdcv_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data,
|
avctx->nb_decoded_side_data,
|
||||||
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
||||||
|
|
||||||
|
@ -1044,12 +1044,10 @@ static void handle_side_data(AVCodecContext *avctx, x264_param_t *params)
|
|||||||
{
|
{
|
||||||
#if CONFIG_LIBX264_HDR10
|
#if CONFIG_LIBX264_HDR10
|
||||||
const AVFrameSideData *cll_sd =
|
const AVFrameSideData *cll_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
||||||
const AVFrameSideData *mdcv_sd =
|
const AVFrameSideData *mdcv_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data,
|
avctx->nb_decoded_side_data,
|
||||||
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
||||||
|
|
||||||
|
@ -211,12 +211,10 @@ static int handle_side_data(AVCodecContext *avctx, const x265_api *api,
|
|||||||
x265_param *params)
|
x265_param *params)
|
||||||
{
|
{
|
||||||
const AVFrameSideData *cll_sd =
|
const AVFrameSideData *cll_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
avctx->nb_decoded_side_data, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL);
|
||||||
const AVFrameSideData *mdcv_sd =
|
const AVFrameSideData *mdcv_sd =
|
||||||
av_frame_side_data_get(
|
av_frame_side_data_get(avctx->decoded_side_data,
|
||||||
(const AVFrameSideData **)avctx->decoded_side_data,
|
|
||||||
avctx->nb_decoded_side_data,
|
avctx->nb_decoded_side_data,
|
||||||
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
AV_FRAME_DATA_MASTERING_DISPLAY_METADATA);
|
||||||
|
|
||||||
|
@ -813,9 +813,9 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData * const *sd,
|
const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd,
|
||||||
const int nb_sd,
|
const int nb_sd,
|
||||||
enum AVFrameSideDataType type)
|
enum AVFrameSideDataType type)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < nb_sd; i++) {
|
for (int i = 0; i < nb_sd; i++) {
|
||||||
if (sd[i]->type == type)
|
if (sd[i]->type == type)
|
||||||
@ -828,7 +828,7 @@ AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
|
|||||||
enum AVFrameSideDataType type)
|
enum AVFrameSideDataType type)
|
||||||
{
|
{
|
||||||
return (AVFrameSideData *)av_frame_side_data_get(
|
return (AVFrameSideData *)av_frame_side_data_get(
|
||||||
(const AVFrameSideData **)frame->side_data, frame->nb_side_data,
|
frame->side_data, frame->nb_side_data,
|
||||||
type
|
type
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1051,9 +1051,24 @@ int av_frame_side_data_clone(AVFrameSideData ***sd, int *nb_sd,
|
|||||||
* @return a pointer to the side data of a given type on success, NULL if there
|
* @return a pointer to the side data of a given type on success, NULL if there
|
||||||
* is no side data with such type in this set.
|
* is no side data with such type in this set.
|
||||||
*/
|
*/
|
||||||
const AVFrameSideData *av_frame_side_data_get(const AVFrameSideData * const *sd,
|
const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *sd,
|
||||||
|
const int nb_sd,
|
||||||
|
enum AVFrameSideDataType type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper around av_frame_side_data_get_c() to workaround the limitation
|
||||||
|
* that for any type T the conversion from T * const * to const T * const *
|
||||||
|
* is not performed automatically in C.
|
||||||
|
* @see av_frame_side_data_get_c()
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
const AVFrameSideData *av_frame_side_data_get(AVFrameSideData * const *sd,
|
||||||
const int nb_sd,
|
const int nb_sd,
|
||||||
enum AVFrameSideDataType type);
|
enum AVFrameSideDataType type)
|
||||||
|
{
|
||||||
|
return av_frame_side_data_get_c((const AVFrameSideData * const *)sd,
|
||||||
|
nb_sd, type);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user