1
0
mirror of https://github.com/mpv-player/mpv synced 2025-04-01 23:00:41 +00:00

Merge svn changes up to r30550

This commit is contained in:
Uoti Urpala 2010-03-09 23:03:14 +02:00
commit 36e7a20e69
27 changed files with 209 additions and 234 deletions

View File

@ -245,7 +245,6 @@ SRCS_COMMON-$(PRIORITY) += osdep/priority.c
SRCS_COMMON-$(PVR) += stream/stream_pvr.c
SRCS_COMMON-$(QTX_CODECS) += libmpcodecs/ad_qtaudio.c \
libmpcodecs/vd_qtvideo.c
SRCS_COMMON-$(QTX_EMULATION) += loader/wrapper.S
SRCS_COMMON-$(RADIO) += stream/stream_radio.c
SRCS_COMMON-$(RADIO_CAPTURE) += stream/audio_in.c
SRCS_COMMON-$(REAL_CODECS) += libmpcodecs/ad_realaud.c \
@ -282,7 +281,9 @@ SRCS_COMMON-$(VCD) += stream/stream_vcd.c
SRCS_COMMON-$(VORBIS) += libmpcodecs/ad_libvorbis.c \
libmpdemux/demux_ogg.c
SRCS_COMMON-$(VSTREAM) += stream/stream_vstream.c
SRCS_COMMON-$(WIN32_EMULATION) += loader/elfdll.c \
SRCS_QTX_EMULATION += loader/wrapper.S
SRCS_COMMON-$(QTX_EMULATION) += $(SRCS_QTX_EMULATION)
SRCS_WIN32_EMULATION += loader/elfdll.c \
loader/ext.c \
loader/ldt_keeper.c \
loader/module.c \
@ -292,6 +293,8 @@ SRCS_COMMON-$(WIN32_EMULATION) += loader/elfdll.c \
loader/resource.c \
loader/win32.c \
SRCS_COMMON-$(WIN32_EMULATION) += $(SRCS_WIN32_EMULATION)
SRCS_COMMON-$(WIN32DLL) += libmpcodecs/ad_acm.c \
libmpcodecs/ad_dmo.c \
libmpcodecs/ad_dshow.c \
@ -790,7 +793,7 @@ version.h: version.sh
# Make sure all generated header files are created.
codec-cfg.d codec-cfg.o: codecs.conf.h
$(DEPS) $(MENCODER_DEPS) $(MPLAYER_DEPS): help_mp.h
$(call ADDSUFFIXES,.d .o,mpcommon vobsub stream/stream_cddb stream/network libmpdemux/muxer_avi): version.h
$(call ADDSUFFIXES,.d .o,mpcommon vobsub stream/stream_cddb stream/network libmpdemux/muxer_avi osdep/mplayer.rc): version.h
# Files that depend on libswscale internals
libvo/vo_mga.o libvo/vo_xmga.o libmpcodecs/vf_halfpack.o libmpcodecs/vf_palette.o libmpcodecs/vf_rgb2bgr.o libmpcodecs/vf_yuy2.o: CFLAGS := -I$(FFMPEG_SOURCE_PATH) $(CFLAGS)
@ -916,7 +919,7 @@ liba52/test$(EXESUF): cpudetect.o $(SRCS_LIBA52_INTERNAL:.c=.o) -lm
libvo/aspecttest$(EXESUF): libvo/aspect.o libvo/geometry.o $(TEST_OBJS)
LOADER_TEST_OBJS = $(filter loader/%,$(SRCS_COMMON:.c=.o)) libmpdemux/aviprint.o osdep/mmap_anon.o cpudetect.o $(TEST_OBJS)
LOADER_TEST_OBJS = $(SRCS_WIN32_EMULATION:.c=.o) $(SRCS_QTX_EMULATION:.S=.o) libavutil/libavutil.a osdep/mmap_anon.o cpudetect.o $(TEST_OBJS)
loader/qtx/list$(EXESUF) loader/qtx/qtxload$(EXESUF): CFLAGS += -g
loader/qtx/list$(EXESUF) loader/qtx/qtxload$(EXESUF): $(LOADER_TEST_OBJS)

24
configure vendored
View File

@ -6833,7 +6833,7 @@ if test "$_real" = auto ; then
_real=no
_res_comment="dynamic loader support needed"
if test "$_dl" = yes || test "$_win32dll" = yes &&
(linux || freebsd || netbsd || openbsd || dragonfly || darwin || win32) ; then
(linux || freebsd || netbsd || openbsd || dragonfly || darwin || win32 || os2) ; then
_real=yes
fi
fi
@ -6946,7 +6946,7 @@ if test "$_libavutil" = auto ; then
_libavutil=no
cat > $TMPC << EOF
#include <libavutil/common.h>
int main(void) { av_gcd(1,1); return 0; }
int main(void) { av_clip(1, 1, 1); return 0; }
EOF
if $_pkg_config --exists libavutil ; then
_inc_libavutil=$($_pkg_config --cflags libavutil)
@ -8226,23 +8226,15 @@ $def_winsock2_h
/* system functions */
$def_exp2
$def_exp2f
$def_gethostbyname2
$def_gettimeofday
$def_glob
$def_langinfo
$def_llrint
$def_log2
$def_log2f
$def_lrint
$def_lrintf
$def_map_memalign
$def_memalign
$def_nanosleep
$def_posix_select
$def_round
$def_roundf
$def_select
$def_setenv
$def_shm
@ -8252,7 +8244,6 @@ $def_sysi86
$def_sysi86_iv
$def_termcap
$def_termios
$def_truncf
$def_vsscanf
@ -8260,6 +8251,7 @@ $def_vsscanf
$def_asmalign_pot
$def_builtin_expect
$def_dl
$def_dos_paths
$def_extern_asm
$def_extern_prefix
$def_iconv
@ -8531,16 +8523,24 @@ $def_arpa_inet_h
$def_bswap
$def_bzlib
$def_dcbzl
$def_dos_paths
$def_exp2
$def_exp2f
$def_fast_64bit
$def_fast_unaligned
$def_llrint
$def_log2
$def_log2f
$def_lrint
$def_memalign_hack
$def_mlib
$def_mkstemp
$def_posix_memalign
$def_pthreads
$def_round
$def_roundf
$def_ten_operands
$def_threads
$def_truncf
$def_xform_asm
$def_yasm

View File

@ -67,6 +67,16 @@ videocodec ffzmbv
dll "zmbv"
out RGB24
videocodec geov
info "GeoCodec"
comment "crashes without -nosound, hangs on exit"
status buggy
fourcc GEOV
fourcc GEOX
driver vfw
dll "GeoCodec.dll"
out BGR24 flip
videocodec zmbv
info "Zip Motion-Block Video"
status working

View File

@ -28,7 +28,7 @@
#include <speex/speex_header.h>
#include "ad_internal.h"
static const ad_info_t info ={
static const ad_info_t info = {
"Speex audio decoder",
"speex",
"Reimar Döffinger",

View File

@ -44,7 +44,8 @@
#include "mp_taglists.h"
#define PROBE_BUF_SIZE (32*1024)
#define INITIAL_PROBE_SIZE (32*1024)
#define PROBE_BUF_SIZE (2*1024*1024)
static unsigned int opt_probesize = 0;
static unsigned int opt_analyzeduration = 0;
@ -67,7 +68,7 @@ typedef struct lavf_priv_t{
AVInputFormat *avif;
AVFormatContext *avfc;
ByteIOContext *pb;
uint8_t buffer[FFMAX(BIO_BUFFER_SIZE, PROBE_BUF_SIZE)];
uint8_t buffer[BIO_BUFFER_SIZE];
int audio_streams;
int video_streams;
int sub_streams;
@ -132,7 +133,8 @@ static void list_formats(void) {
static int lavf_check_file(demuxer_t *demuxer){
AVProbeData avpd;
lavf_priv_t *priv;
int probe_data_size;
int probe_data_size = 0;
int read_size = INITIAL_PROBE_SIZE;
if(!demuxer->priv)
demuxer->priv=calloc(sizeof(lavf_priv_t),1);
@ -154,16 +156,26 @@ static int lavf_check_file(demuxer_t *demuxer){
return DEMUXER_TYPE_LAVF;
}
probe_data_size = stream_read(demuxer->stream, priv->buffer, PROBE_BUF_SIZE);
if(probe_data_size < 0)
avpd.buf = av_mallocz(FFMAX(BIO_BUFFER_SIZE, PROBE_BUF_SIZE) +
FF_INPUT_BUFFER_PADDING_SIZE);
do {
read_size = stream_read(demuxer->stream, avpd.buf + probe_data_size, read_size);
if(read_size < 0) {
av_free(avpd.buf);
return 0;
}
probe_data_size += read_size;
avpd.filename= demuxer->stream->url;
if (!strncmp(avpd.filename, "ffmpeg://", 9))
avpd.filename += 9;
avpd.buf= priv->buffer;
avpd.buf_size= probe_data_size;
priv->avif= av_probe_input_format(&avpd, probe_data_size > 0);
read_size = FFMIN(2*read_size, PROBE_BUF_SIZE - probe_data_size);
} while (demuxer->desc->type != DEMUXER_TYPE_LAVF_PREFERRED &&
!priv->avif && read_size > 0 && probe_data_size < PROBE_BUF_SIZE);
av_free(avpd.buf);
if(!priv->avif){
mp_msg(MSGT_HEADER,MSGL_V,"LAVF_check: no clue about this gibberish!\n");
return 0;

View File

@ -18,10 +18,6 @@
* Internal functions and structures for COM emulation code.
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef GUID_TYPE
#define GUID_TYPE
typedef struct
@ -83,8 +79,4 @@ void* STDCALL CoTaskMemAlloc(unsigned long);
void STDCALL CoTaskMemFree(void*);
#endif
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* MPLAYER_COM_H */

View File

@ -4,10 +4,6 @@
#include "dmo_guids.h"
#include "dmo_interfaces.h"
#if defined(__cplusplus)
extern "C" {
#endif
typedef struct DMO_Filter
{
int m_iHandle;
@ -40,8 +36,4 @@ void DMO_Filter_Destroy(DMO_Filter* This);
*/
CMediaBuffer* CMediaBufferCreate(unsigned long maxlen, void* mem, unsigned long len, int copy);
#if defined(__cplusplus)
}
#endif
#endif /* MPLAYER_DMO_FILTER_H */

View File

@ -6,10 +6,6 @@
#ifndef MPLAYER_DRV_H
#define MPLAYER_DRV_H
#ifdef __cplusplus
extern "C" {
#endif
#include "wine/windef.h"
#include "wine/driver.h"
@ -20,8 +16,4 @@ void CodecRelease(void);
HDRVR DrvOpen(LPARAM lParam2);
void DrvClose(HDRVR hdrvr);
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_DRV_H */

View File

@ -4,10 +4,6 @@
#include "inputpin.h"
#include "outputpin.h"
#if defined(__cplusplus)
extern "C" {
#endif
typedef struct {
char* frame_pointer;
long frame_size;
@ -43,8 +39,4 @@ DS_Filter* DS_FilterCreate(const char* dllname, const GUID* id,
AM_MEDIA_TYPE* in_fmt, AM_MEDIA_TYPE* out_fmt,SampleProcUserData* pUserData);
void DS_Filter_Destroy(DS_Filter* This);
#if defined(__cplusplus)
}
#endif
#endif /* MPLAYER_DS_FILTER_H */

View File

@ -43,19 +43,12 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,47)
#define modify_ldt_ldt_s user_desc
#endif
/* prototype it here, so we won't depend on kernel headers */
#ifdef __cplusplus
extern "C" {
#endif
/// declare modify_ldt with the _syscall3 macro for older glibcs
#if defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 0))
_syscall3( int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount );
#else
int modify_ldt(int func, void *ptr, unsigned long bytecount);
#endif
#ifdef __cplusplus
}
#endif
#else
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
#include <machine/segments.h>
@ -69,13 +62,7 @@ int modify_ldt(int func, void *ptr, unsigned long bytecount);
/* solaris x86: add missing prototype for sysi86(), but only when sysi86(int, void*) is known to be valid */
#ifdef HAVE_SYSI86_iv
#ifdef __cplusplus
extern "C" {
#endif
int sysi86(int, void*);
#ifdef __cplusplus
}
#endif
#endif
#ifndef NUMSYSLDTS /* SunOS 2.5.1 does not define NUMSYSLDTS */
@ -127,9 +114,6 @@ static unsigned int fs_ldt = TEB_SEL_IDX;
* in C++ we use static class for this...
*/
#ifdef __cplusplus
extern "C"
#endif
void Setup_FS_Segment(void)
{
unsigned int ldt_desc = LDT_SEL(fs_ldt);
@ -271,6 +255,9 @@ ldt_fs_t* Setup_LDT_Keeper(void)
printf("Couldn't install fs segment, expect segfault\n");
}
}
#elif defined(__OS2__)
/* convert flat addr to sel idx for LDT_SEL() */
fs_ldt = (uintptr_t)fs_seg >> 16;
#endif
Setup_FS_Segment();

View File

@ -1,11 +1,6 @@
#ifndef MPLAYER_LDT_KEEPER_H
#define MPLAYER_LDT_KEEPER_H
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct {
void* fs_seg;
char* prev_struct;
@ -14,8 +9,5 @@ typedef struct {
void Setup_FS_Segment(void);
ldt_fs_t* Setup_LDT_Keeper(void);
void Restore_LDT_Keeper(ldt_fs_t* ldt_fs);
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_LDT_KEEPER_H */

View File

@ -14,10 +14,6 @@
#ifndef MPLAYER_LOADER_H
#define MPLAYER_LOADER_H
#ifdef __cplusplus
extern "C" {
#endif
#include "wine/windef.h"
#include "wine/driver.h"
#include "wine/mmreg.h"
@ -33,8 +29,4 @@ int WritePrivateProfileStringA_(const char* appname, const char* keyname,
INT WINAPI LoadStringA( HINSTANCE instance, UINT resource_id,
LPSTR buffer, INT buflen );
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_LOADER_H */

View File

@ -744,6 +744,31 @@ static int dump_component(char* name, int type, void* orig, ComponentParameters
#ifdef EMU_QTX_API
#ifdef __OS2__
uint32_t _System DosQueryMem(void *, uint32_t *, uint32_t *);
#endif
static int is_invalid_ptr_handle(void *p)
{
#ifdef __OS2__
uint32_t cb = 1;
uint32_t fl;
if(DosQueryMem(p, &cb, &fl))
return 1;
// Occasionally, ptr with 'EXEC' attr is passed.
// On OS/2, however, malloc() never sets 'EXEC' attr.
// So ptr with 'EXEC' attr is invalid.
if(fl & 0x04)
return 1;
return 0;
#else
return (uint32_t)p >= 0x60000000;
#endif
}
static uint32_t ret_array[4096];
static int ret_i=0;
@ -844,10 +869,10 @@ static int report_func(void *stack_base, int stack_size, reg386_t *reg, uint32_t
#endif
return 1;
case 0x15002f: //DisposePtr
if(((uint32_t *)stack_base)[1]>=0x60000000)
if(is_invalid_ptr_handle(((void **)stack_base)[1]))
printf("WARNING! Invalid Ptr handle!\n");
else
free((void *)((uint32_t *)stack_base)[1]);
free(((void **)stack_base)[1]);
reg->eax=0;
#ifdef DEBUG_QTX_API
printf("%*sLEAVE(%d): EMULATED! 0x%X\n",ret_i*2,"",ret_i, reg->eax);

View File

@ -13,10 +13,6 @@
* http://svn.mplayerhq.hu/mplayer/trunk/
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "wine/winbase.h"
void free_registry(void);
@ -40,8 +36,5 @@ long __stdcall RegEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpName, LPDWORD lpc
long __stdcall RegEnumValueA(HKEY hkey, DWORD index, LPSTR value, LPDWORD val_count,
LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count);
#endif
#ifdef __cplusplus
};
#endif
#endif /* MPLAYER_REGISTRY_H */

View File

@ -19,13 +19,14 @@ for DLL to know too much about its environment.
#include "config.h"
#include "mangle.h"
#ifdef CONFIG_QTX_CODECS
#define QTX
#endif
#define REALPLAYER
//#define LOADLIB_TRY_NATIVE
#ifdef QTX
/* Hack to make sure the correct function declaration in com.h is used when
* this file is built for the test applications with WIN32_LOADER disabled. */
#define WIN32_LOADER
#ifdef CONFIG_QTX_CODECS
#define PSEUDO_SCREEN_WIDTH /*640*/800
#define PSEUDO_SCREEN_HEIGHT /*480*/600
#endif
@ -72,6 +73,7 @@ for DLL to know too much about its environment.
#include "osdep/mmap.h"
#endif
#include "osdep/mmap_anon.h"
#include "libavutil/avstring.h"
char* def_path = WIN32_PATH;
@ -553,7 +555,7 @@ static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv)
#define MODULE_HANDLE_kernel32 ((HMODULE)0x120)
#define MODULE_HANDLE_user32 ((HMODULE)0x121)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
#define MODULE_HANDLE_wininet ((HMODULE)0x122)
#define MODULE_HANDLE_ddraw ((HMODULE)0x123)
#define MODULE_HANDLE_advapi32 ((HMODULE)0x124)
@ -562,13 +564,14 @@ static HMODULE WINAPI expGetDriverModuleHandle(DRVR* pdrv)
#define MODULE_HANDLE_msvcrt ((HMODULE)0x126)
#define MODULE_HANDLE_ole32 ((HMODULE)0x127)
#define MODULE_HANDLE_winmm ((HMODULE)0x128)
#define MODULE_HANDLE_psapi ((HMODULE)0x129)
static HMODULE WINAPI expGetModuleHandleA(const char* name)
{
WINE_MODREF* wm;
HMODULE result;
if(!name)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
result=1;
#else
result=0;
@ -584,7 +587,7 @@ static HMODULE WINAPI expGetModuleHandleA(const char* name)
{
if(name && (strcasecmp(name, "kernel32")==0 || !strcasecmp(name, "kernel32.dll")))
result=MODULE_HANDLE_kernel32;
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if(name && strcasecmp(name, "user32")==0)
result=MODULE_HANDLE_user32;
#endif
@ -844,7 +847,7 @@ static void* WINAPI expWaitForSingleObject(void* object, int duration)
return (void *)ret;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static void* WINAPI expWaitForMultipleObjects(int count, const void** objects,
int WaitAll, int duration)
{
@ -884,7 +887,7 @@ static HANDLE WINAPI expCreateMutexA(void *pSecAttr,
else
dbgprintf("CreateMutexA(0x%x, %d, NULL) => 0x%x\n",
pSecAttr, bInitialOwner, mlist);
#ifndef QTX
#ifndef CONFIG_QTX_CODECS
/* 10l to QTX, if CreateMutex returns a real mutex, WaitForSingleObject
waits for ever, else it works ;) */
return mlist;
@ -1133,6 +1136,10 @@ static WIN_BOOL WINAPI expIsProcessorFeaturePresent(DWORD v)
return result;
}
static WIN_BOOL WINAPI expIsDebuggerPresent(void)
{
return 0;
}
static long WINAPI expGetVersion(void)
{
@ -1437,7 +1444,7 @@ static int WINAPI expGetCurrentProcess(void)
return getpid();
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
// this version is required for Quicktime codecs (.qtx/.qts) to work.
// (they assume some pointers at FS: segment)
@ -2201,7 +2208,7 @@ static int WINAPI expGetStdHandle(int z)
return z+0x1234;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
#define FILE_HANDLE_quicktimeqts ((HANDLE)0x444)
#define FILE_HANDLE_quicktimeqtx ((HANDLE)0x445)
#endif
@ -2211,7 +2218,7 @@ static int WINAPI expGetFileType(int handle)
dbgprintf("GetFileType(0x%x) => 0x3 = pipe\n", handle);
return 0x3;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static int WINAPI expGetFileAttributesA(char *filename)
{
dbgprintf("GetFileAttributesA(%s) => FILE_ATTR_NORMAL\n", filename);
@ -2269,6 +2276,21 @@ static int WINAPI expGetModuleFileNameA(int module, char* s, int len)
return result;
}
static int WINAPI expGetModuleBaseNameA(int process, int module, char* s, int len)
{
int result = 0;
if (s && len) {
av_strlcpy(s, "aviplay.dll", len);
result = strlen(s);
}
dbgprintf("GetModuleBaseNameA(0x%x, 0x%x, 0x%x, %d) => %d\n",
process, module, s, len, result);
return result;
}
static int WINAPI expSetUnhandledExceptionFilter(void* filter)
{
dbgprintf("SetUnhandledExceptionFilter(0x%x) => 1\n", filter);
@ -2312,7 +2334,7 @@ static int WINAPI expLoadLibraryA(char* name)
// return MODULE_HANDLE_kernel32;
return MODULE_HANDLE_user32;
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if (strcasecmp(name, "wininet.dll") == 0 || strcasecmp(name, "wininet") == 0)
return MODULE_HANDLE_wininet;
if (strcasecmp(name, "ddraw.dll") == 0 || strcasecmp(name, "ddraw") == 0)
@ -2329,6 +2351,8 @@ static int WINAPI expLoadLibraryA(char* name)
return MODULE_HANDLE_ole32;
if (strcasecmp(name, "winmm.dll") == 0 || strcasecmp(name, "winmm") == 0)
return MODULE_HANDLE_winmm;
if (strcasecmp(name, "psapi.dll") == 0 || strcasecmp(name, "psapi") == 0)
return MODULE_HANDLE_psapi;
result=LoadLibraryA(name);
dbgprintf("Returned LoadLibraryA(0x%x='%s'), def_path=%s => 0x%x\n", name, name, def_path, result);
@ -2338,7 +2362,7 @@ static int WINAPI expLoadLibraryA(char* name)
static int WINAPI expFreeLibrary(int module)
{
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
int result=0; /* FIXME:XXX: qtx svq3 frees up qt.qts */
#else
int result=FreeLibrary(module);
@ -2355,7 +2379,7 @@ static void* WINAPI expGetProcAddress(HMODULE mod, char* name)
result=LookupExternalByName("kernel32.dll", name); break;
case MODULE_HANDLE_user32:
result=LookupExternalByName("user32.dll", name); break;
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
case MODULE_HANDLE_wininet:
result=LookupExternalByName("wininet.dll", name); break;
case MODULE_HANDLE_ddraw:
@ -2371,6 +2395,8 @@ static void* WINAPI expGetProcAddress(HMODULE mod, char* name)
result=LookupExternalByName("ole32.dll", name); break;
case MODULE_HANDLE_winmm:
result=LookupExternalByName("winmm.dll", name); break;
case MODULE_HANDLE_psapi:
result=LookupExternalByName("psapi.dll", name); break;
default:
result=GetProcAddress(mod, name);
}
@ -2450,7 +2476,7 @@ static int WINAPI expCreateCompatibleDC(int hdc)
static int WINAPI expGetDeviceCaps(int hdc, int unk)
{
dbgprintf("GetDeviceCaps(0x%x, %d) => 0\n", hdc, unk);
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
#define BITSPIXEL 12
#define PLANES 14
if (unk == BITSPIXEL)
@ -2483,7 +2509,7 @@ static void* WINAPI expGetWindowDC(int hdc)
return 0;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static int WINAPI expGetWindowRect(HWND win, RECT *r)
{
dbgprintf("GetWindowRect(0x%x, 0x%x) => 1\n", win, r);
@ -2937,7 +2963,7 @@ static int WINAPI expGetCursorPos(void *cursor)
dbgprintf("GetCursorPos(0x%x) => 0x%x\n", cursor, cursor);
return 1;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static int show_cursor = 0;
static int WINAPI expShowCursor(int show)
{
@ -2975,7 +3001,7 @@ static int WINAPI expGetCPInfo(int cp,void *info)
dbgprintf("GetCPInfo()\n");
return 0;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
#define SM_CXSCREEN 0
#define SM_CYSCREEN 1
#define SM_XVIRTUALSCREEN 76
@ -2987,7 +3013,7 @@ static int WINAPI expGetCPInfo(int cp,void *info)
static int WINAPI expGetSystemMetrics(int index)
{
dbgprintf("GetSystemMetrics(%d)\n", index);
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
switch(index)
{
case SM_XVIRTUALSCREEN:
@ -3314,7 +3340,7 @@ static DIR* qtx_dir=NULL;
static WIN_BOOL WINAPI expFindNextFileA(HANDLE h,LPWIN32_FIND_DATAA lpfd)
{
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
dbgprintf("FindNextFileA(0x%x, 0x%x) => 0\n", h, lpfd);
if(h==FILE_HANDLE_quicktimeqtx){
struct dirent* d;
@ -3340,7 +3366,7 @@ static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd)
{
dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => 0\n", s, s, lpfd);
// printf("\n### FindFirstFileA('%s')...\n",s);
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if(strstr(s, "quicktime\\*.QTX")){
dbgprintf("FindFirstFileA(0x%x='%s', 0x%x) => QTX\n", s, s, lpfd);
dbgprintf("\n### Searching for QuickTime plugins (*.qtx) at %s...\n",def_path);
@ -3376,7 +3402,7 @@ static HANDLE WINAPI expFindFirstFileA(LPCSTR s, LPWIN32_FIND_DATAA lpfd)
static WIN_BOOL WINAPI expFindClose(HANDLE h)
{
dbgprintf("FindClose(0x%x) => 0\n", h);
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
// if(h==FILE_HANDLE_quicktimeqtx && qtx_dir){
// closedir(qtx_dir);
// qtx_dir=NULL;
@ -3398,7 +3424,7 @@ static UINT WINAPI expGetWindowsDirectoryA(LPSTR s,UINT c)
dbgprintf("GetWindowsDirectoryA(0x%x, %d) => %d\n", s, c, result);
return result;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static UINT WINAPI expGetCurrentDirectoryA(UINT c, LPSTR s)
{
char curdir[]="c:\\";
@ -3482,7 +3508,7 @@ static HANDLE WINAPI expCreateFileA(LPCSTR cs1,DWORD i1,DWORD i2,
i2, p1, i3, i4, i5);
if((!cs1) || (strlen(cs1)<2))return -1;
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if(strstr(cs1, "QuickTime.qts"))
{
int result;
@ -3598,7 +3624,7 @@ static DWORD WINAPI expGetFullPathNameA
dbgprintf("GetFullPathNameA('%s',%d,%p,%p)\n",lpFileName,nBufferLength,
lpBuffer, lpFilePart);
#if 0
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
strcpy(lpFilePart, "Quick123.qts");
#else
strcpy(lpFilePart, lpFileName);
@ -3662,7 +3688,7 @@ static DWORD WINAPI expSetFilePointer(HANDLE h, LONG val, LPLONG ext, DWORD whe
default:
return -1;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if (val == 0 && ext != 0)
val = val&(*ext);
#endif
@ -3768,7 +3794,7 @@ static void WINAPI expInitCommonControls(void)
return;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
/* needed by QuickTime.qts */
static HWND WINAPI expCreateUpDownControl (DWORD style, INT x, INT y, INT cx, INT cy,
HWND parent, INT id, HINSTANCE inst,
@ -4427,7 +4453,7 @@ static MMRESULT WINAPI exptimeBeginPeriod(UINT wPeriod)
return 0;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
static MMRESULT WINAPI exptimeEndPeriod(UINT wPeriod)
{
dbgprintf("timeEndPeriod(%u) !\n", wPeriod);
@ -4543,6 +4569,12 @@ static WIN_BOOL WINAPI expSetThreadPriority(
return TRUE;
}
static void WINAPI expTerminateProcess( DWORD process, DWORD status )
{
printf("EXIT - process %ld code %ld\n", process, status);
exit(status);
}
static void WINAPI expExitProcess( DWORD status )
{
printf("EXIT - code %ld\n",status);
@ -4551,7 +4583,7 @@ static void WINAPI expExitProcess( DWORD status )
static INT WINAPI expMessageBoxA(HWND hWnd, LPCSTR text, LPCSTR title, UINT type){
printf("MSGBOX '%s' '%s' (%d)\n",text,title,type);
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
if (type == MB_ICONHAND && !strlen(text) && !strlen(title))
return IDIGNORE;
#endif
@ -4592,6 +4624,28 @@ static WINAPI inline unsigned long int expntohl(unsigned long int netlong)
// dbgprintf("ntohl(%x) => %x\n", netlong, ntohl(netlong));
return ntohl(netlong);
}
static char* WINAPI expSysAllocStringLen(char *pch, unsigned cch)
{
char *str;
dbgprintf("SysAllocStringLen('%s', %d)\n", pch, cch);
str = malloc(cch * 2 + sizeof(unsigned) + 2);
*(unsigned *)str = cch;
str += sizeof(unsigned);
if (pch)
memcpy(str, pch, cch * 2);
str[cch * 2] = 0;
str[cch * 2 + 1] = 0;
return str;
}
static void WINAPI expSysFreeString(char *str)
{
if (str) {
free(str - sizeof(unsigned));
}
}
static void WINAPI expVariantInit(void* p)
{
printf("InitCommonControls called!\n");
@ -4610,7 +4664,7 @@ static int WINAPI expUnregisterClassA(const char *className, HINSTANCE hInstance
return 0;
}
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
/* should be fixed bcs it's not fully strlen equivalent */
static int expSysStringByteLen(void *str)
{
@ -4846,6 +4900,25 @@ static void * WINAPI expDecodePointer(void *p)
return p;
}
static DWORD WINAPI expGetThreadLocale(void)
{
return 0;
}
/**
* Very incomplete implementation, return an error for almost all cases.
*/
static DWORD WINAPI expGetLocaleInfoA(DWORD locale, DWORD lctype, char* lpLCData, int cchData)
{
if (lctype == 0x1004) { // LOCALE_IDEFAULTANSICODEPAGE
if (cchData < 4)
return cchData == 0 ? 4 : 0;
strcpy(lpLCData, "437");
return 4;
}
return 0;
}
struct exports
{
char name[64];
@ -4880,7 +4953,7 @@ struct exports exp_kernel32[]=
FF(SetEvent, -1)
FF(ResetEvent, -1)
FF(WaitForSingleObject, -1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(WaitForMultipleObjects, -1)
FF(ExitThread, -1)
FF(CreateMutexA,-1)
@ -4941,7 +5014,7 @@ struct exports exp_kernel32[]=
FF(GetStartupInfoA, -1)
FF(GetStdHandle, -1)
FF(GetFileType, -1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(GetFileAttributesA, -1)
#endif
FF(SetHandleCount, -1)
@ -4988,7 +5061,7 @@ struct exports exp_kernel32[]=
FF(CreateFileA,-1)
FF(GetSystemDirectoryA,-1)
FF(GetWindowsDirectoryA,-1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(GetCurrentDirectoryA,-1)
FF(SetCurrentDirectoryA,-1)
FF(CreateDirectoryA,-1)
@ -4997,6 +5070,7 @@ struct exports exp_kernel32[]=
FF(GetFullPathNameA,-1)
FF(SetErrorMode, -1)
FF(IsProcessorFeaturePresent, -1)
FF(IsDebuggerPresent, -1)
FF(GetProcessAffinityMask, -1)
FF(InterlockedExchange, -1)
FF(InterlockedCompareExchange, -1)
@ -5017,12 +5091,15 @@ struct exports exp_kernel32[]=
FF(GlobalMemoryStatus,-1)
FF(GetThreadPriority,-1)
FF(SetThreadPriority,-1)
FF(TerminateProcess,-1)
FF(ExitProcess,-1)
{"LoadLibraryExA", -1, (void*)&LoadLibraryExA},
FF(SetThreadIdealProcessor,-1)
FF(SetProcessAffinityMask, -1)
FF(EncodePointer, -1)
FF(DecodePointer, -1)
FF(GetThreadLocale, -1)
FF(GetLocaleInfoA, -1)
UNDEFF(FlsAlloc, -1)
UNDEFF(FlsGetValue, -1)
UNDEFF(FlsSetValue, -1)
@ -5101,11 +5178,14 @@ struct exports exp_winmm[]={
FF(OpenDriver, -1)
FF(timeGetDevCaps, -1)
FF(timeBeginPeriod, -1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(timeEndPeriod, -1)
FF(waveOutGetNumDevs, -1)
#endif
};
struct exports exp_psapi[]={
FF(GetModuleBaseNameA, -1)
};
struct exports exp_user32[]={
FF(LoadIconA,-1)
FF(LoadStringA, -1)
@ -5117,7 +5197,7 @@ struct exports exp_user32[]={
FF(LoadCursorA,-1)
FF(SetCursor,-1)
FF(GetCursorPos,-1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(ShowCursor,-1)
#endif
FF(RegisterWindowMessageA,-1)
@ -5129,7 +5209,7 @@ struct exports exp_user32[]={
FF(MessageBoxA, -1)
FF(RegisterClassA, -1)
FF(UnregisterClassA, -1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(GetWindowRect, -1)
FF(MonitorFromWindow, -1)
FF(MonitorFromRect, -1)
@ -5173,7 +5253,7 @@ struct exports exp_gdi32[]={
FF(DeleteObject, -1)
FF(GetDeviceCaps, -1)
FF(GetSystemPaletteEntries, -1)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(CreatePalette, -1)
FF(GetObjectA, -1)
FF(CreateRectRgn, -1)
@ -5202,7 +5282,7 @@ struct exports exp_crtdll[]={
struct exports exp_comctl32[]={
FF(StringFromGUID2, -1)
FF(InitCommonControls, 17)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(CreateUpDownControl, 16)
#endif
};
@ -5220,8 +5300,10 @@ struct exports exp_msdmo[]={
FF(MoInitMediaType, -1)
};
struct exports exp_oleaut32[]={
FF(SysAllocStringLen, 4)
FF(SysFreeString, 6)
FF(VariantInit, 8)
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
FF(SysStringByteLen, 149)
#endif
};
@ -5261,7 +5343,7 @@ struct exports exp_pncrt[]={
};
#endif
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
struct exports exp_ddraw[]={
FF(DirectDrawCreate, -1)
};
@ -5302,6 +5384,7 @@ struct libs libraries[]={
LL(kernel32)
LL(msvcrt)
LL(winmm)
LL(psapi)
LL(user32)
LL(advapi32)
LL(gdi32)
@ -5315,7 +5398,7 @@ struct libs libraries[]={
#ifdef REALPLAYER
LL(pncrt)
#endif
#ifdef QTX
#ifdef CONFIG_QTX_CODECS
LL(ddraw)
#endif
LL(comdlg32)

View File

@ -13,10 +13,6 @@
#include "config.h"
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
/*
* Win32 was easy to implement under Unix since most (all?) 32-bit
* Unices uses the same type model (ILP32) as Win32, where int, long
@ -165,8 +161,4 @@ typedef __uint32 DWORD_PTR, *PDWORD_PTR;
typedef INT_PTR SSIZE_T, *PSSIZE_T;
typedef UINT_PTR SIZE_T, *PSIZE_T;
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* MPLAYER_BASETSD_H */

View File

@ -26,10 +26,6 @@ typedef struct
int limit_in_pages; /* is the limit in pages or bytes? */
enum seg_type type; /* segment type */
} ldt_entry;
#ifdef __cplusplus
extern "C"
{
#endif
void LDT_BytesToEntry( const unsigned long *buffer, ldt_entry *content );
void LDT_EntryToBytes( unsigned long *buffer, const ldt_entry *content );
int LDT_GetEntry( int entry, ldt_entry *content );
@ -92,8 +88,5 @@ extern unsigned char ldt_flags_copy[LDT_SIZE];
(!((sel) & 4) || (SELECTOR_TO_ENTRY(sel) < FIRST_LDT_ENTRY_TO_ALLOC))
#define IS_SELECTOR_32BIT(sel) \
(IS_SELECTOR_SYSTEM(sel) || (GET_SEL_FLAGS(sel) & LDT_FLAGS_32BIT))
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_LDT_H */

View File

@ -9,10 +9,6 @@
#include "driver.h"
#include "mmreg.h"
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
//typedef WORD VERSION; /* major (high byte), minor (low byte) */
typedef UINT16 MMVERSION16;
@ -934,8 +930,4 @@ MMRESULT WINAPI acmStreamUnprepareHeader(
HACMSTREAM has, PACMSTREAMHEADER pash, DWORD fdwUnprepare
);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* MPLAYER_MSACM_H */

View File

@ -6,10 +6,6 @@
#include "pshpack1.h"
#ifdef __cplusplus
extern "C" {
#endif
#define NTAPI __stdcall
#ifndef IN
@ -92,10 +88,6 @@ typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
}
#ifdef __cplusplus
}
#endif
#include "poppack.h"
#endif /* MPLAYER_NTDEF_H */

View File

@ -6,10 +6,6 @@
#ifndef MPLAYER_VFW_H
#define MPLAYER_VFW_H
//#include "pshpack1.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "windef.h"
typedef struct __attribute__((__packed__))
@ -667,7 +663,4 @@ typedef struct {
#define AVIERR_USERABORT MAKE_AVIERR(198)
#define AVIERR_ERROR MAKE_AVIERR(199)
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_VFW_H */

View File

@ -7,10 +7,6 @@
#include "pshpack1.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct tagCOORD {
INT16 x;
INT16 y;
@ -1778,8 +1774,4 @@ VOID WINAPI SetLastError(DWORD);
#define GetCurrentProcess() ((HANDLE)0xffffffff)
#define GetCurrentThread() ((HANDLE)0xfffffffe)
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_WINBASE_H */

View File

@ -13,14 +13,6 @@
# include "config.h"
#ifdef _EGCS_
#define __stdcall
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Misc. constants. */
#ifdef FALSE
@ -91,11 +83,9 @@ extern "C" {
#ifdef __i386__
# if defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)))
# ifndef _EGCS_
#define __stdcall __attribute__((__stdcall__))
#define __cdecl __attribute__((__cdecl__))
# define RESTORE_ES __asm__ volatile("pushl %ds\n\tpopl %es")
# endif
# else
// # error You need gcc >= 2.7 to build Wine on a 386
# endif
@ -460,11 +450,9 @@ typedef LRESULT CALLBACK (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
/* Macro for structure packing. */
#ifdef __GNUC__
#ifndef _EGCS_
#define WINE_PACKED __attribute__((packed))
#define WINE_UNUSED __attribute__((unused))
#define WINE_NORETURN __attribute__((noreturn))
#endif
#else
#define WINE_PACKED /* nothing */
#define WINE_UNUSED /* nothing */
@ -633,8 +621,4 @@ typedef const RECTL *LPCRECTL;
((r16)->left = (INT16)(r32)->left, (r16)->top = (INT16)(r32)->top, \
(r16)->right = (INT16)(r32)->right, (r16)->bottom = (INT16)(r32)->bottom)
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_WINDEF_H */

View File

@ -1,10 +1,6 @@
#ifndef MPLAYER_WINDOWS_H
#define MPLAYER_WINDOWS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
@ -31,8 +27,4 @@ typedef KANJISTRUCT *PKANJISTRUCT;
#endif /* 0 */
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_WINDOWS_H */

View File

@ -7,10 +7,6 @@
#include "winbase.h"
#include "winnt.h"
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
/*
#define SHELL_ERROR_SUCCESS 0L
#define SHELL_ERROR_BADDB 1L
@ -50,8 +46,4 @@ typedef struct value_entW {
typedef ACCESS_MASK REGSAM;
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* MPLAYER_WINREG_H */

View File

@ -5,10 +5,6 @@
#include <stdarg.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "windef.h"
#include "pshpack1.h"
@ -2923,8 +2919,4 @@ VOID WINAPI ScreenSwitchEnable16(WORD);
#define WC_DIALOG (LPSTR)((DWORD)((WORD)( 0x8002)))
#ifdef __cplusplus
}
#endif
#endif /* MPLAYER_WINUSER_H */

View File

@ -9,11 +9,6 @@
#include "wine/msacmdrv.h"
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
typedef struct WINE_ACMDRIVERID *PWINE_ACMDRIVERID;
typedef struct WINE_ACMDRIVER *PWINE_ACMDRIVER;
@ -65,8 +60,4 @@ PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID);
PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver);
PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* MPLAYER_WINEACM_H */

View File

@ -1158,6 +1158,11 @@ void init_vo_spudec(struct MPContext *mpctx)
spudec_free(vo_spudec);
mpctx->initialized_flags &= ~INITIALIZED_SPUDEC;
vo_spudec = NULL;
// we currently can't work without video stream
if (!mpctx->sh_video)
return;
if (spudec_ifo) {
unsigned int palette[16], width, height;
current_module="spudec_init_vobsub";
@ -3848,7 +3853,7 @@ if(!mpctx->sh_video && !mpctx->sh_audio){
demux_info_print(mpctx->demuxer);
//================== Read SUBTITLES (DVD & TEXT) ==========================
if(vo_spudec==NULL && mpctx->sh_video &&
if(vo_spudec==NULL &&
(mpctx->stream->type==STREAMTYPE_DVD || mpctx->stream->type == STREAMTYPE_DVDNAV)){
init_vo_spudec(mpctx);
}