[FFmpeg-devel] [PATCH] avcodec/internal: move packet related functions to their own header

Anton Khirnov anton at khirnov.net
Mon Jun 1 12:41:07 EEST 2020


Quoting James Almer (2020-05-30 18:44:26)
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> I included the new header directly in internal.h because the alternative was
> including it in a hundred  or so files that call ff_alloc_packet2().
> 
> If that's nonetheless prefered, i can go ahead with it.

I would prefer that, but won't force you or anyone to do such tedious
work. So do as you like.

> 
>  libavcodec/internal.h        | 35 +-------------------
>  libavcodec/packet_internal.h | 63 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 64 insertions(+), 34 deletions(-)
>  create mode 100644 libavcodec/packet_internal.h
> 
> diff --git a/libavcodec/internal.h b/libavcodec/internal.h
> index 0e3415d69b..fa5052723b 100644
> --- a/libavcodec/internal.h
> +++ b/libavcodec/internal.h
> @@ -32,6 +32,7 @@
>  #include "libavutil/pixfmt.h"
>  #include "avcodec.h"
>  #include "config.h"
> +#include "packet_internal.h"
>  
>  /**
>   * The codec does not modify any global variables in the init function,
> @@ -222,36 +223,6 @@ void ff_color_frame(AVFrame *frame, const int color[4]);
>   */
>  #define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE)
>  
> -/**
> - * Check AVPacket size and/or allocate data.
> - *
> - * Encoders supporting AVCodec.encode2() can use this as a convenience to
> - * ensure the output packet data is large enough, whether provided by the user
> - * or allocated in this function.
> - *
> - * @param avctx   the AVCodecContext of the encoder
> - * @param avpkt   the AVPacket
> - *                If avpkt->data is already set, avpkt->size is checked
> - *                to ensure it is large enough.
> - *                If avpkt->data is NULL, a new buffer is allocated.
> - *                avpkt->size is set to the specified size.
> - *                All other AVPacket fields will be reset with av_init_packet().
> - * @param size    the minimum required packet size
> - * @param min_size This is a hint to the allocation algorithm, which indicates
> - *                to what minimal size the caller might later shrink the packet
> - *                to. Encoders often allocate packets which are larger than the
> - *                amount of data that is written into them as the exact amount is
> - *                not known at the time of allocation. min_size represents the
> - *                size a packet might be shrunk to by the caller. Can be set to
> - *                0. setting this roughly correctly allows the allocation code
> - *                to choose between several allocation strategies to improve
> - *                speed slightly.
> - * @return        non negative on success, negative error code on failure
> - */
> -int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size);

I would consider this function encoder-related rather than
packet-related, since it potentially modifies AVCodecContext state.

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list