Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F149597146
D33618.1790561216.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
14 KB
Referenced Files
None
Subscribers
None
D33618.1790561216.diff
View Options
Index: multimedia/Makefile
===================================================================
--- multimedia/Makefile
+++ multimedia/Makefile
@@ -8,6 +8,7 @@
SUBDIR += aom
SUBDIR += aravis
SUBDIR += arcan
+ SUBDIR += aribb24
SUBDIR += assimp
SUBDIR += atomicparsley
SUBDIR += audacious
Index: multimedia/aribb24/Makefile
===================================================================
--- /dev/null
+++ multimedia/aribb24/Makefile
@@ -0,0 +1,25 @@
+PORTNAME= aribb24
+DISTVERSION= 1.0.4.20190916
+CATEGORIES= multimedia
+
+MAINTAINER= driesm@FreeBSD.org
+COMMENT= ARIB STD-B24 library
+
+LICENSE= LGPL3
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+LIB_DEPENDS= libpng.so:graphics/png
+
+USES= autoreconf libtool pkgconfig
+USE_GITHUB= yes
+GH_ACCOUNT= jeeb
+GH_TAGNAME= a41b904d66ed991ace32a9827f629db3d438b47b
+USE_LDCONFIG= yes
+
+GNU_CONFIGURE= yes
+
+INSTALL_TARGET= install-strip
+
+OPTIONS_DEFINE= DOCS
+
+.include <bsd.port.mk>
Index: multimedia/aribb24/distinfo
===================================================================
--- /dev/null
+++ multimedia/aribb24/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1640862185
+SHA256 (jeeb-aribb24-1.0.4.20190916-a41b904d66ed991ace32a9827f629db3d438b47b_GH0.tar.gz) = 6254c0241d77b6aebfb4b3faae7c22377a0925203ed73fa24b591f9606d2ab24
+SIZE (jeeb-aribb24-1.0.4.20190916-a41b904d66ed991ace32a9827f629db3d438b47b_GH0.tar.gz) = 47460
Index: multimedia/aribb24/files/patch-src_aribb24__private.h
===================================================================
--- /dev/null
+++ multimedia/aribb24/files/patch-src_aribb24__private.h
@@ -0,0 +1,16 @@
+https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a8
+--- src/aribb24_private.h.orig 2019-09-16 15:57:19 UTC
++++ src/aribb24_private.h
+@@ -35,9 +35,9 @@ struct arib_instance_private_t
+ char *psz_last_error;
+
+ drcs_conversion_t *p_drcs_conv;
+- int i_drcs_num;
+- unsigned int drcs_conv_table[188];
+- char drcs_hash_table[188][32 + 1];
++ int i_drcs_num[15];
++ unsigned int drcs_conv_table[15][188];
++ char drcs_hash_table[15][188][32 + 1];
+ };
+
+ void arib_log( arib_instance_t *, const char *, ... );
Index: multimedia/aribb24/files/patch-src_decoder.c
===================================================================
--- /dev/null
+++ multimedia/aribb24/files/patch-src_decoder.c
@@ -0,0 +1,89 @@
+https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a8
+--- src/decoder.c.orig 2019-09-16 15:57:19 UTC
++++ src/decoder.c
+@@ -82,6 +82,7 @@ struct arib_decoder_t
+ int (*handle_g2)(arib_decoder_t *, int);
+ int (*handle_g3)(arib_decoder_t *, int);
+ int kanji_ku;
++ int drcs_plane;
+
+ int i_control_time;
+
+@@ -448,11 +449,8 @@ static int decoder_handle_drcs( arib_decoder_t *decode
+ {
+ unsigned int uc;
+
+- uc = 0;
+- if( c < decoder->p_instance->p->i_drcs_num )
+- {
+- uc = decoder->p_instance->p->drcs_conv_table[c];
+- }
++ uc = decoder->p_instance->p->drcs_conv_table[decoder->drcs_plane-1][c];
++
+ if( uc == 0 )
+ {
+ /* uc = 0x3000; */ /* WHITESPACE */
+@@ -555,6 +553,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder
+ {
+ int c;
+ int (**handle)(arib_decoder_t *, int);
++ int drcs = 0;
+
+ handle = &decoder->handle_g0;
+ while( decoder_pull( decoder, &c ) != 0 )
+@@ -562,6 +561,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder
+ switch( c )
+ {
+ case 0x20: // DRCS
++ drcs = 1;
+ break;
+ case 0x24:
+ case 0x28:
+@@ -585,12 +585,29 @@ static int decoder_handle_esc( arib_decoder_t *decoder
+ return 1;
+ case 0x39:
+ case 0x3b:
+- case 0x42:
+ *handle = decoder_handle_kanji;
+ return 1;
++ case 0x42:
++ if (drcs==1)
++ {
++ decoder->drcs_plane = c-0x40;
++ *handle = decoder_handle_drcs;
++ }
++ else
++ {
++ *handle = decoder_handle_kanji;
++ }
+ case 0x36:
+ case 0x4a:
+- *handle = decoder_handle_alnum;
++ if (drcs==1)
++ {
++ decoder->drcs_plane = c-0x40;
++ *handle = decoder_handle_drcs;
++ }
++ else
++ {
++ *handle = decoder_handle_alnum;
++ }
+ return 1;
+ case 0x40:
+ case 0x41:
+@@ -608,6 +625,7 @@ static int decoder_handle_esc( arib_decoder_t *decoder
+ case 0x4d:
+ case 0x4e:
+ case 0x4f:
++ decoder->drcs_plane = c-0x40;
+ *handle = decoder_handle_drcs;
+ return 1;
+ case 0x6e: //LS2
+@@ -1401,6 +1419,7 @@ void arib_initialize_decoder( arib_decoder_t* decoder
+ decoder->handle_g2 = decoder_handle_hiragana;
+ decoder->handle_g3 = decoder_handle_katakana;
+ decoder->kanji_ku = -1;
++ decoder->drcs_plane = -1;
+
+ decoder->i_control_time = 0;
+
Index: multimedia/aribb24/files/patch-src_drcs.h
===================================================================
--- /dev/null
+++ multimedia/aribb24/files/patch-src_drcs.h
@@ -0,0 +1,11 @@
+https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a09
+--- src/drcs.h.orig 2019-09-16 15:57:19 UTC
++++ src/drcs.h
+@@ -77,6 +77,6 @@ typedef struct drcs_data_s
+
+ bool apply_drcs_conversion_table( arib_instance_t * );
+ bool load_drcs_conversion_table( arib_instance_t * );
+-void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t* );
++void save_drcs_pattern( arib_instance_t *, int, int, int, const int8_t*, int16_t );
+
+ #endif
Index: multimedia/aribb24/files/patch-src_drcs.c
===================================================================
--- /dev/null
+++ multimedia/aribb24/files/patch-src_drcs.c
@@ -0,0 +1,89 @@
+https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a09
+https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a8
+--- src/drcs.c.orig 2019-09-16 15:57:19 UTC
++++ src/drcs.c
+@@ -127,32 +127,39 @@ static bool create_arib_datadir( arib_instance_t *p_in
+
+ bool apply_drcs_conversion_table( arib_instance_t *p_instance )
+ {
+- for( int i = 0; i < p_instance->p->i_drcs_num; i++ )
++ for( int i = 0; i < 15; i++ )
+ {
+- unsigned int uc = 0;
+- drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;
+- while( p_drcs_conv != NULL )
++ for( int j = 0; j < p_instance->p->i_drcs_num[i]; j++ )
+ {
+- if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i] ) == 0 )
++ if (p_instance->p->drcs_hash_table[i][j][0] != 0)
+ {
+- uc = p_drcs_conv->code;
+- break;
+- }
+- p_drcs_conv = p_drcs_conv->p_next;
+- }
++ unsigned int uc = 0;
++ drcs_conversion_t *p_drcs_conv = p_instance->p->p_drcs_conv;
++ while( p_drcs_conv != NULL )
++ {
++ if( strcmp( p_drcs_conv->hash, p_instance->p->drcs_hash_table[i][j] ) == 0 )
++ {
++ uc = p_drcs_conv->code;
++ break;
++ }
++ p_drcs_conv = p_drcs_conv->p_next;
++ }
++
+ #ifdef DEBUG_ARIBSUB
+- if( uc )
+- {
+- arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",
+- p_instance->p->drcs_hash_table[i], uc );
+- }
+- else
+- {
+- arib_log( p_instance, "Mapping for hash[%s] is not found.",
+- p_instance->p->drcs_hash_table[i] );
+- }
++ if( uc )
++ {
++ arib_log( p_instance, "Mapping [%s=U+%04x] will be used.",
++ p_instance->p->drcs_hash_table[i][j], uc );
++ }
++ else
++ {
++ arib_log( p_instance, "Mapping for hash[%s] is not found.",
++ p_instance->p->drcs_hash_table[i][j] );
++ }
+ #endif
+- p_instance->p->drcs_conv_table[i] = uc;
++ p_instance->p->drcs_conv_table[i][j] = uc;
++ }
++ }
+ }
+ return true;
+ }
+@@ -406,15 +413,19 @@ png_create_write_struct_failed:
+ void save_drcs_pattern(
+ arib_instance_t *p_instance,
+ int i_width, int i_height,
+- int i_depth, const int8_t* p_patternData )
++ int i_depth, const int8_t* p_patternData,
++ int16_t i_CharacterCode )
+ {
++ int i_drcsPlane = ((i_CharacterCode >> 8) & 0xff) - 0x40;
++ int i_code = (i_CharacterCode & 0xff) - 0x20;
+ char* psz_hash = get_drcs_pattern_data_hash( p_instance,
+ i_width, i_height, i_depth, p_patternData );
+
+- strncpy( p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num], psz_hash, 32 );
+- p_instance->p->drcs_hash_table[p_instance->p->i_drcs_num][32] = '\0';
++ strncpy( p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1], psz_hash, 32 );
++ p_instance->p->drcs_hash_table[i_drcsPlane-1][i_code-1][32] = '\0';
+
+- p_instance->p->i_drcs_num++;
++ p_instance->p->i_drcs_num[i_drcsPlane-1] = i_code > p_instance->p->i_drcs_num[i_drcsPlane-1] ?
++ i_code : p_instance->p->i_drcs_num[i_drcsPlane-1];
+
+ save_drcs_pattern_data_image( p_instance, psz_hash,
+ i_width, i_height, i_depth, p_patternData );
Index: multimedia/aribb24/files/patch-src_parser.c
===================================================================
--- /dev/null
+++ multimedia/aribb24/files/patch-src_parser.c
@@ -0,0 +1,85 @@
+https://github.com/scimmia9286/aribb24/commit/58a34b8fabf4d0e9e1984fb603a97f52fb934a09
+https://github.com/scimmia9286/aribb24/commit/fa54dee41aa38560f02868b24f911a24c33780a8
+--- src/parser.c.orig 2019-09-16 15:57:19 UTC
++++ src/parser.c
+@@ -79,7 +79,6 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par
+ uint8_t i_data_unit_parameter,
+ uint32_t i_data_unit_size )
+ {
+- p_parser->p_instance->p->i_drcs_num = 0;
+ #ifdef ARIBSUB_GEN_DRCS_DATA
+ if( p_parser->p_drcs_data != NULL )
+ {
+@@ -119,7 +118,7 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par
+
+ for( int i = 0; i < i_NumberOfCode; i++ )
+ {
+- bs_skip( p_bs, 16 ); /* i_character_code */
++ int16_t i_CharacterCode = bs_read( p_bs, 16 ); /* i_character_code */
+ p_parser->i_data_unit_size += 2;
+ uint8_t i_NumberOfFont = bs_read( p_bs, 8 );
+ p_parser->i_data_unit_size += 1;
+@@ -139,7 +138,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par
+
+ for( int j = 0; j < i_NumberOfFont; j++ )
+ {
++#ifdef ARIBSUB_GEN_DRCS_DATA
++ int8_t i_fontId = bs_read( p_bs, 4 ); /* i_fontID */
++#else
+ bs_skip( p_bs, 4 ); /* i_fontID */
++#endif //ARUBSUB_GEN_DRCS_DATA
+ uint8_t i_mode = bs_read( p_bs, 4 );
+ p_parser->i_data_unit_size += 1;
+
+@@ -206,18 +209,26 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par
+
+ #ifdef ARIBSUB_GEN_DRCS_DATA
+ save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,
+- p_drcs_pattern_data->p_patternData );
++ p_drcs_pattern_data->p_patternData, i_CharacterCode );
+ #else
+ save_drcs_pattern( p_parser->p_instance, i_width, i_height, i_depth + 2,
+- p_patternData );
++ p_patternData, i_CharacterCode );
+ free( p_patternData );
+ #endif //ARIBSUB_GEN_DRCS_DATA
+ }
+ else
+ {
++#ifdef ARIBSUB_GEN_DRCS_DATA
++ int8_t i_regionX = bs_read( p_bs, 8 ); /* i_regionX */
++#else
+ bs_skip( p_bs, 8 ); /* i_regionX */
++#endif //ARIBSUB_GEN_DRCS_DATA
+ p_parser->i_data_unit_size += 1;
++#ifdef ARIBSUB_GEN_DRCS_DATA
++ int8_t i_regionY = bs_read( p_bs, 8 ); /* i_regionY */
++#else
+ bs_skip( p_bs, 8 ); /* i_regionY */
++#endif //ARIBSUB_GEN_DRCS_DATA
+ p_parser->i_data_unit_size += 1;
+ uint16_t i_geometricData_length = bs_read( p_bs, 16 );
+ p_parser->i_data_unit_size += 2;
+@@ -245,7 +256,11 @@ static void parse_data_unit_DRCS( arib_parser_t *p_par
+
+ for( int k = 0; k < i_geometricData_length ; k++ )
+ {
++#ifdef ARIBSUB_GEN_DRCS_DATA
++ int8_t i_geometricData = bs_read( p_bs, 8 ); /* i_geometric_data */
++#else
+ bs_skip( p_bs, 8 ); /* i_geometric_data */
++#endif //ARIBSUB_GEN_DRCS_DATA
+ p_parser->i_data_unit_size += 1;
+
+ #ifdef ARIBSUB_GEN_DRCS_DATA
+@@ -344,6 +359,10 @@ static void parse_caption_management_data( arib_parser
+ p_parser->i_data_unit_size = 0;
+ p_parser->i_subtitle_data_size = 0;
+ p_parser->psz_subtitle_data = NULL;
++ memset(p_parser->p_instance->p->i_drcs_num, 0,
++ sizeof(p_parser->p_instance->p->i_drcs_num));
++ memset(p_parser->p_instance->p->drcs_hash_table, 0,
++ sizeof(p_parser->p_instance->p->drcs_hash_table));
+ if( i_data_unit_loop_length > 0 )
+ {
+ p_parser->psz_subtitle_data = (unsigned char*) calloc(
Index: multimedia/aribb24/pkg-descr
===================================================================
--- /dev/null
+++ multimedia/aribb24/pkg-descr
@@ -0,0 +1,4 @@
+A library for ARIB STD-B24, decoding JIS 8 bit characters
+and parsing MPEG-TS stream.
+
+WWW: https://github.com/nkoriyama/aribb24
Index: multimedia/aribb24/pkg-plist
===================================================================
--- /dev/null
+++ multimedia/aribb24/pkg-plist
@@ -0,0 +1,11 @@
+include/aribb24/aribb24.h
+include/aribb24/bits.h
+include/aribb24/decoder.h
+include/aribb24/parser.h
+lib/libaribb24.a
+lib/libaribb24.so
+lib/libaribb24.so.0
+lib/libaribb24.so.0.0.0
+libdata/pkgconfig/aribb24.pc
+%%PORTDOCS%%%%DOCSDIR%%/COPYING
+%%PORTDOCS%%%%DOCSDIR%%/README.md
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Sep 28, 2:06 AM (1 h, 38 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29951028
Default Alt Text
D33618.1790561216.diff (14 KB)
Attached To
Mode
D33618: multimedia/aribb24: New port
Attached
Detach File
Event Timeline
Log In to Comment