# define STRIDE_ALIGN 8
#endif
-typedef struct FramePool {
- /**
- * Pools for each data plane. For audio all the planes have the same size,
- * so only pools[0] is used.
- */
- AVBufferPool *pools[4];
-
- /*
- * Pool parameters
- */
- int format;
- int width, height;
- int stride_align[AV_NUM_DATA_POINTERS];
- int linesize[4];
- int planes;
- int channels;
- int samples;
-} FramePool;
-
typedef struct DecodeSimpleContext {
AVPacket *in_pkt;
- AVFrame *out_frame;
} DecodeSimpleContext;
-typedef struct DecodeFilterContext {
- AVBSFContext **bsfs;
- int nb_bsfs;
-} DecodeFilterContext;
+typedef struct EncodeSimpleContext {
+ AVFrame *in_frame;
+} EncodeSimpleContext;
typedef struct AVCodecInternal {
/**
AVFrame *to_free;
- FramePool *pool;
+ AVBufferRef *pool;
void *thread_ctx;
DecodeSimpleContext ds;
- DecodeFilterContext filter;
+ AVBSFContext *bsf;
/**
* Properties (timestamps+side data) extracted from the last packet passed
void *frame_thread_encoder;
+ EncodeSimpleContext es;
+
/**
* Number of audio samples to skip at the start of the next decoded frame
*/
* buffers for using new encode/decode API through legacy API
*/
AVPacket *buffer_pkt;
- int buffer_pkt_valid; // encoding: packet without data can be valid
AVFrame *buffer_frame;
int draining_done;
- /* set to 1 when the caller is using the old decoding API */
- int compat_decode;
int compat_decode_warned;
/* this variable is set by the decoder internals to signal to the old
* API compat wrappers the amount of data consumed from the last packet */
* of the packet (that should be submitted in the next decode call */
size_t compat_decode_partial_size;
AVFrame *compat_decode_frame;
+ AVPacket *compat_encode_packet;
int showed_multi_packet_warning;
*/
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.
*/
*/
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
*
int ff_alloc_a53_sei(const AVFrame *frame, size_t prefix_len,
void **data, size_t *sei_size);
+/**
+ * Check AVFrame for S12M timecode side data and allocate and fill TC SEI message with timecode info
+ *
+ * @param frame Raw frame to get S12M timecode side data from
+ * @param prefix_len Number of bytes to allocate before SEI message
+ * @param data Pointer to a variable to store allocated memory
+ * Upon return the variable will hold NULL on error or if frame has no S12M timecode info.
+ * Otherwise it will point to prefix_len uninitialized bytes followed by
+ * *sei_size SEI message
+ * @param sei_size Pointer to a variable to store generated SEI message length
+ * @return Zero on success, negative error code on failure
+ */
+int ff_alloc_timecode_sei(const AVFrame *frame, size_t prefix_len,
+ void **data, size_t *sei_size);
+
/**
* Get an estimated video bitrate based on frame size, frame rate and coded
* bits per pixel.