James Almer: > On 4/3/2021 8:12 PM, James Almer wrote: >> Signed-off-by: James Almer <jamr...@gmail.com> >> --- >> Now using the avformat_ prefix as Anton requested. I forgot about it >> when i >> made v3. > > Will apply soon if there are no objections. >
I wonder whether the AVStream *st should be const; together with a guarantee that calling these functions does not invalidate entries that have been returned earlier. >> >> 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); An int? Not something unsigned? >> + >> +/** >> + * 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. ^ typo >> + */ >> +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. ^ same typo >> + */ >> +const AVIndexEntry *avformat_index_get_entry_from_timestamp(AVStream >> *st, >> + int64_t >> wanted_timestamp, >> + int flags); >> /** >> * Add an index entry into a sorted list. Update the entry if the list >> * already contains it. >> diff --git a/libavformat/utils.c b/libavformat/utils.c >> index e9bf31e38b..942d7c8390 100644 >> --- a/libavformat/utils.c >> +++ b/libavformat/utils.c >> @@ -2176,6 +2176,33 @@ int av_index_search_timestamp(AVStream *st, >> int64_t wanted_timestamp, int flags) >> wanted_timestamp, flags); >> } >> +int avformat_index_get_entries_count(AVStream *st) >> +{ >> + return st->internal->nb_index_entries; >> +} >> + >> +const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx) >> +{ >> + if (idx < 0 || idx >= st->internal->nb_index_entries) >> + return NULL; >> + >> + return &st->internal->index_entries[idx]; >> +} >> + >> +const AVIndexEntry *avformat_index_get_entry_from_timestamp(AVStream >> *st, >> + int64_t >> wanted_timestamp, >> + int flags) >> +{ >> + int idx = ff_index_search_timestamp(st->internal->index_entries, >> + st->internal->nb_index_entries, >> + wanted_timestamp, flags); >> + >> + if (idx < 0) >> + return NULL; >> + >> + return &st->internal->index_entries[idx]; >> +} >> + >> static int64_t ff_read_timestamp(AVFormatContext *s, int >> stream_index, int64_t *ppos, int64_t pos_limit, >> int64_t (*read_timestamp)(struct >> AVFormatContext *, int , int64_t *, int64_t )) >> { >> > > _______________________________________________ > 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". _______________________________________________ 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".