From 7fa1f02ce2661af167dea6775d67eaa9891bc506 Mon Sep 17 00:00:00 2001 From: JULIAN GARDNER Date: Sat, 15 Oct 2011 20:28:51 +0200 Subject: [PATCH] dvbsub: Move setting of *dvb_encode_rle() up Signed-off-by: Michael Niedermayer --- libavcodec/dvbsub.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/libavcodec/dvbsub.c b/libavcodec/dvbsub.c index 2df8b58021..89615e63f0 100644 --- a/libavcodec/dvbsub.c +++ b/libavcodec/dvbsub.c @@ -321,14 +321,17 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, if (!s->hide_state) { for (object_id = 0; object_id < h->num_rects; object_id++) { - /* Object Data segment */ + void (*dvb_encode_rle)(uint8_t **pq, + const uint8_t *bitmap, int linesize, + int w, int h); + /* bpp_index maths */ if (h->rects[object_id]->nb_colors <= 4) { /* 2 bpp, some decoders do not support it correctly */ - bpp_index = 0; + dvb_encode_rle = dvb_encode_rle2; } else if (h->rects[object_id]->nb_colors <= 16) { /* 4 bpp, standard encoding */ - bpp_index = 1; + dvb_encode_rle = dvb_encode_rle4; } else { return -1; } @@ -345,19 +348,12 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s, non_modifying_color_flag */ { uint8_t *ptop_field_len, *pbottom_field_len, *top_ptr, *bottom_ptr; - void (*dvb_encode_rle)(uint8_t **pq, - const uint8_t *bitmap, int linesize, - int w, int h); + ptop_field_len = q; q += 2; pbottom_field_len = q; q += 2; - if (bpp_index == 0) - dvb_encode_rle = dvb_encode_rle2; - else - dvb_encode_rle = dvb_encode_rle4; - top_ptr = q; dvb_encode_rle(&q, h->rects[object_id]->pict.data[0], h->rects[object_id]->w * 2, h->rects[object_id]->w, h->rects[object_id]->h >> 1);