[FFmpeg-devel] [PATCH] lavc/decode: do not use a context variable for function-local data
James Almer
jamrial at gmail.com
Fri May 22 22:51:05 EEST 2020
On 5/22/2020 4:22 PM, Michael Niedermayer wrote:
> On Fri, May 22, 2020 at 02:32:07PM -0300, James Almer wrote:
>> On 5/22/2020 1:56 PM, Anton Khirnov wrote:
>>> ---
>>> libavcodec/decode.c | 8 ++++----
>>> 1 file changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/libavcodec/decode.c b/libavcodec/decode.c
>>> index f3327d74af..dbecdf3f46 100644
>>> --- a/libavcodec/decode.c
>>> +++ b/libavcodec/decode.c
>>> @@ -586,6 +586,7 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
>>> int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
>>> {
>>> AVCodecInternal *avci = avctx->internal;
>>> + AVPacket buffer_pkt = { NULL };
>>> int ret;
>>>
>>> if (!avcodec_is_open(avctx) || !av_codec_is_decoder(avctx->codec))
>>> @@ -597,16 +598,15 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke
>>> if (avpkt && !avpkt->size && avpkt->data)
>>> return AVERROR(EINVAL);
>>>
>>> - av_packet_unref(avci->buffer_pkt);
>>> if (avpkt && (avpkt->data || avpkt->side_data_elems)) {
>>> - ret = av_packet_ref(avci->buffer_pkt, avpkt);
>>> + ret = av_packet_ref(&buffer_pkt, avpkt);
>>> if (ret < 0)
>>> return ret;
>>> }
>>>
>>> - ret = av_bsf_send_packet(avci->bsf, avci->buffer_pkt);
>>> + ret = av_bsf_send_packet(avci->bsf, &buffer_pkt);
>>> if (ret < 0) {
>>> - av_packet_unref(avci->buffer_pkt);
>>> + av_packet_unref(&buffer_pkt);
>>> return ret;
>>> }
>>
>> What's the gain here? You're not removing the context variable since
>> it's used in the encode framework as well, and you're introducing a
>
>> stack AVPacket (that, while harmless, is not even properly initialized).
>
> It would be nice if we could avoid all such code, so that we can extend
> AVPacket like other structs without Major bumping
Yes, some relatively recent commits went in the direction of removing as
much AVPacket on stack/heap usage as possible precisely to remove
sizeof(AVPacket) from the ABI, but at least within lavc it's not a problem.
>
> thx
>
> [...]
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list