diff options
author | Clément Bœsch <u@pkh.me> | 2013-09-29 22:10:35 +0200 |
---|---|---|
committer | Clément Bœsch <u@pkh.me> | 2013-10-04 07:59:48 +0200 |
commit | 41fd6f07961be91507664103386678cb6e50911b (patch) | |
tree | 60ca41b275d7d132cdc18bbdddd7660c30e1ba49 | |
parent | c7fe2a3733ba37c470f5d98622ad532bce91a6e9 (diff) | |
download | ffmpeg-41fd6f07961be91507664103386678cb6e50911b.tar.gz |
avcodec/dvdsubdec: factor out rectangles reset.
-rw-r--r-- | libavcodec/dvdsubdec.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index 19c31dc3c7..83ed27e9c8 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -184,6 +184,21 @@ static void guess_palette(DVDSubContext* ctx, } } +static void reset_rects(AVSubtitle *sub_header) +{ + int i; + + if (sub_header->rects != NULL) { + for (i = 0; i < sub_header->num_rects; i++) { + av_freep(&sub_header->rects[i]->pict.data[0]); + av_freep(&sub_header->rects[i]->pict.data[1]); + av_freep(&sub_header->rects[i]); + } + av_freep(&sub_header->rects); + sub_header->num_rects = 0; + } +} + #define READ_OFFSET(a) (big_offsets ? AV_RB32(a) : AV_RB16(a)) static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, @@ -324,15 +339,7 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, if (h < 0) h = 0; if (w > 0 && h > 0) { - if (sub_header->rects != NULL) { - for (i = 0; i < sub_header->num_rects; i++) { - av_freep(&sub_header->rects[i]->pict.data[0]); - av_freep(&sub_header->rects[i]->pict.data[1]); - av_freep(&sub_header->rects[i]); - } - av_freep(&sub_header->rects); - sub_header->num_rects = 0; - } + reset_rects(sub_header); bitmap = av_malloc(w * h); sub_header->rects = av_mallocz(sizeof(*sub_header->rects)); @@ -374,15 +381,7 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, if (sub_header->num_rects > 0) return is_menu; fail: - if (sub_header->rects != NULL) { - for (i = 0; i < sub_header->num_rects; i++) { - av_freep(&sub_header->rects[i]->pict.data[0]); - av_freep(&sub_header->rects[i]->pict.data[1]); - av_freep(&sub_header->rects[i]); - } - av_freep(&sub_header->rects); - sub_header->num_rects = 0; - } + reset_rects(sub_header); return -1; } |