Path: blob/main/multimedia/aribb24/files/patch-src_parser.c
16461 views
https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a091https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a82--- src/parser.c.orig 2019-09-16 15:57:19 UTC3+++ src/parser.c4@@ -79,7 +79,6 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par5uint8_t i_data_unit_parameter,6uint32_t i_data_unit_size )7{8- p_parser->p_instance->p->i_drcs_num = 0;9#ifdef ARIBSUB_GEN_DRCS_DATA10if( p_parser->p_drcs_data != NULL )11{12@@ -119,7 +118,7 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par1314for( int i = 0; i < i_NumberOfCode; i++ )15{16- bs_skip( p_bs, 16 ); /* i_character_code */17+ int16_t i_CharacterCode = bs_read( p_bs, 16 ); /* i_character_code */18p_parser->i_data_unit_size += 2;19uint8_t i_NumberOfFont = bs_read( p_bs, 8 );20p_parser->i_data_unit_size += 1;21@@ -139,7 +138,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par2223for( int j = 0; j < i_NumberOfFont; j++ )24{25+#ifdef ARIBSUB_GEN_DRCS_DATA26+ int8_t i_fontId = bs_read( p_bs, 4 ); /* i_fontID */27+#else28bs_skip( p_bs, 4 ); /* i_fontID */29+#endif //ARUBSUB_GEN_DRCS_DATA30uint8_t i_mode = bs_read( p_bs, 4 );31p_parser->i_data_unit_size += 1;3233@@ -206,18 +209,26 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par3435#ifdef ARIBSUB_GEN_DRCS_DATA36save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,37- p_drcs_pattern_data->p_patternData );38+ p_drcs_pattern_data->p_patternData, i_CharacterCode );39#else40save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,41- p_patternData );42+ p_patternData, i_CharacterCode );43free( p_patternData );44#endif //ARIBSUB_GEN_DRCS_DATA45}46else47{48+#ifdef ARIBSUB_GEN_DRCS_DATA49+ int8_t i_regionX = bs_read( p_bs, 8 ); /* i_regionX */50+#else51bs_skip( p_bs, 8 ); /* i_regionX */52+#endif //ARIBSUB_GEN_DRCS_DATA53p_parser->i_data_unit_size += 1;54+#ifdef ARIBSUB_GEN_DRCS_DATA55+ int8_t i_regionY = bs_read( p_bs, 8 ); /* i_regionY */56+#else57bs_skip( p_bs, 8 ); /* i_regionY */58+#endif //ARIBSUB_GEN_DRCS_DATA59p_parser->i_data_unit_size += 1;60uint16_t i_geometricData_length = bs_read( p_bs, 16 );61p_parser->i_data_unit_size += 2;62@@ -245,7 +256,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par6364for( int k = 0; k < i_geometricData_length ; k++ )65{66+#ifdef ARIBSUB_GEN_DRCS_DATA67+ int8_t i_geometricData = bs_read( p_bs, 8 ); /* i_geometric_data */68+#else69bs_skip( p_bs, 8 ); /* i_geometric_data */70+#endif //ARIBSUB_GEN_DRCS_DATA71p_parser->i_data_unit_size += 1;7273#ifdef ARIBSUB_GEN_DRCS_DATA74@@ -344,6 +359,10 @@ static void parse_caption_management_data( arib_parser75p_parser->i_data_unit_size = 0;76p_parser->i_subtitle_data_size = 0;77p_parser->psz_subtitle_data = NULL;78+ memset(p_parser->p_instance->p->i_drcs_num, 0,79+ sizeof(p_parser->p_instance->p->i_drcs_num));80+ memset(p_parser->p_instance->p->drcs_hash_table, 0,81+ sizeof(p_parser->p_instance->p->drcs_hash_table));82if( i_data_unit_loop_length > 0 )83{84p_parser->psz_subtitle_data = (unsigned char*) calloc(858687