X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcodec%2Fdvbsub.c;h=b0ef809dce7d62bc91e5aa92d2c6069278886c53;hb=20c15610261c4a61d6f5408653124ec23f622c37;hp=432f9b0bb18ee300080af6a30a1fc8648cae7492;hpb=f98a66cea0e6279975e5f5a6116bf3e9389ec5da;p=vlc diff --git a/modules/codec/dvbsub.c b/modules/codec/dvbsub.c index 432f9b0bb1..b0ef809dce 100644 --- a/modules/codec/dvbsub.c +++ b/modules/codec/dvbsub.c @@ -3,7 +3,7 @@ * DVB subtitles encoder (developed for Anevia, www.anevia.com) ***************************************************************************** * Copyright (C) 2003 ANEVIA - * Copyright (C) 2003-2009 the VideoLAN team + * Copyright (C) 2003-2009 VLC authors and VideoLAN * $Id$ * * Authors: Gildas Bazin @@ -13,19 +13,19 @@ * Derk-Jan Hartman * Simon Hailes * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** @@ -109,15 +109,17 @@ static int Open ( vlc_object_t * ); static void Close( vlc_object_t * ); static subpicture_t *Decode( decoder_t *, block_t ** ); +#ifdef ENABLE_SOUT static int OpenEncoder ( vlc_object_t * ); static void CloseEncoder( vlc_object_t * ); static block_t *Encode ( encoder_t *, subpicture_t * ); +#endif vlc_module_begin () # define DVBSUB_CFG_PREFIX "dvbsub-" set_description( N_("DVB subtitles decoder") ) set_shortname( N_("DVB subtitles") ) - set_capability( "decoder", 50 ) + set_capability( "decoder", 80 ) set_category( CAT_INPUT ) set_subcategory( SUBCAT_INPUT_SCODEC ) set_callbacks( Open, Close ) @@ -127,6 +129,7 @@ vlc_module_begin () add_integer( DVBSUB_CFG_PREFIX "x", -1, POSX_TEXT, POSX_LONGTEXT, false ) add_integer( DVBSUB_CFG_PREFIX "y", -1, POSY_TEXT, POSY_LONGTEXT, false ) +#ifdef ENABLE_SOUT # define ENC_CFG_PREFIX "sout-dvbsub-" add_submodule () set_description( N_("DVB subtitles encoder") ) @@ -135,7 +138,7 @@ vlc_module_begin () add_integer( ENC_CFG_PREFIX "x", -1, ENC_POSX_TEXT, ENC_POSX_LONGTEXT, false ) add_integer( ENC_CFG_PREFIX "y", -1, ENC_POSY_TEXT, ENC_POSY_LONGTEXT, false ) - add_obsolete_integer( ENC_CFG_PREFIX "timeout" ) /* Suppressed since 0.8.5 */ +#endif vlc_module_end () static const char *const ppsz_enc_options[] = { "x", "y", NULL }; @@ -442,7 +445,7 @@ static subpicture_t *Decode( decoder_t *p_dec, block_t **pp_block ) decode_segment( p_dec, &p_sys->bs ); } - if( bs_read( &p_sys->bs, 8 ) != 0xff ) /* End marker */ + if( ( bs_read( &p_sys->bs, 8 ) & 0x3f ) != 0x3f ) /* End marker */ { msg_Warn( p_dec, "end marker not found (corrupted subtitle ?)" ); block_Release( p_block ); @@ -814,7 +817,7 @@ static void decode_page_composition( decoder_t *p_dec, bs_t *s ) if( p_sys->p_page->i_region_defs == 0 ) return; p_sys->p_page->p_region_defs = - malloc( p_sys->p_page->i_region_defs * sizeof(dvbsub_region_t) ); + malloc( p_sys->p_page->i_region_defs * sizeof(dvbsub_regiondef_t) ); if( p_sys->p_page->p_region_defs ) { for( i = 0; i < p_sys->p_page->i_region_defs; i++ ) @@ -1049,15 +1052,14 @@ static void decode_object( decoder_t *p_dec, bs_t *s ) { decoder_sys_t *p_sys = p_dec->p_sys; dvbsub_region_t *p_region; - int i_segment_length, i_coding_method, i_version, i_id, i; - bool b_non_modify_color; + int i_segment_length, i_coding_method, i_id, i; /* ETSI 300-743 paragraph 7.2.4 * sync_byte, segment_type and page_id have already been processed. */ i_segment_length = bs_read( s, 16 ); i_id = bs_read( s, 16 ); - i_version = bs_read( s, 4 ); + bs_skip( s, 4 ); /* version */ i_coding_method = bs_read( s, 2 ); if( i_coding_method > 1 ) @@ -1087,7 +1089,7 @@ static void decode_object( decoder_t *p_dec, bs_t *s ) msg_Dbg( p_dec, "new object: %i", i_id ); #endif - b_non_modify_color = bs_read( s, 1 ); + bs_skip( s, 1 ); /* non_modify_color */ bs_skip( s, 1 ); /* Reserved */ if( i_coding_method == 0x00 ) @@ -1472,7 +1474,7 @@ static subpicture_t *render( decoder_t *p_dec ) decoder_sys_t *p_sys = p_dec->p_sys; subpicture_t *p_spu; subpicture_region_t **pp_spu_region; - int i, j, i_timeout = 0; + int i, j; int i_base_x; int i_base_y; @@ -1533,8 +1535,6 @@ static subpicture_t *render( decoder_t *p_dec ) video_palette_t palette; int i_pitch; - i_timeout = p_sys->p_page->i_timeout; - p_regiondef = &p_sys->p_page->p_region_defs[i]; /* Find associated region */ @@ -1682,6 +1682,7 @@ struct encoder_sys_t int i_offset_y; }; +#ifdef ENABLE_SOUT static void encode_page_composition( encoder_t *, bs_t *, subpicture_t * ); static void encode_clut( encoder_t *, bs_t *, subpicture_t * ); static void encode_region_composition( encoder_t *, bs_t *, subpicture_t * ); @@ -1992,7 +1993,7 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_subpic ) #ifdef DEBUG_DVBSUB msg_Dbg( p_enc, "encoding subpicture" ); #endif - p_block = block_New( p_enc, 64000 ); + p_block = block_Alloc( 64000 ); bs_init( s, p_block->p_buffer, p_block->i_buffer ); bs_write( s, 8, 0x20 ); /* Data identifier */ @@ -2019,7 +2020,7 @@ static block_t *Encode( encoder_t *p_enc, subpicture_t *p_subpic ) p_block->i_length = p_subpic->i_stop - p_subpic->i_start; /* Send another (empty) subtitle to signal the end of display */ - p_block_stop = block_New( p_enc, 64000 ); + p_block_stop = block_Alloc( 64000 ); bs_init( s, p_block_stop->p_buffer, p_block_stop->i_buffer ); bs_write( s, 8, 0x20 ); /* Data identifier */ bs_write( s, 8, 0x0 ); /* Subtitle stream id */ @@ -2644,6 +2645,7 @@ static void encode_pixel_line_8bp( bs_t *s, subpicture_region_t *p_region, bs_align_0( s ); } +#endif static void default_dds_init( decoder_t * p_dec ) {