Correctly clean up IntraX8Context upon codec close.
patch by Zdenek Kabelac, zdenek d kabelac a gmail d com Originally committed as revision 11608 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
0f44edaa1c
commit
e2fdba650d
@ -676,6 +676,15 @@ void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s){
|
|||||||
ff_init_scantable(s->dsp.idct_permutation, &w->scantable[2], wmv1_scantable[3]);
|
ff_init_scantable(s->dsp.idct_permutation, &w->scantable[2], wmv1_scantable[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroy IntraX8 frame structure.
|
||||||
|
* @param w pointer to IntraX8Context
|
||||||
|
*/
|
||||||
|
void ff_intrax8_common_end(IntraX8Context * w)
|
||||||
|
{
|
||||||
|
av_freep(&w->prediction_table);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decode single IntraX8 frame.
|
* Decode single IntraX8 frame.
|
||||||
* The parent codec must fill s->loopfilter and s->gb (bitstream).
|
* The parent codec must fill s->loopfilter and s->gb (bitstream).
|
||||||
|
@ -51,6 +51,7 @@ typedef struct{
|
|||||||
} IntraX8Context;
|
} IntraX8Context;
|
||||||
|
|
||||||
void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s);
|
void ff_intrax8_common_init(IntraX8Context * w, MpegEncContext * const s);
|
||||||
|
void ff_intrax8_common_end(IntraX8Context * w);
|
||||||
int ff_intrax8_decode_picture(IntraX8Context * w, int quant, int halfpq);
|
int ff_intrax8_decode_picture(IntraX8Context * w, int quant, int halfpq);
|
||||||
|
|
||||||
#endif /* FFMPEG_INTRAX8_H */
|
#endif /* FFMPEG_INTRAX8_H */
|
||||||
|
@ -4119,6 +4119,7 @@ static int vc1_decode_end(AVCodecContext *avctx)
|
|||||||
av_freep(&v->acpred_plane);
|
av_freep(&v->acpred_plane);
|
||||||
av_freep(&v->over_flags_plane);
|
av_freep(&v->over_flags_plane);
|
||||||
av_freep(&v->mb_type_base);
|
av_freep(&v->mb_type_base);
|
||||||
|
ff_intrax8_common_end(&v->x8);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,6 +474,14 @@ static int wmv2_decode_init(AVCodecContext *avctx){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int wmv2_decode_end(AVCodecContext *avctx)
|
||||||
|
{
|
||||||
|
Wmv2Context *w = avctx->priv_data;
|
||||||
|
|
||||||
|
ff_intrax8_common_end(&w->x8);
|
||||||
|
return ff_h263_decode_end(avctx);
|
||||||
|
}
|
||||||
|
|
||||||
AVCodec wmv2_decoder = {
|
AVCodec wmv2_decoder = {
|
||||||
"wmv2",
|
"wmv2",
|
||||||
CODEC_TYPE_VIDEO,
|
CODEC_TYPE_VIDEO,
|
||||||
@ -481,7 +489,7 @@ AVCodec wmv2_decoder = {
|
|||||||
sizeof(Wmv2Context),
|
sizeof(Wmv2Context),
|
||||||
wmv2_decode_init,
|
wmv2_decode_init,
|
||||||
NULL,
|
NULL,
|
||||||
ff_h263_decode_end,
|
wmv2_decode_end,
|
||||||
ff_h263_decode_frame,
|
ff_h263_decode_frame,
|
||||||
CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1,
|
CODEC_CAP_DRAW_HORIZ_BAND | CODEC_CAP_DR1,
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user