summaryrefslogtreecommitdiff
path: root/libavcodec/internal.h
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-09-23 22:34:39 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-11-07 17:12:58 +0100
commitffdda740fe7983240b31bee3e058e43a859851a4 (patch)
tree79e4256f083ed690d0ffd248b8ff809cffb24a4c /libavcodec/internal.h
parent9139dc6140e8fb8d84760f3c567332b41858798d (diff)
avcodec/internal: Allow receive_frame codecs to use decode_simple pkt
Decoders implementing the receive_frame API currently mostly use stack packets to temporarily hold the packet they receive from ff_decode_get_packet(). This role directly parallels the role of in_pkt, the spare packet used in decode_simple_internal for the decoders implementing the traditional decoding API. Said packet is unused by the generic code for the decoders implementing the receive_frame API, so allow them to use it to fulfill the function it already fulfills for the traditional API for both APIs. There is only one caveat in this: The packet is automatically unreferenced in avcodec_flush_buffers(). But this is actually positive as it means the decoders don't have to do this themselves (in case the packet is preserved between receive_frame calls). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/internal.h')
-rw-r--r--libavcodec/internal.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/libavcodec/internal.h b/libavcodec/internal.h
index b6180f15a5..a62f8dbd4e 100644
--- a/libavcodec/internal.h
+++ b/libavcodec/internal.h
@@ -112,10 +112,6 @@
# define STRIDE_ALIGN 8
#endif
-typedef struct DecodeSimpleContext {
- AVPacket *in_pkt;
-} DecodeSimpleContext;
-
typedef struct EncodeSimpleContext {
AVFrame *in_frame;
} EncodeSimpleContext;
@@ -137,7 +133,15 @@ typedef struct AVCodecInternal {
void *thread_ctx;
- DecodeSimpleContext ds;
+ /**
+ * This packet is used to hold the packet given to decoders
+ * implementing the .decode API; it is unused by the generic
+ * code for decoders implementing the .receive_frame API and
+ * may be freely used (but not freed) by them with the caveat
+ * that the packet will be unreferenced generically in
+ * avcodec_flush_buffers().
+ */
+ AVPacket *in_pkt;
AVBSFContext *bsf;
/**