From 10d39405fa82473367e1ba1ed3c4ecbeca2a7986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Date: Sat, 16 Apr 2011 10:09:15 +0200 Subject: [PATCH] lavfi: add key_frame and pict_type to AVFilterBufferRefVideo. Signed-off-by: Anton Khirnov --- cmdutils.c | 2 ++ doc/APIchanges | 3 +++ libavfilter/avfilter.h | 4 +++- libavfilter/vsrc_buffer.c | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/cmdutils.c b/cmdutils.c index d15aba0635..9da07223f5 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -922,6 +922,8 @@ int get_filtered_video_frame(AVFilterContext *ctx, AVFrame *frame, memcpy(frame->linesize, picref->linesize, sizeof(frame->linesize)); frame->interlaced_frame = picref->video->interlaced; frame->top_field_first = picref->video->top_field_first; + frame->key_frame = picref->video->key_frame; + frame->pict_type = picref->video->pict_type; return 1; } diff --git a/doc/APIchanges b/doc/APIchanges index 6347233dc4..3c20e91b4c 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2011-04-18 API changes, most recent first: +2011-04-xx - xxxxxx - lavfi 2.3.0 - avfilter.h + Add pict_type and key_frame fields to AVFilterBufferRefVideo. + 2011-04-xx - xxxxxx - lavfi 2.2.0 - vsrc_buffer Add sample_aspect_ratio fields to vsrc_buffer arguments diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index a1eff6e739..cbc0238aa3 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -26,7 +26,7 @@ #include "libavutil/samplefmt.h" #define LIBAVFILTER_VERSION_MAJOR 2 -#define LIBAVFILTER_VERSION_MINOR 2 +#define LIBAVFILTER_VERSION_MINOR 3 #define LIBAVFILTER_VERSION_MICRO 0 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ @@ -115,6 +115,8 @@ typedef struct AVFilterBufferRefVideoProps { AVRational pixel_aspect; ///< pixel aspect ratio int interlaced; ///< is frame interlaced int top_field_first; ///< field order + int pict_type; ///< Picture type of the frame + int key_frame; ///< 1 -> keyframe, 0-> not } AVFilterBufferRefVideoProps; /** diff --git a/libavfilter/vsrc_buffer.c b/libavfilter/vsrc_buffer.c index dea41de721..6567279667 100644 --- a/libavfilter/vsrc_buffer.c +++ b/libavfilter/vsrc_buffer.c @@ -54,6 +54,8 @@ int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, memcpy(c->frame.linesize, frame->linesize, sizeof(frame->linesize)); c->frame.interlaced_frame= frame->interlaced_frame; c->frame.top_field_first = frame->top_field_first; + c->frame.key_frame = frame->key_frame; + c->frame.pict_type = frame->pict_type; c->pts = pts; c->pixel_aspect = pixel_aspect; c->has_frame = 1; @@ -133,6 +135,8 @@ static int request_frame(AVFilterLink *link) picref->video->pixel_aspect = c->pixel_aspect; picref->video->interlaced = c->frame.interlaced_frame; picref->video->top_field_first = c->frame.top_field_first; + picref->video->key_frame = c->frame.key_frame; + picref->video->pict_type = c->frame.pict_type; avfilter_start_frame(link, avfilter_ref_buffer(picref, ~0)); avfilter_draw_slice(link, 0, link->h, 1); avfilter_end_frame(link);