mirror of https://github.com/mpv-player/mpv
parent
6c12e80789
commit
b319ae9190
24
Makefile
24
Makefile
|
@ -714,7 +714,7 @@ clean:
|
|||
-$(RM) $(call ADD_ALL_EXESUFS,mplayer)
|
||||
-$(RM) $(MOFILES)
|
||||
|
||||
distclean: clean testsclean
|
||||
distclean: clean
|
||||
-$(RM) -r locale
|
||||
-$(RM) config.log config.mak config.h codecs.conf.h version.h TAGS tags
|
||||
-$(RM) libvo/vdpau_template.c
|
||||
|
@ -727,33 +727,13 @@ TAGS:
|
|||
tags:
|
||||
$(RM) $@; find . -name '*.[chS]' -o -name '*.asm' | xargs ctags -a
|
||||
|
||||
###### tests / tools #######
|
||||
|
||||
TEST_OBJS = mp_msg.o mp_fifo.o osdep/$(GETCH) osdep/$(TIMER) -ltermcap -lm
|
||||
|
||||
LOADER_TEST_OBJS = $(SRCS_WIN32_EMULATION:.c=.o) $(SRCS_QTX_EMULATION:.S=.o) libavutil/libavutil.a osdep/mmap_anon.o cpudetect.o path.o $(TEST_OBJS)
|
||||
|
||||
loader/qtx/list$(EXESUF) loader/qtx/qtxload$(EXESUF): CFLAGS += -g
|
||||
loader/qtx/list$(EXESUF) loader/qtx/qtxload$(EXESUF): $(LOADER_TEST_OBJS)
|
||||
|
||||
TESTS =
|
||||
|
||||
ifdef ARCH_X86
|
||||
TESTS += loader/qtx/list loader/qtx/qtxload
|
||||
endif
|
||||
|
||||
tests: $(addsuffix $(EXESUF),$(TESTS))
|
||||
|
||||
testsclean:
|
||||
-$(RM) $(call ADD_ALL_EXESUFS,$(TESTS))
|
||||
|
||||
mplayer-nomain.o: mplayer.c
|
||||
$(CC) $(CFLAGS) -DDISABLE_MAIN -c -o $@ $<
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
.PHONY: all locales *install*
|
||||
.PHONY: checkheaders *clean tests .version
|
||||
.PHONY: checkheaders *clean .version
|
||||
|
||||
# Disable suffix rules. Most of the builtin rules are suffix rules,
|
||||
# so this saves some time on slow systems.
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
/*
|
||||
* To compile edit loader/win32.c and change the #if 0 to 1 at line 1326
|
||||
* to enable quicktime fix!
|
||||
*
|
||||
* This file is part of MPlayer.
|
||||
*
|
||||
* MPlayer is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "qtxsdk/components.h"
|
||||
#include "qtxsdk/select.h"
|
||||
#include "loader/ldt_keeper.h"
|
||||
#include "loader/wine/winbase.h"
|
||||
|
||||
int main(void) {
|
||||
void *handler;
|
||||
ComponentDescription desc;
|
||||
Component (*FindNextComponent)(Component prev,ComponentDescription* desc);
|
||||
long (*CountComponents)(ComponentDescription* desc);
|
||||
OSErr (*InitializeQTML)(long flags);
|
||||
OSErr (*EnterMovies)(void);
|
||||
OSErr ret;
|
||||
|
||||
Setup_LDT_Keeper();
|
||||
handler = LoadLibraryA("/usr/local/lib/codecs/qtmlClient.dll");
|
||||
printf("***************************\n");
|
||||
InitializeQTML = 0x1000c870; //GetProcAddress(handler, "InitializeQTML");
|
||||
EnterMovies = 0x10003ac0; //GetProcAddress(handler, "EnterMovies");
|
||||
FindNextComponent = 0x1000d5f0; //GetProcAddress(handler, "FindNextComponent");
|
||||
CountComponents = 0x1000d5d0; //GetProcAddress(handler, "CountComponents");
|
||||
// = GetProcAddress(handler, "");
|
||||
printf("handler: %p, funcs: %p %p %p, %p\n", handler, InitializeQTML, EnterMovies, FindNextComponent,CountComponents);
|
||||
|
||||
ret=InitializeQTML(0);
|
||||
printf("InitializeQTML->%d\n",ret);
|
||||
ret=EnterMovies();
|
||||
printf("EnterMovies->%d\n",ret);
|
||||
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.componentType= (((unsigned char)'S')<<24)|
|
||||
(((unsigned char)'V')<<16)|
|
||||
(((unsigned char)'Q')<<8)|
|
||||
(((unsigned char)'5'));
|
||||
desc.componentSubType=0;
|
||||
desc.componentManufacturer=0;
|
||||
desc.componentFlags=0;
|
||||
desc.componentFlagsMask=0;
|
||||
|
||||
printf("Count = %ld\n",CountComponents(&desc));
|
||||
|
||||
exit(0);
|
||||
}
|
|
@ -1,125 +0,0 @@
|
|||
/*
|
||||
* This file is part of MPlayer.
|
||||
*
|
||||
* MPlayer is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* MPlayer is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "qtxsdk/components.h"
|
||||
#include "qtxsdk/select.h"
|
||||
#include "loader/ldt_keeper.h"
|
||||
#include "loader/wine/winbase.h"
|
||||
#include "mp_msg.h"
|
||||
|
||||
unsigned int* x_table[0x00001837];
|
||||
|
||||
static OSErr (*InitializeQTML)(long flags);
|
||||
|
||||
int main(void) {
|
||||
void *handler;
|
||||
void *handler2;
|
||||
void* theqtdp=NULL;
|
||||
void* compcall=NULL;
|
||||
void* compcallws=NULL;
|
||||
ComponentResult (*dispatcher)(ComponentParameters *params, Globals glob);
|
||||
ComponentResult ret;
|
||||
ComponentParameters *params;
|
||||
ComponentDescription desc;
|
||||
void *globals=NULL;
|
||||
//unsigned int esp=0;
|
||||
//int i;
|
||||
|
||||
mp_msg_init();
|
||||
//mp_msg_set_level(10);
|
||||
|
||||
Setup_LDT_Keeper();
|
||||
printf("loading qts\n");
|
||||
// handler = LoadLibraryA("/root/.wine/fake_windows/Windows/System/QuickTime.qts");
|
||||
handler = LoadLibraryA("QuickTime.qts");
|
||||
theqtdp = GetProcAddress(handler, "theQuickTimeDispatcher");
|
||||
compcall = GetProcAddress(handler, "CallComponent");
|
||||
compcallws = GetProcAddress(handler, "CallComponentFunctionWithStorage");
|
||||
|
||||
InitializeQTML = 0x6299e590;//GetProcAddress(handler, "InitializeQTML");
|
||||
InitializeQTML(6+16);
|
||||
|
||||
printf("loading svq3\n");
|
||||
handler2= LoadLibraryA("/root/.wine/fake_windows/Windows/System/QuickTime/QuickTimeEssentials.qtx");
|
||||
printf("done\n");
|
||||
dispatcher = GetProcAddress(handler2, "SMD_ComponentDispatch");
|
||||
// handler = expLoadLibraryA("/usr/local/lib/codecs/On2_VP3.qtx");
|
||||
// dispatcher = GetProcAddress(handler, "CDComponentDispatcher");
|
||||
printf("handler: %p, dispatcher: %p theqtdp: %p\n", handler, dispatcher, theqtdp);
|
||||
|
||||
// printf("theQuickTimeDispatcher = %p\n",GetProcAddress(handler, "theQuickTimeDispatcher"));
|
||||
|
||||
// patch svq3 dll:
|
||||
*((void**)0x63214c98) = NULL;
|
||||
*((void**)0x63214c9c) = theqtdp; // theQt...
|
||||
*((void**)0x63214ca0) = compcall; //0xdeadbeef; //dispatcher; // CallCOmponent_ptr
|
||||
*((void**)0x63214ca4) = compcallws; //0xdeadbef2; //dispatcher; // CallComponentWithStorage_ptr
|
||||
|
||||
desc.componentType=0;
|
||||
desc.componentSubType=0;
|
||||
desc.componentManufacturer=0;
|
||||
desc.componentFlags=0;
|
||||
desc.componentFlagsMask=0;
|
||||
|
||||
params = malloc(sizeof(ComponentParameters)+2048);
|
||||
|
||||
params->flags = 0;
|
||||
params->paramSize = 4;
|
||||
params->what = kComponentOpenSelect;
|
||||
params->params[0] = 0x830000; //0x820000|i; //(i<<16)|0x24; //0x820024;
|
||||
ret = dispatcher(params, &globals);
|
||||
printf("!!! CDComponentDispatch() => 0x%X glob=%p\n",ret,globals);
|
||||
|
||||
// memset(x_table,12,4*0x00001837);
|
||||
|
||||
//for(i=0;i<=255;i++){
|
||||
|
||||
// params->what = kComponentVersionSelect;
|
||||
// params->what = kComponentRegisterSelect;
|
||||
// params->what = kComponentOpenSelect;
|
||||
// params->what = kComponentCanDoSelect;
|
||||
|
||||
printf("params: flags: %d, paramSize: %d, what: %d, params[0] = %x\n",
|
||||
params->flags, params->paramSize, params->what, params->params[0]);
|
||||
|
||||
// __asm__ volatile ("movl %%esp, %0\n\t" : "=a" (esp) :: "memory" );
|
||||
// printf("ESP=%p\n",esp);
|
||||
|
||||
*((void**)0x62b7d640) = &x_table[0]; //malloc(0x00001837 * 4); // ugly hack?
|
||||
|
||||
printf("params=%p &glob=%p x_table=%p\n",params,&globals, &x_table[0]);
|
||||
|
||||
ret = dispatcher(params, &globals);
|
||||
|
||||
// __asm__ volatile ("movl %%esp, %0\n\t" : "=a" (esp) :: "memory" );
|
||||
// printf("ESP=%p\n",esp);
|
||||
|
||||
printf("!!! CDComponentDispatch() => %d glob=%p\n",ret,globals);
|
||||
// if(ret!=-3000) break;
|
||||
//}
|
||||
|
||||
// for(i=0;i<0x00001837;i++)
|
||||
// if(x_table[i]) printf("x_table[0x%X] = %p\n",i,x_table[i]);
|
||||
|
||||
exit(0);
|
||||
//return 0;
|
||||
}
|
Loading…
Reference in New Issue