aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Pau Monné <roger.pau@entel.upc.edu>2011-04-16 10:09:15 +0200
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2011-04-16 10:09:15 +0200
commit09a1416db78f49fb3a39cdf5a4bd0f5c5f849ce0 (patch)
treec792cb3d3b70186fa4cf03537affaf572f1bab4b
parentd3b379b95b0da8e4d612a9a1987ba6fd8f2bd8bf (diff)
downloadffmpeg-09a1416db78f49fb3a39cdf5a4bd0f5c5f849ce0.tar.gz
Add key_frame and pict_type to AVFilterBufferRefVideo.
-rw-r--r--cmdutils.c2
-rw-r--r--libavfilter/avfilter.h4
-rw-r--r--libavfilter/vsrc_buffer.c4
3 files changed, 9 insertions, 1 deletions
diff --git a/cmdutils.c b/cmdutils.c
index 5b7b508765..aa30962094 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -827,6 +827,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/libavfilter/avfilter.h b/libavfilter/avfilter.h
index f270a370da..16c761ad52 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -26,7 +26,7 @@
#include "libavutil/samplefmt.h"
#define LIBAVFILTER_VERSION_MAJOR 1
-#define LIBAVFILTER_VERSION_MINOR 78
+#define LIBAVFILTER_VERSION_MINOR 79
#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 d02b13a4b8..54ee77788d 100644
--- a/libavfilter/vsrc_buffer.c
+++ b/libavfilter/vsrc_buffer.c
@@ -93,6 +93,8 @@ int av_vsrc_buffer_add_frame2(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;
@@ -182,6 +184,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);