forked from FFmpeg/FFmpeg
avfilter/avfilter: add a side_data field to AVFilterLink
This will be used to propagate global side data through the filterchain. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
91d96dc8dd
commit
ef1cb1c9c8
4 changed files with 25 additions and 3 deletions
|
@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07
|
||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2025-01-25 - xxxxxxxxxx - lavfi 10.7.100 - avfilter.h
|
||||||
|
Add AVFilterLink.side_data and AVFilterLink.nb_side_data
|
||||||
|
|
||||||
2025-01-05 - xxxxxxxxxx - lavc 59.55.100 - frame.h
|
2025-01-05 - xxxxxxxxxx - lavc 59.55.100 - frame.h
|
||||||
Add AV_FRAME_SIDE_DATA_FLAG_NEW_REF.
|
Add AV_FRAME_SIDE_DATA_FLAG_NEW_REF.
|
||||||
|
|
||||||
|
|
|
@ -206,6 +206,7 @@ static void link_free(AVFilterLink **link)
|
||||||
ff_framequeue_free(&li->fifo);
|
ff_framequeue_free(&li->fifo);
|
||||||
ff_frame_pool_uninit(&li->frame_pool);
|
ff_frame_pool_uninit(&li->frame_pool);
|
||||||
av_channel_layout_uninit(&(*link)->ch_layout);
|
av_channel_layout_uninit(&(*link)->ch_layout);
|
||||||
|
av_frame_side_data_free(&(*link)->side_data, &(*link)->nb_side_data);
|
||||||
|
|
||||||
av_buffer_unref(&li->l.hw_frames_ctx);
|
av_buffer_unref(&li->l.hw_frames_ctx);
|
||||||
|
|
||||||
|
@ -376,7 +377,22 @@ int ff_filter_config_links(AVFilterContext *filter)
|
||||||
"callbacks on all outputs\n");
|
"callbacks on all outputs\n");
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
} else if ((ret = config_link(link)) < 0) {
|
}
|
||||||
|
|
||||||
|
/* Copy side data before link->srcpad->config_props() is called, so the filter
|
||||||
|
* may remove it for the next filter in the chain */
|
||||||
|
if (inlink && inlink->nb_side_data && !link->nb_side_data) {
|
||||||
|
for (i = 0; i < inlink->nb_side_data; i++) {
|
||||||
|
ret = av_frame_side_data_clone(&link->side_data, &link->nb_side_data,
|
||||||
|
inlink->side_data[i], 0);
|
||||||
|
if (ret < 0) {
|
||||||
|
av_frame_side_data_free(&link->side_data, &link->nb_side_data);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config_link && (ret = config_link(link)) < 0) {
|
||||||
av_log(link->src, AV_LOG_ERROR,
|
av_log(link->src, AV_LOG_ERROR,
|
||||||
"Failed to configure output pad on %s\n",
|
"Failed to configure output pad on %s\n",
|
||||||
link->src->name);
|
link->src->name);
|
||||||
|
|
|
@ -413,6 +413,9 @@ struct AVFilterLink {
|
||||||
*/
|
*/
|
||||||
AVRational time_base;
|
AVRational time_base;
|
||||||
|
|
||||||
|
AVFrameSideData **side_data;
|
||||||
|
int nb_side_data;
|
||||||
|
|
||||||
/*****************************************************************
|
/*****************************************************************
|
||||||
* All fields below this line are not part of the public API. They
|
* All fields below this line are not part of the public API. They
|
||||||
* may not be used outside of libavfilter and can be changed and
|
* may not be used outside of libavfilter and can be changed and
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
|
|
||||||
#include "version_major.h"
|
#include "version_major.h"
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MINOR 6
|
#define LIBAVFILTER_VERSION_MINOR 7
|
||||||
#define LIBAVFILTER_VERSION_MICRO 101
|
#define LIBAVFILTER_VERSION_MICRO 100
|
||||||
|
|
||||||
|
|
||||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
|
|
Loading…
Add table
Reference in a new issue