Path: blob/main/multimedia/aribb24/files/patch-src_drcs.c
16461 views
https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a091https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a82--- src/drcs.c.orig 2019-09-16 15:57:19 UTC3+++ src/drcs.c4@@ -127,32 +127,39 @@ static bool create_arib_datadir( arib_instance_t *p_in56bool apply_drcs_conversion_table( arib_instance_t *p_instance )7{8- for( int i = 0; i < p_instance->p->i_drcs_num; i++ )9+ for( int i = 0; i < 15; i++ )10{11- unsigned int uc = 0;12- drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;13- while( p_drcs_conv != NULL )14+ for( int j = 0; j < p_instance->p->i_drcs_num[i]; j++ )15{16- if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i] ) == 0 )17+ if (p_instance->p->drcs_hash_table[i][j][0] != 0)18{19- uc = p_drcs_conv->code;20- break;21- }22- p_drcs_conv = p_drcs_conv->p_next;23- }24+ unsigned int uc = 0;25+ drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;26+ while( p_drcs_conv != NULL )27+ {28+ if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i][j] ) == 0 )29+ {30+ uc = p_drcs_conv->code;31+ break;32+ }33+ p_drcs_conv = p_drcs_conv->p_next;34+ }35+36#ifdef DEBUG_ARIBSUB37- if( uc )38- {39- arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",40- p_instance->p->drcs_hash_table[i], uc );41- }42- else43- {44- arib_log( p_instance, "Mapping for hash[%s] is not found.",45- p_instance->p->drcs_hash_table[i] );46- }47+ if( uc )48+ {49+ arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",50+ p_instance->p->drcs_hash_table[i][j], uc );51+ }52+ else53+ {54+ arib_log( p_instance, "Mapping for hash[%s] is not found.",55+ p_instance->p->drcs_hash_table[i][j] );56+ }57#endif58- p_instance->p->drcs_conv_table[i] = uc;59+ p_instance->p->drcs_conv_table[i][j] = uc;60+ }61+ }62}63return true;64}65@@ -406,15 +413,19 @@ png_create_write_struct_failed:66void save_drcs_pattern(67arib_instance_t *p_instance,68int i_width, int i_height,69- int i_depth, const int8_t* p_patternData )70+ int i_depth, const int8_t* p_patternData,71+ int16_t i_CharacterCode )72{73+ int i_drcsPlane = ((i_CharacterCode >> 8) & 0xff) - 0x40;74+ int i_code = (i_CharacterCode & 0xff) - 0x20;75char* psz_hash = get_drcs_pattern_data_hash( p_instance,76i_width, i_height, i_depth, p_patternData );7778- strncpy( p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num], psz_hash, 32 );79- p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num][32] = '\0';80+ strncpy( p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1], psz_hash, 32 );81+ p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1][32] = '\0';8283- p_instance->p->i_drcs_num++;84+ p_instance->p->i_drcs_num[i_drcsPlane-1] = i_code > p_instance->p->i_drcs_num[i_drcsPlane-1] ?85+ i_code : p_instance->p->i_drcs_num[i_drcsPlane-1];8687save_drcs_pattern_data_image( p_instance, psz_hash,88i_width, i_height, i_depth, p_patternData );899091