* to detect the first packet in a subtitle. The first packet
* seems to have a valid PTS while later packets for the same
* image don't. */
- if( p_sys->i_state == SUBTITLE_BLOCK_EMPTY && p_block->i_pts == 0 )
+ if( p_sys->i_state == SUBTITLE_BLOCK_EMPTY && p_block->i_pts <= VLC_TS_INVALID )
{
msg_Warn( p_dec, "first packet expected but no PTS present");
return NULL;
int i;
/* Allocate the subpicture internal data. */
- p_spu = decoder_NewSubpicture( p_dec );
+ p_spu = decoder_NewSubpicture( p_dec, NULL );
if( !p_spu ) return NULL;
p_spu->i_start = p_data->i_pts;
/* Create new SPU region */
memset( &fmt, 0, sizeof(video_format_t) );
fmt.i_chroma = VLC_CODEC_YUVP;
- fmt.i_aspect = VOUT_ASPECT_FACTOR;
+ fmt.i_sar_num = 1;
+ fmt.i_sar_den = 1;
fmt.i_width = fmt.i_visible_width = p_sys->i_width;
fmt.i_height = fmt.i_visible_height = p_sys->i_height;
fmt.i_x_offset = fmt.i_y_offset = 0;
int i_field; /* The subtitles are interlaced */
int i_row, i_column; /* scanline row/column number */
uint8_t i_color, i_count;
- bsw_t bsw;
+ bs_t bs;
- bsw_init_writable( &bsw, p_data->p_buffer + p_sys->i_image_offset,
+ bs_init( &bs, p_data->p_buffer + p_sys->i_image_offset,
p_data->i_buffer - p_sys->i_image_offset );
for( i_field = 0; i_field < 2; i_field++ )
{
for( i_column = 0; i_column < p_sys->i_width; i_column++ )
{
- uint8_t i_val = bsw_read( &bsw, 4 );
+ uint8_t i_val = bs_read( &bs, 4 );
if( i_val == 0 )
{
/* Fill the rest of the line with next color */
- i_color = bsw_read( &bsw, 4 );
+ i_color = bs_read( &bs, 4 );
memset( &p_dest[i_row * p_region->p_picture->Y_PITCH +
i_column], i_color,
}
}
- bsw_align( &bsw );
+ bs_align( &bs );
}
}
}