1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

dvbsub: Move setting of *dvb_encode_rle() up

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
JULIAN GARDNER 2011-10-15 20:28:51 +02:00 committed by Michael Niedermayer
parent d5f4857a73
commit 7fa1f02ce2

View File

@ -321,14 +321,17 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s,
if (!s->hide_state) { if (!s->hide_state) {
for (object_id = 0; object_id < h->num_rects; object_id++) { 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) { if (h->rects[object_id]->nb_colors <= 4) {
/* 2 bpp, some decoders do not support it correctly */ /* 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) { } else if (h->rects[object_id]->nb_colors <= 16) {
/* 4 bpp, standard encoding */ /* 4 bpp, standard encoding */
bpp_index = 1; dvb_encode_rle = dvb_encode_rle4;
} else { } else {
return -1; return -1;
} }
@ -345,19 +348,12 @@ static int encode_dvb_subtitles(DVBSubtitleContext *s,
non_modifying_color_flag */ non_modifying_color_flag */
{ {
uint8_t *ptop_field_len, *pbottom_field_len, *top_ptr, *bottom_ptr; 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; ptop_field_len = q;
q += 2; q += 2;
pbottom_field_len = q; pbottom_field_len = q;
q += 2; q += 2;
if (bpp_index == 0)
dvb_encode_rle = dvb_encode_rle2;
else
dvb_encode_rle = dvb_encode_rle4;
top_ptr = q; top_ptr = q;
dvb_encode_rle(&q, h->rects[object_id]->pict.data[0], h->rects[object_id]->w * 2, 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); h->rects[object_id]->w, h->rects[object_id]->h >> 1);