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;
} }
} }
...@@ -2502,33 +2502,48 @@ static void GetPMT( sout_mux_t *p_mux, sout_buffer_chain_t *c ) ...@@ -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') ) else if( p_stream->i_codec == VLC_FOURCC('t','e','l','x') )
{ {
dvbpsi_PMTESAddDescriptor( p_es, 0x56, if( p_stream->i_decoder_specific_info )
p_stream->i_decoder_specific_info, {
p_stream->p_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') ) else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') )
{ {
/* DVB subtitles */ /* DVB subtitles */
dvbpsi_subtitling_dr_t descr; if( p_stream->i_decoder_specific_info )
dvbpsi_subtitle_t sub; {
dvbpsi_descriptor_t *p_descr; /* pass-through from the TS demux */
dvbpsi_PMTESAddDescriptor( p_es, 0x59,
memcpy( sub.i_iso6392_language_code, p_stream->lang, 3 ); p_stream->i_decoder_specific_info,
sub.i_subtitling_type = 0x10; /* no aspect-ratio criticality */ p_stream->p_decoder_specific_info );
sub.i_composition_page_id = p_stream->i_es_id & 0xFF; }
sub.i_ancillary_page_id = p_stream->i_es_id >> 16; #ifdef _DVBPSI_DR_59_H_
else
descr.i_subtitles_number = 1; {
descr.p_subtitle[0] = sub; /* from the dvbsub transcoder */
dvbpsi_subtitling_dr_t descr;
p_descr = dvbpsi_GenSubtitlingDr( &descr, 0 ); dvbpsi_subtitle_t sub;
/* Work around bug in old libdvbpsi */ p_descr->i_length = 8; dvbpsi_descriptor_t *p_descr;
dvbpsi_PMTESAddDescriptor( p_es, p_descr->i_tag,
p_descr->i_length, p_descr->p_data ); 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; continue;
} }
#endif /* _DVBPSI_DR_59_H_ */
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