mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-21 23:10:13 +00:00
vp3: use FF_BUFFER_TYPE_COPY
Originally committed as revision 22359 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
e72d2d1221
commit
0c9afacbf5
@ -1889,8 +1889,7 @@ static int vp3_decode_frame(AVCodecContext *avctx,
|
|||||||
|
|
||||||
/* release the last frame, if it is allocated and if it is not the
|
/* release the last frame, if it is allocated and if it is not the
|
||||||
* golden frame */
|
* golden frame */
|
||||||
if ((s->last_frame.data[0]) &&
|
if (s->last_frame.data[0] && s->last_frame.type != FF_BUFFER_TYPE_COPY)
|
||||||
(s->last_frame.data[0] != s->golden_frame.data[0]))
|
|
||||||
avctx->release_buffer(avctx, &s->last_frame);
|
avctx->release_buffer(avctx, &s->last_frame);
|
||||||
|
|
||||||
/* shuffle frames (last = current) */
|
/* shuffle frames (last = current) */
|
||||||
@ -1900,6 +1899,7 @@ static int vp3_decode_frame(AVCodecContext *avctx,
|
|||||||
if (s->golden_frame.data[0])
|
if (s->golden_frame.data[0])
|
||||||
avctx->release_buffer(avctx, &s->golden_frame);
|
avctx->release_buffer(avctx, &s->golden_frame);
|
||||||
s->golden_frame = s->current_frame;
|
s->golden_frame = s->current_frame;
|
||||||
|
s->last_frame.type = FF_BUFFER_TYPE_COPY;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->current_frame.data[0]= NULL; /* ensure that we catch any access to this released frame */
|
s->current_frame.data[0]= NULL; /* ensure that we catch any access to this released frame */
|
||||||
@ -1941,9 +1941,9 @@ static av_cold int vp3_decode_end(AVCodecContext *avctx)
|
|||||||
free_vlc(&s->motion_vector_vlc);
|
free_vlc(&s->motion_vector_vlc);
|
||||||
|
|
||||||
/* release all frames */
|
/* release all frames */
|
||||||
if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0])
|
if (s->golden_frame.data[0])
|
||||||
avctx->release_buffer(avctx, &s->golden_frame);
|
avctx->release_buffer(avctx, &s->golden_frame);
|
||||||
if (s->last_frame.data[0])
|
if (s->last_frame.data[0] && s->last_frame.type != FF_BUFFER_TYPE_COPY)
|
||||||
avctx->release_buffer(avctx, &s->last_frame);
|
avctx->release_buffer(avctx, &s->last_frame);
|
||||||
/* no need to release the current_frame since it will always be pointing
|
/* no need to release the current_frame since it will always be pointing
|
||||||
* to the same frame as either the golden or last frame */
|
* to the same frame as either the golden or last frame */
|
||||||
|
Loading…
Reference in New Issue
Block a user