Imported Upstream version 6.1
[platform/upstream/ffmpeg.git] / libavcodec / encode.h
index b2536bf..e019cd7 100644 (file)
@@ -52,7 +52,7 @@ int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame);
 /**
  * Check AVPacket size and allocate data.
  *
- * Encoders supporting FFCodec.encode2() can use this as a convenience to
+ * Encoders of type FF_CODEC_CB_TYPE_ENCODE can use this as a convenience to
  * obtain a big enough buffer for the encoded bitstream.
  *
  * @param avctx   the AVCodecContext of the encoder
@@ -64,10 +64,30 @@ int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame);
  */
 int ff_alloc_packet(AVCodecContext *avctx, AVPacket *avpkt, int64_t size);
 
-/*
- * Perform encoder initialization and validation.
- * Called when opening the encoder, before the FFCodec.init() call.
+/**
+ * Propagate user opaque values from the frame to avctx/pkt as needed.
+ */
+int ff_encode_reordered_opaque(AVCodecContext *avctx,
+                               AVPacket *pkt, const AVFrame *frame);
+
+int ff_encode_encode_cb(AVCodecContext *avctx, AVPacket *avpkt,
+                        AVFrame *frame, int *got_packet);
+
+/**
+ * Add a CPB properties side data to an encoding context.
+ */
+AVCPBProperties *ff_encode_add_cpb_side_data(AVCodecContext *avctx);
+
+/**
+ * Rescale from sample rate to AVCodecContext.time_base.
  */
-int ff_encode_preinit(AVCodecContext *avctx);
+static av_always_inline int64_t ff_samples_to_time_base(const AVCodecContext *avctx,
+                                                        int64_t samples)
+{
+    if (samples == AV_NOPTS_VALUE)
+        return AV_NOPTS_VALUE;
+    return av_rescale_q(samples, (AVRational){ 1, avctx->sample_rate },
+                        avctx->time_base);
+}
 
 #endif /* AVCODEC_ENCODE_H */