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

Last change on this file since 4796 was 3925, checked in by bird, 25 years ago

Added the CVS keyword Id.

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