Commit 9b6378b7 authored by Christophe Massiot's avatar Christophe Massiot

* Backport basic teletext decoder, and teletext and dvbsub-related fixes

   in the TS demux and mux. Includes changesets :
   [18605] [18606] [18607] [18609] [18610] [18613] [18615] [18620] [18630]
   [18633] [19717]
parent a9bcf90f
......@@ -306,6 +306,11 @@ E: heiko.panther@web.de
D: Mac OS X audio device selection framework
S: Germany
N: Vincent Penne
E: ziggy at sashipa dot com
D: teletext decoder
S: France
N: Eric Petit
E: titer@videolan.org
C: titer
......
......@@ -1099,7 +1099,7 @@ dnl default modules
dnl
VLC_ADD_PLUGINS([dummy logger memcpy])
VLC_ADD_PLUGINS([mpgv mpga m4v m4a h264 ps pva avi asf mp4 rawdv nsv real aiff mjpeg demuxdump flac tta])
VLC_ADD_PLUGINS([cvdsub svcdsub spudec subsdec dvbsub mpeg_audio lpcm a52 dts cinepak flacdec])
VLC_ADD_PLUGINS([cvdsub svcdsub spudec telx subsdec dvbsub mpeg_audio lpcm a52 dts cinepak flacdec])
VLC_ADD_PLUGINS([deinterlace invert adjust transform distort motionblur rv32])
VLC_ADD_PLUGINS([fixed32tos16 s16tofixed32 u8tofixed32])
VLC_ADD_PLUGINS([trivial_resampler ugly_resampler])
......
......@@ -90,6 +90,7 @@ struct es_out_t
int (*pf_send) ( es_out_t *, es_out_id_t *, block_t * );
void (*pf_del) ( es_out_t *, es_out_id_t * );
int (*pf_control)( es_out_t *, int i_query, va_list );
vlc_bool_t b_sout;
es_out_sys_t *p_sys;
};
......
......@@ -18,6 +18,7 @@ SOURCES_quicktime = quicktime.c
SOURCES_subsdec = subsdec.c
SOURCES_faad = faad.c
SOURCES_dvbsub = dvbsub.c
SOURCES_telx = telx.c
SOURCES_mash = mash.cpp
SOURCES_x264 = x264.c
SOURCES_twolame = twolame.c
......
This diff is collapsed.
This diff is collapsed.
......@@ -1484,7 +1484,7 @@ static int Mux( sout_mux_t *p_mux )
else if( p_input->p_fmt->i_codec ==
VLC_FOURCC('d','v','b','s') )
{
/* EN 300 473 */
/* EN 300 743 */
b_data_alignment = 1;
}
}
......@@ -2502,33 +2502,48 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
}
else if( p_stream->i_codec == VLC_FOURCC('t','e','l','x') )
{
dvbpsi_PMTESAddDescriptor( p_es, 0x56,
p_stream->i_decoder_specific_info,
p_stream->p_decoder_specific_info );
if( p_stream->i_decoder_specific_info )
{
dvbpsi_PMTESAddDescriptor( p_es, 0x56,
p_stream->i_decoder_specific_info,
p_stream->p_decoder_specific_info );
}
continue;
}
#ifdef _DVBPSI_DR_59_H_
else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') )
{
/* DVB subtitles */
dvbpsi_subtitling_dr_t descr;
dvbpsi_subtitle_t sub;
dvbpsi_descriptor_t *p_descr;
memcpy( sub.i_iso6392_language_code, p_stream->lang, 3 );
sub.i_subtitling_type = 0x10; /* no aspect-ratio criticality */
sub.i_composition_page_id = p_stream->i_es_id & 0xFF;
sub.i_ancillary_page_id = p_stream->i_es_id >> 16;
descr.i_subtitles_number = 1;
descr.p_subtitle[0] = sub;
p_descr = dvbpsi_GenSubtitlingDr( &descr, 0 );
/* Work around bug in old libdvbpsi */ p_descr->i_length = 8;
dvbpsi_PMTESAddDescriptor( p_es, p_descr->i_tag,
p_descr->i_length, p_descr->p_data );
if( p_stream->i_decoder_specific_info )
{
/* pass-through from the TS demux */
dvbpsi_PMTESAddDescriptor( p_es, 0x59,
p_stream->i_decoder_specific_info,
p_stream->p_decoder_specific_info );
}
#ifdef _DVBPSI_DR_59_H_
else
{
/* from the dvbsub transcoder */
dvbpsi_subtitling_dr_t descr;
dvbpsi_subtitle_t sub;
dvbpsi_descriptor_t *p_descr;
memcpy( sub.i_iso6392_language_code, p_stream->lang, 3 );
sub.i_subtitling_type = 0x10; /* no aspect-ratio criticality */
sub.i_composition_page_id = p_stream->i_es_id & 0xFF;
sub.i_ancillary_page_id = p_stream->i_es_id >> 16;
descr.i_subtitles_number = 1;
descr.p_subtitle[0] = sub;
p_descr = dvbpsi_GenSubtitlingDr( &descr, 0 );
/* Work around bug in old libdvbpsi */ p_descr->i_length = 8;
dvbpsi_PMTESAddDescriptor( p_es, p_descr->i_tag,
p_descr->i_length, p_descr->p_data );
}
#endif /* _DVBPSI_DR_59_H_ */
continue;
}
#endif /* _DVBPSI_DR_59_H_ */
if( p_stream->lang[0] != 0 )
{
......
......@@ -148,6 +148,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input )
out->pf_del = EsOutDel;
out->pf_control = EsOutControl;
out->p_sys = p_sys;
out->b_sout = (p_input->p_sout != NULL ? VLC_TRUE : VLC_FALSE);
p_sys->p_input = p_input;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment