"encrypting." )
#define SOUT_CFG_PREFIX "sout-ts-"
-#ifdef HAVE_BSEARCH
-# define MAX_PMT 64 /* Maximum number of programs. FIXME: I just chose an arbitary number. Where is the maximum in the spec? */
-#else
-# define MAX_PMT 1
-#endif
+#define MAX_PMT 64 /* Maximum number of programs. FIXME: I just chose an arbitary number. Where is the maximum in the spec? */
#define MAX_PMT_PID 64 /* Maximum pids in each pmt. FIXME: I just chose an arbitary number. Where is the maximum in the spec? */
vlc_module_begin ()
add_shortcut( "ts" )
add_integer( SOUT_CFG_PREFIX "pid-video", 0, NULL,VPID_TEXT, VPID_LONGTEXT,
- true );
+ true )
add_integer( SOUT_CFG_PREFIX "pid-audio", 0, NULL, APID_TEXT,
- APID_LONGTEXT, true );
+ APID_LONGTEXT, true )
add_integer( SOUT_CFG_PREFIX "pid-spu", 0, NULL, SPUPID_TEXT,
- SPUPID_LONGTEXT, true );
+ SPUPID_LONGTEXT, true )
add_integer( SOUT_CFG_PREFIX "pid-pmt", 0, NULL, PMTPID_TEXT,
- PMTPID_LONGTEXT, true );
+ PMTPID_LONGTEXT, true )
add_integer( SOUT_CFG_PREFIX "tsid", 0, NULL, TSID_TEXT,
- TSID_LONGTEXT, true );
+ TSID_LONGTEXT, true )
#ifdef HAVE_DVBPSI_SDT
add_integer( SOUT_CFG_PREFIX "netid", 0, NULL, NETID_TEXT,
- NETID_LONGTEXT, true );
+ NETID_LONGTEXT, true )
#endif
add_string( SOUT_CFG_PREFIX "program-pmt", NULL, NULL, PMTPROG_TEXT,
- PMTPROG_LONGTEXT, true );
+ PMTPROG_LONGTEXT, true )
add_bool( SOUT_CFG_PREFIX "es-id-pid", 0, NULL, PID_TEXT, PID_LONGTEXT,
- true );
+ true )
add_string( SOUT_CFG_PREFIX "muxpmt", NULL, NULL, MUXPMT_TEXT, MUXPMT_LONGTEXT, true )
#ifdef HAVE_DVBPSI_SDT
add_string( SOUT_CFG_PREFIX "sdtdesc", NULL, NULL, SDTDESC_TEXT, SDTDESC_LONGTEXT, true )
#endif
add_bool( SOUT_CFG_PREFIX "alignment", true, NULL, ALIGNMENT_TEXT,
- ALIGNMENT_LONGTEXT, true );
+ ALIGNMENT_LONGTEXT, true )
add_integer( SOUT_CFG_PREFIX "shaping", 200, NULL, SHAPING_TEXT,
- SHAPING_LONGTEXT, true );
+ SHAPING_LONGTEXT, true )
add_bool( SOUT_CFG_PREFIX "use-key-frames", false, NULL, KEYF_TEXT,
- KEYF_LONGTEXT, true );
+ KEYF_LONGTEXT, true )
add_integer( SOUT_CFG_PREFIX "pcr", 70, NULL, PCR_TEXT, PCR_LONGTEXT,
- true );
+ true )
add_integer( SOUT_CFG_PREFIX "bmin", 0, NULL, BMIN_TEXT, BMIN_LONGTEXT,
- true );
+ true )
add_integer( SOUT_CFG_PREFIX "bmax", 0, NULL, BMAX_TEXT, BMAX_LONGTEXT,
- true );
+ true )
add_integer( SOUT_CFG_PREFIX "dts-delay", 400, NULL, DTS_TEXT,
- DTS_LONGTEXT, true );
+ DTS_LONGTEXT, true )
add_bool( SOUT_CFG_PREFIX "crypt-audio", true, NULL, ACRYPT_TEXT,
- ACRYPT_LONGTEXT, true );
+ ACRYPT_LONGTEXT, true )
add_bool( SOUT_CFG_PREFIX "crypt-video", true, NULL, VCRYPT_TEXT,
- VCRYPT_LONGTEXT, true );
+ VCRYPT_LONGTEXT, true )
add_string( SOUT_CFG_PREFIX "csa-ck", NULL, NULL, CK_TEXT, CK_LONGTEXT,
- true );
+ true )
add_string( SOUT_CFG_PREFIX "csa2-ck", NULL, NULL, CK2_TEXT, CK2_LONGTEXT,
- true );
+ true )
add_string( SOUT_CFG_PREFIX "csa-use", "1", NULL, CU_TEXT, CU_LONGTEXT,
- true );
+ true )
add_integer( SOUT_CFG_PREFIX "csa-pkt", 188, NULL, CPKT_TEXT, CPKT_LONGTEXT, true )
set_callbacks( Open, Close )
case VIDEO_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p','g', 'v' ):
+ case VLC_CODEC_MPGV:
/* TODO: do we need to check MPEG-I/II ? */
p_stream->i_stream_type = 0x02;
p_stream->i_stream_id = 0xe0;
break;
- case VLC_FOURCC( 'm', 'p','4', 'v' ):
+ case VLC_CODEC_MP4V:
p_stream->i_stream_type = 0x10;
p_stream->i_stream_id = 0xe0;
p_stream->i_es_id = p_stream->i_pid;
break;
- case VLC_FOURCC( 'h', '2','6', '4' ):
+ case VLC_CODEC_H264:
p_stream->i_stream_type = 0x1b;
p_stream->i_stream_id = 0xe0;
break;
/* XXX dirty dirty but somebody want that:
* using crapy MS-codec XXX */
/* I didn't want to do that :P */
- case VLC_FOURCC( 'H', '2', '6', '3' ):
- case VLC_FOURCC( 'I', '2', '6', '3' ):
- case VLC_FOURCC( 'W', 'M', 'V', '3' ):
- case VLC_FOURCC( 'W', 'M', 'V', '2' ):
- case VLC_FOURCC( 'W', 'M', 'V', '1' ):
- case VLC_FOURCC( 'D', 'I', 'V', '3' ):
- case VLC_FOURCC( 'D', 'I', 'V', '2' ):
- case VLC_FOURCC( 'D', 'I', 'V', '1' ):
- case VLC_FOURCC( 'M', 'J', 'P', 'G' ):
+ case VLC_CODEC_H263I:
+ case VLC_CODEC_H263:
+ case VLC_CODEC_WMV3:
+ case VLC_CODEC_WMV2:
+ case VLC_CODEC_WMV1:
+ case VLC_CODEC_DIV3:
+ case VLC_CODEC_DIV2:
+ case VLC_CODEC_DIV1:
+ case VLC_CODEC_MJPG:
p_stream->i_stream_type = 0xa0; /* private */
p_stream->i_stream_id = 0xa0; /* beurk */
p_stream->i_bih_codec = p_input->p_fmt->i_codec;
p_stream->i_bih_width = p_input->p_fmt->video.i_width;
p_stream->i_bih_height = p_input->p_fmt->video.i_height;
break;
- case VLC_FOURCC( 'd', 'r', 'a', 'c' ):
+ case VLC_CODEC_DIRAC:
/* stream_id makes use of stream_id_extension */
p_stream->i_stream_id = (PES_EXTENDED_STREAM_ID << 8) | 0x60;
p_stream->i_stream_type = 0xd1;
case AUDIO_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 'm', 'p','g', 'a' ):
+ case VLC_CODEC_MPGA:
case VLC_FOURCC( 'm', 'p', '3', ' ' ):
p_stream->i_stream_type =
p_input->p_fmt->audio.i_rate >= 32000 ? 0x03 : 0x04;
p_stream->i_stream_id = 0xc0;
break;
- case VLC_FOURCC( 'a', '5','2', ' ' ):
+ case VLC_CODEC_A52:
p_stream->i_stream_type = 0x81;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'l', 'p','c', 'm' ):
+ case VLC_CODEC_DVD_LPCM:
p_stream->i_stream_type = 0x83;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'd', 't','s', ' ' ):
+ case VLC_CODEC_DTS:
p_stream->i_stream_type = 0x06;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 'm', 'p','4', 'a' ):
+ case VLC_CODEC_MP4A:
/* XXX: make that configurable in some way when LOAS
* is implemented for AAC in TS */
//p_stream->i_stream_type = 0x11; /* LOAS/LATM */
p_stream->i_stream_type = 0x0f; /* ADTS */
- p_stream->i_stream_id = 0xfa;
+ p_stream->i_stream_id = 0xc0;
p_sys->i_mpeg4_streams++;
p_stream->i_es_id = p_stream->i_pid;
break;
case SPU_ES:
switch( p_input->p_fmt->i_codec )
{
- case VLC_FOURCC( 's', 'p','u', ' ' ):
+ case VLC_CODEC_SPU:
p_stream->i_stream_type = 0x82;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC( 's', 'u','b', 't' ):
+ case VLC_CODEC_SUBT:
p_stream->i_stream_type = 0x12;
p_stream->i_stream_id = 0xfa;
p_sys->i_mpeg4_streams++;
p_stream->i_es_id = p_stream->i_pid;
break;
- case VLC_FOURCC('d','v','b','s'):
+ case VLC_CODEC_DVBS:
p_stream->i_stream_type = 0x06;
p_stream->i_es_id = p_input->p_fmt->subs.dvb.i_id;
p_stream->i_stream_id = 0xbd;
break;
- case VLC_FOURCC('t','e','l','x'):
+ case VLC_CODEC_TELETEXT:
p_stream->i_stream_type = 0x06;
p_stream->i_stream_id = 0xbd; /* FIXME */
break;
}
/* Create decoder specific info for subt */
- if( p_stream->i_codec == VLC_FOURCC( 's', 'u','b', 't' ) )
+ if( p_stream->i_codec == VLC_CODEC_SUBT )
{
uint8_t *p;
if( p_stream == p_pcr_stream || p_sys->b_data_alignment
|| p_input->p_fmt->i_codec !=
- VLC_FOURCC('m', 'p', 'g', 'a') )
+ VLC_CODEC_MPGA )
{
p_data = block_FifoGet( p_input->p_fifo );
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('m', 'p', '4', 'a' ) )
+ VLC_CODEC_MP4A )
p_data = Add_ADTS( p_data, p_input->p_fmt );
}
else
p_data->i_length = p_next->i_dts - p_data->i_dts;
}
else if( p_input->p_fmt->i_codec !=
- VLC_FOURCC('s', 'u', 'b', 't' ) )
+ VLC_CODEC_SUBT )
p_data->i_length = 1000;
if( ( p_pcr_stream->i_pes_dts > 0 &&
if( p_input->p_fmt->i_cat == SPU_ES )
{
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('s','u','b','t') )
+ VLC_CODEC_SUBT )
{
/* Prepend header */
p_data = block_Realloc( p_data, 2,
}
}
else if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('t','e','l','x') )
+ VLC_CODEC_TELETEXT )
{
/* EN 300 472 */
i_header_size = 0x24;
b_data_alignment = 1;
}
else if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('d','v','b','s') )
+ VLC_CODEC_DVBS )
{
/* EN 300 743 */
b_data_alignment = 1;
}
if( p_input->p_fmt->i_codec ==
- VLC_FOURCC('d','r','a','c') )
+ VLC_CODEC_DIRAC )
{
b_data_alignment = 1;
/* dirac pes packets should be unbounded in
bits_write( &bits, 6, 0x05 ); /* AudioStream */
}
else if( p_stream->i_stream_type == 0x12 &&
- p_stream->i_codec == VLC_FOURCC('s','u','b','t') )
+ p_stream->i_codec == VLC_CODEC_SUBT )
{
bits_write( &bits, 8, 0x0B ); /* Text Stream */
bits_write( &bits, 6, 0x04 ); /* VisualStream */
GetDescriptorLength24b( bits.i_data -
bits_fix_IOD.i_data - 3 ) );
-#if 0//def HAVE_BSEARCH /* FIXME!!! This can't possibly work */
+#if 0 /* FIXME!!! This can't possibly work */
i_pidinput = p_mux->pp_inputs[i]->p_fmt->i_id;
p_usepid = bsearch( &i_pidinput, p_sys->pmtmap, p_sys->i_pmtslots,
sizeof(pmt_map_t), intcompare );
p_stream = (ts_stream_t *)p_mux->pp_inputs[i_stream]->p_sys;
-#ifdef HAVE_BSEARCH
i_pidinput = p_mux->pp_inputs[i_stream]->p_fmt->i_id;
p_usepid = bsearch( &i_pidinput, p_sys->pmtmap, p_sys->i_pmtslots,
sizeof(pmt_map_t), intcompare );
p_stream->i_stream_type, p_stream->i_pid );
else
/* If there's an error somewhere, dump it to the first pmt */
-#endif
p_es = dvbpsi_PMTAddES( &p_sys->dvbpmt[0], p_stream->i_stream_type,
p_stream->i_pid );
/* "registration" descriptor : "AC-3" */
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, format );
}
- else if( p_stream->i_codec == VLC_FOURCC('d','r','a','c') )
+ else if( p_stream->i_codec == VLC_CODEC_DIRAC )
{
/* Dirac registration descriptor */
uint8_t data[4] = { 'd', 'r', 'a', 'c' };
dvbpsi_PMTESAddDescriptor( p_es, 0x05, 4, data );
}
- else if( p_stream->i_codec == VLC_FOURCC('d','t','s',' ') )
+ else if( p_stream->i_codec == VLC_CODEC_DTS )
{
/* DTS registration descriptor (ETSI TS 101 154 Annex F) */
uint8_t data[4] = { 0x44, 0x54, 0x53, 0x32 };
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_CODEC_TELETEXT )
{
if( p_stream->i_decoder_specific_info )
{
}
continue;
}
- else if( p_stream->i_codec == VLC_FOURCC('d','v','b','s') )
+ else if( p_stream->i_codec == VLC_CODEC_DVBS )
{
/* DVB subtitles */
if( p_stream->i_decoder_specific_info )