diff mbox series

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

Message ID 20200530164426.474-1-jamrial@gmail.com
State Accepted
Headers show
Series [FFmpeg-devel] avcodec/internal: move packet related functions to their own header | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

James Almer May 30, 2020, 4:44 p.m. UTC
Signed-off-by: James Almer <jamrial@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.

 libavcodec/internal.h        | 35 +-------------------
 libavcodec/packet_internal.h | 63 ++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 34 deletions(-)
 create mode 100644 libavcodec/packet_internal.h

Comments

Anton Khirnov June 1, 2020, 9:41 a.m. UTC | #1
Quoting James Almer (2020-05-30 18:44:26)
> Signed-off-by: James Almer <jamrial@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.
James Almer June 1, 2020, 12:59 p.m. UTC | #2
On 6/1/2020 6:41 AM, Anton Khirnov wrote:
> Quoting James Almer (2020-05-30 18:44:26)
>> Signed-off-by: James Almer <jamrial@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.

Ok, will see about moving this one to encode.h as part of the encoding
code rewriting set instead.

Thanks.
diff mbox series

Patch

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);
-
-attribute_deprecated int ff_alloc_packet(AVPacket *avpkt, int size);
-
 /**
  * Rescale from sample rate to AVCodecContext.time_base.
  */
@@ -360,10 +331,6 @@  int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame);
  */
 AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx);
 
-int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type);
-
-int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp);
-
 /**
  * Check AVFrame for A53 side data and allocate and fill SEI message with A53 info
  *
diff --git a/libavcodec/packet_internal.h b/libavcodec/packet_internal.h
new file mode 100644
index 0000000000..6d48f7f528
--- /dev/null
+++ b/libavcodec/packet_internal.h
@@ -0,0 +1,63 @@ 
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVCODEC_PACKET_INTERNAL_H
+#define AVCODEC_PACKET_INTERNAL_H
+
+#include <stdint.h>
+
+#include "libavutil/attributes.h"
+
+#include "avcodec.h"
+#include "packet.h"
+
+/**
+ * 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);
+
+attribute_deprecated int ff_alloc_packet(AVPacket *avpkt, int size);
+
+int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type);
+
+int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp);
+
+#endif // AVCODEC_PACKET_INTERNAL_H