#include <libzvbi.h>
#include <vlc_codec.h>
-#include <vlc_osd.h>
+#include <vlc_vout_osd.h>
/*****************************************************************************
* Module descriptor.
return VLC_EGENERIC;
p_dec->pf_decode_sub = Decode;
- p_sys = p_dec->p_sys = malloc( sizeof(decoder_sys_t) );
+ p_sys = p_dec->p_sys = calloc( 1, sizeof(decoder_sys_t) );
if( p_sys == NULL )
return VLC_ENOMEM;
- memset( p_sys, 0, sizeof(decoder_sys_t) );
p_sys->i_key[0] = p_sys->i_key[1] = p_sys->i_key[2] = '*' - '0';
p_sys->b_update = false;
/* Create the var on vlc_global. */
p_sys->i_wanted_page = var_CreateGetInteger( p_dec, "vbi-page" );
- var_AddCallback( p_dec, "vbi-page",
- RequestPage, p_sys );
+ var_AddCallback( p_dec, "vbi-page", RequestPage, p_sys );
/* Check if the Teletext track has a known "initial page". */
if( p_sys->i_wanted_page == 100 && p_dec->fmt_in.subs.teletext.i_magazine != -1 )
vbi_page p_page;
const uint8_t *p_pos;
unsigned int i_left;
- int64_t i_pts = 0;
if( (pp_block == NULL) || (*pp_block == NULL) )
return NULL;
{
vbi_sliced p_sliced[MAX_SLICES];
unsigned int i_lines = 0;
+ int64_t i_pts;
i_lines = vbi_dvb_demux_cor( p_sys->p_dvb_demux, p_sliced,
MAX_SLICES, &i_pts, &p_pos, &i_left );
if( i_wanted_page == p_sys->i_last_page && !p_sys->b_update )
goto error;
- i_pts = i_pts ? i_pts : p_block->i_pts;
if( !b_cached )
{
if( p_sys->i_last_page != i_wanted_page )
/* We need to reset the subtitle */
p_spu = Subpicture( p_dec, &fmt, true,
p_page.columns, p_page.rows,
- i_align, i_pts );
+ i_align, p_block->i_pts );
if( !p_spu )
goto error;
p_spu->p_region->psz_text = strdup("");
/* Create the subpicture unit */
p_spu = Subpicture( p_dec, &fmt, p_sys->b_text,
p_page.columns, p_page.rows,
- i_align, i_pts );
+ i_align, p_block->i_pts );
if( !p_spu )
goto error;
/* If there is a page or sub to render, then we do that here */
/* Create the subpicture unit */
- p_spu = decoder_NewSubpicture( p_dec );
+ p_spu = decoder_NewSubpicture( p_dec, NULL );
if( !p_spu )
{
msg_Warn( p_dec, "can't get spu buffer" );
return VLC_SUCCESS;
}
+#include <vlc_vout.h>
+#define OSDMessage(dec, fmt, ...) do { \
+ vout_thread_t *p_vout = vlc_object_find( dec, VLC_OBJECT_VOUT, FIND_ANYWHERE ); \
+ if( p_vout ) { \
+ vout_OSDMessage( p_vout, fmt, __VA_ARGS__ ); \
+ vlc_object_release( p_vout ); \
+ } } while(0)
+
static int EventKey( vlc_object_t *p_this, char const *psz_cmd,
vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
if ( !vbi_bcd_digits_greater( p_sys->i_wanted_subpage, 0x00 ) || vbi_bcd_digits_greater( p_sys->i_wanted_subpage, 0x99 ) )
p_sys->i_wanted_subpage = VBI_ANY_SUBNO;
else
- vout_OSDMessage( p_this, DEFAULT_CHAN, "%s: %d", _("Subpage"), vbi_bcd2dec( p_sys->i_wanted_subpage) );
+ OSDMessage( p_this, SPU_DEFAULT_CHANNEL, "%s: %d", _("Subpage"), vbi_bcd2dec( p_sys->i_wanted_subpage) );
p_sys->b_update = true;
vlc_mutex_unlock( &p_sys->lock );
p_sys->i_key[0] = p_sys->i_key[1];
p_sys->i_key[1] = p_sys->i_key[2];
p_sys->i_key[2] = (int)(newval.i_int - '0');
- vout_OSDMessage( p_this, DEFAULT_CHAN, "%s: %c%c%c", _("Page"), (char)(p_sys->i_key[0]+'0'), (char)(p_sys->i_key[1]+'0'), (char)(p_sys->i_key[2]+'0') );
+ OSDMessage( p_this, SPU_DEFAULT_CHANNEL, "%s: %c%c%c", _("Page"), (char)(p_sys->i_key[0]+'0'), (char)(p_sys->i_key[1]+'0'), (char)(p_sys->i_key[2]+'0') );
int i_new_page = 0;