X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcodec%2Fkate.c;h=ced41c9cc1396b37a968705befca78d73248703e;hb=b5c81d3d419e117085c569cbb22e3376f7118134;hp=8eece1ebceb85f0a3a7571ea7c37bacdc82c2c41;hpb=be1a50e55c2f4966cc11984efe161eeee963e934;p=vlc diff --git a/modules/codec/kate.c b/modules/codec/kate.c index 8eece1ebce..ced41c9cc1 100644 --- a/modules/codec/kate.c +++ b/modules/codec/kate.c @@ -108,28 +108,28 @@ static void ParseKateComments( decoder_t * ); #endif -vlc_module_begin(); - set_shortname( N_("Kate")); - set_description( N_("Kate text subtitles decoder") ); - set_capability( "decoder", 50 ); - set_callbacks( OpenDecoder, CloseDecoder ); - set_category( CAT_INPUT ); - set_subcategory( SUBCAT_INPUT_SCODEC ); - add_shortcut( "kate" ); +vlc_module_begin () + set_shortname( N_("Kate")) + set_description( N_("Kate text subtitles decoder") ) + set_capability( "decoder", 50 ) + set_callbacks( OpenDecoder, CloseDecoder ) + set_category( CAT_INPUT ) + set_subcategory( SUBCAT_INPUT_SCODEC ) + add_shortcut( "kate" ) #ifdef ENABLE_PACKETIZER - add_submodule(); - set_description( N_("Kate text subtitles packetizer") ); - set_capability( "packetizer", 100 ); - set_callbacks( OpenPacketizer, CloseDecoder ); - add_shortcut( "kate" ); + add_submodule () + set_description( N_("Kate text subtitles packetizer") ) + set_capability( "packetizer", 100 ) + set_callbacks( OpenPacketizer, CloseDecoder ) + add_shortcut( "kate" ) #endif #ifdef ENABLE_FORMATTING add_bool( "kate-formatted", true, NULL, FORMAT_TEXT, FORMAT_LONGTEXT, true ); #endif -vlc_module_end(); +vlc_module_end () /***************************************************************************** * OpenDecoder: probe the decoder and return score @@ -473,7 +473,7 @@ static void GetVideoSize( decoder_t *p_dec, int *w, int *h ) #ifdef ENABLE_BITMAPS -static void CreateBitmap( picture_t *pic, const kate_bitmap *bitmap ) +static void CreateKateBitmap( picture_t *pic, const kate_bitmap *bitmap ) { size_t y; @@ -485,7 +485,7 @@ static void CreateBitmap( picture_t *pic, const kate_bitmap *bitmap ) } } -static void CreatePalette( video_palette_t *fmt_palette, const kate_palette *palette ) +static void CreateKatePalette( video_palette_t *fmt_palette, const kate_palette *palette ) { size_t n; @@ -552,6 +552,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t subpicture_region_t *p_bitmap_region = NULL; int ret; video_format_t fmt; + video_format_t palette; kate_tracker kin; bool tracker_valid = false; @@ -577,15 +578,13 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t /* we have an event */ /* Get a new spu */ - p_spu = p_dec->pf_spu_buffer_new( p_dec ); + p_spu = decoder_NewSubpicture( p_dec ); if( !p_spu ) { msg_Err( p_dec, "Failed to allocate spu buffer" ); return NULL; } - p_spu->b_pausable = true; - /* these may be 0 for "not specified" */ p_spu->i_original_picture_width = p_sys->ki.original_canvas_width; p_spu->i_original_picture_height = p_sys->ki.original_canvas_height; @@ -622,6 +621,7 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t #ifdef ENABLE_BITMAPS if (ev->bitmap && ev->bitmap->type==kate_bitmap_type_paletted && ev->palette) { + /* create a separate region for the bitmap */ memset( &fmt, 0, sizeof(video_format_t) ); fmt.i_chroma = VLC_FOURCC('Y','U','V','P'); @@ -629,20 +629,19 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t fmt.i_width = fmt.i_visible_width = ev->bitmap->width; fmt.i_height = fmt.i_visible_height = ev->bitmap->height; fmt.i_x_offset = fmt.i_y_offset = 0; + fmt.p_palette = &palette; + CreateKatePalette( fmt.p_palette, ev->palette ); - p_bitmap_region = p_spu->pf_create_region( VLC_OBJECT(p_dec), &fmt ); + p_bitmap_region = subpicture_region_New( &fmt ); if( !p_bitmap_region ) { msg_Err( p_dec, "cannot allocate SPU region" ); - p_dec->pf_spu_buffer_del( p_dec, p_spu ); + decoder_DeleteSubpicture( p_dec, p_spu ); return NULL; } - /* create the palette */ - CreatePalette( fmt.p_palette, ev->palette ); - /* create the bitmap */ - CreateBitmap( &p_bitmap_region->picture, ev->bitmap ); + CreateKateBitmap( p_bitmap_region->p_picture, ev->bitmap ); msg_Dbg(p_dec, "Created bitmap, %zux%zu, %zu colors\n", ev->bitmap->width, ev->bitmap->height, ev->palette->ncolors); } @@ -653,11 +652,11 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t fmt.i_aspect = 0; fmt.i_width = fmt.i_height = 0; fmt.i_x_offset = fmt.i_y_offset = 0; - p_spu->p_region = p_spu->pf_create_region( VLC_OBJECT(p_dec), &fmt ); + p_spu->p_region = subpicture_region_New( &fmt ); if( !p_spu->p_region ) { msg_Err( p_dec, "cannot allocate SPU region" ); - p_dec->pf_spu_buffer_del( p_dec, p_spu ); + decoder_DeleteSubpicture( p_dec, p_spu ); return NULL; } @@ -674,17 +673,16 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t { p_bitmap_region->i_align = SUBPICTURE_ALIGN_BOTTOM; } - p_spu->i_x = 0; - p_spu->i_y = 10; + p_spu->p_region->i_x = 0; + p_spu->p_region->i_y = 10; /* override if tracker info present */ if (tracker_valid) { - p_spu->i_flags = 0; if (kin.has.region) { - p_spu->i_x = kin.region_x; - p_spu->i_y = kin.region_y; + p_spu->p_region->i_x = kin.region_x; + p_spu->p_region->i_y = kin.region_y; p_spu->b_absolute = true; } @@ -718,10 +716,7 @@ static void ParseKateComments( decoder_t *p_dec ) { psz_comment = strdup( p_dec->p_sys->kc.user_comments[i] ); if( !psz_comment ) - { - msg_Warn( p_dec, "out of memory" ); break; - } psz_name = psz_comment; psz_value = strchr( psz_comment, '=' ); if( psz_value )