forked from FFmpeg/FFmpeg
FFplay : Implement custom reget_buffer for the input filter.
Originally committed as revision 23287 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
612dc0238a
commit
12bd3c1f99
1 changed files with 20 additions and 0 deletions
20
ffplay.c
20
ffplay.c
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue