# HG changeset patch # User michael # Date 1220453094 0 # Node ID 3f4d2a22bd1b481b833996138583fe3faa3a4d1f # Parent ed2a8a7699820ba9bb2a67aa8507ac04b856b2c1 Add AVPacket.convergence_duration. diff -r ed2a8a769982 -r 3f4d2a22bd1b avformat.h --- a/avformat.h Wed Sep 03 14:02:17 2008 +0000 +++ b/avformat.h Wed Sep 03 14:44:54 2008 +0000 @@ -22,7 +22,7 @@ #define AVFORMAT_AVFORMAT_H #define LIBAVFORMAT_VERSION_MAJOR 52 -#define LIBAVFORMAT_VERSION_MINOR 21 +#define LIBAVFORMAT_VERSION_MINOR 22 #define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ @@ -78,6 +78,21 @@ void (*destruct)(struct AVPacket *); void *priv; int64_t pos; ///< byte position in stream, -1 if unknown + + /** + * This is the time difference in stream timebase units from the pts at which + * the output from the decoder has converged independent from the availability + * of previous frames (that is the frames are virtually identical no matter + * if decoding started from the very first frame or from this keyframe). + * is AV_NOPTS_VALUE if unknown. + * + * The purpose of this field is to allow seeking in streams that have no + * keyframes in the conventional sense. It corresponds to the + * recovery point SEI in H.264 and match_time_delta in nut. It also is + * essential for some types of subtitle streams to ensure that all + * subtitles are correctly displayed after seeking. + */ + int64_t convergence_duration; } AVPacket; #define PKT_FLAG_KEY 0x0001 diff -r ed2a8a769982 -r 3f4d2a22bd1b utils.c --- a/utils.c Wed Sep 03 14:02:17 2008 +0000 +++ b/utils.c Wed Sep 03 14:44:54 2008 +0000 @@ -251,6 +251,7 @@ pkt->dts = AV_NOPTS_VALUE; pkt->pos = -1; pkt->duration = 0; + pkt->convergence_duration = 0; pkt->flags = 0; pkt->stream_index = 0; pkt->destruct= av_destruct_packet_nofree;