[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[650] mplayerxp
Brought to you by:
olov
|
From: <nic...@us...> - 2013-06-10 07:27:28
|
Revision: 650
http://sourceforge.net/p/mplayerxp/code/650
Author: nickols_k
Date: 2013-06-10 07:27:20 +0000 (Mon, 10 Jun 2013)
Log Message:
-----------
remove support of win32 binary codecs as incompatible with GPL-licence
Modified Paths:
--------------
mplayerxp/Makefile
mplayerxp/configure
mplayerxp/libmpcodecs/Makefile
mplayerxp/libmpcodecs/ad.cpp
mplayerxp/libmpcodecs/dec_video.cpp
mplayerxp/libmpcodecs/vd.cpp
mplayerxp/libmpconf/Makefile
mplayerxp/libmpconf/codec-cfg.h
mplayerxp/libmpdemux/asf.h
mplayerxp/libmpdemux/aviprint.h
mplayerxp/libmpdemux/demux_mkv.cpp
mplayerxp/libmpdemux/demux_mov.cpp
mplayerxp/libmpdemux/demux_mpxp64.cpp
mplayerxp/libmpdemux/mux_mpxp64.cpp
mplayerxp/libmpdemux/mux_raw.cpp
mplayerxp/libmpdemux/muxer.cpp
mplayerxp/libmpdemux/stheader.h
mplayerxp/libmpstream2/s_oss.cpp
mplayerxp/main.cpp
mplayerxp/postproc/af_format.cpp
mplayerxp/xmpcore/xmp_aframe.cpp
Added Paths:
-----------
mplayerxp/win32sdk/
mplayerxp/win32sdk/avifmt.h
mplayerxp/win32sdk/basetsd.h
mplayerxp/win32sdk/debugtools.h
mplayerxp/win32sdk/driver.h
mplayerxp/win32sdk/elfdll.h
mplayerxp/win32sdk/heap.h
mplayerxp/win32sdk/ldt.h
mplayerxp/win32sdk/mmreg.h
mplayerxp/win32sdk/module.h
mplayerxp/win32sdk/msacm.h
mplayerxp/win32sdk/msacmdrv.h
mplayerxp/win32sdk/ntdef.h
mplayerxp/win32sdk/objbase.h
mplayerxp/win32sdk/pe_image.h
mplayerxp/win32sdk/poppack.h
mplayerxp/win32sdk/pshpack1.h
mplayerxp/win32sdk/pshpack2.h
mplayerxp/win32sdk/pshpack4.h
mplayerxp/win32sdk/pshpack8.h
mplayerxp/win32sdk/qtxsdk/
mplayerxp/win32sdk/vfw.h
mplayerxp/win32sdk/winbase.h
mplayerxp/win32sdk/windef.h
mplayerxp/win32sdk/windows.h
mplayerxp/win32sdk/winerror.h
mplayerxp/win32sdk/winestring.h
mplayerxp/win32sdk/winnt.h
mplayerxp/win32sdk/winreg.h
mplayerxp/win32sdk/winuser.h
Removed Paths:
-------------
mplayerxp/libmpcodecs/ad_acm.cpp
mplayerxp/libmpcodecs/ad_dmo.cpp
mplayerxp/libmpcodecs/ad_dshow.cpp
mplayerxp/libmpcodecs/ad_qtaudio.cpp
mplayerxp/libmpcodecs/ad_twin.cpp
mplayerxp/libmpcodecs/vd_dmo.cpp
mplayerxp/libmpcodecs/vd_dshow.cpp
mplayerxp/libmpcodecs/vd_qtvideo.cpp
mplayerxp/libmpcodecs/vd_vfw.cpp
mplayerxp/libmpconf/codec-cfg.cpp
mplayerxp/win32loader/
Modified: mplayerxp/Makefile
===================================================================
--- mplayerxp/Makefile 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/Makefile 2013-06-10 07:27:20 UTC (rev 650)
@@ -12,9 +12,7 @@
TARGET_EXE = $(PROGNAME)
# these subdirectories required installation due binaries within them
SUBDIRS = libmpdemux libmpstream2 libmpsub libplaytree2 libmpcodecs libmpconf libao3 osdep postproc input2 nls libvo2 xmpcore
-ifeq ($(ENABLE_WIN32LOADER),yes)
-SUBDIRS+=win32loader
-endif
+
DO_MAKE = @ for i in $(SUBDIRS); do $(MAKE) -C $$i $@ || exit; done
DO_MAKE_ALL = @ for i in $(SUBDIRS); do $(MAKE) -C $$i all || exit; done
@@ -45,9 +43,6 @@
nls/libnls.a \
libmpconf/libmpconf.a \
xmpcore/libxmpcore.a
-ifeq ($(ENABLE_WIN32LOADER),yes)
- MP_LIBS += win32loader/libwin32loader.a
-endif
LIBS+= $(MP_LIBS) $(LAVC_LIBS) $(EXTRALIBS) -lm
CXXFLAGS = $(OPTXXFLAGS) $(EXTRA_INC)
Modified: mplayerxp/configure
===================================================================
--- mplayerxp/configure 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/configure 2013-06-10 07:27:20 UTC (rev 650)
@@ -87,7 +87,6 @@
"profile|compile profiling information into PROGRAM",
"static|build static libraries",
"dbg23|allow additional level of debug messages",
- "win32loader|build support for Win32 codecs",
"random_name|generates pseudo random suffix of target",
"sdl|build with SDL video and audio output|http://www.libsdl.org",
"sdl_image|build with SDL_image for screenshots|http://www.libsdl.org/projects/SDL_image",
@@ -106,7 +105,6 @@
"libdir|object code libraries|\$exec_prefix/lib",
"datadir|read-only architecture-independent data|\$prefix/share/mplayerxp",
"confdir|read-only configuration files|\$prefix/share/mplayerxp",
- "win32libdir|win32 .dll locations [/usr/lib/win32]"
)
PROGNAME_LIST=(
@@ -580,26 +578,6 @@
test -f nls/mpxp_help-$linguas.h || die "nls/mpxp_help-$linguas.h not found"
echo "#define I18N_LANGUAGE \"$linguas\"" >>mpxp_config.h
-enabled gpl_only && disable win32loader
-
-if win32 || ! x86_32 ; then
-disable win32loader
-fi
-win32 && add_ldflags -lkernel32
-print_config ENABLE_ mpxp_config.h mpxp_config.mak win32loader
-
-echo -n "win32 dll's ... "
-if test -z "$win32libdir" ; then
- for I in /usr/local/lib/win32 /usr/lib/win32 ; do
- if test -d "$I" ; then
- win32libdir="$I"
- break;
- fi;
- done
-fi
-echo "$win32libdir"
-echo "#define WIN32_PATH \"$win32libdir\"" >>mpxp_config.h
-
#########
# VIDEO #
#########
Modified: mplayerxp/libmpcodecs/Makefile
===================================================================
--- mplayerxp/libmpcodecs/Makefile 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/Makefile 2013-06-10 07:27:20 UTC (rev 650)
@@ -42,18 +42,6 @@
CXXSRCS+= ad_libdv.cpp vd_libdv.cpp
endif
-ifeq ($(ENABLE_WIN32LOADER),yes)
-CXXSRCS+=vd_dshow.cpp \
- vd_vfw.cpp \
- vd_dmo.cpp \
- vd_qtvideo.cpp \
- ad_dshow.cpp \
- ad_acm.cpp \
- ad_dmo.cpp \
- ad_qtaudio.cpp \
- ad_twin.cpp
-endif
-
OBJS=$(SRCS:.c=.o)
CXXOBJS=$(CXXSRCS:.cpp=.o)
Modified: mplayerxp/libmpcodecs/ad.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -52,13 +52,6 @@
#ifndef ENABLE_GPL_ONLY
&mpcodecs_ad_real,
#endif
-#ifdef ENABLE_WIN32LOADER
- &mpcodecs_ad_dshow,
- &mpcodecs_ad_twin,
- &mpcodecs_ad_msacm,
- &mpcodecs_ad_dmo,
- &mpcodecs_ad_qtaudio,
-#endif
&mpcodecs_ad_lavc,
&mpcodecs_ad_null,
Deleted: mplayerxp/libmpcodecs/ad_acm.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad_acm.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad_acm.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,268 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */
-#define __AD_ACM
-#include "ad_internal.h"
-#include "codecs_ld.h"
-#include "win32loader/wineacm.h"
-#include "libmpdemux/aviprint.h"
-#include "libao3/afmt.h"
-#include "mpxp_help.h"
-
-static const ad_info_t info = {
- "Win32/ACM decoders",
- "acm",
- "Nickols_K",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBAD_EXTERN(msacm)
-
-struct acm_private_t : public Opaque {
- acm_private_t();
- virtual ~acm_private_t();
-
- float pts;
- WAVEFORMATEX o_wf; // out format
- HACMSTREAM srcstream; // handle
- sh_audio_t* sh;
-};
-acm_private_t::acm_private_t() {}
-acm_private_t::~acm_private_t() {}
-
-static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; }
-
-static int init_acm_audio_codec(acm_private_t& priv){
- sh_audio_t* sh_audio = priv.sh;
- HRESULT ret;
- WAVEFORMATEX *in_fmt=sh_audio->wf;
- unsigned int srcsize=0;
-
- MSG_V("======= Win32 (ACM) AUDIO Codec init =======\n");
-
- priv.srcstream=0;
-
- priv.o_wf.nChannels=sh_audio->nch;
- priv.o_wf.nSamplesPerSec=sh_audio->rate;
- priv.o_wf.nAvgBytesPerSec=2*priv.o_wf.nSamplesPerSec*priv.o_wf.nChannels;
- priv.o_wf.wFormatTag=WAVE_FORMAT_PCM;
- priv.o_wf.nBlockAlign=2*sh_audio->nch;
- priv.o_wf.wBitsPerSample=sh_audio->afmt?afmt2bps(sh_audio->afmt)*8:16;
- priv.o_wf.cbSize=0;
- if(!in_fmt) {
- in_fmt=sh_audio->wf=new(zeromem) WAVEFORMATEX;
- memcpy(in_fmt,&priv.o_wf,sizeof(WAVEFORMATEX));
- in_fmt->wFormatTag=sh_audio->wtag;
- }
-
- if(mp_conf.verbose) {
- MSG_V("Output fmt:\n");
- print_wave_header(&priv.o_wf,sizeof(WAVEFORMATEX));
- }
- MSACM_RegisterDriver((const char *)sh_audio->codec->dll_name, sh_audio->wtag, 0);
- ret=acmStreamOpen(&priv.srcstream,(HACMDRIVER)NULL,in_fmt,&priv.o_wf,NULL,0,0,0);
- if(ret){
- if(ret==ACMERR_NOTPOSSIBLE)
- MSG_ERR("ACM_Decoder: Unappropriate audio format\n");
- else
- MSG_ERR("ACM_Decoder: acmStreamOpen error: %d", (int)ret);
- priv.srcstream=0;
- return 0;
- }
- MSG_V("Audio codec opened OK! ;-)\n");
-
- acmStreamSize(priv.srcstream, in_fmt->nBlockAlign, (LPDWORD)&srcsize, ACM_STREAMSIZEF_SOURCE);
- srcsize*=2;
- //if(srcsize<MAX_OUTBURST) srcsize=MAX_OUTBURST;
- if(!srcsize){
- MSG_WARN("Warning! ACM codec reports srcsize=0\n");
- srcsize=16384;
- }
- // limit srcsize to 4-16kb
- //while(srcsize && srcsize<4096) srcsize*=2;
- //while(srcsize>16384) srcsize/=2;
- sh_audio->audio_out_minsize=srcsize; // audio output min. size
- MSG_V("Audio ACM output buffer min. size: %ld\n",srcsize);
-
- acmStreamSize(priv.srcstream, srcsize, (LPDWORD)&srcsize, ACM_STREAMSIZEF_DESTINATION);
- if(srcsize<in_fmt->nBlockAlign) srcsize=2*in_fmt->nBlockAlign;
- sh_audio->audio_in_minsize=srcsize; // audio input min. size
- MSG_V("Audio ACM input buffer min. size: %ld\n",srcsize);
- sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
- sh_audio->nch=priv.o_wf.nChannels;
- sh_audio->rate=priv.o_wf.nSamplesPerSec;
- sh_audio->afmt=bps2afmt((priv.o_wf.wBitsPerSample+7)/8);
- sh_audio->a_in_buffer_size=2*sh_audio->audio_in_minsize;
- sh_audio->a_in_buffer=new char [sh_audio->a_in_buffer_size];
- sh_audio->a_in_buffer_len=0;
-
- return 1;
-}
-
-static int close_acm_audio_codec(acm_private_t& priv)
-{
- HRESULT ret;
-
- ret = acmStreamClose(priv.srcstream, 0);
-
- if (ret)
- switch(ret)
- {
- case ACMERR_BUSY:
- case ACMERR_CANCELED:
- MSG_DBG2( "ACM_Decoder: stream busy, waiting..\n");
- sleep(100);
- return close_acm_audio_codec(priv);
- case ACMERR_UNPREPARED:
- case ACMERR_NOTPOSSIBLE:
- return 0;
- default:
- MSG_WARN( "ACM_Decoder: unknown error occured: %d\n", ret);
- return 0;
- }
-/* MSACM_UnregisterAllDrivers();*/
- return 1;
-}
-
-MPXP_Rc init(Opaque& ctx)
-{
- acm_private_t& priv=static_cast<acm_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- float pts;
- int ret=decode(priv,reinterpret_cast<unsigned char*>(sh_audio->a_buffer),4096,sh_audio->a_buffer_size,pts);
- if(ret<0){
- MSG_INFO("ACM decoding error: %d\n",ret);
- return MPXP_False;
- }
- sh_audio->a_buffer_len=ret;
- return MPXP_Ok;
-}
-
-Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi)
-{
- UNUSED(probe);
- UNUSED(afi);
- /* Win32 ACM audio codec: */
- acm_private_t *priv;
- if(!(priv=new(zeromem) acm_private_t)) return NULL;
- priv->sh = sh_audio;
- if(!init_acm_audio_codec(*priv)){
- MSG_ERR(MSGTR_ACMiniterror);
- delete priv;
- return NULL;
- }
- MSG_V("INFO: Win32/ACM init OK!\n");
- return priv;
-}
-
-void uninit(Opaque& ctx)
-{
- acm_private_t& priv=static_cast<acm_private_t&>(ctx);
- close_acm_audio_codec(priv);
-}
-
-MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...)
-{
- acm_private_t& priv=static_cast<acm_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- int skip;
- UNUSED(arg);
- switch(cmd) {
-// case ADCTRL_RESYNC_STREAM:
-// sh_audio->a_in_buffer_len=0;/* reset ACM/DShow audio buffer */
-// return MPXP_True;
- case ADCTRL_SKIP_FRAME: {
- float pts;
- skip=sh_audio->wf->nBlockAlign;
- if(skip<16){
- skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7);
- if(skip<16) skip=16;
- }
- demux_read_data_r(*sh_audio->ds,NULL,skip,pts);
- return MPXP_True;
- }
- default:
- return MPXP_Unknown;
- }
- return MPXP_Unknown;
-}
-
-unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts)
-{
- acm_private_t& priv=static_cast<acm_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- ACMSTREAMHEADER ash;
- HRESULT hr;
- DWORD srcsize=0;
- DWORD len=minlen;
-
- acmStreamSize(priv.srcstream,len , &srcsize, ACM_STREAMSIZEF_DESTINATION);
- MSG_V("acm says: srcsize=%ld (bufflen=%d size=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,len);
-
- if(srcsize<sh_audio->wf->nBlockAlign){
- srcsize=sh_audio->wf->nBlockAlign;
- acmStreamSize(priv.srcstream, srcsize, &len, ACM_STREAMSIZEF_SOURCE);
- MSG_V("acm says: srcsize=%ld (bufflen=%d size=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,len);
- if(len>maxlen) len=maxlen;
- }
- //if(srcsize==0) srcsize=priv.o_wf.nBlockAlign;
- if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!!
- if(sh_audio->a_in_buffer_len<srcsize){
- int l;
- l = demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]),
- srcsize-sh_audio->a_in_buffer_len,pts);
- pts=FIX_APTS(sh_audio,pts,-sh_audio->a_in_buffer_len);
- sh_audio->a_in_buffer_len+=l;
- priv.pts=pts;
- }
- else pts=priv.pts;
- /* !!! NK: FINALY WE MUST KNOW size of output buffer after a_in_buffer_len modifying !!!! */
- acmStreamSize(priv.srcstream,sh_audio->a_in_buffer_len, &len, ACM_STREAMSIZEF_SOURCE);
- MSG_DBG2("acm convert %d -> %d bytes\n",sh_audio->a_in_buffer_len,len);
-
- memset(&ash, 0, sizeof(ash));
- ash.cbStruct=sizeof(ash);
- ash.fdwStatus=0;
- ash.dwUser=0;
- ash.pbSrc=reinterpret_cast<BYTE*>(sh_audio->a_in_buffer);
- ash.cbSrcLength=sh_audio->a_in_buffer_len;
- ash.pbDst=buf;
- ash.cbDstLength=len;
- hr=acmStreamPrepareHeader(priv.srcstream,&ash,0);
- if(hr){
- MSG_V("ACM_Decoder: acmStreamPrepareHeader error %d\n",(int)hr);
- return -1;
- }
- hr=acmStreamConvert(priv.srcstream,&ash,0);
- if(hr){
- MSG_DBG2("ACM_Decoder: acmStreamConvert error %d\n",(int)hr);
- switch(hr)
- {
- case ACMERR_NOTPOSSIBLE:
- case ACMERR_UNPREPARED:
- MSG_DBG2( "ACM_Decoder: acmStreamConvert error: probarly not initialized!\n");
- }
- }
- MSG_DBG2("acm converted %d -> %d\n",ash.cbSrcLengthUsed,ash.cbDstLengthUsed);
- if(ash.cbSrcLengthUsed>=sh_audio->a_in_buffer_len){
- sh_audio->a_in_buffer_len=0;
- } else {
- sh_audio->a_in_buffer_len-=ash.cbSrcLengthUsed;
- memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[ash.cbSrcLengthUsed],sh_audio->a_in_buffer_len);
- priv.pts=FIX_APTS(sh_audio,priv.pts,ash.cbSrcLengthUsed);
- }
- len=ash.cbDstLengthUsed;
- hr=acmStreamUnprepareHeader(priv.srcstream,&ash,0);
- if(hr){
- MSG_V("ACM_Decoder: acmStreamUnprepareHeader error %d\n",(int)hr);
- }
- return len;
-}
Deleted: mplayerxp/libmpcodecs/ad_dmo.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad_dmo.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad_dmo.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,133 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <dlfcn.h>
-
-#include "codecs_ld.h"
-
-#include "mplayerxp.h"
-#include "mpxp_help.h"
-#include "ad_internal.h"
-#include "ad_msg.h"
-
-static const ad_info_t info = {
- "Win32/DMO decoders",
- "dmo",
- "A'rpi",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBAD_EXTERN(dmo)
-
-#include "win32loader/dmo/DMO_AudioDecoder.h"
-
-struct admo_private_t : public Opaque {
- admo_private_t();
- virtual ~admo_private_t();
-
- float pts;
- DMO_AudioDecoder* ds_adec;
- sh_audio_t* sh;
-};
-admo_private_t::admo_private_t() {}
-admo_private_t::~admo_private_t() {
- DMO_AudioDecoder_Destroy(ds_adec);
-}
-
-static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; }
-
-static MPXP_Rc init(admo_private_t *p)
-{
- UNUSED(p);
- return MPXP_Ok;
-}
-
-static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi)
-{
- UNUSED(probe);
- UNUSED(afi);
- admo_private_t*priv;
- int chans=(mp_conf.ao_channels==sh_audio->wf->nChannels) ?
- mp_conf.ao_channels : (sh_audio->wf->nChannels>=2 ? 2 : 1);
- if(!(priv=new(zeromem) admo_private_t)) return NULL;
- priv->sh=sh_audio;
- if(!(priv->ds_adec=DMO_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf,chans))) {
- MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name);
- delete priv;
- return NULL;
- }
- sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
- sh_audio->nch=chans;
- sh_audio->rate=sh_audio->wf->nSamplesPerSec;
- sh_audio->audio_in_minsize=4*sh_audio->wf->nBlockAlign;
- if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192;
- sh_audio->audio_out_minsize=4*16384;
- MSG_V("INFO: Win32/DMO audio codec init OK!\n");
- return priv;
-}
-
-static void uninit(Opaque& ctx) { UNUSED(ctx); }
-
-static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...)
-{
- admo_private_t& priv=static_cast<admo_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- int skip;
- UNUSED(arg);
- switch(cmd) {
- case ADCTRL_SKIP_FRAME: {
- float pts;
- skip=sh_audio->wf->nBlockAlign;
- if(skip<16){
- skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7);
- if(skip<16) skip=16;
- }
- demux_read_data_r(*sh_audio->ds,NULL,skip,pts);
- return MPXP_True;
- }
- }
- return MPXP_Unknown;
-}
-
-static unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts)
-{
- admo_private_t& priv=static_cast<admo_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- unsigned len=0;
- UNUSED(minlen);
- {
- unsigned size_in=0;
- unsigned size_out=0;
- unsigned srcsize=DMO_AudioDecoder_GetSrcSize(priv.ds_adec, maxlen);
- MSG_DBG2("DMO says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen);
- if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!!
- if((unsigned)sh_audio->a_in_buffer_len<srcsize){
- unsigned l;
- l=demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]),
- srcsize-sh_audio->a_in_buffer_len,pts);
- sh_audio->a_in_buffer_len+=l;
- priv.pts=pts;
- }
- else pts=priv.pts;
- DMO_AudioDecoder_Convert(priv.ds_adec, sh_audio->a_in_buffer,sh_audio->a_in_buffer_len,
- buf,maxlen, &size_in,&size_out);
- MSG_DBG2("DMO: audio %d -> %d converted (in_buf_len=%d of %d) %f\n"
- ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,pts);
- if(size_in>=(unsigned)sh_audio->a_in_buffer_len){
- sh_audio->a_in_buffer_len=0;
- } else {
- sh_audio->a_in_buffer_len-=size_in;
- memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[size_in],sh_audio->a_in_buffer_len);
- priv.pts=FIX_APTS(sh_audio,priv.pts,size_in);
- }
- len=size_out;
- }
- return len;
-}
Deleted: mplayerxp/libmpcodecs/ad_dshow.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad_dshow.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad_dshow.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,131 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */
-#include "ad_internal.h"
-#include "mpxp_help.h"
-#include "win32loader/dshow/DS_AudioDecoder.h"
-#include "codecs_ld.h"
-
-static const ad_info_t info = {
- "Win32/DirectShow decoders",
- "dshow",
- "Nickols_K",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBAD_EXTERN(dshow)
-
-struct adshow_private_t : public Opaque {
- adshow_private_t();
- virtual ~adshow_private_t();
-
- float pts;
- DS_AudioDecoder* ds_adec;
- sh_audio_t* sh;
-};
-adshow_private_t::adshow_private_t() {}
-adshow_private_t::~adshow_private_t() {
- DS_AudioDecoder_Destroy(ds_adec);
-}
-
-static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; }
-
-MPXP_Rc init(Opaque& ctx)
-{
- UNUSED(ctx);
- return MPXP_Ok;
-}
-
-Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi)
-{
- UNUSED(probe);
- UNUSED(afi);
- adshow_private_t *priv;
- if(!(priv=new(zeromem) adshow_private_t)) return NULL;
- priv->sh = sh_audio;
- if(!(priv->ds_adec=DS_AudioDecoder_Open(sh_audio->codec->dll_name,&sh_audio->codec->guid,sh_audio->wf))) {
- MSG_ERR(MSGTR_MissingDLLcodec,sh_audio->codec->dll_name);
- delete priv;
- return NULL;
- }
- sh_audio->i_bps=sh_audio->wf->nAvgBytesPerSec;
- sh_audio->nch=sh_audio->wf->nChannels;
- sh_audio->rate=sh_audio->wf->nSamplesPerSec;
- sh_audio->audio_in_minsize=2*sh_audio->wf->nBlockAlign;
- if(sh_audio->audio_in_minsize<8192) sh_audio->audio_in_minsize=8192;
- sh_audio->audio_out_minsize=16384;
- MSG_V("INFO: Win32/DShow init OK!\n");
- return priv;
-}
-
-void uninit(Opaque& ctx) { UNUSED(ctx); }
-
-
-MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...)
-{
- adshow_private_t& priv=static_cast<adshow_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- int skip;
- UNUSED(arg);
- switch(cmd) {
- case ADCTRL_RESYNC_STREAM:
- sh_audio->a_in_buffer_len=0; // reset ACM/DShow audio buffer
- return MPXP_True;
- case ADCTRL_SKIP_FRAME: {
- float pts;
- skip=sh_audio->wf->nBlockAlign;
- if(skip<16){
- skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7);
- if(skip<16) skip=16;
- }
- demux_read_data_r(*sh_audio->ds,NULL,skip,pts);
- }
- return MPXP_True;
- default:
- return MPXP_Unknown;
- }
- return MPXP_Unknown;
-}
-
-unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts)
-{
- adshow_private_t& priv=static_cast<adshow_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- unsigned len=0;
- UNUSED(minlen);
- { unsigned size_in=0;
- unsigned size_out=0;
- unsigned srcsize=DS_AudioDecoder_GetSrcSize(priv.ds_adec, maxlen);
- MSG_DBG3("DShow says: srcsize=%d (buffsize=%d) out_size=%d\n",srcsize,sh_audio->a_in_buffer_size,maxlen);
- if(srcsize>sh_audio->a_in_buffer_size) srcsize=sh_audio->a_in_buffer_size; // !!!!!!
- if((unsigned)sh_audio->a_in_buffer_len<srcsize){
- unsigned l;
- l=demux_read_data_r(*sh_audio->ds,reinterpret_cast<unsigned char*>(&sh_audio->a_in_buffer[sh_audio->a_in_buffer_len]),
- srcsize-sh_audio->a_in_buffer_len,pts);
- sh_audio->a_in_buffer_len+=l;
- priv.pts=pts;
- }
- else pts=priv.pts;
- DS_AudioDecoder_Convert(priv.ds_adec, reinterpret_cast<unsigned char*>(sh_audio->a_in_buffer),sh_audio->a_in_buffer_len,
- buf,maxlen, &size_in,&size_out);
- MSG_DBG2("DShow: audio %d -> %d converted (in_buf_len=%d of %d) %f\n"
- ,size_in,size_out,sh_audio->a_in_buffer_len,sh_audio->a_in_buffer_size,pts);
- if(size_in>=(unsigned)sh_audio->a_in_buffer_len){
- sh_audio->a_in_buffer_len=0;
- } else {
- sh_audio->a_in_buffer_len-=size_in;
- memcpy(sh_audio->a_in_buffer,&sh_audio->a_in_buffer[size_in],sh_audio->a_in_buffer_len);
- priv.pts=FIX_APTS(sh_audio,priv.pts,size_in);
- }
- len=size_out;
- }
- return len;
-}
Deleted: mplayerxp/libmpcodecs/ad_qtaudio.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad_qtaudio.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad_qtaudio.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,331 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <inttypes.h>
-#include <dlfcn.h>
-
-#include "ad_internal.h"
-#include "osdep/bswap.h"
-#include "codecs_ld.h"
-#include "mplayerxp.h"
-#include "libao3/afmt.h"
-#ifdef WIN32_LOADER
-#include "win32loader/ldt_keeper.h"
-#endif
-
-#ifdef MACOSX
-#include <QuickTime/QuickTimeComponents.h>
-#endif
-
-static const ad_info_t info = {
- "QuickTime Audio Decoder",
- "qtaudio",
- "A'rpi & Sascha Sommer",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBAD_EXTERN(qtaudio)
-
-
-typedef struct OpaqueSoundConverter* SoundConverter;
-typedef unsigned long OSType;
-typedef unsigned long UnsignedFixed;
-typedef uint8_t Byte;
-typedef struct SoundComponentData {
- long flags;
- OSType format;
- short numChannels;
- short sampleSize;
- UnsignedFixed sampleRate;
- long sampleCount;
- Byte* buffer;
- long reserved;
-}SoundComponentData;
-
-typedef int (__cdecl* LPFUNC1)(long flag);
-typedef int (__cdecl* LPFUNC2)(const SoundComponentData *, const SoundComponentData *,SoundConverter *);
-typedef int (__cdecl* LPFUNC3)(SoundConverter sc);
-typedef int (__cdecl* LPFUNC4)(void);
-typedef int (__cdecl* LPFUNC5)(SoundConverter sc, OSType selector,any_t* infoPtr);
-typedef int (__cdecl* LPFUNC6)(SoundConverter sc,
- unsigned long inputBytesTarget,
- unsigned long *inputFrames,
- unsigned long *inputBytes,
- unsigned long *outputBytes );
-typedef int (__cdecl* LPFUNC7)(SoundConverter sc,
- const any_t*inputPtr,
- unsigned long inputFrames,
- any_t*outputPtr,
- unsigned long *outputFrames,
- unsigned long *outputBytes );
-typedef int (__cdecl* LPFUNC8)(SoundConverter sc,
- any_t*outputPtr,
- unsigned long *outputFrames,
- unsigned long *outputBytes);
-typedef int (__cdecl* LPFUNC9)(SoundConverter sc);
-
-static HINSTANCE qtml_dll;
-static LPFUNC1 InitializeQTML;
-static LPFUNC2 SoundConverterOpen;
-static LPFUNC3 SoundConverterClose;
-static LPFUNC4 TerminateQTML;
-static LPFUNC5 SoundConverterSetInfo;
-static LPFUNC6 SoundConverterGetBufferSizes;
-static LPFUNC7 SoundConverterConvertBuffer;
-static LPFUNC8 SoundConverterEndConversion;
-static LPFUNC9 SoundConverterBeginConversion;
-
-#define siDecompressionParams 2002876005 // siDecompressionParams = FOUR_CHAR_CODE('wave')
-
-HMODULE WINAPI LoadLibraryA(LPCSTR);
-FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
-int WINAPI FreeLibrary(HMODULE);
-
-static int loader_init()
-{
-#ifdef WIN32_LOADER
- Setup_LDT_Keeper();
-#endif
- qtml_dll = LoadLibraryA((LPCSTR)"qtmlClient.dll");
- if( !qtml_dll ) {
- MSG_ERR("failed loading dll\n" );
- return 1;
- }
-#if 1
- InitializeQTML = (LPFUNC1)GetProcAddress(qtml_dll,(LPCSTR)"InitializeQTML");
- if ( InitializeQTML == NULL ) {
- MSG_ERR("failed geting proc address InitializeQTML\n");
- return 1;
- }
- SoundConverterOpen = (LPFUNC2)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterOpen");
- if ( SoundConverterOpen == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterOpen\n");
- return 1;
- }
- SoundConverterClose = (LPFUNC3)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterClose");
- if ( SoundConverterClose == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterClose\n");
- return 1;
- }
- TerminateQTML = (LPFUNC4)GetProcAddress(qtml_dll,(LPCSTR)"TerminateQTML");
- if ( TerminateQTML == NULL ) {
- MSG_ERR("failed getting proc address TerminateQTML\n");
- return 1;
- }
- SoundConverterSetInfo = (LPFUNC5)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterSetInfo");
- if ( SoundConverterSetInfo == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterSetInfo\n");
- return 1;
- }
- SoundConverterGetBufferSizes = (LPFUNC6)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterGetBufferSizes");
- if ( SoundConverterGetBufferSizes == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterGetBufferSizes\n");
- return 1;
- }
- SoundConverterConvertBuffer = (LPFUNC7)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterConvertBuffer");
- if ( SoundConverterConvertBuffer == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterConvertBuffer1\n");
- return 1;
- }
- SoundConverterEndConversion = (LPFUNC8)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterEndConversion");
- if ( SoundConverterEndConversion == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterEndConversion\n");
- return 1;
- }
- SoundConverterBeginConversion = (LPFUNC9)GetProcAddress(qtml_dll,(LPCSTR)"SoundConverterBeginConversion");
- if ( SoundConverterBeginConversion == NULL ) {
- MSG_ERR("failed getting proc address SoundConverterBeginConversion\n");
- return 1;
- }
- MSG_V("Standard init done you may now call supported functions\n");
-#endif
- MSG_V("loader_init DONE???\n");
- return 0;
-}
-
-static SoundConverter myConverter = NULL;
-static SoundComponentData InputFormatInfo,OutputFormatInfo;
-
-static int InFrameSize;
-static int OutFrameSize;
-
-struct qta_private_t : public Opaque {
- qta_private_t();
- virtual ~qta_private_t();
-
- sh_audio_t* sh;
-};
-
-static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; }
-
-static Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh,audio_filter_info_t& afi){
- UNUSED(probe);
- UNUSED(afi);
- int error;
- unsigned long FramesToGet=0; //how many frames the demuxer has to get
- unsigned long InputBufferSize=0; //size of the input buffer
- unsigned long OutputBufferSize=0; //size of the output buffer
- unsigned long WantedBufferSize=0; //the size you want your buffers to be
-
- if(mp_conf.s_cache_size) {
- MSG_FATAL("Disabling sound:\nwin32 quicktime DLLs must be initialized in single-threaded mode! Try -nocache\n");
- return NULL;
- }
- MSG_INFO("win32 libquicktime loader (c) Sascha Sommer\n");
-
-#ifdef MACOSX
- EnterMovies();
-#else
- if(loader_init()) return NULL; // failed to load DLL
-
- MSG_V("loader_init DONE!\n");
-
- error = InitializeQTML(6+16);
- MSG_ERR("InitializeQTML:%i\n",error);
- if(error) return NULL;
-#endif
-
-#if 1
- OutputFormatInfo.flags = InputFormatInfo.flags = 0;
- OutputFormatInfo.sampleCount = InputFormatInfo.sampleCount = 0;
- OutputFormatInfo.buffer = InputFormatInfo.buffer = NULL;
- OutputFormatInfo.reserved = InputFormatInfo.reserved = 0;
- OutputFormatInfo.numChannels = InputFormatInfo.numChannels = sh->wf->nChannels;
- InputFormatInfo.sampleSize = sh->wf->wBitsPerSample;
- OutputFormatInfo.sampleSize = 16;
- OutputFormatInfo.sampleRate = InputFormatInfo.sampleRate = sh->wf->nSamplesPerSec;
- InputFormatInfo.format = bswap_32(sh->wtag); //1363430706;///*1768775988;//*/1902406962;//qdm2//1768775988;//FOUR_CHAR_CODE('ima4');
- OutputFormatInfo.format = 1313820229;// FOUR_CHAR_CODE('NONE');
-
- error = SoundConverterOpen(&InputFormatInfo, &OutputFormatInfo, &myConverter);
- MSG_V("SoundConverterOpen:%i\n",error);
- if(error) return NULL;
-
- if(sh->codecdata){
- error = SoundConverterSetInfo(myConverter,siDecompressionParams,sh->codecdata);
- MSG_V("SoundConverterSetInfo:%i\n",error);
-// if(error) return 0;
- }
-
- WantedBufferSize=OutputFormatInfo.numChannels*OutputFormatInfo.sampleRate*2;
- error = SoundConverterGetBufferSizes(myConverter,
- WantedBufferSize,&FramesToGet,&InputBufferSize,&OutputBufferSize);
- MSG_V("SoundConverterGetBufferSizes:%i\n",error);
- MSG_V("WantedBufferSize = %li\n",WantedBufferSize);
- MSG_V("InputBufferSize = %li\n",InputBufferSize);
- MSG_V("OutputBufferSize = %li\n",OutputBufferSize);
- MSG_V("FramesToGet = %li\n",FramesToGet);
-
- InFrameSize=(InputBufferSize+FramesToGet-1)/FramesToGet;
- OutFrameSize=OutputBufferSize/FramesToGet;
-
- MSG_V("FrameSize: %i -> %i\n",InFrameSize,OutFrameSize);
-
- error = SoundConverterBeginConversion(myConverter);
- MSG_V("SoundConverterBeginConversion:%i\n",error);
- if(error) return NULL;
-
- sh->audio_out_minsize=OutputBufferSize;
- sh->audio_in_minsize=InputBufferSize;
-
- sh->nch=sh->wf->nChannels;
- sh->rate=sh->wf->nSamplesPerSec;
- sh->afmt=bps2afmt(2); //(sh->wf->wBitsPerSample+7)/8;
-
- sh->i_bps=sh->wf->nAvgBytesPerSec;
-//InputBufferSize*WantedBufferSize/OutputBufferSize;
-
-#endif
- qta_private_t* priv = new(zeromem) qta_private_t;
- priv->sh = sh;
- return priv; // return values: 1=OK 0=ERROR
-}
-
-static MPXP_Rc init(Opaque& ctx)
-{
- UNUSED(ctx);
- return MPXP_Ok; // return values: 1=OK 0=ERROR
-}
-
-static void uninit(Opaque& ctx){
- qta_private_t& priv=static_cast<qta_private_t&>(ctx);
- sh_audio_t* sh = priv.sh;
- int error;
- unsigned long ConvertedFrames=0;
- unsigned long ConvertedBytes=0;
- UNUSED(sh);
- error=SoundConverterEndConversion(myConverter,NULL,&ConvertedFrames,&ConvertedBytes);
- MSG_V("SoundConverterEndConversion:%i\n",error);
- error = SoundConverterClose(myConverter);
- MSG_V("SoundConverterClose:%i\n",error);
-// error = TerminateQTML();
-// MSG_V("TerminateQTML:%i\n",error);
-// FreeLibrary( qtml_dll );
-// qtml_dll = NULL;
-// printf("qt dll loader uninit done\n");
-#ifdef MACOSX
- ExitMovies();
-#endif
-}
-
-static unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts){
- qta_private_t& priv=static_cast<qta_private_t&>(ctx);
- sh_audio_t* sh = priv.sh;
- int error;
- unsigned long FramesToGet=0; //how many frames the demuxer has to get
- unsigned long InputBufferSize=0; //size of the input buffer
- unsigned long ConvertedFrames=0;
- unsigned long ConvertedBytes=0;
-
- FramesToGet=minlen/OutFrameSize;
- if(FramesToGet*OutFrameSize<minlen &&
- (FramesToGet+1)*OutFrameSize<=maxlen) ++FramesToGet;
- if(FramesToGet*InFrameSize>sh->a_in_buffer_size)
- FramesToGet=sh->a_in_buffer_size/InFrameSize;
-
- InputBufferSize=FramesToGet*InFrameSize;
-
-// printf("FramesToGet = %li (%li -> %li bytes)\n",FramesToGet,
-// InputBufferSize, FramesToGet*OutFrameSize);
-
- if(InputBufferSize>(unsigned)sh->a_in_buffer_len){
- int x=demux_read_data_r(*sh->ds,reinterpret_cast<unsigned char*>(&sh->a_in_buffer[sh->a_in_buffer_len]),
- InputBufferSize-sh->a_in_buffer_len,pts);
- if(x>0) sh->a_in_buffer_len+=x;
- if(InputBufferSize>(unsigned)sh->a_in_buffer_len)
- FramesToGet=sh->a_in_buffer_len/InFrameSize; // not enough data!
- }
-
-// printf("\nSoundConverterConvertBuffer(myConv=%p,inbuf=%p,frames=%d,outbuf=%p,&convframes=%p,&convbytes=%p)\n",
-// myConverter,sh->a_in_buffer,FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
- error = SoundConverterConvertBuffer(myConverter,sh->a_in_buffer,
- FramesToGet,buf,&ConvertedFrames,&ConvertedBytes);
-// printf("SoundConverterConvertBuffer:%i\n",error);
-// printf("ConvertedFrames = %li\n",ConvertedFrames);
-// printf("ConvertedBytes = %li\n",ConvertedBytes);
-
-// InputBufferSize=(ConvertedBytes/OutFrameSize)*InFrameSize; // FIXME!!
- InputBufferSize=FramesToGet*InFrameSize;
- sh->a_in_buffer_len-=InputBufferSize;
- if(sh->a_in_buffer_len<0) sh->a_in_buffer_len=0; // should not happen...
- else if(sh->a_in_buffer_len>0){
- memcpy(sh->a_in_buffer,&sh->a_in_buffer[InputBufferSize],sh->a_in_buffer_len);
- }
-
- return ConvertedBytes;
-}
-
-static MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...){
- // various optional functions you MAY implement:
- UNUSED(ctx);
- UNUSED(cmd);
- UNUSED(arg);
- return MPXP_Unknown;
-}
Deleted: mplayerxp/libmpcodecs/ad_twin.cpp
===================================================================
--- mplayerxp/libmpcodecs/ad_twin.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/ad_twin.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,644 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdexcept>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */
-#include "ad_internal.h"
-#include "codecs_ld.h"
-#include "win32loader/ldt_keeper.h"
-#include "win32loader/wine/windef.h"
-#include "libao3/afmt.h"
-#include "libmpdemux/aviprint.h"
-#include "mpxp_help.h"
-
-static const ad_info_t info = {
- "TWinVQ decoder",
- "vqf",
- "Nickols_K",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBAD_EXTERN(twin)
-
-
-/************************/
-/*** General settings ***/
-/************************/
-/* Initialization error code */
-enum INIT_ERROR_CODE {
- TVQ_NO_ERROR = 0, // no error
- TVQ_ERROR, // general
- TVQ_ERROR_VERSION, // wrong version
- TVQ_ERROR_CHANNEL, // channel setting error
- TVQ_ERROR_MODE, // wrong coding mode
- TVQ_ERROR_PARAM, // inner parameter setting error
- TVQ_ERROR_N_CAN, // wrong number of VQ pre-selection candidates, used only in encoder
-};
-
-/* version ID */
-#define TVQ_UNKNOWN_VERSION -1
-#define V2 0
-#define V2PP 1
-
-#define N_VERSIONS 2
-
-/* window types */
-enum WINDOW_TYPE {
- ONLY_LONG_WINDOW = 0,
- LONG_SHORT_WINDOW,
- ONLY_SHORT_WINDOW,
- SHORT_LONG_WINDOW,
- SHORT_MEDIUM_WINDOW,
- MEDIUM_LONG_WINDOW,
- LONG_MEDIUM_WINDOW,
- MEDIUM_SHORT_WINDOW,
- ONLY_MEDIUM_WINDOW,
-};
-
-/* block types */
-enum BLOCK_TYPE {
- BLK_SHORT = 0,
- BLK_MEDIUM,
- BLK_LONG,
- BLK_PPC,
-};
-#define N_BTYPE 3 // number of block types
-#define N_INTR_TYPE 4 // number of interleave types, enum BLOCK_TYPE is commonly used for detecting interleave types.
-
-/* maximum number of channels */
-#define N_CH_MAX 2
-
-/* type definition of code information interface */
-typedef struct {
- /* block type */
- int w_type;
- int btype;
- /* FBC info */
- int *segment_sw[ N_CH_MAX ];
- int *band_sw[ N_CH_MAX ];
- int *fg_intensity[ N_CH_MAX ];
- /* VQ info */
- int *wvq;
- /* BSE info */
- int *fw;
- int *fw_alf;
- /* gain info */
- int *pow;
- /* LSP info */
- int *lsp[ N_CH_MAX ];
- /* PPC info */
- int pit[ N_CH_MAX ];
- int *pls;
- int pgain[ N_CH_MAX ];
- /* EBC info */
- int *bc[ N_CH_MAX ];
- any_t*manager;
-} INDEX;
-
-/***********************************************/
-/*** Definitions about program configuration ***/
-/***********************************************/
-/* type definition of tvqConfInfoSubBlock */
-typedef struct {
- int sf_sz; // subframe size
- int nsf; // number of subframes
- int ndiv; // number of division of weighted interleave vector quantization
- int ncrb; // number of Bark-scale subbands
- int fw_ndiv; // number of division of BSE VQ
- int fw_nbit; // number of bits for BSE VQ
- int nsubg; // number of sub-blocks for gain coding
- int ppc_enable; // PPC switch
- int ebc_enable; // EBC switch
- int ebc_crb_base; // EBC base band
- int ebc_bits; // EBC bits
- int fbc_enable; // FBC switch
- int fbc_n_segment; // FBC number of segments
- int fbc_nband; // FBC number of subbands
- int *fbc_crb_tbl; // FBC subband table
-} tvqConfInfoSubBlock;
-
-/* type definition of tvqConfInfo */
-typedef struct {
- /* frame configuration */
- int N_CH;
- /* window type coding */
- int BITS_WTYPE;
- /* LSP coding */
- int LSP_BIT0;
- int LSP_BIT1;
- int LSP_BIT2;
- int LSP_SPLIT;
- /* Bark-scale envelope coding */
- int FW_ARSW_BITS;
- /* gain coding */
- int GAIN_BITS;
- int SUB_GAIN_BITS;
- /* pitch excitation */
- int N_DIV_P;
- int BASF_BIT;
- int PGAIN_BIT;
- /* block type dependent parameters */
- tvqConfInfoSubBlock cfg[N_BTYPE];
-} tvqConfInfo;
-
-#define KEYWORD_BYTES 4
-#define VERSION_BYTES 8
-#define ELEM_BYTES sizeof(unsigned long)
-/*
- */
-typedef struct{
- char ID[KEYWORD_BYTES+VERSION_BYTES+1];
- int size;
- /* Common Chunk */
- int channelMode; /* channel mode (mono:0/stereo:1) */
- int bitRate; /* bit rate (kbit/s) */
- int samplingRate; /* sampling rate (44.1 kHz -> 44) */
- int securityLevel; /* security level (always 0) */
- /* Text Chunk */
- char Name[BUFSIZ];
- char Comt[BUFSIZ];
- char Auth[BUFSIZ];
- char Cpyr[BUFSIZ];
- char File[BUFSIZ];
- char Extr[BUFSIZ]; // add by OKAMOTO 99.12.21
- /* Data size chunk*/
- int Dsiz;
-} headerInfo;
-
-extern HMODULE WINAPI LoadLibraryA(LPCSTR);
-extern FARPROC WINAPI GetProcAddress(HMODULE,LPCSTR);
-extern int WINAPI FreeLibrary(HMODULE);
-
-static int (__cdecl* TvqInitialize_ptr)( headerInfo *setupInfo, INDEX *index, int dispErrorMessageBox );
-#define TvqInitialize(a,b,c) (*TvqInitialize_ptr)(a,b,c)
-static void (__cdecl* TvqTerminate_ptr)( INDEX *index );
-#define TvqTerminate(a) (*TvqTerminate_ptr)(a)
-static void (__cdecl* TvqGetVectorInfo_ptr)(int *bits0[], int *bits1[]);
-#define TvqGetVectorInfo(a,b) (*TvqGetVectorInfo_ptr)(a,b)
-
-static void (__cdecl* TvqDecodeFrame_ptr)(INDEX *indexp, float out[]);
-#define TvqDecodeFrame(a,b) (*TvqDecodeFrame_ptr)(a,b)
-static int (__cdecl* TvqWtypeToBtype_ptr)( int w_type, int *btype );
-#define TvqWtypeToBtype(a,b) (*TvqWtypeToBtype_ptr)(a,b)
-static void (__cdecl* TvqUpdateVectorInfo_ptr)(int varbits, int *ndiv, int bits0[], int bits1[]);
-#define TvqUpdateVectorInfo(a,b,c,d) (*TvqUpdateVectorInfo_ptr)(a,b,c,d)
-
-static int (__cdecl* TvqCheckVersion_ptr)(char *versionID);
-#define TvqCheckVersion(a) (*TvqCheckVersion_ptr)(a)
-static void (__cdecl* TvqGetConfInfo_ptr)(tvqConfInfo *cf);
-#define TvqGetConfInfo(a) (*TvqGetConfInfo_ptr)(a)
-static int (__cdecl* TvqGetFrameSize_ptr)();
-#define TvqGetFrameSize() (*TvqGetFrameSize_ptr)()
-static int (__cdecl* TvqGetNumFixedBitsPerFrame_ptr)();
-#define TvqGetNumFixedBitsPerFrame() (*TvqGetNumFixedBitsPerFrame_ptr)()
-
-#define BYTE_BIT 8
-#define BBUFSIZ 1024 /* Bit buffer size (bytes) */
-#define BBUFLEN (BBUFSIZ*BYTE_BIT) /* Bit buffer length (bits) */
-struct twin_private_t : public Opaque {
- twin_private_t();
- virtual ~twin_private_t();
-
- float pts;
- WAVEFORMATEX o_wf; // out format
- INDEX index;
- tvqConfInfo cf;
- headerInfo hi;
- int *bits_0[N_INTR_TYPE], *bits_1[N_INTR_TYPE];
- unsigned framesize;
- /* stream related */
- int readable;
- int ptr; /* current point in the bit buffer */
- int nbuf; /* bit buffer size */
- char buf[BBUFSIZ]; /* the bit buffer */
- sh_audio_t* sh;
-};
-twin_private_t::twin_private_t() {}
-twin_private_t::~twin_private_t() {}
-
-static const audio_probe_t* __FASTCALL__ probe(uint32_t wtag) { return NULL; }
-
-static HINSTANCE vqf_dll;
-
-static int load_dll( const char *libname )
-{
-#ifdef WIN32_LOADER
- Setup_LDT_Keeper_ptr();
-#endif
- vqf_dll = LoadLibraryA((LPCSTR)libname);
- if( vqf_dll == NULL ) {
- MSG_ERR("failed loading dll\n" );
- return 0;
- }
- TvqInitialize_ptr = (int (*)(headerInfo*,INDEX*,int))GetProcAddress(vqf_dll,(LPCSTR)"TvqInitialize");
- TvqTerminate_ptr = (void (*)(INDEX*))GetProcAddress(vqf_dll,(LPCSTR)"TvqTerminate");
- TvqGetVectorInfo_ptr = (void (*)(int**,int**))GetProcAddress(vqf_dll,(LPCSTR)"TvqGetVectorInfo");
- TvqDecodeFrame_ptr = (void (*)(INDEX*,float*))GetProcAddress(vqf_dll,(LPCSTR)"TvqDecodeFrame");
- TvqWtypeToBtype_ptr = (int (*)(int,int*))GetProcAddress(vqf_dll,(LPCSTR)"TvqWtypeToBtype");
- TvqUpdateVectorInfo_ptr = (void (*)(int,int*,int*,int*))GetProcAddress(vqf_dll,(LPCSTR)"TvqUpdateVectorInfo");
- TvqCheckVersion_ptr = (int (*)(char*))GetProcAddress(vqf_dll,(LPCSTR)"TvqCheckVersion");
- TvqGetConfInfo_ptr = (void (*)(tvqConfInfo*))GetProcAddress(vqf_dll,(LPCSTR)"TvqGetConfInfo");
- TvqGetFrameSize_ptr = (int (*)())GetProcAddress(vqf_dll,(LPCSTR)"TvqGetFrameSize");
- TvqGetNumFixedBitsPerFrame_ptr = (int (*)())GetProcAddress(vqf_dll,(LPCSTR)"TvqGetNumFixedBitsPerFrame");
- return TvqInitialize_ptr && TvqTerminate_ptr && TvqGetVectorInfo_ptr &&
- TvqDecodeFrame_ptr && TvqWtypeToBtype_ptr && TvqUpdateVectorInfo_ptr &&
- TvqCheckVersion_ptr && TvqGetConfInfo_ptr && TvqGetFrameSize_ptr &&
- TvqGetNumFixedBitsPerFrame_ptr;
-}
-
-static int init_vqf_audio_codec(twin_private_t& priv){
- sh_audio_t* sh_audio = priv.sh;
- WAVEFORMATEX *in_fmt=sh_audio->wf;
- int ver;
- MSG_V("======= Win32 (TWinVQ) AUDIO Codec init =======\n");
-
- priv.o_wf.nChannels=in_fmt->nChannels;
- priv.o_wf.nSamplesPerSec=in_fmt->nSamplesPerSec;
- priv.o_wf.nAvgBytesPerSec=in_fmt->nSamplesPerSec;
- priv.o_wf.wFormatTag=0x01;
- priv.o_wf.nBlockAlign=4*in_fmt->nChannels;
- priv.o_wf.wBitsPerSample=in_fmt->wBitsPerSample;
- priv.o_wf.cbSize=0;
- sh_audio->nch=in_fmt->nChannels;
- sh_audio->rate=in_fmt->nSamplesPerSec;
- sh_audio->afmt=AFMT_FLOAT32;
-
- if(mp_conf.verbose) {
- MSG_V("Input format:\n");
- print_wave_header(in_fmt,sizeof(WAVEFORMATEX));
- MSG_V("Output fmt:\n");
- print_wave_header(&priv.o_wf,sizeof(WAVEFORMATEX));
- }
- memcpy(&priv.hi,&in_fmt[1],sizeof(headerInfo));
- if((ver=TvqInitialize(&priv.hi,&priv.index,0))){
- const char *tvqe[]={
- "No errors",
- "General error",
- "Wrong version",
- "Channel setting error",
- "Wrong coding mode",
- "Inner parameter setting error",
- "Wrong number of VQ pre-selection candidates, used only in encoder" };
- MSG_ERR("Tvq initialization error: %s\n",ver>=0&&ver<7?tvqe[ver]:"Unknown");
- return 0;
- }
- ver=TvqCheckVersion(priv.hi.ID);
- if(ver==TVQ_UNKNOWN_VERSION){
- MSG_ERR("Tvq unknown version of stream\n" );
- return 0;
- }
- TvqGetConfInfo(&priv.cf);
- TvqGetVectorInfo(priv.bits_0,priv.bits_1);
- priv.framesize=TvqGetFrameSize();
- sh_audio->audio_in_minsize=priv.framesize*in_fmt->nChannels;
- sh_audio->a_in_buffer_size=4*sh_audio->audio_in_minsize;
- sh_audio->a_in_buffer=new char [sh_audio->a_in_buffer_size];
- sh_audio->a_in_buffer_len=0;
-
- return 1;
-}
-
-static int close_vqf_audio_codec(twin_private_t& priv)
-{
- TvqTerminate(&priv.index);
- return 1;
-}
-
-MPXP_Rc init(Opaque& ctx)
-{
- UNUSED(ctx);
- return MPXP_Ok;
-}
-
-Opaque* preinit(const audio_probe_t& probe,sh_audio_t *sh_audio,audio_filter_info_t& afi)
-{
- UNUSED(afi);
- /* Win32 VQF audio codec: */
- twin_private_t *priv;
- if(!(priv=new(zeromem) twin_private_t)) return NULL;
- priv->sh = sh_audio;
- if(!load_dll(probe.codec_dll)) {
- MSG_ERR("win32.dll looks broken :(\n");
- delete priv;
- return NULL;
- }
- if(!init_vqf_audio_codec(*priv)){
- MSG_ERR("TWinVQ initialization fail\n");
- delete priv;
- return NULL;
- }
- MSG_V("INFO: TWinVQ audio codec init OK!\n");
- return priv;
-}
-
-void uninit(Opaque& ctx)
-{
- twin_private_t& priv=static_cast<twin_private_t&>(ctx);
- close_vqf_audio_codec(priv);
- FreeLibrary(vqf_dll);
-}
-
-MPXP_Rc control_ad(Opaque& ctx,int cmd,any_t* arg, ...)
-{
- twin_private_t& priv=static_cast<twin_private_t&>(ctx);
- sh_audio_t* sh_audio = priv.sh;
- int skip;
- UNUSED(arg);
- switch(cmd) {
- case ADCTRL_SKIP_FRAME: {
- float pts;
- skip=sh_audio->wf->nBlockAlign;
- if(skip<16){
- skip=(sh_audio->wf->nAvgBytesPerSec/16)&(~7);
- if(skip<16) skip=16;
- }
- demux_read_data_r(*sh_audio->ds,NULL,skip,pts);
- return MPXP_True;
- }
- default:
- return MPXP_Unknown;
- }
- return MPXP_Unknown;
-}
-
-static int bread(char *data, /* Output: Output data array */
- int size, /* Input: Length of each data */
- int nbits, /* Input: Number of bits to write */
- twin_private_t &priv, /* Input: File pointer */
- float &pts)
-{
- /*--- Variables ---*/
- int ibits, iptr, idata, ibufadr, ibufbit, icl;
- unsigned char mask, tmpdat;
- int retval;
- sh_audio_t* sh = priv.sh;
-
- /*--- Main operation ---*/
- retval = 0;
- mask = 0x1;
- for ( ibits=0; ibits<nbits; ibits++ ){
- if ( priv.readable == 0 ){ /* when the file data buffer is empty */
- priv.nbuf = demux_read_data_r(*sh->ds, reinterpret_cast<unsigned char*>(priv.buf), BBUFSIZ, priv.pts);
- priv.nbuf *= 8;
- priv.readable = 1;
- }
- pts=FIX_APTS(sh,priv.pts,priv.ptr);
- iptr = priv.ptr; /* current file data buffer pointer */
- if ( iptr >= priv.nbuf ) /* If data file is empty then return */
- return retval;
- ibufadr = iptr/BYTE_BIT; /* current file data buffer address */
- ibufbit = iptr%BYTE_BIT; /* current file data buffer bit */
- /* tmpdat = stream->buf[ibufadr] >> (BYTE_BIT-ibufbit-1); */
- tmpdat = (unsigned char)priv.buf[ibufadr];
- tmpdat >>= (BYTE_BIT-ibufbit-1);
- /* current data bit */
-
- idata = ibits*size; /* output data address */
- data[idata] = (char)(tmpdat & mask); /* set output data */
- for (icl=1; icl<size; icl++)
- data[idata+icl] = 0; /* clear the rest output data buffer */
- priv.ptr += 1; /* update data buffer pointer */
- if (priv.ptr == BBUFLEN){
- priv.ptr = 0;
- priv.readable = 0;
- }
- ++retval;
- }
- return retval;
-}
-
-static const int BITS_INT=(sizeof(int)*8);
-
-static int get_bstm(int *data, /* Input: input data */
- unsigned nbits, /* Input: number of bits */
- twin_private_t& priv, /* Input: bit file pointer */
- float& pts)
-{
- unsigned ibit;
- unsigned mask;
- unsigned work;
- char tmpbit[BITS_INT];
- int retval;
-
- if ( nbits > BITS_INT ) throw std::runtime_error("get_bstm(): falied");
-
- retval = bread(tmpbit, sizeof(*tmpbit), nbits, priv, pts );
- for (ibit=retval; ibit<nbits; ibit++){
- tmpbit[ibit] = 0;
- }
- mask = 0x1<<(nbits-1);
- work=0;
- for ( ibit=0; ibit<nbits; ibit++ ){
- work += mask*tmpbit[ibit];
- mask >>= 1;
- }
- *data = work;
- return retval;
-}
-
-static int GetVqInfo( tvqConfInfoSubBlock *cfg,
- int bits0[],
- int bits1[],
- int variableBits,
- INDEX *_index,
- twin_private_t& priv)
-{
- int idiv;
- int bitcount = 0;
- float pts;
- if ( _index->btype == BLK_LONG ){
- TvqUpdateVectorInfo( variableBits, &cfg->ndiv, bits0, bits1 ); // re-calculate VQ bits
- }
- for ( idiv=0; idiv<cfg->ndiv; idiv++ ){
- bitcount += get_bstm(&_index->wvq[idiv],bits0[idiv],priv,pts); /* CB 0 */
- bitcount += get_bstm(&_index->wvq[idiv+cfg->ndiv],bits1[idiv],priv,pts); /* CB 1 */
- }
- return bitcount;
-}
-
-static int GetBseInfo( tvqConfInfo *cf, tvqConfInfoSubBlock *cfg, INDEX *_index, twin_private_t& priv)
-{
- int i_sup, isf, itmp, idiv;
- int bitcount = 0;
- float pts;
- for ( i_sup=0; i_sup<cf->N_CH; i_sup++ ){
- for ( isf=0; isf<cfg->nsf; isf++ ){
- for ( idiv=0; idiv<cfg->fw_ndiv; idiv++ ){
- itmp = idiv + ( isf + i_sup * cfg->nsf ) * cfg->fw_ndiv;
- bitcount += get_bstm(&_index->fw[itmp],cfg->fw_nbit,priv,pts);
- }
- }
- }
- for ( i_sup=0; i_sup<cf->N_CH; i_sup++ ){
- for ( isf=0; isf<cfg->nsf; isf++ ){
- bitcount += get_bstm(&_index->fw_alf[i_sup * cfg->nsf + isf],cf->FW_ARSW_BITS,priv,pts);
- }
- }
- return bitcount;
-}
-
-static int GetGainInfo(tvqConfInfo *cf, tvqConfInfoSubBlock *cfg, INDEX *_index, twin_private_t& priv )
-{
- int i_sup, iptop, isf;
- int bitcount = 0;
- float pts;
- for ( i_sup=0; i_sup<cf->N_CH; i_sup++ ){
- iptop = ( cfg->nsubg + 1 ) * i_sup;
- bitcount += get_bstm(&_index->pow[iptop], cf->GAIN_BITS,priv,pts);
- for ( isf=0; isf<cfg->nsubg; isf++ ){
- bitcount += get_bstm(&_index->pow[iptop+isf+1], cf->SUB_GAIN_BITS,priv,pts);
- }
- }
- return bitcount;
-}
-
-static int GetLspInfo( tvqConfInfo *cf, INDEX *_index, twin_private_t& priv )
-{
- int i_sup, itmp;
- int bitcount = 0;
- float pts;
-
- for ( i_sup=0; i_sup<cf->N_CH; i_sup++ ){
- bitcount += get_bstm(&_index->lsp[i_sup][0], cf->LSP_BIT0,priv,pts); /* pred. switch */
- bitcount += get_bstm(&_index->lsp[i_sup][1], cf->LSP_BIT1,priv,pts); /* first stage */
- for ( itmp=0; itmp<cf->LSP_SPLIT; itmp++ ){ /* second stage */
- bitcount += get_bstm(&_index->lsp[i_sup][itmp+2], cf->LSP_BIT2,priv,pts);
- }
- }
-
- return bitcount;
-}
-
-static int GetPpcInfo( tvqConfInfo *cf, INDEX *_index, twin_private_t& priv)
-{
- int idiv, i_sup;
- int bitcount = 0;
- float pts;
-
- for ( idiv=0; idiv<cf->N_DIV_P; idiv++ ){
- bitcount += get_bstm(&(_index->pls[idiv]), priv.bits_0[BLK_PPC][idiv],priv,pts); /*CB0*/
- bitcount += get_bstm(&(_index->pls[idiv+cf->N_DIV_P]), priv.bits_1[BLK_PPC][idiv],priv,pts);/*CB1*/
- }
- for (i_sup=0; i_sup<cf->N_CH; i_sup++){
- bitcount += get_bstm(&(_index->pit[i_sup]), cf->BASF_BIT,priv,pts);
- bitcount += get_bstm(&(_index->pgain[i_sup]), cf->PGAIN_BIT,priv,pts);
- }
-
- return bitcount;
-}
-
-static int GetEbcInfo( tvqConfInfo *cf, tvqConfInfoSubBlock *cfg, INDEX *_index, twin_private_t& priv)
-{
- int i_sup, isf, itmp;
- int bitcount = 0;
- float pts;
-
- for ( i_sup=0; i_sup<cf->N_CH; i_sup++ ){
- for ( isf=0; isf<cfg->nsf; isf++){
- int indexSfOffset = isf * ( cfg->ncrb - cfg->ebc_crb_base ) - cfg->ebc_crb_base;
- for ( itmp=cfg->ebc_crb_base; itmp<cfg->ncrb; itmp++ ){
- bitcount += get_bstm(&_index->bc[i_sup][itmp+indexSfOffset], cfg->ebc_bits,priv,pts);
- }
- }
- }
-
- return bitcount;
-}
-
-static int vqf_read_frame(twin_private_t& priv,INDEX *_index,float& pts)
-{
- /*--- Variables ---*/
- tvqConfInfoSubBlock *cfg;
- int variableBits;
- int bitcount;
- int numFixedBitsPerFrame = TvqGetNumFixedBitsPerFrame();
- int btype;
-
- /*--- Initialization ---*/
- variableBits = 0;
- bitcount = 0;
-
- /*--- read block independent factors ---*/
- /* Window type */
- bitcount += get_bstm( &_index->w_type, priv.cf.BITS_WTYPE,priv,pts);
- if ( TvqWtypeToBtype( _index->w_type, &_index->btype ) ) {
- MSG_ERR("Error: unknown window type: %d\n", _index->w_type);
- return 0;
- }
- btype = _index->btype;
-
- /*--- read block dependent factors ---*/
- cfg = &priv.cf.cfg[btype]; // set the block dependent paremeters table
-
- bitcount += variableBits;
-
- /* Interleaved vector quantization */
- bitcount += GetVqInfo( cfg, priv.bits_0[btype], priv.bits_1[btype], variableBits, _index, priv);
-
- /* Bark-scale envelope */
- bitcount += GetBseInfo( &priv.cf, cfg, _index, priv);
- /* Gain */
- bitcount += GetGainInfo( &priv.cf, cfg, _index, priv);
- /* LSP */
- bitcount += GetLspInfo( &priv.cf, _index, priv );
- /* PPC */
- if ( cfg->ppc_enable ){
- bitcount += GetPpcInfo( &priv.cf, _index, priv);
- }
- /* Energy Balance Calibration */
- if ( cfg->ebc_enable ){
- bitcount += GetEbcInfo( &priv.cf, cfg, _index, priv);
- }
-
- return bitcount == numFixedBitsPerFrame ? bitcount/8 : 0;
-}
-
-static void frtobuf(float out[], /* Input --- input data frame */
- float bufout[], /* Output --- output data buffer array */
- unsigned frameSize, /* Input --- frame size */
- unsigned numChannels) /* Input --- number of channels */
-{
- /*--- Variables ---*/
- unsigned ismp, ich;
- float *ptr;
- register float dtmp;
-
- for ( ich=0; ich<numChannels; ich++ ){
- ptr = out+ich*frameSize;
- for ( ismp=0; ismp<frameSize; ismp++ ){
- dtmp = ptr[ismp];
- if ( dtmp >= 0. )
- bufout[ismp*numChannels+ich] = (dtmp+0.5)/32767.;
- else
- bufout[ismp*numChannels+ich] = (dtmp-0.5)/32767.;
- }
- }
-}
-
-unsigned decode(Opaque& ctx,unsigned char *buf,unsigned minlen,unsigned maxlen,float& pts)
-{
- twin_private_t& priv=static_cast<twin_private_t&>(ctx);
- unsigned l,len=0;
- float null_pts;
- sh_audio_t* sh_audio = priv.sh;
- UNUSED(maxlen);
- while(len<minlen)
- {
- float out[priv.framesize*sh_audio->nch];
- l=vqf_read_frame(priv,&priv.index,len?null_pts:pts);
- if(!l) break;
- TvqDecodeFrame(&priv.index, out);
- frtobuf(out, (float *)buf, priv.framesize, sh_audio->nch);
- len += priv.framesize*sh_audio->nch*4;
- buf += priv.framesize*sh_audio->nch*4;
- }
- return len;
-}
Modified: mplayerxp/libmpcodecs/dec_video.cpp
===================================================================
--- mplayerxp/libmpcodecs/dec_video.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/dec_video.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -221,44 +221,6 @@
}
if(done) vf_showlist(priv->vfilter);
-#ifdef ENABLE_WIN32LOADER
- if(sh_video->codec) {
- done=0;
- MSG_DBG3("mpcv_init(%p, %s, %s, %i)\n",sh_video,codecname,vfm,status);
- while((sh_video->codec=find_codec(sh_video->fourcc,
- sh_video->bih?((unsigned int*) &sh_video->bih->biCompression):NULL,
- sh_video->codec,0) )){
- // ok we found one codec
- if(sh_video->codec->flags&CODECS_FLAG_SELECTED) {
- MSG_DBG3("mpcv_init: %s already tried and failed\n",sh_video->codec->codec_name);
- continue;
- }
- if(codecname && strcmp(sh_video->codec->codec_name,codecname)) {
- MSG_DBG3("mpcv_init: %s != %s [-vc]\n",sh_video->codec->codec_name,codecname);
- continue;
- }
- if(vfm && strcmp(sh_video->codec->driver_name,vfm)!=0) {
- MSG_DBG3("mpcv_init: vfm doesn't match %s != %s\n",vfm,sh_video->codec->driver_name);
- continue; // vfm doesn't match
- }
- if(sh_video->codec->status<status) {
- MSG_DBG3("mpcv_init: %s too unstable\n",sh_video->codec->codec_name);
- continue;
- }
- sh_video->codec->flags|=CODECS_FLAG_SELECTED; // tagging it
- // ok, it matches all rules, let's find the driver!
- if(!(priv->mpvdec=vfm_find_driver(sh_video->codec->driver_name))) continue;
- else MSG_DBG3("mpcv_init: mpcodecs_vd_drivers[%s]->mpvdec==0\n",priv->mpvdec->info->driver_name);
- // it's available, let's try to init!
- if(priv->mpvdec->init(*priv->ctx,*handle)!=MPXP_Ok){
- MSG_ERR(MSGTR_CODEC_CANT_INITV);
- continue; // try next...
- }
- done=1;
- break;
- }
- }
-#endif
if(done) {
mpcv_print_codec_info(*priv);
// memory leak here
Modified: mplayerxp/libmpcodecs/vd.cpp
===================================================================
--- mplayerxp/libmpcodecs/vd.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/vd.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -43,13 +43,6 @@
extern const vd_functions_t mpcodecs_vd_theora;
static const vd_functions_t* mpcodecs_vd_drivers[] = {
-#ifdef ENABLE_WIN32LOADER
- &mpcodecs_vd_dshow,
- &mpcodecs_vd_vfw,
- &mpcodecs_vd_vfwex,
- &mpcodecs_vd_dmo,
- &mpcodecs_vd_qtvideo,
-#endif
&mpcodecs_vd_raw,
&mpcodecs_vd_nuv,
&mpcodecs_vd_libmpeg2,
Deleted: mplayerxp/libmpcodecs/vd_dmo.cpp
===================================================================
--- mplayerxp/libmpcodecs/vd_dmo.cpp 2013-06-08 14:04:10 UTC (rev 649)
+++ mplayerxp/libmpcodecs/vd_dmo.cpp 2013-06-10 07:27:20 UTC (rev 650)
@@ -1,131 +0,0 @@
-#include "mpxp_config.h"
-#include "osdep/mplib.h"
-using namespace usr;
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include "mpxp_help.h"
-
-#include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */
-
-#include "vd_internal.h"
-#include "codecs_ld.h"
-#include "win32loader/dmo/DMO_VideoDecoder.h"
-#include "vd_msg.h"
-
-static const vd_info_t info = {
- "Win32/DMO video codecs",
- "dmo",
- "A'rpi",
- "build-in"
-};
-
-static const mpxp_option_t options[] = {
- { NULL, NULL, 0, 0, 0, 0, NULL}
-};
-
-LIBVD_EXTERN(dmo)
-
-struct vdmo_private_t : public Opaque {
- vdmo_private_t();
- virtual ~vdmo_private_t();
-
- DMO_VideoDecoder* dmo;
- sh_video_t* sh;
- video_decoder_t* parent;
-};
-vdmo_private_t::vdmo_private_t() {}
-vdmo_private_t::~vdmo_private_t() {
- DMO_VideoDecoder_Destroy(dmo);
-}
-
-static const video_probe_t* __FASTCALL__ probe(uint32_t fourcc) { return NULL; }
-
-// to set/get/query special features/parameters
-static MPXP_Rc control_vd(Opaque& ctx,int cmd,any_t* arg,...){
- UNUSED(ctx);
- switch(cmd){
- case VDCTRL_QUERY_FORMAT:
- if (*((int*)arg) == IMGFMT_YV12 ||
- *((int*)arg) == IMGFMT_I420 ||
- *((int*)arg) == IMGFMT_IYUV ||
- *((int*)arg) == IMGFMT_YVU9 ||
- *((int*)arg) == IMGFMT_YUY2 ||
- *((int*)arg) == IMGFMT_UYVY)
- return MPXP_True;
- else return MPXP_False;
- default: break;
- }
- return MPXP_Unknown;
-}
-
-static Opaque* preinit(const video_probe_t& probe,sh_video_t *sh,put_slice_info_t& psi){
- UNUSED(probe);
- UNUSED(psi);
- vdmo_private_t* priv = new(zeromem) vdmo_private_t;
- priv->sh=sh;
- return priv;
-}
-
-// init driver
-static MPXP_Rc init(Opaque& ctx,video_decoder_t& opaque){
- unsigned int out_fmt;
- vdmo_private_t& priv=static_cast<vdmo_private_t&>(ctx);
- priv.parent = &opaque;
- sh_video_t* sh = pr...
[truncated message content] |