[vlc-devel] [vlc-commits] codec: t140: output merged segments
Rémi Denis-Courmont
remi at remlab.net
Mon Jan 8 13:30:13 CET 2018
Le 8 janvier 2018 19:10:53 GMT+08:00, Francois Cartegnie <git at videolan.org> a écrit :
>vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sun Jan
>7 16:16:35 2018 +0100| [02c0a4d4c43571ddff5d5b8d4f994d676f619630] |
>committer: Francois Cartegnie
>
>codec: t140: output merged segments
>
>>
>http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=02c0a4d4c43571ddff5d5b8d4f994d676f619630
>---
>
> modules/codec/t140.c | 29 +++++++++++++++++++++++++----
> 1 file changed, 25 insertions(+), 4 deletions(-)
>
>diff --git a/modules/codec/t140.c b/modules/codec/t140.c
>index a4f186b1e7..0ffd274774 100644
>--- a/modules/codec/t140.c
>+++ b/modules/codec/t140.c
>@@ -86,7 +86,7 @@ static block_t *Encode( encoder_t *p_enc,
>subpicture_t *p_spu )
>
> subpicture_region_t *p_region;
> block_t *p_block;
>- size_t len;
>+ size_t len = 0;
>
> if( p_spu == NULL )
> return NULL;
>@@ -99,9 +99,30 @@ static block_t *Encode( encoder_t *p_enc,
>subpicture_t *p_spu )
> return NULL;
>
> /* This should already be UTF-8 encoded, so not much effort... */
>- len = strlen( p_region->p_text->psz_text );
>- p_block = block_Alloc( len );
>- memcpy( p_block->p_buffer, p_region->p_text->psz_text, len );
>+ for( const text_segment_t *p_segment = p_region->p_text;
>+ p_segment; p_segment =
>p_segment->p_next )
>+ {
>+ if( p_segment->psz_text == NULL )
>+ continue;
>+ len += strlen( p_segment->psz_text );
>+ }
>+
>+ p_block = block_Alloc( len + 1 );
>+ if( !p_block )
>+ return NULL;
>+
>+ p_block->i_buffer = 0;
>+ for( const text_segment_t *p_segment = p_region->p_text;
>+ p_segment; p_segment =
>p_segment->p_next )
>+ {
>+ if( p_segment->psz_text == NULL )
>+ continue;
>+ len = strlen( p_segment->psz_text );
>+ memcpy( &p_block->p_buffer[p_block->i_buffer],
>+ p_segment->psz_text, len );
>+ p_block->i_buffer += len;
>+ }
>+ p_block->p_buffer[p_block->i_buffer] = 0;
>
> p_block->i_pts = p_block->i_dts = p_spu->i_start;
> if( !p_spu->b_ephemer && ( p_spu->i_stop > p_spu->i_start ) )
>
>_______________________________________________
>vlc-commits mailing list
>vlc-commits at videolan.org
>https://mailman.videolan.org/listinfo/vlc-commits
Why that? IMO, merging T.140 partial payloads is the job of the RTP parser, not the decoder.
--
Remi Denis-Courmont
More information about the vlc-devel
mailing list