Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/multimedia/aribb24/files/patch-src_drcs.c
16461 views
1
https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a09
2
https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a8
3
--- src/drcs.c.orig 2019-09-16 15:57:19 UTC
4
+++ src/drcs.c
5
@@ -127,32 +127,39 @@ static bool create_arib_datadir( arib_instance_t *p_in
6
7
bool apply_drcs_conversion_table( arib_instance_t *p_instance )
8
{
9
- for( int i = 0; i < p_instance->p->i_drcs_num; i++ )
10
+ for( int i = 0; i < 15; i++ )
11
{
12
- unsigned int uc = 0;
13
- drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;
14
- while( p_drcs_conv != NULL )
15
+ for( int j = 0; j < p_instance->p->i_drcs_num[i]; j++ )
16
{
17
- if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i] ) == 0 )
18
+ if (p_instance->p->drcs_hash_table[i][j][0] != 0)
19
{
20
- uc = p_drcs_conv->code;
21
- break;
22
- }
23
- p_drcs_conv = p_drcs_conv->p_next;
24
- }
25
+ unsigned int uc = 0;
26
+ drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;
27
+ while( p_drcs_conv != NULL )
28
+ {
29
+ if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i][j] ) == 0 )
30
+ {
31
+ uc = p_drcs_conv->code;
32
+ break;
33
+ }
34
+ p_drcs_conv = p_drcs_conv->p_next;
35
+ }
36
+
37
#ifdef DEBUG_ARIBSUB
38
- if( uc )
39
- {
40
- arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",
41
- p_instance->p->drcs_hash_table[i], uc );
42
- }
43
- else
44
- {
45
- arib_log( p_instance, "Mapping for hash[%s] is not found.",
46
- p_instance->p->drcs_hash_table[i] );
47
- }
48
+ if( uc )
49
+ {
50
+ arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",
51
+ p_instance->p->drcs_hash_table[i][j], uc );
52
+ }
53
+ else
54
+ {
55
+ arib_log( p_instance, "Mapping for hash[%s] is not found.",
56
+ p_instance->p->drcs_hash_table[i][j] );
57
+ }
58
#endif
59
- p_instance->p->drcs_conv_table[i] = uc;
60
+ p_instance->p->drcs_conv_table[i][j] = uc;
61
+ }
62
+ }
63
}
64
return true;
65
}
66
@@ -406,15 +413,19 @@ png_create_write_struct_failed:
67
void save_drcs_pattern(
68
arib_instance_t *p_instance,
69
int i_width, int i_height,
70
- int i_depth, const int8_t* p_patternData )
71
+ int i_depth, const int8_t* p_patternData,
72
+ int16_t i_CharacterCode )
73
{
74
+ int i_drcsPlane = ((i_CharacterCode >> 8) & 0xff) - 0x40;
75
+ int i_code = (i_CharacterCode & 0xff) - 0x20;
76
char* psz_hash = get_drcs_pattern_data_hash( p_instance,
77
i_width, i_height, i_depth, p_patternData );
78
79
- strncpy( p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num], psz_hash, 32 );
80
- p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num][32] = '\0';
81
+ strncpy( p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1], psz_hash, 32 );
82
+ p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1][32] = '\0';
83
84
- p_instance->p->i_drcs_num++;
85
+ p_instance->p->i_drcs_num[i_drcsPlane-1] = i_code > p_instance->p->i_drcs_num[i_drcsPlane-1] ?
86
+ i_code : p_instance->p->i_drcs_num[i_drcsPlane-1];
87
88
save_drcs_pattern_data_image( p_instance, psz_hash,
89
i_width, i_height, i_depth, p_patternData );
90
91