[FFmpeg-devel] [libav-devel] [PATCH] qpeg: use reget_buffer() in decode_frame()

Ronald S. Bultje rsbultje at gmail.com
Wed Apr 27 16:39:28 CEST 2011


Hi,

On Wed, Apr 27, 2011 at 10:52 AM, Stefano Sabatini
<stefano.sabatini-lala at poste.it> wrote:
> On date Tuesday 2011-04-26 19:20:46 +0200, Reimar Döffinger encoded:
>> On Tue, Apr 26, 2011 at 11:53:25AM +0200, Stefano Sabatini wrote:
>> > Also remove unnecessary call to avctx->release_buffer(). reget_buffer
>> > is required since apparently the coded needs to be passed the previous
>> > frame data again.
>>
>> If that is correct
>>
>> >      p->reference= 0;
>> > -    if(avctx->get_buffer(avctx, p) < 0){
>> > -        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
>> > +    if (avctx->reget_buffer(avctx, p) < 0) {
>>
>> This can't work.
>> Setting reference=0 means (I think) e.g. it is ok for libavfilter to
>> just draw an OSD directly on the frame instead of making a copy.
>> Or to say it differently: Always using reference = 0 and reget_buffer together
>> make no sense.
>
> So may naive fix is: force reference to 1, so application/libavfilter

That is incorrect. reference=1 means only the top field is referenced.
You need to set reference=3. (Not that it matters, but just to be
correct.)

Ronald


More information about the ffmpeg-devel mailing list