source: trunk/src/msacm32/msacm32.cpp@ 3894

Last change on this file since 3894 was 2103, checked in by sandervl, 26 years ago

JW's update (wine 991212)

File size: 4.5 KB
Line 
1/* -*- tab-width: 8; c-basic-offset: 4 -*- */
2
3/*
4 * MSACM32 library
5 *
6 * Copyright 1998 Patrik Stridvall
7 * 1999 Eric Pouech
8 */
9
10#include <os2win.h>
11#include "winbase.h"
12#include "winerror.h"
13#include "windef.h"
14#include "debugtools.h"
15#include "msacm.h"
16#include "msacmdrv.h"
17#include "wineacm.h"
18#include "winversion.h"
19
20DEFAULT_DEBUG_CHANNEL(msacm)
21
22/**********************************************************************/
23
24static DWORD MSACM_dwProcessesAttached = 0;
25
26/***********************************************************************
27 * MSACM_LibMain32 (MSACM32.init)
28 */
29BOOL WINAPI MSACM32_LibMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
30{
31 dprintf(("0x%x 0x%lx %p\n", hInstDLL, fdwReason, lpvReserved));
32
33 switch (fdwReason) {
34 case DLL_PROCESS_ATTACH:
35 if (MSACM_dwProcessesAttached == 0) {
36 MSACM_hHeap = HeapCreate(0, 0x10000, 0);
37 MSACM_RegisterAllDrivers();
38 }
39 MSACM_dwProcessesAttached++;
40 break;
41 case DLL_PROCESS_DETACH:
42 MSACM_dwProcessesAttached--;
43 if (MSACM_dwProcessesAttached == 0) {
44 MSACM_UnregisterAllDrivers();
45 HeapDestroy(MSACM_hHeap);
46 MSACM_hHeap = (HANDLE) NULL;
47 }
48 break;
49 case DLL_THREAD_ATTACH:
50 break;
51 case DLL_THREAD_DETACH:
52 break;
53 default:
54 break;
55 }
56 return TRUE;
57}
58
59/***********************************************************************
60 * XRegThunkEntry (MSACM32.1)
61 * FIXME
62 * No documentation found.
63 */
64
65/***********************************************************************
66 * acmGetVersion32 (MSACM32.34)
67 */
68DWORD WINAPI acmGetVersion(void)
69{
70 switch (GetVersion()) {
71 default:
72 dprintf(("Current OS not supported\n"));
73 case WIN95:
74 return 0x04000000; /* 4.0.0 */
75 case NT40:
76 return 0x04000565; /* 4.0.1381 */
77 }
78}
79
80/***********************************************************************
81 * acmMessage32 (MSACM32.35)
82 * FIXME
83 * No documentation found.
84 */
85
86/***********************************************************************
87 * acmMetrics (MSACM32.36)
88 */
89MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric)
90{
91 PWINE_ACMOBJ pao = MSACM_GetObj(hao);
92 BOOL bLocal = TRUE;
93 PWINE_ACMDRIVERID padid;
94 DWORD val = 0;
95
96 dprintf(("(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric));
97
98 switch (uMetric) {
99 case ACM_METRIC_COUNT_DRIVERS:
100 bLocal = FALSE;
101 /* fall thru */
102 case ACM_METRIC_COUNT_LOCAL_DRIVERS:
103 if (!pao)
104 return MMSYSERR_INVALHANDLE;
105 for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID)
106 if (padid->bEnabled /* && (local(padid) || !bLocal) */)
107 val++;
108 *(LPDWORD)pMetric = val;
109 return 0;
110
111 case ACM_METRIC_COUNT_CODECS:
112 if (!pao)
113 return MMSYSERR_INVALHANDLE;
114 bLocal = FALSE;
115 /* fall thru */
116 case ACM_METRIC_COUNT_LOCAL_CODECS:
117 /* FIXME: don't know how to differentiate codec, converters & filters yet */
118 for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID)
119 if (padid->bEnabled /* && (local(padid) || !bLocal) */)
120 val++;
121 *(LPDWORD)pMetric = val;
122 return 0;
123
124 case ACM_METRIC_COUNT_CONVERTERS:
125 bLocal = FALSE;
126 /* fall thru */
127 case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
128 /* FIXME: don't know how to differentiate codec, converters & filters yet */
129 for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID)
130 if (padid->bEnabled /* && (local(padid) || !bLocal) */)
131 val++;
132 *(LPDWORD)pMetric = val;
133 return 0;
134
135 case ACM_METRIC_COUNT_FILTERS:
136 bLocal = FALSE;
137 /* fall thru */
138 case ACM_METRIC_COUNT_LOCAL_FILTERS:
139 /* FIXME: don't know how to differentiate codec, converters & filters yet */
140 for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID)
141 if (padid->bEnabled /* && (local(padid) || !bLocal) */)
142 val++;
143 *(LPDWORD)pMetric = val;
144 return 0;
145
146 case ACM_METRIC_COUNT_DISABLED:
147 bLocal = FALSE;
148 /* fall thru */
149 case ACM_METRIC_COUNT_LOCAL_DISABLED:
150 if (!pao)
151 return MMSYSERR_INVALHANDLE;
152 for (padid = MSACM_pFirstACMDriverID; padid; padid = padid->pNextACMDriverID)
153 if (!padid->bEnabled /* && (local(padid) || !bLocal) */)
154 val++;
155 *(LPDWORD)pMetric = val;
156 return 0;
157
158 case ACM_METRIC_COUNT_HARDWARE:
159 case ACM_METRIC_HARDWARE_WAVE_INPUT:
160 case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
161 case ACM_METRIC_MAX_SIZE_FORMAT:
162 case ACM_METRIC_MAX_SIZE_FILTER:
163 case ACM_METRIC_DRIVER_SUPPORT:
164 case ACM_METRIC_DRIVER_PRIORITY:
165 default:
166 return MMSYSERR_NOTSUPPORTED;
167 }
168 return MMSYSERR_NOERROR;
169}
Note: See TracBrowser for help on using the repository browser.