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 ...@@ -306,6 +306,11 @@ E: heiko.panther@web.de
D: Mac OS X audio device selection framework D: Mac OS X audio device selection framework
S: Germany S: Germany
N: Vincent Penne
E: ziggy at sashipa dot com
D: teletext decoder
S: France
N: Eric Petit N: Eric Petit
E: titer@videolan.org E: titer@videolan.org
C: titer C: titer
......
...@@ -1099,7 +1099,7 @@ dnl default modules ...@@ -1099,7 +1099,7 @@ dnl default modules
dnl dnl
VLC_ADD_PLUGINS([dummy logger memcpy]) 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([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([deinterlace invert adjust transform distort motionblur rv32])
VLC_ADD_PLUGINS([fixed32tos16 s16tofixed32 u8tofixed32]) VLC_ADD_PLUGINS([fixed32tos16 s16tofixed32 u8tofixed32])
VLC_ADD_PLUGINS([trivial_resampler ugly_resampler]) VLC_ADD_PLUGINS([trivial_resampler ugly_resampler])
......
...@@ -90,6 +90,7 @@ struct es_out_t ...@@ -90,6 +90,7 @@ struct es_out_t
int (*pf_send) ( es_out_t *, es_out_id_t *, block_t * ); int (*pf_send) ( es_out_t *, es_out_id_t *, block_t * );
void (*pf_del) ( es_out_t *, es_out_id_t * ); void (*pf_del) ( es_out_t *, es_out_id_t * );
int (*pf_control)( es_out_t *, int i_query, va_list ); int (*pf_control)( es_out_t *, int i_query, va_list );
vlc_bool_t b_sout;
es_out_sys_t *p_sys; es_out_sys_t *p_sys;
}; };
......
...@@ -18,6 +18,7 @@ SOURCES_quicktime = quicktime.c ...@@ -18,6 +18,7 @@ SOURCES_quicktime = quicktime.c
SOURCES_subsdec = subsdec.c SOURCES_subsdec = subsdec.c
SOURCES_faad = faad.c SOURCES_faad = faad.c
SOURCES_dvbsub = dvbsub.c SOURCES_dvbsub = dvbsub.c
SOURCES_telx = telx.c
SOURCES_mash = mash.cpp SOURCES_mash = mash.cpp
SOURCES_x264 = x264.c SOURCES_x264 = x264.c
SOURCES_twolame = twolame.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 ) ...@@ -1484,7 +1484,7 @@ static int Mux( sout_mux_t *p_mux )
else if( p_input->p_fmt->i_codec == else if( p_input->p_fmt->i_codec ==
VLC_FOURCC('d','v','b','s') ) VLC_FOURCC('d','v','b','s') )
{ {
/* EN 300 473 */ /* EN 300 743 */
b_data_alignment = 1; b_data_alignment = 1;
} }
} }
...@@ -2501,15 +2501,29 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c ) ...@@ -2501,15 +2501,29 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, data ); dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, data );
} }
else if( p_stream->i_codec == VLC_FOURCC('t','e','l','x') ) else if( p_stream->i_codec == VLC_FOURCC('t','e','l','x') )
{
if( p_stream->i_decoder_specific_info )
{ {
dvbpsi_PMTESAddDescriptor( p_es, 0x56, dvbpsi_PMTESAddDescriptor( p_es, 0x56,
p_stream->i_decoder_specific_info, p_stream->i_decoder_specific_info,
p_stream->p_decoder_specific_info ); p_stream->p_decoder_specific_info );
} }
#ifdef _DVBPSI_DR_59_H_ continue;
}
else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') ) else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') )
{ {
/* DVB subtitles */ /* DVB subtitles */
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_subtitling_dr_t descr;
dvbpsi_subtitle_t sub; dvbpsi_subtitle_t sub;
dvbpsi_descriptor_t *p_descr; dvbpsi_descriptor_t *p_descr;
...@@ -2526,9 +2540,10 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c ) ...@@ -2526,9 +2540,10 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c )
/* Work around bug in old libdvbpsi */ p_descr->i_length = 8; /* Work around bug in old libdvbpsi */ p_descr->i_length = 8;
dvbpsi_PMTESAddDescriptor( p_es, p_descr->i_tag, dvbpsi_PMTESAddDescriptor( p_es, p_descr->i_tag,
p_descr->i_length, p_descr->p_data ); p_descr->i_length, p_descr->p_data );
continue;
} }
#endif /* _DVBPSI_DR_59_H_ */ #endif /* _DVBPSI_DR_59_H_ */
continue;
}
if( p_stream->lang[0] != 0 ) if( p_stream->lang[0] != 0 )
{ {
......
...@@ -148,6 +148,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input ) ...@@ -148,6 +148,7 @@ es_out_t *input_EsOutNew( input_thread_t *p_input )
out->pf_del = EsOutDel; out->pf_del = EsOutDel;
out->pf_control = EsOutControl; out->pf_control = EsOutControl;
out->p_sys = p_sys; out->p_sys = p_sys;
out->b_sout = (p_input->p_sout != NULL ? VLC_TRUE : VLC_FALSE);
p_sys->p_input = p_input; 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