On 4/8/2021 10:09 AM, Anton Khirnov wrote:
Quoting James Almer (2021-04-04 01:12:00)
Signed-off-by: James Almer <jamr...@gmail.com>
---
Now using the avformat_ prefix as Anton requested. I forgot about it when i
made v3.

  libavformat/avformat.h | 39 +++++++++++++++++++++++++++++++++++++++
  libavformat/utils.c    | 27 +++++++++++++++++++++++++++
  2 files changed, 66 insertions(+)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 6a9b09160c..a1e87ef891 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -2767,6 +2767,45 @@ int av_find_default_stream_index(AVFormatContext *s);
   */
  int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);
+/**
+ * Get the index entry count for the given AVStream.
+ *
+ * @param st stream
+ * @return the number of index entries in the stream
+ */
+int avformat_index_get_entries_count(AVStream *st);
+
+/**
+ * Get the AVIndexEntry corresponding to the given index.
+ *
+ * @param st          Stream containing the requested AVIndexEntry.
+ * @param idx         The desired index.
+ * @return A pointer to the requested AVIndexEntry if it exists, NULL 
otherwise.
+ *
+ * @note The pointer returned by this function is only guaranteed to be valid
+ *       until any function that could alter the stream or the AVFormatContext
+ *       that cointains it is called.
+ */
+const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx);
+
+/**
+ * Get the AVIndexEntry corresponding to the given timestamp.
+ *
+ * @param st          Stream containing the requested AVIndexEntry.
+ * @param timestamp   Timestamp to retrieve the index entry for.
+ * @param flags       If AVSEEK_FLAG_BACKWARD then the returned entry will 
correspond
+ *                    to the timestamp which is <= the requested one, if 
backward
+ *                    is 0, then it will be >=
+ *                    if AVSEEK_FLAG_ANY seek to any frame, only keyframes 
otherwise.
+ * @return A pointer to the requested AVIndexEntry if it exists, NULL 
otherwise.
+ *
+ * @note The pointer returned by this function is only guaranteed to be valid
+ *       until any function that could alter the stream or the AVFormatContext
+ *       that cointains it is called.

How can the user know which functions can "alter the stream or the
AVFormatContext"?

Any function that takes a non const AVStream or AVFormatContext should be considered one that can potentially alter the stream.


I would prefer invalidating the pointer on ANY lavf call on that
AVFormatContext or its children, including calls to
avformat_index_get_entry*. That would allow us more freedom to change
the implementation later.

avformat_index_get_entry() takes a const AVStream after i included Andreas suggestion when i pushed this patch the other day, so in theory it should not change the index array stored within the AVStream. I'd have to remove the const qualifier. If that's preferred, I can send a patch to make this change to the doxy and signature.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to