mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
subsusf: directly fill spu->p_region in ParseUSFString()
This commit is contained in:
parent
e21ecd8c6a
commit
657aee0a53
@ -104,7 +104,7 @@ static int ParseImageAttachments( decoder_t *p_dec );
|
|||||||
|
|
||||||
static subpicture_t *ParseText ( decoder_t *, block_t * );
|
static subpicture_t *ParseText ( decoder_t *, block_t * );
|
||||||
static void ParseUSFHeader( decoder_t * );
|
static void ParseUSFHeader( decoder_t * );
|
||||||
static subpicture_region_t *ParseUSFString( decoder_t *, char * );
|
static void ParseUSFString( decoder_t *, char *, subpicture_region_t ** );
|
||||||
static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec, const char *psz_filename, int i_transparent_color );
|
static subpicture_region_t *LoadEmbeddedImage( decoder_t *p_dec, const char *psz_filename, int i_transparent_color );
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -258,7 +258,7 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Decode USF strings */
|
/* Decode USF strings */
|
||||||
p_spu->p_region = ParseUSFString( p_dec, psz_subtitle );
|
ParseUSFString( p_dec, psz_subtitle, &p_spu->p_region );
|
||||||
|
|
||||||
p_spu->i_start = p_block->i_pts;
|
p_spu->i_start = p_block->i_pts;
|
||||||
p_spu->i_stop = p_block->i_pts + p_block->i_length;
|
p_spu->i_stop = p_block->i_pts + p_block->i_length;
|
||||||
@ -805,12 +805,13 @@ static void ParseUSFHeaderTags( decoder_t *p_dec, xml_reader_t *p_xml_reader )
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static subpicture_region_t *ParseUSFString( decoder_t *p_dec,
|
static void ParseUSFString( decoder_t *p_dec,
|
||||||
char *psz_subtitle )
|
char *psz_subtitle,
|
||||||
|
subpicture_region_t **regions )
|
||||||
{
|
{
|
||||||
decoder_sys_t *p_sys = p_dec->p_sys;
|
decoder_sys_t *p_sys = p_dec->p_sys;
|
||||||
subpicture_region_t *p_region_first = NULL;
|
*regions = NULL;
|
||||||
subpicture_region_t *p_region_upto = p_region_first;
|
subpicture_region_t *p_region_upto = NULL;
|
||||||
|
|
||||||
while( *psz_subtitle )
|
while( *psz_subtitle )
|
||||||
{
|
{
|
||||||
@ -842,14 +843,14 @@ static subpicture_region_t *ParseUSFString( decoder_t *p_dec,
|
|||||||
p_sys->i_align );
|
p_sys->i_align );
|
||||||
if( p_text_region )
|
if( p_text_region )
|
||||||
{
|
{
|
||||||
if( !p_region_first )
|
if( *regions == NULL)
|
||||||
{
|
{
|
||||||
p_region_first = p_region_upto = p_text_region;
|
*regions = p_region_upto = p_text_region;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p_region_upto->p_next = p_text_region;
|
p_region_upto->p_next = p_text_region;
|
||||||
p_region_upto = p_region_upto->p_next;
|
p_region_upto = p_text_region;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else free( psz_flat );
|
else free( psz_flat );
|
||||||
@ -901,16 +902,15 @@ static subpicture_region_t *ParseUSFString( decoder_t *p_dec,
|
|||||||
{
|
{
|
||||||
SetupPositions( p_image_region, psz_subtitle );
|
SetupPositions( p_image_region, psz_subtitle );
|
||||||
|
|
||||||
p_image_region->p_next = NULL;
|
if( *regions == NULL)
|
||||||
}
|
{
|
||||||
if( !p_region_first )
|
*regions = p_region_upto = p_image_region;
|
||||||
{
|
}
|
||||||
p_region_first = p_region_upto = p_image_region;
|
else
|
||||||
}
|
{
|
||||||
else if( p_image_region )
|
p_region_upto->p_next = p_image_region;
|
||||||
{
|
p_region_upto = p_image_region;
|
||||||
p_region_upto->p_next = p_image_region;
|
}
|
||||||
p_region_upto = p_region_upto->p_next;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -928,14 +928,14 @@ static subpicture_region_t *ParseUSFString( decoder_t *p_dec,
|
|||||||
p_sys->i_align );
|
p_sys->i_align );
|
||||||
if( p_text_region )
|
if( p_text_region )
|
||||||
{
|
{
|
||||||
if( !p_region_first )
|
if( *regions == NULL)
|
||||||
{
|
{
|
||||||
p_region_first = p_region_upto = p_text_region;
|
*regions = p_region_upto = p_text_region;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p_region_upto->p_next = p_text_region;
|
p_region_upto->p_next = p_text_region;
|
||||||
p_region_upto = p_region_upto->p_next;
|
p_region_upto = p_text_region;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else free( psz_flat );
|
else free( psz_flat );
|
||||||
@ -949,8 +949,6 @@ static subpicture_region_t *ParseUSFString( decoder_t *p_dec,
|
|||||||
|
|
||||||
psz_subtitle++;
|
psz_subtitle++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return p_region_first;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user