X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Futils.c;h=c5e63000e11e9bea070cf55aa8b045b58105337a;hb=9d5017a20c26b98bdd6fec29f3eaa465a779e24c;hp=e18ed2d751d188f0b51469f089a46fa075a89b45;hpb=9fb5a91c66934dab395ff32eb524a3dbe08b53d8;p=ffmpeg diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e18ed2d751d..c5e63000e11 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -746,6 +746,7 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame) { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX }, { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, + { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, }; if (pkt) { @@ -1856,6 +1857,13 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, frame = extended_frame; } + /* extract audio service type metadata */ + if (frame) { + AVFrameSideData *sd = av_frame_get_side_data(frame, AV_FRAME_DATA_AUDIO_SERVICE_TYPE); + if (sd && sd->size >= sizeof(enum AVAudioServiceType)) + avctx->audio_service_type = *(enum AVAudioServiceType*)sd->data; + } + /* check for valid frame size */ if (frame) { if (avctx->codec->capabilities & CODEC_CAP_SMALL_LAST_FRAME) { @@ -3655,6 +3663,8 @@ int ff_thread_ref_frame(ThreadFrame *dst, ThreadFrame *src) if (ret < 0) return ret; + av_assert0(!dst->progress); + if (src->progress && !(dst->progress = av_buffer_ref(src->progress))) { ff_thread_release_buffer(dst->owner, dst);