mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-08 06:09:50 +00:00
fftools/ffmpeg: propagate decoded_side_data from decoded streams to the filterchain
Global side data as exported by a decoder may no longer apply if a filter in the chain altered the frames in some form, like changing color, dimensions, or channel layout information. After this change, any such changes in side data will be taken into account by the encoder futher in the process. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
6707d970c0
commit
e61b9d4094
3 changed files with 86 additions and 0 deletions
|
|
@ -44,4 +44,20 @@ static inline int err_merge(int err0, int err1)
|
|||
return (err0 < 0) ? err0 : FFMIN(err1, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper calling av_frame_side_data_clone() in a loop for all source entries.
|
||||
* It does not clear dst beforehand. */
|
||||
static inline int clone_side_data(AVFrameSideData ***dst, int *nb_dst,
|
||||
AVFrameSideData * const *src, int nb_src,
|
||||
unsigned int flags)
|
||||
{
|
||||
for (int i = 0; i < nb_src; i++) {
|
||||
int ret = av_frame_side_data_clone(dst, nb_dst, src[i], flags);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif // FFTOOLS_FFMPEG_UTILS_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue