Mercurial > mplayer.hg
annotate loader/dshow/DS_VideoDec.c @ 1622:a0d4fa6b9435
printf added to seq. header error handlers
author | arpi |
---|---|
date | Wed, 22 Aug 2001 16:24:00 +0000 |
parents | 80cbe17e0f58 |
children | 9e23ceba3f65 |
rev | line source |
---|---|
1545 | 1 #include "guids.h" |
2 #include "interfaces.h" | |
1559 | 3 #include "libwin32.h" |
169 | 4 |
1545 | 5 #include "DS_VideoDecoder.h" |
6 #include <wine/winerror.h> | |
7 //#include <cpuinfo.h> | |
1063 | 8 |
169 | 9 #include <unistd.h> |
10 #include <fcntl.h> | |
1545 | 11 #include <errno.h> |
169 | 12 #include <sys/types.h> |
13 #include <sys/mman.h> | |
1545 | 14 #include <cstdio> |
15 #include <iostream> | |
16 #include <strstream> | |
169 | 17 |
173 | 18 #include <registry.h> |
1545 | 19 //#include <wine/winreg.h> |
169 | 20 |
21 #include "DS_VideoDec.h" | |
22 | |
1545 | 23 static void* _handle; // will be parameter later... |
24 static char** _d_ptr; // will be parameter later... | |
169 | 25 |
1545 | 26 extern "C" void Setup_LDT_Keeper(); |
27 extern "C" void setup_FS_Segment(); | |
169 | 28 |
1545 | 29 extern "C" int DS_VideoDecoder_Open(char* dllname, GUID* guid, BITMAPINFOHEADER* format, int flip,char** d_ptr){ |
169 | 30 |
1545 | 31 Setup_LDT_Keeper(); |
169 | 32 |
1545 | 33 CodecInfo ci; |
34 ci.dll=dllname; | |
35 ci.guid=*guid; | |
1559 | 36 |
1560 | 37 try { |
1559 | 38 DS_VideoDecoder* dec=new DS_VideoDecoder(ci, *format, flip); |
1560 | 39 _d_ptr=d_ptr; |
40 _handle=(void*)dec; | |
41 return 0; | |
42 } catch (FatalError &e) { } | |
169 | 43 |
1560 | 44 _handle=NULL; |
45 return -1; | |
46 | |
169 | 47 } |
48 | |
49 extern "C" void DS_VideoDecoder_Start(){ | |
1545 | 50 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
1555
076c27342828
Start/Stop state flag fixed - requires for brightness/contrast/etc stuff...
arpi
parents:
1545
diff
changeset
|
51 dec->Start(); |
169 | 52 } |
53 | |
54 extern "C" void DS_VideoDecoder_Stop(){ | |
1545 | 55 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
1555
076c27342828
Start/Stop state flag fixed - requires for brightness/contrast/etc stuff...
arpi
parents:
1545
diff
changeset
|
56 dec->Stop(); |
169 | 57 } |
58 | |
59 extern "C" void DS_VideoDecoder_Restart(){ | |
60 } | |
61 | |
62 extern "C" void DS_VideoDecoder_Close(){ | |
1559 | 63 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
64 delete dec; | |
169 | 65 } |
66 | |
67 extern "C" int DS_VideoDecoder_DecodeFrame(char* src, int size, int is_keyframe, int render){ | |
1545 | 68 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
69 CImage image; | |
70 image.ptr=*_d_ptr; | |
1559 | 71 return dec->Decode((void*)src,(size_t)size,is_keyframe,&image); |
169 | 72 } |
73 | |
74 extern "C" int DS_VideoDecoder_SetDestFmt(int bits, int csp){ | |
1545 | 75 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
76 return dec->SetDestFmt(bits,(fourcc_t)csp); | |
169 | 77 } |
78 | |
79 extern "C" int DS_SetValue_DivX(char* name, int value){ | |
1545 | 80 DS_VideoDecoder* dec=(DS_VideoDecoder*) _handle; |
1592 | 81 /* This printf is annoying with autoquality, * |
82 * should be moved into players code - atmos */ | |
83 //printf("DS_SetValue_DivX(%s),%d)\n",name,value); | |
1545 | 84 return (int) dec->SetValue(name,value); |
169 | 85 } |
86 | |
173 | 87 extern "C" int DS_SetAttr_DivX(char* attribute, int value){ |
88 int result, status, newkey, count; | |
89 if(strcmp(attribute, "Quality")==0){ | |
90 char* keyname="SOFTWARE\\Microsoft\\Scrunch"; | |
91 result=RegCreateKeyExA(HKEY_CURRENT_USER, keyname, 0, 0, 0, 0, 0, &newkey, &status); | |
92 if(result!=0) | |
93 { | |
94 printf("VideoDecoder::SetExtAttr: registry failure\n"); | |
95 return -1; | |
96 } | |
97 result=RegSetValueExA(newkey, "Current Post Process Mode", 0, REG_DWORD, &value, 4); | |
98 if(result!=0) | |
99 { | |
100 printf("VideoDecoder::SetExtAttr: error writing value\n"); | |
101 return -1; | |
102 } | |
103 value=-1; | |
104 result=RegSetValueExA(newkey, "Force Post Process Mode", 0, REG_DWORD, &value, 4); | |
105 if(result!=0) | |
106 { | |
107 printf("VideoDecoder::SetExtAttr: error writing value\n"); | |
108 return -1; | |
109 } | |
110 RegCloseKey(newkey); | |
111 return 0; | |
112 } | |
169 | 113 |
173 | 114 if( |
115 (strcmp(attribute, "Saturation")==0) || | |
116 (strcmp(attribute, "Hue")==0) || | |
117 (strcmp(attribute, "Contrast")==0) || | |
118 (strcmp(attribute, "Brightness")==0) | |
119 ) | |
120 { | |
121 char* keyname="SOFTWARE\\Microsoft\\Scrunch\\Video"; | |
122 result=RegCreateKeyExA(HKEY_CURRENT_USER, keyname, 0, 0, 0, 0, 0, &newkey, &status); | |
123 if(result!=0) | |
124 { | |
125 printf("VideoDecoder::SetExtAttr: registry failure\n"); | |
126 return -1; | |
127 } | |
128 result=RegSetValueExA(newkey, attribute, 0, REG_DWORD, &value, 4); | |
129 if(result!=0) | |
130 { | |
131 printf("VideoDecoder::SetExtAttr: error writing value\n"); | |
132 return -1; | |
133 } | |
134 RegCloseKey(newkey); | |
135 return 0; | |
136 } | |
137 | |
138 printf("Unknown attribute!\n"); | |
139 return -200; | |
140 } | |
141 |