This allows to test or use the code without av_packet_split_side_data() or allows applications to separate the side data handling out not running it automatically.
It also makes it easier to change the default behavior Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> --- libavcodec/avcodec.h | 5 +++++ libavcodec/utils.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index af054f3194..92e930249e 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -910,6 +910,11 @@ typedef struct RcOverride{ */ #define AV_CODEC_FLAG2_FAST (1 << 0) /** + * Do not split side data. + * @see AVFMT_FLAG_KEEP_SIDE_DATA + */ +#define AV_CODEC_FLAG2_DONT_SPLIT_SIDE_DATA (1 << 1) +/** * Skip bitstream encoding. */ #define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index db3adb18d4..94278c6950 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2250,7 +2250,8 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi if ((avctx->codec->capabilities & AV_CODEC_CAP_DELAY) || avpkt->size || (avctx->active_thread_type & FF_THREAD_FRAME)) { - int did_split = av_packet_split_side_data(&tmp); + int did_split = (avctx->flags2 & AV_CODEC_FLAG2_DONT_SPLIT_SIDE_DATA) ? + 0 : av_packet_split_side_data(&tmp); ret = apply_param_change(avctx, &tmp); if (ret < 0) goto fail; @@ -2356,7 +2357,8 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, uint8_t discard_reason = 0; // copy to ensure we do not change avpkt AVPacket tmp = *avpkt; - int did_split = av_packet_split_side_data(&tmp); + int did_split = (avctx->flags2 & AV_CODEC_FLAG2_DONT_SPLIT_SIDE_DATA) ? + 0 : av_packet_split_side_data(&tmp); ret = apply_param_change(avctx, &tmp); if (ret < 0) goto fail; @@ -2669,7 +2671,8 @@ int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, if ((avctx->codec->capabilities & AV_CODEC_CAP_DELAY) || avpkt->size) { AVPacket pkt_recoded; AVPacket tmp = *avpkt; - int did_split = av_packet_split_side_data(&tmp); + int did_split = (avctx->flags2 & AV_CODEC_FLAG2_DONT_SPLIT_SIDE_DATA) ? + 0 : av_packet_split_side_data(&tmp); //apply_param_change(avctx, &tmp); if (did_split) { @@ -2860,7 +2863,8 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke if (avctx->codec->send_packet) { if (avpkt) { AVPacket tmp = *avpkt; - int did_split = av_packet_split_side_data(&tmp); + int did_split = (avctx->flags2 & AV_CODEC_FLAG2_DONT_SPLIT_SIDE_DATA) ? + 0 : av_packet_split_side_data(&tmp); ret = apply_param_change(avctx, &tmp); if (ret >= 0) ret = avctx->codec->send_packet(avctx, &tmp); -- 2.11.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel