Path: blob/main/multimedia/aribb24/files/patch-src_decoder.c
16461 views
https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a81--- src/decoder.c.orig 2019-09-16 15:57:19 UTC2+++ src/decoder.c3@@ -82,6 +82,7 @@ struct arib_decoder_t4int (*handle_g2)(arib_decoder_t *, int);5int (*handle_g3)(arib_decoder_t *, int);6int kanji_ku;7+ int drcs_plane;89int i_control_time;1011@@ -448,11 +449,8 @@ static int decoder_handle_drcs( arib_decoder_t *decode12{13unsigned int uc;1415- uc = 0;16- if( c < decoder->p_instance->p->i_drcs_num )17- {18- uc = decoder->p_instance->p->drcs_conv_table[c];19- }20+ uc = decoder->p_instance->p->drcs_conv_table[decoder->drcs_plane-1][c];21+22if( uc == 0 )23{24/* uc = 0x3000; */ /* WHITESPACE */25@@ -555,6 +553,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder26{27int c;28int (**handle)(arib_decoder_t *, int);29+ int drcs = 0;3031handle = &decoder->handle_g0;32while( decoder_pull( decoder, &c ) != 0 )33@@ -562,6 +561,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder34switch( c )35{36case 0x20: // DRCS37+ drcs = 1;38break;39case 0x24:40case 0x28:41@@ -585,12 +585,29 @@ static int decoder_handle_esc( arib_decoder_t *decoder42return 1;43case 0x39:44case 0x3b:45- case 0x42:46*handle = decoder_handle_kanji;47return 1;48+ case 0x42:49+ if (drcs==1)50+ {51+ decoder->drcs_plane = c-0x40;52+ *handle = decoder_handle_drcs;53+ }54+ else55+ {56+ *handle = decoder_handle_kanji;57+ }58case 0x36:59case 0x4a:60- *handle = decoder_handle_alnum;61+ if (drcs==1)62+ {63+ decoder->drcs_plane = c-0x40;64+ *handle = decoder_handle_drcs;65+ }66+ else67+ {68+ *handle = decoder_handle_alnum;69+ }70return 1;71case 0x40:72case 0x41:73@@ -608,6 +625,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder74case 0x4d:75case 0x4e:76case 0x4f:77+ decoder->drcs_plane = c-0x40;78*handle = decoder_handle_drcs;79return 1;80case 0x6e: //LS281@@ -1401,6 +1419,7 @@ void arib_initialize_decoder( arib_decoder_t* decoder82decoder->handle_g2 = decoder_handle_hiragana;83decoder->handle_g3 = decoder_handle_katakana;84decoder->kanji_ku = -1;85+ decoder->drcs_plane = -1;8687decoder->i_control_time = 0;88899091