#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
#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;
}
}
-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;
subpicture_region_t *p_bitmap_region = NULL;
int ret;
video_format_t fmt;
+ video_format_t palette;
kate_tracker kin;
bool tracker_valid = false;
/* 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;
#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');
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);
}
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;
}
{
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;
}
{
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 )