diff options
-rw-r--r-- | libmpdemux/demuxer.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 614d1f129e..8107638381 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -800,8 +800,22 @@ switch(file_format){ demuxer = (demuxer_t*) demux_open_avi(demuxer); if(!demuxer) return NULL; // failed to open sh_a = (sh_audio_t*)demuxer->audio->sh; - if(demuxer->audio->id != -2 && sh_a && sh_a->format == 0xFFFE) - demuxer = init_avi_with_ogg(demuxer); + if(demuxer->audio->id != -2 && sh_a) { + if(sh_a->format == 0xFFFE) + demuxer = init_avi_with_ogg(demuxer); + else if(sh_a->format == 0x674F) { + stream_t* s; + demuxer_t *od; + s = new_ds_stream(demuxer->audio); + od = new_demuxer(s,DEMUXER_TYPE_OGG,-1,-2,-2); + if(!demux_ogg_open(od)) { + mp_msg( MSGT_DEMUXER,MSGL_ERR,"Unable to open the ogg demuxer\n"); + free_stream(s); + demuxer->audio->id = -2; + } else + demuxer = new_demuxers_demuxer(demuxer,od,demuxer); + } + } return demuxer; // break; } |