summaryrefslogtreecommitdiff
path: root/libavformat/internal.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-10-09 08:15:27 +0200
committerAnton Khirnov <anton@khirnov.net>2020-10-28 14:52:06 +0100
commit8741f1fe2663f0d5adeaa21c98d6b03cac9dbaa9 (patch)
tree976699b37877549f1d941b529e1c8e4db4315c92 /libavformat/internal.h
parent87f0c8280c7556b52b72b9379547eed77e9810d7 (diff)
lavf: move AVStream.info to AVStreamInternal
This struct is for internal use of avformat_find_stream_info(), so it should not be exposed in public headers. Keep a stub pointer in its place to avoid changing AVStream layout, since e.g. ffmpeg.c accesses some fields located after it (even though they are marked as private).
Diffstat (limited to 'libavformat/internal.h')
-rw-r--r--libavformat/internal.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/libavformat/internal.h b/libavformat/internal.h
index f4174628e0..30b4df9181 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -191,6 +191,39 @@ struct AVStreamInternal {
int is_intra_only;
FFFrac *priv_pts;
+
+#define MAX_STD_TIMEBASES (30*12+30+3+6)
+ /**
+ * Stream information used internally by avformat_find_stream_info()
+ */
+ struct {
+ int64_t last_dts;
+ int64_t duration_gcd;
+ int duration_count;
+ int64_t rfps_duration_sum;
+ double (*duration_error)[2][MAX_STD_TIMEBASES];
+ int64_t codec_info_duration;
+ int64_t codec_info_duration_fields;
+ int frame_delay_evidence;
+
+ /**
+ * 0 -> decoder has not been searched for yet.
+ * >0 -> decoder found
+ * <0 -> decoder with codec_id == -found_decoder has not been found
+ */
+ int found_decoder;
+
+ int64_t last_duration;
+
+ /**
+ * Those are used for average framerate estimation.
+ */
+ int64_t fps_first_dts;
+ int fps_first_dts_idx;
+ int64_t fps_last_dts;
+ int fps_last_dts_idx;
+
+ } *info;
};
#ifdef __GNUC__