1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Add key_frame to AVCodecParserContext, used in libavformat.

Initialized to -1 in parser.c for backward compatibility.

Patch by Ivan Schreter, schreter gmx net

Originally committed as revision 17442 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Ivan Schreter 2009-02-18 23:46:05 +00:00 committed by Carl Eugen Hoyos
parent 2ea89d9274
commit 6363af44da
4 changed files with 15 additions and 4 deletions

View File

@ -30,7 +30,7 @@
#include "libavutil/avutil.h" #include "libavutil/avutil.h"
#define LIBAVCODEC_VERSION_MAJOR 52 #define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 15 #define LIBAVCODEC_VERSION_MINOR 16
#define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@ -3025,6 +3025,14 @@ typedef struct AVCodecParserContext {
int64_t offset; ///< byte offset from starting packet start int64_t offset; ///< byte offset from starting packet start
int64_t cur_frame_end[AV_PARSER_PTS_NB]; int64_t cur_frame_end[AV_PARSER_PTS_NB];
/*!
* Set by parser to 1 for key frames and 0 for non-key frames.
* It is initialized to -1, so if the parser doesn't set this flag,
* old-style fallback using FF_I_TYPE picture type as key frames
* will be used.
*/
int key_frame;
} AVCodecParserContext; } AVCodecParserContext;
typedef struct AVCodecParser { typedef struct AVCodecParser {

View File

@ -73,6 +73,7 @@ AVCodecParserContext *av_parser_init(int codec_id)
} }
s->fetch_timestamp=1; s->fetch_timestamp=1;
s->pict_type = FF_I_TYPE; s->pict_type = FF_I_TYPE;
s->key_frame = -1;
return s; return s;
} }

View File

@ -23,7 +23,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 52 #define LIBAVFORMAT_VERSION_MAJOR 52
#define LIBAVFORMAT_VERSION_MINOR 29 #define LIBAVFORMAT_VERSION_MINOR 29
#define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_MICRO 1
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \ LIBAVFORMAT_VERSION_MINOR, \

View File

@ -904,8 +904,10 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
else if (pc) { else if (pc) {
pkt->flags = 0; pkt->flags = 0;
/* keyframe computation */ /* keyframe computation */
if (pc->pict_type == FF_I_TYPE) if (pc->key_frame == 1)
pkt->flags |= PKT_FLAG_KEY; pkt->flags |= PKT_FLAG_KEY;
else if (pc->key_frame == -1 && pc->pict_type == FF_I_TYPE)
pkt->flags |= PKT_FLAG_KEY;
} }
} }