summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorgpoirier <gpoirier@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-04-03 14:08:28 +0000
committergpoirier <gpoirier@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-04-03 14:08:28 +0000
commit9e909f0dde36431c457922e1f66fff0c1d6e71ac (patch)
tree008569d4fe4ec81c58af17ad8b25d16138f312ec /libmpdemux/demuxer.c
parentacf7defdcf8c22504cee6333b9d9164d34e4f8db (diff)
downloadmpv-9e909f0dde36431c457922e1f66fff0c1d6e71ac.tar.bz2
mpv-9e909f0dde36431c457922e1f66fff0c1d6e71ac.tar.xz
Added support of audio stream switching in the MPEG demuxer using the #-key
Patch by Michael Behrisch < behrisch $ informatik * hu-berlin * de > commited with the kind blessing of D. Richard Felker III git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15047 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c33
1 files changed, 6 insertions, 27 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 3c72dfe99f..e2fbe222ab 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1348,26 +1348,7 @@ switch(file_format){
break;
}
- case DEMUXER_TYPE_MPEG_TY: {
- sh_video=d_video->sh;sh_video->ds=d_video;
-
- if(audio_id!=-2) {
- if(!ds_fill_buffer(d_audio)){
- mp_msg(MSGT_DEMUXER,MSGL_INFO,"MPEG: " MSGTR_MissingAudioStream);
- sh_audio=NULL;
- } else {
- sh_audio=d_audio->sh;sh_audio->ds=d_audio;
- switch(d_audio->id & 0xE0){ // 1110 0000 b (high 3 bit: type low 5: id)
- case 0x00: sh_audio->format=0x50;break; // mpeg
- case 0xA0: sh_audio->format=0x10001;break; // dvd pcm
- case 0x80: if((d_audio->id & 0xF8) == 0x88) sh_audio->format=0x2001;//dts
- else sh_audio->format=0x2000;break; // ac3
- default: sh_audio=NULL; // unknown type
- }
- }
- }
- break;
- }
+ case DEMUXER_TYPE_MPEG_TY:
case DEMUXER_TYPE_MPEG_PS: {
sh_video=d_video->sh;sh_video->ds=d_video;
// if(demuxer->stream->type!=STREAMTYPE_VCD) demuxer->movi_start=0; // for VCD
@@ -1378,13 +1359,6 @@ switch(file_format){
sh_audio=NULL;
} else {
sh_audio=d_audio->sh;sh_audio->ds=d_audio;
- switch(d_audio->id & 0xE0){ // 1110 0000 b (high 3 bit: type low 5: id)
- case 0x00: sh_audio->format=0x50;break; // mpeg
- case 0xA0: sh_audio->format=0x10001;break; // dvd pcm
- case 0x80: if((d_audio->id & 0xF8) == 0x88) sh_audio->format=0x2001;//dts
- else sh_audio->format=0x2000;break; // ac3
- default: sh_audio=NULL; // unknown type
- }
}
}
break;
@@ -1804,3 +1778,8 @@ int demuxer_get_percent_pos(demuxer_t *demuxer){
return ans;
}
+int demuxer_switch_audio(demuxer_t *demuxer){
+ int ans = 0;
+ int res = demux_control(demuxer, DEMUXER_CTRL_SWITCH_AUDIO, &ans);
+ return ans;
+}