Quoting James Almer (2021-04-08 15:19:02) > 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.
It seems preferable to me, but YMMV. -- Anton Khirnov _______________________________________________ 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".