[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[503] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-04 08:18:17
|
Revision: 503 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=503&view=rev Author: nickols_k Date: 2012-12-04 08:18:06 +0000 (Tue, 04 Dec 2012) Log Message: ----------- demux_avi works fine without demux_ogg with OggS Modified Paths: -------------- mplayerxp/libmpcodecs/dec_audio.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_ogg.cpp Modified: mplayerxp/libmpcodecs/dec_audio.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-04 08:02:46 UTC (rev 502) +++ mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-04 08:18:06 UTC (rev 503) @@ -73,7 +73,7 @@ strcpy(sh_audio->codec->driver_name,aprobe->driver); strcpy(sh_audio->codec->codec_name,sh_audio->codec->dll_name); memcpy(sh_audio->codec->outfmt,aprobe->sample_fmt,sizeof(aprobe->sample_fmt)); - } + } else return NULL; priv->mpadec=afm_find_driver(afm); if(!priv->mpadec){ Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-04 08:02:46 UTC (rev 502) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-04 08:18:06 UTC (rev 503) @@ -1129,7 +1129,6 @@ } int index_mode=-1; // -1=untouched 0=don't use index 1=use (geneate) index -extern demuxer_t* init_avi_with_ogg(demuxer_t* demuxer); extern demuxer_driver_t demux_ogg; static demuxer_t* avi_open(demuxer_t* demuxer){ Demuxer_Stream *d_audio=demuxer->audio; @@ -1281,31 +1280,6 @@ sh_video->bih->biHeight, sh_video->bih->biBitCount, sh_video->fps); - { - sh_audio_t* sh_a; - sh_a = (sh_audio_t*)demuxer->audio->sh; -#ifdef HAVE_LIBVORBIS - if(demuxer->audio->id != -2 && sh_a) { - /* support for Ogg-in-AVI: */ - if(sh_a->wtag == mmioFOURCC('v','r','b','s')) - demuxer = init_avi_with_ogg(demuxer); - else if(sh_a->wtag == 0x674F) { - stream_t* s; - demuxer_t *od; - s = new_ds_stream(demuxer->audio); - od = new_demuxer(s,-1,-2,-2); - od->file_format=DEMUXER_TYPE_OGG; - demux_ogg.probe(od); - if(!demux_ogg.open(od)) { - MSG_ERR("Can't open OGG demuxer\n"); - free_stream(s); - demuxer->audio->id = -2; - } else - demuxer = new_demuxers_demuxer(demuxer,od,demuxer); - } - } -#endif - } check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } Modified: mplayerxp/libmpdemux/demux_ogg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-04 08:02:46 UTC (rev 502) +++ mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-04 08:18:06 UTC (rev 503) @@ -1181,99 +1181,6 @@ } -/// For avi with Ogg audio stream we have to create an ogg demuxer for this -// stream, then we join the avi and ogg demuxer with a demuxers demuxer -demuxer_t* init_avi_with_ogg(demuxer_t* demuxer) { - demuxer_t *od; - ogg_demuxer_t *ogg_d; - stream_t* s; - uint32_t hdrsizes[3]; - Demuxer_Packet *dp; - sh_audio_t *sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); - int np; - unsigned char *p = NULL,*buf; - int plen; - - /// Check that the cbSize is enouth big for the following reads - if(sh_audio->wf->cbSize < 22+3*sizeof(uint32_t)) { - MSG_ERR("AVI Ogg : Initial audio header is too small !!!!!\n"); - goto fallback; - } - /// Get the size of the 3 header packet - memcpy(hdrsizes, ((unsigned char*)sh_audio->wf)+22+sizeof(WAVEFORMATEX), 3*sizeof(uint32_t)); -// printf("\n!!!!!! hdr sizes: %d %d %d \n",hdrsizes[0],hdrsizes[1],hdrsizes[2]); - - /// Check the size - if(sh_audio->wf->cbSize < 22+3*sizeof(uint32_t)+hdrsizes[0]+hdrsizes[1] + hdrsizes[2]) { - MSG_ERR("AVI Ogg : Audio header is too small !!!!!\n"); - goto fallback; - } - - // Build the ogg demuxer private datas - ogg_d = new(zeromem) ogg_demuxer_t; - ogg_d->num_sub = 1; - ogg_d->subs = new(zeromem) ogg_stream_t; - ogg_d->subs[0].vorbis = 1; - - // Init the ogg physical stream - ogg_sync_init(&ogg_d->sync); - - // Get the first page of the stream : we assume there only 1 logical stream - while((np = ogg_sync_pageout(&ogg_d->sync,&ogg_d->page)) <= 0 ) { - if(np < 0) { - MSG_ERR("AVI Ogg error : Can't init using first stream packets\n"); - delete ogg_d; - goto fallback; - } - // Add some data - plen = demuxer->audio->get_packet(&p); - buf = (unsigned char *)ogg_sync_buffer(&ogg_d->sync,plen); - memcpy(buf,p,plen); - ogg_sync_wrote(&ogg_d->sync,plen); - } - // Init the logical stream - MSG_DBG2("AVI Ogg found page with serial %d\n",ogg_page_serialno(&ogg_d->page)); - ogg_stream_init(&ogg_d->subs[0].stream,ogg_page_serialno(&ogg_d->page)); - // Write the page - ogg_stream_pagein(&ogg_d->subs[0].stream,&ogg_d->page); - - // Create the ds_stream and the ogg demuxer - s = new_ds_stream(demuxer->audio); - od = new_demuxer(s,0,-2,-2); - od->file_format=DEMUXER_TYPE_OGG; - - /// Add the header packets in the ogg demuxer audio stream - // Initial header - dp = new(zeromem) Demuxer_Packet(hdrsizes[0]); - memcpy(dp->buffer(),((unsigned char*)sh_audio->wf)+22+sizeof(WAVEFORMATEX)+3*sizeof(uint32_t),hdrsizes[0]); - od->audio->add_packet(dp); - /// Comments - dp = new(zeromem) Demuxer_Packet(hdrsizes[1]); - memcpy(dp->buffer(),((unsigned char*)sh_audio->wf)+22+sizeof(WAVEFORMATEX)+3*sizeof(uint32_t)+hdrsizes[0],hdrsizes[1]); - od->audio->add_packet(dp); - /// Code book - dp = new(zeromem) Demuxer_Packet(hdrsizes[2]); - memcpy(dp->buffer(),((unsigned char*)sh_audio->wf)+22+sizeof(WAVEFORMATEX)+3*sizeof(uint32_t)+hdrsizes[0]+hdrsizes[1],hdrsizes[2]); - od->audio->add_packet(dp); - - // Finish setting up the ogg demuxer - od->priv = ogg_d; - sh_audio = new_sh_audio(od,0); - od->audio->id = 0; - od->video->id = -2; - od->audio->sh = sh_audio; - sh_audio->ds = od->audio; - sh_audio->wtag = FOURCC_VORBIS; - - /// Return the joined demuxers - return new_demuxers_demuxer(demuxer,od,demuxer); - - fallback: - demuxer->audio->id = -2; - return demuxer; - -} - static void ogg_seek(demuxer_t *demuxer,const seek_args_t* seeka) { ogg_demuxer_t* ogg_d = static_cast<ogg_demuxer_t*>(demuxer->priv); ogg_sync_state* sync = &ogg_d->sync; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |