patch by Zdenek Kabelac, zdenek d kabelac a gmail d com Originally committed as revision 11608 to svn://svn.ffmpeg.org/ffmpeg/trunktags/v0.5
| @@ -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, | ||||
| }; | }; | ||||