vlc | branch: master | Rafaël Carré <[email protected]> | Thu Feb 9 22:08:24 2012 -0500| [9229335a2a7de53d56b434f953be8ce2adfe4912] | committer: Rafaël Carré
TS mux: simplify unsupported codec path > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9229335a2a7de53d56b434f953be8ce2adfe4912 --- modules/mux/mpeg/ts.c | 199 +++++++++++++++++++++++-------------------------- 1 files changed, 92 insertions(+), 107 deletions(-) diff --git a/modules/mux/mpeg/ts.c b/modules/mux/mpeg/ts.c index 0170fcd..a42c892 100644 --- a/modules/mux/mpeg/ts.c +++ b/modules/mux/mpeg/ts.c @@ -925,120 +925,105 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) msg_Dbg( p_mux, "adding input codec=%4.4s pid=%d", (char*)&p_stream->i_codec, p_stream->i_pid ); - switch( p_input->p_fmt->i_cat ) + p_stream->i_stream_type = -1; + switch( p_input->p_fmt->i_codec ) { - case VIDEO_ES: - switch( p_input->p_fmt->i_codec ) - { - 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_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_CODEC_H264: - p_stream->i_stream_type = 0x1b; - p_stream->i_stream_id = 0xe0; - break; - /* XXX dirty dirty but somebody want crapy MS-codec XXX */ - 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_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; - break; - default: - free( p_stream ); - return VLC_EGENERIC; - } + /* VIDEO */ + + 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_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_CODEC_H264: + p_stream->i_stream_type = 0x1b; + p_stream->i_stream_id = 0xe0; + break; + /* XXX dirty dirty but somebody want crapy MS-codec XXX */ + 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_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; break; - case AUDIO_ES: - switch( p_input->p_fmt->i_codec ) - { - case VLC_CODEC_MPGA: - p_stream->i_stream_type = - p_input->p_fmt->audio.i_rate >= 32000 ? 0x03 : 0x04; - p_stream->i_stream_id = 0xc0; - break; - case VLC_CODEC_A52: - p_stream->i_stream_type = 0x81; - p_stream->i_stream_id = 0xbd; - break; - case VLC_CODEC_EAC3: - p_stream->i_stream_type = 0x06; - p_stream->i_stream_id = 0xbd; - break; - case VLC_CODEC_DVD_LPCM: - p_stream->i_stream_type = 0x83; - p_stream->i_stream_id = 0xbd; - break; - case VLC_CODEC_DTS: - p_stream->i_stream_type = 0x06; - p_stream->i_stream_id = 0xbd; - break; - 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 = 0xc0; - p_sys->i_mpeg4_streams++; - p_stream->i_es_id = p_stream->i_pid; - break; - default: - free( p_stream ); - return VLC_EGENERIC; - } + /* AUDIO */ + + case VLC_CODEC_MPGA: + p_stream->i_stream_type = + p_input->p_fmt->audio.i_rate >= 32000 ? 0x03 : 0x04; + p_stream->i_stream_id = 0xc0; + break; + case VLC_CODEC_A52: + p_stream->i_stream_type = 0x81; + p_stream->i_stream_id = 0xbd; + break; + case VLC_CODEC_EAC3: + p_stream->i_stream_type = 0x06; + p_stream->i_stream_id = 0xbd; + break; + case VLC_CODEC_DVD_LPCM: + p_stream->i_stream_type = 0x83; + p_stream->i_stream_id = 0xbd; + break; + case VLC_CODEC_DTS: + p_stream->i_stream_type = 0x06; + p_stream->i_stream_id = 0xbd; + break; + 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 = 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_CODEC_SPU: - p_stream->i_stream_type = 0x82; - p_stream->i_stream_id = 0xbd; - break; - 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_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_CODEC_TELETEXT: - p_stream->i_stream_type = 0x06; - p_stream->i_stream_id = 0xbd; /* FIXME */ - break; - default: - free( p_stream ); - return VLC_EGENERIC; - } + /* TEXT */ + + case VLC_CODEC_SPU: + p_stream->i_stream_type = 0x82; + p_stream->i_stream_id = 0xbd; break; + 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_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_CODEC_TELETEXT: + p_stream->i_stream_type = 0x06; + p_stream->i_stream_id = 0xbd; /* FIXME */ + break; + } - default: + if (p_stream->i_stream_type == -1) + { free( p_stream ); return VLC_EGENERIC; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
