mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-04 06:08:26 +02:00
vp8: force reallocation in update_thread_context after frame size change
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
This commit is contained in:
parent
f05c2fb6eb
commit
5653579381
@ -33,6 +33,19 @@
|
|||||||
# include "arm/vp8.h"
|
# include "arm/vp8.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void free_buffers(VP8Context *s)
|
||||||
|
{
|
||||||
|
av_freep(&s->macroblocks_base);
|
||||||
|
av_freep(&s->filter_strength);
|
||||||
|
av_freep(&s->intra4x4_pred_mode_top);
|
||||||
|
av_freep(&s->top_nnz);
|
||||||
|
av_freep(&s->edge_emu_buffer);
|
||||||
|
av_freep(&s->top_border);
|
||||||
|
av_freep(&s->segmentation_map);
|
||||||
|
|
||||||
|
s->macroblocks = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static void vp8_decode_flush(AVCodecContext *avctx)
|
static void vp8_decode_flush(AVCodecContext *avctx)
|
||||||
{
|
{
|
||||||
VP8Context *s = avctx->priv_data;
|
VP8Context *s = avctx->priv_data;
|
||||||
@ -45,15 +58,7 @@ static void vp8_decode_flush(AVCodecContext *avctx)
|
|||||||
}
|
}
|
||||||
memset(s->framep, 0, sizeof(s->framep));
|
memset(s->framep, 0, sizeof(s->framep));
|
||||||
|
|
||||||
av_freep(&s->macroblocks_base);
|
free_buffers(s);
|
||||||
av_freep(&s->filter_strength);
|
|
||||||
av_freep(&s->intra4x4_pred_mode_top);
|
|
||||||
av_freep(&s->top_nnz);
|
|
||||||
av_freep(&s->edge_emu_buffer);
|
|
||||||
av_freep(&s->top_border);
|
|
||||||
av_freep(&s->segmentation_map);
|
|
||||||
|
|
||||||
s->macroblocks = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int update_dimensions(VP8Context *s, int width, int height)
|
static int update_dimensions(VP8Context *s, int width, int height)
|
||||||
@ -1750,6 +1755,11 @@ static int vp8_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo
|
|||||||
{
|
{
|
||||||
VP8Context *s = dst->priv_data, *s_src = src->priv_data;
|
VP8Context *s = dst->priv_data, *s_src = src->priv_data;
|
||||||
|
|
||||||
|
if (s->macroblocks_base &&
|
||||||
|
(s_src->mb_width != s->mb_width || s_src->mb_height != s->mb_height)) {
|
||||||
|
free_buffers(s);
|
||||||
|
}
|
||||||
|
|
||||||
s->prob[0] = s_src->prob[!s_src->update_probabilities];
|
s->prob[0] = s_src->prob[!s_src->update_probabilities];
|
||||||
s->segmentation = s_src->segmentation;
|
s->segmentation = s_src->segmentation;
|
||||||
s->lf_delta = s_src->lf_delta;
|
s->lf_delta = s_src->lf_delta;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user