diff options
author | Jai Menon <jmenon86@gmail.com> | 2010-05-24 18:19:44 +0400 |
---|---|---|
committer | Jai Menon <jmenon86@gmail.com> | 2010-05-24 18:19:44 +0400 |
commit | 12bd3c1f99f11ea21b32e5720908f258d0c5097a (patch) | |
tree | bb65a7d52452e57ae61264f2b90aaf8301ff1aec /ffplay.c | |
parent | 612dc0238aa2583905aba35601a0160d0f841dd8 (diff) |
FFplay : Implement custom reget_buffer for the input filter.
Originally committed as revision 23287 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffplay.c')
-rw-r--r-- | ffplay.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -1609,6 +1609,25 @@ static void input_release_buffer(AVCodecContext *codec, AVFrame *pic) avfilter_unref_pic(pic->opaque); } +static int input_reget_buffer(AVCodecContext *codec, AVFrame *pic) +{ + AVFilterPicRef *ref = pic->opaque; + + if (pic->data[0] == NULL) { + pic->buffer_hints |= FF_BUFFER_HINTS_READABLE; + return codec->get_buffer(codec, pic); + } + + if ((codec->width != ref->w) || (codec->height != ref->h) || + (codec->pix_fmt != ref->pic->format)) { + av_log(codec, AV_LOG_ERROR, "Picture properties changed.\n"); + return -1; + } + + pic->reordered_opaque = codec->reordered_opaque; + return 0; +} + static int input_init(AVFilterContext *ctx, const char *args, void *opaque) { FilterPriv *priv = ctx->priv; @@ -1622,6 +1641,7 @@ static int input_init(AVFilterContext *ctx, const char *args, void *opaque) priv->use_dr1 = 1; codec->get_buffer = input_get_buffer; codec->release_buffer = input_release_buffer; + codec->reget_buffer = input_reget_buffer; } priv->frame = avcodec_alloc_frame(); |