[MPlayer-cvslog] r31196 - in trunk: etc/codecs.conf loader/registry.c loader/win32.c
sesse
subversion at mplayerhq.hu
Sun May 23 18:01:12 CEST 2010
Author: sesse
Date: Sun May 23 18:01:12 2010
New Revision: 31196
Log:
Add final missing bits of CineForm HD support on Linux (via the Windows
DirectShow codec).
Required changes:
- codecs.conf entry (of course).
- Allow opening files with “.col” in the file name, just like “vp3” and “.fpf”
already was allowed. (CineForm expects to be able to do this, presumably
for some color management code.)
- In registry.c, fake a few registry keys that the codec expects the installer
to have written. Also, change a few magic numbers (0, 2) to the appropriate
constants (ERROR_SUCCESS, ERROR_FILE_NOT_FOUND) where appropriate, so the code
is easier to follow.
SMP works fine, but seemingly performs suboptimally (e.g., on my dual-core
laptop, CineForm performs better if I lie to it and tell it I have four cores).
I don't know if this is inherent in the codec, or some inefficiency in the
emulated synchronization primitives.
Modified:
trunk/etc/codecs.conf
trunk/loader/registry.c
trunk/loader/win32.c
Modified: trunk/etc/codecs.conf
==============================================================================
--- trunk/etc/codecs.conf Sun May 23 17:50:49 2010 (r31195)
+++ trunk/etc/codecs.conf Sun May 23 18:01:12 2010 (r31196)
@@ -1960,6 +1960,15 @@ videocodec LEADMW20
guid 0xe2b7dc56, 0x38c5, 0x11d5, 0x91, 0xf6, 0x00, 0x10, 0x4b, 0xdb, 0x8f, 0xf9
out BGR24,BGR8 flip
+videocodec cineformhd
+ info "CineForm HD"
+ status working
+ fourcc CFHD
+ driver dshow
+ dll "CFDecode2.ax"
+ guid 0xAD83011E, 0x01d1, 0x4623, 0x91, 0xfd, 0x6b, 0x75, 0xf1, 0x83, 0xc5, 0xa9
+ out UYVY
+
videocodec lagarith
info "Lagarith Lossless Video Codec"
comment "http://lags.leetcode.net/codec.html, requires an MMX2 CPU."
Modified: trunk/loader/registry.c
==============================================================================
--- trunk/loader/registry.c Sun May 23 17:50:49 2010 (r31195)
+++ trunk/loader/registry.c Sun May 23 18:01:12 2010 (r31196)
@@ -400,9 +400,32 @@ long __stdcall RegQueryValueExA(long key
if (!c)
return 1;
t=find_value_by_name(c);
+ if (t==0) {
+ // Hacks for CineForm.
+ if (strcmp(c, "HKCU\\SOFTWARE\\CineForm\\DecoderProperties\\Resolution") == 0) {
+ if (data)
+ *data = 1000;
+ if (type)
+ *type = REG_DWORD;
+ if (count)
+ *count = sizeof(DWORD);
+ free(c);
+ return ERROR_SUCCESS;
+ }
+ if (strcmp(c, "HKCU\\SOFTWARE\\CineForm\\DecoderProperties\\PixelFormats") == 0) {
+ if (data)
+ *data = 0xffff;
+ if (type)
+ *type = REG_DWORD;
+ if (count)
+ *count = sizeof(DWORD);
+ free(c);
+ return ERROR_SUCCESS;
+ }
+ free(c);
+ return ERROR_FILE_NOT_FOUND;
+ }
free(c);
- if (t==0)
- return 2;
if (type)
*type=t->type;
if (data)
@@ -419,7 +442,7 @@ long __stdcall RegQueryValueExA(long key
{
*count=t->len;
}
- return 0;
+ return ERROR_SUCCESS;
}
long __stdcall RegCreateKeyExA(long key, const char* name, long reserved,
void* classs, long options, long security,
Modified: trunk/loader/win32.c
==============================================================================
--- trunk/loader/win32.c Sun May 23 17:50:49 2010 (r31195)
+++ trunk/loader/win32.c Sun May 23 18:01:12 2010 (r31196)
@@ -3764,7 +3764,7 @@ static HANDLE WINAPI expCreateFileA(LPCS
free(tmp);
return result;
}
- if (strstr(cs1, "vp3") || strstr(cs1, ".fpf"))
+ if (strstr(cs1, "vp3") || strstr(cs1, ".fpf") || strstr(cs1, ".col"))
{
int r;
int flg = 0;
More information about the MPlayer-cvslog
mailing list