]> git.sesse.net Git - ffmpeg/blobdiff - cmdutils.h
cosmetic: break long line
[ffmpeg] / cmdutils.h
index d48abab30edfed262fc3f2fb20b3d1542b9c09a0..4ce62b64a8e9aa50b2d5bc32b93d16a793b2b768 100644 (file)
@@ -44,6 +44,23 @@ extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
 extern AVFormatContext *avformat_opts;
 extern struct SwsContext *sws_opts;
 
+/**
+ * Initialize the cmdutils option system, in particular
+ * allocate the *_opts contexts.
+ */
+void init_opts(void);
+/**
+ * Uninitialize the cmdutils option system, in particular
+ * free the *_opts contexts and their contents.
+ */
+void uninit_opts(void);
+
+/**
+ * Trivial log callback.
+ * Only suitable for show_help and similar since it lacks prefix handling.
+ */
+void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
+
 /**
  * Fallback for options that are not explicitly handled, these will be
  * parsed through AVOptions.
@@ -132,7 +149,7 @@ void show_help_options(const OptionDef *options, const char *msg, int mask, int
 void parse_options(int argc, char **argv, const OptionDef *options,
                    void (* parse_arg_function)(const char*));
 
-void set_context_opts(void *ctx, void *opts_ctx, int flags);
+void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec);
 
 /**
  * Print an error message to stderr, indicating filename and a human
@@ -220,4 +237,28 @@ int read_yesno(void);
  */
 int read_file(const char *filename, char **bufptr, size_t *size);
 
+typedef struct {
+    int64_t num_faulty_pts; /// Number of incorrect PTS values so far
+    int64_t num_faulty_dts; /// Number of incorrect DTS values so far
+    int64_t last_pts;       /// PTS of the last frame
+    int64_t last_dts;       /// DTS of the last frame
+} PtsCorrectionContext;
+
+/**
+ * Reset the state of the PtsCorrectionContext.
+ */
+void init_pts_correction(PtsCorrectionContext *ctx);
+
+/**
+ * Attempt to guess proper monotonic timestamps for decoded video frames
+ * which might have incorrect times. Input timestamps may wrap around, in
+ * which case the output will as well.
+ *
+ * @param pts the pts field of the decoded AVPacket, as passed through
+ * AVCodecContext.reordered_opaque
+ * @param dts the dts field of the decoded AVPacket
+ * @return one of the input values, may be AV_NOPTS_VALUE
+ */
+int64_t guess_correct_pts(PtsCorrectionContext *ctx, int64_t pts, int64_t dts);
+
 #endif /* FFMPEG_CMDUTILS_H */