├── .gitignore
├── Framework
├── English.lproj
│ └── InfoPlist.strings
├── Info.plist
├── PACardInfo.h
├── PACardInfo.m
├── PACardInfoInternal.h
├── PAClientInfo.h
├── PAClientInfo.m
├── PAClientInfoInternal.h
├── PAElementInfo.h
├── PAElementInfo.m
├── PAElementInfoInternal.h
├── PAHelperConnection.h
├── PAHelperConnection.m
├── PAModuleInfo.h
├── PAModuleInfo.m
├── PAModuleInfoInternal.h
├── PASampleInfo.h
├── PASampleInfo.m
├── PASampleInfoInternal.h
├── PAServerConnection.h
├── PAServerConnection.m
├── PAServerConnectionAudio.h
├── PAServerConnectionAudio.m
├── PAServerConnectionImplementation.h
├── PAServerConnectionImplementation.m
├── PAServerConnectionInternal.h
├── PAServerConnectionInternal.m
├── PAServerInfo.h
├── PAServerInfo.m
├── PAServerInfoInternal.h
├── PAServiceDiscovery.h
├── PAServiceDiscovery.m
├── PASinkInfo.h
├── PASinkInfo.m
├── PASinkInfoInternal.h
├── PASinkInputInfo.h
├── PASinkInputInfo.m
├── PASinkInputInfoInternal.h
├── PASourceInfo.h
├── PASourceInfo.m
├── PASourceInfoInternal.h
├── PASourceOutputInfo.h
├── PASourceOutputInfo.m
├── PASourceOutputInfoInternal.h
├── PulseAudio.h
├── PulseAudio.xcodeproj
│ └── project.pbxproj
├── PulseAudio_Prefix.pch
├── ULINetSocket.h
├── ULINetSocket.m
└── install.sh
├── HALPlugin
├── HALPlugin.xcodeproj
│ └── project.pbxproj
├── Resources
│ ├── Info.plist
│ └── version.plist
├── Source
│ ├── HALPlugin.exp
│ ├── HALPlugin_Prefix.h
│ ├── PADevice.h
│ ├── PADevice.m
│ ├── PADeviceAudio.h
│ ├── PADeviceAudio.m
│ ├── PAObject.h
│ ├── PAObject.m
│ ├── PAPlugInInterface.h
│ ├── PAPlugInInterface.m
│ ├── PAPlugin.h
│ ├── PAPlugin.m
│ ├── PAStream.h
│ └── PAStream.m
└── install.sh
├── PreferencePane
├── AudioClients.h
├── AudioClients.m
├── English.lproj
│ ├── InfoPlist.strings
│ └── PAPreferencePane.nib
│ │ ├── designable.nib
│ │ └── keyedobjects.nib
├── Growl.h
├── Growl.m
├── Growl_512x512.png
├── Info.plist
├── LocalServer.h
├── LocalServer.m
├── LoginItemController.h
├── LoginItemController.m
├── PAPreferencePane.tiff
├── PAPreferencePane.xcodeproj
│ ├── .gitignore
│ └── project.pbxproj
├── PreferencePane.h
├── PreferencePane.m
├── PulseAudio_Prefix.pch
└── install.sh
├── PulseAudioHelper
├── ConnectionClient.h
├── ConnectionClient.m
├── ConnectionServer.h
├── ConnectionServer.m
├── GrowlNotifications.h
├── GrowlNotifications.m
├── LoginItemController.h
├── LoginItemController.m
├── Pathes.h
├── Preferences.h
├── Preferences.m
├── PulseAudio.png
├── PulseAudioHelper-Info.plist
├── PulseAudioHelper.xcodeproj
│ └── project.pbxproj
├── PulseAudioHelper_Prefix.pch
├── ServerConnection.h
├── ServerConnection.m
├── ServerTask.h
├── ServerTask.m
├── StatusBar.h
├── StatusBar.m
├── install.sh
├── logo.icns
├── main.m
└── statusBar.png
├── PulseConsole
├── Credits.rtf
├── DocumentController.h
├── DocumentController.m
├── English.lproj
│ ├── InfoPlist.strings
│ ├── MainMenu.xib
│ └── Server.xib
├── Info.plist
├── Introspect.h
├── Introspect.m
├── MeterView.h
├── MeterView.m
├── MultipleLinesTextFieldCell.h
├── MultipleLinesTextFieldCell.m
├── PulseConsole.xcodeproj
│ └── project.pbxproj
├── PulseConsole_Prefix.pch
├── Server.h
├── Server.m
├── ServerDocument.h
├── ServerDocument.m
├── StreamListView.h
├── StreamListView.m
├── StreamView.h
├── StreamView.m
├── logo.icns
└── main.m
├── README.md
├── deploy
├── .gitignore
├── InstallerResources
│ ├── License.rtf
│ ├── background.tif
│ └── postinstall
├── ReleaseNotes.txt
├── bootstrap_machine.sh
├── build.sh
├── build_pulseaudio.sh
├── deploy.sh
├── fixup_framework.sh
├── updateReleaseNotes.sh
└── version.inc
└── legacy
├── audioDaemon
├── audioDaemon.xcodeproj
│ └── project.pbxproj
├── deviceClient.c
├── deviceClient.h
├── driverClient.c
├── driverClient.h
├── main.c
├── notificationCenter.c
├── notificationCenter.h
├── pulseAudio.c
├── pulseAudio.h
├── virtualDeviceClient.c
└── virtualDeviceClient.h
└── kext
├── BuildNames.h
├── English.lproj
└── InfoPlist.strings
├── GPL
├── Info.plist
├── PAClip.cpp
├── PADevice.cpp
├── PADevice.h
├── PADeviceUserClient.cpp
├── PADeviceUserClient.h
├── PADeviceUserClientTypes.h
├── PADriver.cpp
├── PADriver.h
├── PADriverUserClient.cpp
├── PADriverUserClient.h
├── PADriverUserClientTypes.h
├── PAEngine.cpp
├── PAEngine.h
├── PALog.h
├── PAStream.cpp
├── PAStream.h
├── PAUserClient.cpp
├── PAUserClient.h
├── PAUserClientCommonTypes.h
├── PAUserClientTypes.h
├── PAVirtualDevice.cpp
├── PAVirtualDevice.h
├── PAVirtualDeviceUserClient.cpp
├── PAVirtualDeviceUserClient.h
├── PAVirtualDeviceUserClientTypes.h
├── PulseAudioKext.xcodeproj
└── project.pbxproj
├── README
└── load.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | *.mode1v3
3 | *.pbxuser
4 |
--------------------------------------------------------------------------------
/Framework/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/Framework/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | org.pulseaudio.PulseAudioFramework
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 0.1
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Framework/PACardInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PACardInfo : PAElementInfo
16 | {
17 | NSString *driver;
18 | NSDictionary *properties;
19 | }
20 |
21 | @property (nonatomic, readonly) NSString *driver;
22 | @property (nonatomic, readonly) NSDictionary *properties;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Framework/PACardInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PACardInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 | @implementation PACardInfo
16 |
17 | @synthesize driver;
18 | @synthesize properties;
19 |
20 | @end
21 |
22 | @implementation PACardInfo (internal)
23 |
24 | - (void) loadFromInfoStruct: (const pa_card_info *) info
25 | {
26 | index = info->index;
27 |
28 | if (name)
29 | [name release];
30 | name = [[NSString stringWithCString: info->name
31 | encoding: NSUTF8StringEncoding] retain];
32 | if (driver)
33 | [driver release];
34 | driver = [[NSString stringWithCString: info->driver
35 | encoding: NSUTF8StringEncoding] retain];
36 | if (properties)
37 | [properties release];
38 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
39 |
40 | if (initialized)
41 | [server performSelectorOnMainThread: @selector(sendDelegateCardInfoChanged:)
42 | withObject: self
43 | waitUntilDone: NO];
44 |
45 | initialized = YES;
46 | }
47 |
48 | - (id) initWithInfoStruct: (const pa_card_info *) info
49 | server: (PAServerConnection *) s
50 | {
51 | [super initWithServer: s];
52 | [self loadFromInfoStruct: info];
53 | return self;
54 | }
55 |
56 | + (PACardInfo *) createFromInfoStruct: (const pa_card_info *) info
57 | server: (PAServerConnection *) s
58 | {
59 | return [[PACardInfo alloc] initWithInfoStruct: info
60 | server: s];
61 | }
62 |
63 | @end
64 |
65 |
--------------------------------------------------------------------------------
/Framework/PACardInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PACardInfo.h"
17 |
18 | @interface PACardInfo (internal)
19 |
20 | + (PACardInfo *) createFromInfoStruct: (const pa_card_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_card_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PAClientInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PAClientInfo : PAElementInfo
16 | {
17 | NSString *driver;
18 | NSDictionary *properties;
19 | }
20 |
21 | @property (nonatomic, readonly) NSString *driver;
22 | @property (nonatomic, readonly) NSDictionary *properties;
23 |
24 | @end
25 |
26 |
--------------------------------------------------------------------------------
/Framework/PAClientInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAClientInfoInternal.h"
14 | #import "PAServerConnectionInternal.h"
15 |
16 | @implementation PAClientInfo
17 |
18 | @synthesize driver;
19 | @synthesize properties;
20 |
21 | @end
22 |
23 |
24 | @implementation PAClientInfo (internal)
25 |
26 | - (void) loadFromInfoStruct: (const pa_client_info *) info
27 | {
28 | index = info->index;
29 |
30 | if (name)
31 | [name release];
32 | name = [[NSString stringWithCString: info->name
33 | encoding: NSUTF8StringEncoding] retain];
34 | if (driver)
35 | [driver release];
36 | driver = [[NSString stringWithCString: info->driver
37 | encoding: NSUTF8StringEncoding] retain];
38 | if (properties)
39 | [properties release];
40 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
41 |
42 | if (initialized)
43 | [server performSelectorOnMainThread: @selector(sendDelegateClientInfoChanged:)
44 | withObject: self
45 | waitUntilDone: NO];
46 |
47 | initialized = YES;
48 | }
49 |
50 | - (id) initWithInfoStruct: (const pa_client_info *) info
51 | server: (PAServerConnection *) s
52 | {
53 | [super initWithServer: s];
54 | [self loadFromInfoStruct: info];
55 | return self;
56 | }
57 |
58 | + (PAClientInfo *) createFromInfoStruct: (const pa_client_info *) info
59 | server: (PAServerConnection *) s
60 | {
61 | return [[PAClientInfo alloc] initWithInfoStruct: info
62 | server: s];
63 | }
64 |
65 | @end
66 |
67 |
--------------------------------------------------------------------------------
/Framework/PAClientInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PAClientInfo.h"
17 |
18 | @interface PAClientInfo (internal)
19 |
20 | + (PAClientInfo *) createFromInfoStruct: (const pa_client_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_client_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PAElementInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 |
14 | #define PAElementInfoChangedNotification @"PAElementInfoChangedNotification"
15 |
16 | @class PAServerConnection;
17 |
18 | @interface PAElementInfo : NSObject
19 | {
20 | UInt32 index;
21 | PAServerConnection *server;
22 | NSString *name;
23 |
24 | BOOL initialized;
25 | }
26 |
27 | - (id) initWithServer: (PAServerConnection *) s;
28 |
29 | @property (nonatomic, readonly) UInt32 index;
30 | @property (nonatomic, readonly) PAServerConnection *server;
31 | @property (nonatomic, readonly) NSString *name;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/Framework/PAElementInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PAElementInfo.h"
13 |
14 | @implementation PAElementInfo
15 | @synthesize index;
16 | @synthesize server;
17 | @synthesize name;
18 |
19 | - (id) initWithServer: (PAServerConnection *) s
20 | {
21 | [super init];
22 | server = s;
23 | return self;
24 | }
25 |
26 | @end
27 |
28 | @implementation PAElementInfo (internal)
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/Framework/PAElementInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PAElementInfo (internal)
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Framework/PAHelperConnection.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "ULINetSocket.h"
14 |
15 | #define PAOSX_HelperSocket @"/var/tmp/PAOSX_HelperSocket"
16 | #define PAOSX_HelperMagic 0xaffedead
17 |
18 | #define PAOSX_HelperName @"org.pulseaudio.PulseAudioHelper"
19 | #define PAOSX_HelperMsgServiceStarted @"org.pulseaudio.PulseAudioHelper.serviceStarted"
20 |
21 | #define PAOSX_MessageNameKey @"MessageName"
22 | #define PAOSX_MessageDictionaryKey @"MessageDictionaryKey"
23 | #define PAOSX_MessageRegisterClient @"MessageRegisterClient"
24 | #define PAOSX_MessageAudioClientStarted @"MessageAudioClientStarted"
25 | #define PAOSX_MessageAudioClientStopped @"MessageAudioClientStopped"
26 | #define PAOSX_MessageAudioClientsUpdate @"MessageAudioClientsUpdate"
27 | #define PAOSX_MessageRequestPreferences @"MessageRequestPreferences"
28 | #define PAOSX_MessageSetPreferences @"MessageSetPreferences"
29 | #define PAOSX_MessageSetAudioDevices @"MessageSetAudioDevices"
30 | #define PAOSX_MessageSetAudioClientConfig @"MessageSetAudioClientConfig"
31 |
32 | typedef struct PAHelperProtocolHeader {
33 | UInt32 magic;
34 | UInt32 length;
35 | } PAHelperProtocolHeader;
36 |
37 | @class PAHelperConnection;
38 |
39 | @protocol PAHelperConnectionDelegate
40 | @optional
41 | - (void) PAHelperConnectionEstablished: (PAHelperConnection *) connection;
42 | - (void) PAHelperConnectionDied: (PAHelperConnection *) connection;
43 | - (void) PAHelperConnection: (PAHelperConnection *) connection
44 | receivedMessage: (NSString *) name
45 | dict: (NSDictionary *) msg;
46 | @end
47 |
48 | @interface PAHelperConnection : NSObject
49 | {
50 | NSObject *delegate;
51 |
52 | @private
53 | ULINetSocket *socket;
54 | NSMutableData *inboundData;
55 | BOOL retry;
56 | NSTimer *retryTimer;
57 | }
58 |
59 | @property (nonatomic, assign) NSObject *delegate;
60 | @property (nonatomic, readonly) ULINetSocket *socket;
61 |
62 | - (id) initWithSocket: (ULINetSocket *) socket;
63 | - (void) scheduleOnCurrentRunLoop;
64 |
65 | - (BOOL) connectWithRetry: (BOOL) retry;
66 | - (BOOL) isConnected;
67 | - (void) sendMessage: (NSString *) name
68 | dict: (NSDictionary *) msg;
69 |
70 | @end
71 |
--------------------------------------------------------------------------------
/Framework/PAModuleInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PAModuleInfo : PAElementInfo
16 | {
17 | NSString *argument;
18 | UInt32 useCount;
19 | NSDictionary *properties;
20 | }
21 |
22 | @property (nonatomic, readonly) NSString *argument;
23 | @property (nonatomic, readonly) UInt32 useCount;
24 | @property (nonatomic, readonly) NSDictionary *properties;
25 |
26 | - (BOOL) unload;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Framework/PAModuleInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PAModuleInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 | @implementation PAModuleInfo
16 |
17 | @synthesize argument;
18 | @synthesize useCount;
19 | @synthesize properties;
20 |
21 | - (BOOL) unload
22 | {
23 | return [server unloadModule: self];
24 | }
25 |
26 | @end
27 |
28 | @implementation PAModuleInfo (internal)
29 |
30 | - (void) loadFromInfoStruct: (const pa_module_info *) info
31 | {
32 | index = info->index;
33 | useCount = info->n_used;
34 |
35 | if (name)
36 | [name release];
37 |
38 | name = [[NSString stringWithCString: info->name
39 | encoding: NSUTF8StringEncoding] retain];
40 | if (argument) {
41 | [argument release];
42 | argument = nil;
43 | }
44 |
45 | if (info->argument)
46 | argument = [[NSString stringWithCString: info->argument
47 | encoding: NSUTF8StringEncoding] retain];
48 | if (properties)
49 | [properties release];
50 |
51 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
52 |
53 | if (initialized)
54 | [server performSelectorOnMainThread: @selector(sendDelegateModuleInfoChanged:)
55 | withObject: self
56 | waitUntilDone: NO];
57 | }
58 |
59 | - (id) initWithInfoStruct: (const pa_module_info *) info
60 | server: (PAServerConnection *) s
61 | {
62 | [super initWithServer: s];
63 | [self loadFromInfoStruct: info];
64 | return self;
65 | }
66 |
67 | + (PAModuleInfo *) createFromInfoStruct: (const pa_module_info *) info
68 | server: (PAServerConnection *) s
69 | {
70 | return [[PAModuleInfo alloc] initWithInfoStruct: info
71 | server: s];
72 | }
73 |
74 |
75 | @end
76 |
77 |
--------------------------------------------------------------------------------
/Framework/PAModuleInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PAModuleInfo.h"
17 |
18 | @interface PAModuleInfo (internal)
19 |
20 | + (PAModuleInfo *) createFromInfoStruct: (const pa_module_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_module_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PASampleInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PASampleInfo : PAElementInfo
16 | {
17 | NSString *sampleSpec;
18 | NSString *channelMap;
19 | NSString *fileName;
20 |
21 | UInt64 duration;
22 | UInt64 bytes;
23 |
24 | BOOL lazy;
25 | }
26 |
27 | @property (nonatomic, readonly) NSString *sampleSpec;
28 | @property (nonatomic, readonly) NSString *channelMap;
29 | @property (nonatomic, readonly) NSString *fileName;
30 | @property (nonatomic, readonly) UInt64 duration;
31 | @property (nonatomic, readonly) UInt64 bytes;
32 | @property (nonatomic, readonly) BOOL lazy;
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/Framework/PASampleInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PASampleInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 | @implementation PASampleInfo
16 |
17 | @synthesize sampleSpec;
18 | @synthesize channelMap;
19 | @synthesize fileName;
20 | @synthesize duration;
21 | @synthesize bytes;
22 | @synthesize lazy;
23 |
24 | @end
25 |
26 |
27 | @implementation PASampleInfo (internal)
28 |
29 | - (void) loadFromInfoStruct: (const pa_sample_info *) info
30 | {
31 | char tmp[100];
32 |
33 | index = info->index;
34 | duration = info->duration;
35 | bytes = info->bytes;
36 | lazy = info->lazy;
37 |
38 | if (name)
39 | [name release];
40 |
41 | name = [[NSString stringWithCString: info->name
42 | encoding: NSUTF8StringEncoding] retain];
43 | if (sampleSpec)
44 | [sampleSpec release];
45 |
46 | sampleSpec = [[NSString stringWithCString: pa_sample_spec_snprint(tmp, sizeof(tmp), &info->sample_spec)
47 | encoding: NSUTF8StringEncoding] retain];
48 | if (channelMap)
49 | [channelMap release];
50 |
51 | channelMap = [[NSString stringWithCString: pa_channel_map_snprint(tmp, sizeof(tmp), &info->channel_map)
52 | encoding: NSUTF8StringEncoding] retain];
53 | if (fileName) {
54 | [fileName release];
55 | fileName = nil;
56 | }
57 |
58 | if (info->filename)
59 | fileName = [[NSString stringWithCString: info->filename
60 | encoding: NSUTF8StringEncoding] retain];
61 |
62 | if (initialized)
63 | [server performSelectorOnMainThread: @selector(sendDelegateSampleInfoChanged:)
64 | withObject: self
65 | waitUntilDone: NO];
66 | initialized = YES;
67 | }
68 |
69 | - (id) initWithInfoStruct: (const pa_sample_info *) info
70 | server: (PAServerConnection *) s
71 | {
72 | [super initWithServer: s];
73 | [self loadFromInfoStruct: info];
74 | return self;
75 | }
76 |
77 | + (PASampleInfo *) createFromInfoStruct: (const pa_sample_info *) info
78 | server: (PAServerConnection *) s
79 | {
80 | return [[PASampleInfo alloc] initWithInfoStruct: info
81 | server: s];
82 | }
83 |
84 | @end
85 |
86 |
--------------------------------------------------------------------------------
/Framework/PASampleInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PASampleInfo.h"
17 |
18 | @interface PASampleInfo (internal)
19 |
20 | + (PASampleInfo *) createFromInfoStruct: (const pa_sample_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_sample_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PAServerConnectionAudio.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 |
14 | @class PAServerConnectionAudio;
15 |
16 | @interface PAServerConnectionAudio : NSObject
17 | {
18 | PAServerConnection *serverConnection;
19 | pa_context *PAContext;
20 |
21 | pa_stream *PARecordStream;
22 | pa_stream *PAPlaybackStream;
23 |
24 | pa_buffer_attr bufAttr;
25 | pa_sample_spec sampleSpec;
26 | UInt32 ioBufferFrameSize;
27 |
28 | char *inputDummyBuffer;
29 | char *outputDummyBuffer;
30 |
31 | Float64 sampleRate;
32 | UInt32 ioProcBufferSize;
33 |
34 | NSString *sinkForPlayback;
35 | NSString *sourceForRecord;
36 | }
37 |
38 | @property (nonatomic, readonly) NSString *sinkForPlayback;
39 | @property (nonatomic, readonly) NSString *sourceForRecord;
40 |
41 | - (id) initWithPAServerConnection: (PAServerConnection *) serverConnection
42 | context: (pa_context *) context
43 | nPlaybackChannels: (UInt32) nPlaybackChannels
44 | nRecordChannels: (UInt32) nRecordChannels
45 | sampleRate: (Float64) sampleRate
46 | ioProcBufferSize: (UInt32) ioProcBufferSize
47 | sinkForPlayback: (NSString *) sinkForPlayback
48 | sourceForRecord: (NSString *) sourceForRecord;
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/Framework/PAServerConnectionImplementation.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PulseAudio.h"
16 | #import "PAServerConnectionAudio.h"
17 |
18 | #import "PACardInfoInternal.h"
19 | #import "PAClientInfoInternal.h"
20 | #import "PAModuleInfoInternal.h"
21 | #import "PASampleInfoInternal.h"
22 | #import "PAServerInfoInternal.h"
23 | #import "PASinkInfoInternal.h"
24 | #import "PASinkInputInfoInternal.h"
25 | #import "PASourceInfoInternal.h"
26 | #import "PASourceOutputInfoInternal.h"
27 |
28 | @interface PAServerConnectionImplementation : NSObject
29 | {
30 | PAServerConnection *server;
31 | char procName[100];
32 |
33 | pa_threaded_mainloop *PAMainLoop;
34 | pa_context *PAContext;
35 |
36 | PAServerConnectionAudio *audio;
37 | NSString *sinkForPlayback;
38 | NSString *sourceForRecord;
39 |
40 | PAServerInfo *serverInfo;
41 |
42 | NSMutableArray *presentCards;
43 | NSMutableArray *presentSinks;
44 | NSMutableArray *presentSinkInputs;
45 | NSMutableArray *presentSources;
46 | NSMutableArray *presentSourceOutputs;
47 | NSMutableArray *presentClients;
48 | NSMutableArray *presentModules;
49 | NSMutableArray *presentSamples;
50 |
51 | NSMutableArray *publishedCards;
52 | NSMutableArray *publishedSinks;
53 | NSMutableArray *publishedSinkInputs;
54 | NSMutableArray *publishedSources;
55 | NSMutableArray *publishedSourceOutputs;
56 | NSMutableArray *publishedClients;
57 | NSMutableArray *publishedModules;
58 | NSMutableArray *publishedSamples;
59 |
60 | NSString *lastError;
61 | }
62 |
63 | @property (nonatomic, readonly) pa_threaded_mainloop *PAMainLoop;
64 | @property (nonatomic, readonly) pa_context *PAContext;
65 | @property (nonatomic, readonly) NSString *lastError;
66 |
67 | @property (nonatomic, readonly) NSArray *presentCards;
68 | @property (nonatomic, readonly) NSArray *presentSinks;
69 | @property (nonatomic, readonly) NSArray *presentSinkInputs;
70 | @property (nonatomic, readonly) NSArray *presentSources;
71 | @property (nonatomic, readonly) NSArray *presentSourceOutputs;
72 | @property (nonatomic, readonly) NSArray *presentClients;
73 | @property (nonatomic, readonly) NSArray *presentModules;
74 | @property (nonatomic, readonly) NSArray *presentSamples;
75 |
76 | @property (nonatomic, readonly) PAServerInfo *serverInfo;
77 |
78 | @property (nonatomic, readonly) NSString *sinkForPlayback;
79 | @property (nonatomic, readonly) NSString *sourceForRecord;
80 |
81 | - (id) initForServer: (PAServerConnection *) s;
82 |
83 | - (void) connectToHost: (NSString *) hostName
84 | port: (int) port;
85 | - (void) disconnect;
86 | - (BOOL) isConnected;
87 | - (BOOL) addAudioPlaybackChannels: (UInt32) nPlaybackChannels
88 | recordChannels: (UInt32) nRecordChannels
89 | sampleRate: (Float32) sampleRate
90 | ioProcBufferSize: (UInt32) ioProcBufferSize
91 | sinkForPlayback: (NSString *) sink
92 | sourceForRecord: (NSString *) source;
93 |
94 | - (NSString *) clientName;
95 | - (void) setClientName: (NSString *) name;
96 |
97 | - (BOOL) loadModuleWithName: (NSString *) name
98 | arguments: (NSString *) arguments;
99 |
100 | - (BOOL) setDefaultSink: (NSString *) name;
101 | - (BOOL) setDefaultSource: (NSString *) name;
102 |
103 | - (UInt32) protocolVersion;
104 | - (UInt32) serverProtocolVersion;
105 |
106 | - (BOOL) isLocal;
107 | - (NSString *) serverName;
108 | - (void) shutdownServer;
109 |
110 | @end
111 |
--------------------------------------------------------------------------------
/Framework/PAServerConnectionInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 |
14 | #import "PulseAudio.h"
15 | #import "PAServerConnectionAudio.h"
16 |
17 | #import "PACardInfoInternal.h"
18 | #import "PAClientInfoInternal.h"
19 | #import "PAModuleInfoInternal.h"
20 | #import "PASampleInfoInternal.h"
21 | #import "PAServerInfoInternal.h"
22 | #import "PASinkInfoInternal.h"
23 | #import "PASinkInputInfoInternal.h"
24 | #import "PASourceInfoInternal.h"
25 | #import "PASourceOutputInfoInternal.h"
26 |
27 | @interface PAServerConnection (internal)
28 |
29 | + (NSDictionary *) createDictionaryFromProplist: (pa_proplist *) plist;
30 | + (NSArray *) createChannelNamesArray: (const pa_channel_map *) map;
31 |
32 | - (void) setAudioStarted;
33 | - (BOOL) unloadModule: (PAModuleInfo *) module;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/Framework/PAServerInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PAServerInfo : PAElementInfo
16 | {
17 | NSString *userName;
18 | NSString *hostName;
19 | NSString *serverName;
20 | NSString *version;
21 | NSString *sampleSpec;
22 | NSString *channelMap;
23 | NSString *defaultSinkName;
24 | NSString *defaultSourceName;
25 |
26 | UInt32 cookie;
27 | }
28 |
29 | @property (nonatomic, readonly) NSString *userName;
30 | @property (nonatomic, readonly) NSString *hostName;
31 | @property (nonatomic, readonly) NSString *serverName;
32 | @property (nonatomic, readonly) NSString *version;
33 | @property (nonatomic, readonly) NSString *sampleSpec;
34 | @property (nonatomic, readonly) NSString *channelMap;
35 | @property (nonatomic, readonly) NSString *defaultSinkName;
36 | @property (nonatomic, readonly) NSString *defaultSourceName;
37 | @property (nonatomic, readonly) UInt32 cookie;
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/Framework/PAServerInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PAServerInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 |
16 | @implementation PAServerInfo
17 |
18 | @synthesize userName;
19 | @synthesize hostName;
20 | @synthesize serverName;
21 | @synthesize version;
22 | @synthesize sampleSpec;
23 | @synthesize channelMap;
24 | @synthesize defaultSinkName;
25 | @synthesize defaultSourceName;
26 | @synthesize cookie;
27 |
28 | @end
29 |
30 |
31 | @implementation PAServerInfo (internal)
32 |
33 | - (void) setFromInfoStruct: (const pa_server_info *) info
34 | server: (PAServerConnection *) s
35 | {
36 | char tmp[0x100];
37 |
38 | userName = [[NSString stringWithCString: info->user_name
39 | encoding: NSUTF8StringEncoding] retain];
40 | hostName = [[NSString stringWithCString: info->host_name
41 | encoding: NSUTF8StringEncoding] retain];
42 | serverName = [[NSString stringWithCString: info->server_name
43 | encoding: NSUTF8StringEncoding] retain];
44 | version = [[NSString stringWithCString: info->server_version
45 | encoding: NSUTF8StringEncoding] retain];
46 | sampleSpec = [[NSString stringWithCString: pa_sample_spec_snprint(tmp, sizeof(tmp), &info->sample_spec)
47 | encoding: NSUTF8StringEncoding] retain];
48 | channelMap = [[NSString stringWithCString: pa_channel_map_snprint(tmp, sizeof(tmp), &info->channel_map)
49 | encoding: NSUTF8StringEncoding] retain];
50 | defaultSinkName = [[NSString stringWithCString: info->default_sink_name
51 | encoding: NSUTF8StringEncoding] retain];
52 | defaultSourceName = [[NSString stringWithCString: info->default_source_name
53 | encoding: NSUTF8StringEncoding] retain];
54 | cookie = info->cookie;
55 |
56 | server = s;
57 |
58 | name = @"Server Information";
59 | }
60 |
61 | @end
62 |
63 |
--------------------------------------------------------------------------------
/Framework/PAServerInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PAServerInfo.h"
17 |
18 | @interface PAServerInfo (internal)
19 |
20 | - (void) setFromInfoStruct: (const pa_server_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | @end
24 |
25 |
--------------------------------------------------------------------------------
/Framework/PAServiceDiscovery.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 |
14 | @class PAServiceDiscovery;
15 |
16 | @protocol PAServiceDiscoveryDelegate
17 | @optional
18 |
19 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
20 | serverAppeared: (NSNetService *) service;
21 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
22 | serverDisappeared: (NSNetService *) service;
23 |
24 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
25 | sinkAppeared: (NSNetService *) service;
26 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
27 | sinkDisappeared: (NSNetService *) service;
28 |
29 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
30 | sourceAppeared: (NSNetService *) service;
31 | - (void) PAServiceDiscovery: (PAServiceDiscovery *) discovery
32 | sourceDisappeared: (NSNetService *) service;
33 |
34 | @end
35 |
36 | @interface PAServiceDiscovery : NSObject
37 | {
38 | NSNetServiceBrowser *serverBrowser;
39 | NSNetServiceBrowser *sourceBrowser;
40 | NSNetServiceBrowser *sinkBrowser;
41 | NSMutableArray *netServices;
42 | NSMutableArray *announcedServices;
43 | NSLock *lock;
44 |
45 | NSObject *delegate;
46 | }
47 |
48 | @property (nonatomic, assign) NSObject *delegate;
49 |
50 | - (void) start;
51 | + (NSString *) ipOfService: (NSNetService *) service;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/Framework/PASinkInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PASinkInfo : PAElementInfo
16 | {
17 | NSString *description;
18 | NSString *sampleSpec;
19 | NSString *channelMap;
20 | NSString *driver;
21 |
22 | NSArray *channelNames;
23 |
24 | UInt32 latency;
25 | UInt32 configuredLatency;
26 | UInt32 nVolumeSteps;
27 | UInt32 volume;
28 | UInt32 monitorSourceIndex;
29 |
30 | NSDictionary *properties;
31 | }
32 |
33 | @property (nonatomic, readonly) NSString *description;
34 | @property (nonatomic, readonly) NSString *sampleSpec;
35 | @property (nonatomic, readonly) NSString *channelMap;
36 | @property (nonatomic, readonly) NSString *driver;
37 | @property (nonatomic, readonly) NSArray *channelNames;
38 | @property (nonatomic, readonly) UInt32 latency;
39 | @property (nonatomic, readonly) UInt32 configuredLatency;
40 | @property (nonatomic, readonly) UInt32 nVolumeSteps;
41 | @property (nonatomic, readwrite) UInt32 volume;
42 | @property (nonatomic, readonly) UInt32 monitorSourceIndex;
43 | @property (nonatomic, readonly) NSDictionary *properties;
44 |
45 | @end
46 |
47 |
--------------------------------------------------------------------------------
/Framework/PASinkInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PASinkInfoInternal.h"
14 | #import "PAServerConnectionInternal.h"
15 | #import "PAServerConnectionImplementation.h"
16 |
17 | @implementation PASinkInfo
18 |
19 | @synthesize description;
20 | @synthesize sampleSpec;
21 | @synthesize channelMap;
22 | @synthesize channelNames;
23 | @synthesize driver;
24 | @synthesize latency;
25 | @synthesize configuredLatency;
26 | @synthesize nVolumeSteps;
27 | @synthesize properties;
28 | @synthesize monitorSourceIndex;
29 |
30 | - (UInt32) volume
31 | {
32 | return self->volume;
33 | }
34 |
35 | - (void) setVolume: (UInt32) v
36 | {
37 | pa_cvolume pav;
38 | pa_cvolume_init(&pav);
39 | pa_cvolume_set(&pav, [channelNames count], v);
40 |
41 | pa_threaded_mainloop_lock(server.impl.PAMainLoop);
42 | pa_context_set_sink_volume_by_index(server.impl.PAContext, index, &pav, NULL, NULL);
43 | pa_threaded_mainloop_unlock(server.impl.PAMainLoop);
44 |
45 | volume = v;
46 | }
47 |
48 | @end
49 |
50 |
51 | @implementation PASinkInfo (internal)
52 |
53 | - (void) loadFromInfoStruct: (const pa_sink_info *) info
54 | {
55 | char tmp[0x100];
56 |
57 | index = info->index;
58 |
59 | latency = info->latency;
60 | configuredLatency = info->configured_latency;
61 | nVolumeSteps = info->n_volume_steps;
62 | volume = pa_cvolume_avg(&info->volume);
63 | monitorSourceIndex = info->monitor_source;
64 |
65 | if (name)
66 | [name release];
67 |
68 | name = [[NSString stringWithCString: info->name
69 | encoding: NSUTF8StringEncoding] retain];
70 |
71 | if (description)
72 | [description release];
73 |
74 | description = [[NSString stringWithCString: info->description
75 | encoding: NSUTF8StringEncoding] retain];
76 | if (sampleSpec)
77 | [sampleSpec release];
78 |
79 | sampleSpec = [[NSString stringWithCString: pa_sample_spec_snprint(tmp, sizeof(tmp), &info->sample_spec)
80 | encoding: NSUTF8StringEncoding] retain];
81 |
82 | if (channelMap)
83 | [channelMap release];
84 |
85 | channelMap = [[NSString stringWithCString: pa_channel_map_snprint(tmp, sizeof(tmp), &info->channel_map)
86 | encoding: NSUTF8StringEncoding] retain];
87 | if (driver)
88 | [driver release];
89 |
90 | driver = [[NSString stringWithCString: info->driver
91 | encoding: NSUTF8StringEncoding] retain];
92 | if (channelNames)
93 | [channelNames release];
94 |
95 | channelNames = [[PAServerConnection createChannelNamesArray: &info->channel_map] retain];
96 |
97 | if (properties)
98 | [properties release];
99 |
100 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
101 |
102 | if (initialized)
103 | [server performSelectorOnMainThread: @selector(sendDelegateSinkInfoChanged:)
104 | withObject: self
105 | waitUntilDone: NO];
106 |
107 | initialized = YES;
108 | }
109 |
110 | - (id) initWithInfoStruct: (const pa_sink_info *) info
111 | server: (PAServerConnection *) s
112 | {
113 | [super initWithServer: s];
114 | [self loadFromInfoStruct: info];
115 | return self;
116 | }
117 |
118 | + (PASinkInfo *) createFromInfoStruct: (const pa_sink_info *) info
119 | server: (PAServerConnection *) s
120 | {
121 | return [[PASinkInfo alloc] initWithInfoStruct: info
122 | server: s];
123 | }
124 |
125 | @end
126 |
127 |
--------------------------------------------------------------------------------
/Framework/PASinkInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PASinkInfo.h"
17 |
18 | @interface PASinkInfo (internal)
19 |
20 | + (PASinkInfo *) createFromInfoStruct: (const pa_sink_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_sink_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PASinkInputInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PASinkInputInfo : PAElementInfo
16 | {
17 | UInt32 volume;
18 | UInt32 bufferUsec;
19 | UInt32 sinkUsec;
20 |
21 | NSString *resampleMethod;
22 | NSString *driver;
23 |
24 | NSArray *channelNames;
25 | NSDictionary *properties;
26 |
27 | BOOL muted;
28 | BOOL volumeWriteable;
29 | }
30 |
31 | @property (nonatomic, readwrite) UInt32 volume;
32 | @property (nonatomic, readonly) UInt32 bufferUsec;
33 | @property (nonatomic, readonly) UInt32 sinkUsec;
34 |
35 | @property (nonatomic, readonly) NSString *resampleMethod;
36 | @property (nonatomic, readonly) NSString *driver;
37 |
38 | @property (nonatomic, readonly) NSArray *channelNames;
39 | @property (nonatomic, readonly) NSDictionary *properties;
40 |
41 | @property (nonatomic, readwrite) BOOL muted;
42 | @property (nonatomic, readonly) BOOL volumeWriteable;
43 |
44 | @end
45 |
46 |
--------------------------------------------------------------------------------
/Framework/PASinkInputInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PASinkInputInfoInternal.h"
14 | #import "PAServerConnectionInternal.h"
15 | #import "PAServerConnectionImplementation.h"
16 |
17 | @implementation PASinkInputInfo
18 |
19 | @synthesize bufferUsec;
20 | @synthesize sinkUsec;
21 |
22 | @synthesize resampleMethod;
23 | @synthesize driver;
24 |
25 | @synthesize channelNames;
26 | @synthesize properties;
27 |
28 | @synthesize volumeWriteable;
29 |
30 | - (BOOL) muted
31 | {
32 | return self->muted;
33 | }
34 |
35 | - (void) setMuted: (BOOL) m
36 | {
37 | pa_threaded_mainloop_lock(server.impl.PAMainLoop);
38 | pa_context_set_sink_input_mute(server.impl.PAContext, index, m, NULL, NULL);
39 | pa_threaded_mainloop_unlock(server.impl.PAMainLoop);
40 |
41 | muted = m;
42 | }
43 |
44 | - (UInt32) volume
45 | {
46 | return self->volume;
47 | }
48 |
49 | - (void) setVolume: (UInt32) v
50 | {
51 | pa_cvolume pav;
52 | pa_cvolume_init(&pav);
53 | pa_cvolume_set(&pav, [channelNames count], v);
54 |
55 | pa_threaded_mainloop_lock(server.impl.PAMainLoop);
56 | pa_context_set_sink_input_volume(server.impl.PAContext, index, &pav, NULL, NULL);
57 | pa_threaded_mainloop_unlock(server.impl.PAMainLoop);
58 |
59 | volume = v;
60 | }
61 |
62 | @end
63 |
64 |
65 | @implementation PASinkInputInfo (internal)
66 |
67 | - (void) loadFromInfoStruct: (const pa_sink_input_info *) info
68 | {
69 | index = info->index;
70 | bufferUsec = info->buffer_usec;
71 | sinkUsec = info->sink_usec;
72 | muted = !!info->mute;
73 | volume = pa_cvolume_avg(&info->volume);
74 | volumeWriteable = !!info->volume_writable;
75 |
76 | if (name) {
77 | [name release];
78 | name = nil;
79 | }
80 |
81 | if (info->name)
82 | name = [[NSString stringWithCString: info->name
83 | encoding: NSUTF8StringEncoding] retain];
84 |
85 | if (driver)
86 | [driver release];
87 | driver = [[NSString stringWithCString: info->driver
88 | encoding: NSUTF8StringEncoding] retain];
89 |
90 | if (resampleMethod) {
91 | [resampleMethod release];
92 | resampleMethod = nil;
93 | }
94 |
95 | if (info->resample_method)
96 | resampleMethod = [[NSString stringWithCString: info->resample_method
97 | encoding: NSUTF8StringEncoding] retain];
98 |
99 | if (channelNames)
100 | [channelNames release];
101 | channelNames = [[PAServerConnection createChannelNamesArray: &info->channel_map] retain];
102 |
103 | if (properties)
104 | [properties release];
105 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
106 |
107 | if (initialized)
108 | [server performSelectorOnMainThread: @selector(sendDelegateSinkInputInfoChanged:)
109 | withObject: self
110 | waitUntilDone: NO];
111 |
112 | initialized = YES;
113 | }
114 |
115 | - (id) initWithInfoStruct: (const pa_sink_input_info *) info
116 | server: (PAServerConnection *) s
117 | {
118 | [super initWithServer: s];
119 | [self loadFromInfoStruct: info];
120 | return self;
121 | }
122 |
123 | + (PASinkInputInfo *) createFromInfoStruct: (const pa_sink_input_info *) info
124 | server: (PAServerConnection *) s
125 | {
126 | return [[PASinkInputInfo alloc] initWithInfoStruct: info
127 | server: s];
128 | }
129 |
130 | @end
131 |
132 |
--------------------------------------------------------------------------------
/Framework/PASinkInputInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PASinkInputInfo.h"
17 |
18 | @interface PASinkInputInfo (internal)
19 |
20 | + (PASinkInputInfo *) createFromInfoStruct: (const pa_sink_input_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_sink_input_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PASourceInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PASourceInfo : PAElementInfo
16 | {
17 | NSString *description;
18 | NSString *sampleSpec;
19 | NSString *channelMap;
20 | NSString *driver;
21 |
22 | NSArray *channelNames;
23 |
24 | UInt32 latency;
25 | UInt32 configuredLatency;
26 |
27 | NSDictionary *properties;
28 | }
29 |
30 | @property (nonatomic, readonly) NSString *description;
31 | @property (nonatomic, readonly) NSString *sampleSpec;
32 | @property (nonatomic, readonly) NSString *channelMap;
33 | @property (nonatomic, readonly) NSString *driver;
34 | @property (nonatomic, readonly) NSArray *channelNames;
35 | @property (nonatomic, readonly) UInt32 latency;
36 | @property (nonatomic, readonly) UInt32 configuredLatency;
37 | @property (nonatomic, readonly) NSDictionary *properties;
38 |
39 | @end
40 |
41 |
--------------------------------------------------------------------------------
/Framework/PASourceInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PASourceInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 |
16 | @implementation PASourceInfo
17 |
18 | @synthesize description;
19 | @synthesize sampleSpec;
20 | @synthesize channelMap;
21 | @synthesize channelNames;
22 | @synthesize driver;
23 | @synthesize latency;
24 | @synthesize configuredLatency;
25 | @synthesize properties;
26 |
27 | @end
28 |
29 |
30 | @implementation PASourceInfo (internal)
31 |
32 | - (void) loadFromInfoStruct: (const pa_source_info *) info
33 | {
34 | char tmp[0x100];
35 |
36 | index = info->index;
37 | latency = info->latency;
38 | configuredLatency = info->configured_latency;
39 |
40 | if (name)
41 | [name release];
42 | name = [[NSString stringWithCString: info->name
43 | encoding: NSUTF8StringEncoding] retain];
44 |
45 | if (description)
46 | [description release];
47 | description = [[NSString stringWithCString: info->description
48 | encoding: NSUTF8StringEncoding] retain];
49 |
50 | if (sampleSpec)
51 | [sampleSpec release];
52 | sampleSpec = [[NSString stringWithCString: pa_sample_spec_snprint(tmp, sizeof(tmp), &info->sample_spec)
53 | encoding: NSUTF8StringEncoding] retain];
54 |
55 | if (channelMap)
56 | [channelMap release];
57 | channelMap = [[NSString stringWithCString: pa_channel_map_snprint(tmp, sizeof(tmp), &info->channel_map)
58 | encoding: NSUTF8StringEncoding] retain];
59 |
60 | if (driver)
61 | [driver release];
62 | driver = [[NSString stringWithCString: info->driver
63 | encoding: NSUTF8StringEncoding] retain];
64 |
65 | if (properties)
66 | [properties release];
67 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
68 |
69 | if (initialized)
70 | [server performSelectorOnMainThread: @selector(sendDelegateSourceInfoChanged:)
71 | withObject: self
72 | waitUntilDone: NO];
73 |
74 | initialized = YES;
75 | }
76 |
77 | - (id) initWithInfoStruct: (const pa_source_info *) info
78 | server: (PAServerConnection *) s
79 | {
80 | [super initWithServer: s];
81 | [self loadFromInfoStruct: info];
82 | return self;
83 | }
84 |
85 | + (PASourceInfo *) createFromInfoStruct: (const pa_source_info *) info
86 | server: (PAServerConnection *) s
87 | {
88 | return [[PASourceInfo alloc] initWithInfoStruct: info
89 | server: s];
90 | }
91 |
92 | @end
93 |
94 |
--------------------------------------------------------------------------------
/Framework/PASourceInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAServerConnection.h"
16 | #import "PASourceInfo.h"
17 |
18 | @interface PASourceInfo (internal)
19 |
20 | + (PASourceInfo *) createFromInfoStruct: (const pa_source_info *) info
21 | server: (PAServerConnection *) s;
22 |
23 | - (void) loadFromInfoStruct: (const pa_source_info *) info;
24 |
25 | @end
26 |
27 |
--------------------------------------------------------------------------------
/Framework/PASourceOutputInfo.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import "PAElementInfo.h"
14 |
15 | @interface PASourceOutputInfo : PAElementInfo
16 | {
17 | UInt32 bufferUsec;
18 | UInt32 sourceUsec;
19 |
20 | NSString *resampleMethod;
21 | NSString *driver;
22 |
23 | NSArray *channelNames;
24 | NSDictionary *properties;
25 |
26 | BOOL corked;
27 | }
28 |
29 | @property (nonatomic, readonly) UInt32 bufferUsec;
30 | @property (nonatomic, readonly) UInt32 sourceUsec;
31 |
32 | @property (nonatomic, readonly) NSString *resampleMethod;
33 | @property (nonatomic, readonly) NSString *driver;
34 |
35 | @property (nonatomic, readonly) NSArray *channelNames;
36 | @property (nonatomic, readonly) NSDictionary *properties;
37 |
38 | @property (nonatomic, readonly) BOOL corked;
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/Framework/PASourceOutputInfo.m:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import "PASourceOutputInfoInternal.h"
13 | #import "PAServerConnectionInternal.h"
14 |
15 | @implementation PASourceOutputInfo
16 |
17 | @synthesize bufferUsec;
18 | @synthesize sourceUsec;
19 |
20 | @synthesize resampleMethod;
21 | @synthesize driver;
22 |
23 | @synthesize channelNames;
24 | @synthesize properties;
25 |
26 | @synthesize corked;
27 |
28 | @end
29 |
30 |
31 | @implementation PASourceOutputInfo (internal)
32 |
33 | - (void) loadFromInfoStruct: (const pa_source_output_info *) info
34 | {
35 | index = info->index;
36 | bufferUsec = info->buffer_usec;
37 | sourceUsec = info->source_usec;
38 | corked = !!info->corked;
39 |
40 | if (name)
41 | [name release];
42 |
43 | name = [[NSString stringWithCString: info->name
44 | encoding: NSUTF8StringEncoding] retain];
45 |
46 | if (driver)
47 | [driver release];
48 |
49 | driver = [[NSString stringWithCString: info->driver
50 | encoding: NSUTF8StringEncoding] retain];
51 |
52 | if (channelNames)
53 | [channelNames release];
54 |
55 | channelNames = [[PAServerConnection createChannelNamesArray: &info->channel_map] retain];
56 |
57 | if (resampleMethod) {
58 | [resampleMethod release];
59 | resampleMethod = nil;
60 | }
61 |
62 | if (info->resample_method)
63 | resampleMethod = [[NSString stringWithCString: info->resample_method
64 | encoding: NSUTF8StringEncoding] retain];
65 | if (properties)
66 | [properties release];
67 |
68 | properties = [[PAServerConnection createDictionaryFromProplist: info->proplist] retain];
69 |
70 | if (initialized)
71 | [server performSelectorOnMainThread: @selector(sendDelegateSourceOutputInfoChanged:)
72 | withObject: self
73 | waitUntilDone: NO];
74 |
75 | initialized = YES;
76 | }
77 |
78 | - (id) initWithInfoStruct: (const pa_source_output_info *) info
79 | server: (PAServerConnection *) s
80 | {
81 | [super initWithServer: s];
82 | [self loadFromInfoStruct: info];
83 |
84 | return self;
85 | }
86 |
87 | + (PASourceOutputInfo *) createFromInfoStruct: (const pa_source_output_info *) info
88 | server: (PAServerConnection *) s
89 | {
90 | return [[PASourceOutputInfo alloc] initWithInfoStruct: info
91 | server: s];
92 | }
93 |
94 | @end
95 |
96 |
--------------------------------------------------------------------------------
/Framework/PASourceOutputInfoInternal.h:
--------------------------------------------------------------------------------
1 | /***
2 | This file is part of PulseAudioOSX
3 |
4 | Copyright 2010,2011 Daniel Mack
5 |
6 | PulseAudioOSX is free software; you can redistribute it and/or modify
7 | it under the terms of the GNU Lesser General Public License (LGPL) as
8 | published by the Free Software Foundation; either version 2.1 of the
9 | License, or (at your option) any later version.
10 | ***/
11 |
12 | #import
13 | #import
14 |
15 | #import "PAElementInfo.h"
16 | #import "PAServerConnection.h"
17 | #import "PASourceOutputInfo.h"
18 |
19 | @interface PASourceOutputInfo (internal)
20 |
21 | + (PASourceOutputInfo *) createFromInfoStruct: (const pa_source_output_info *) info
22 | server: (PAServerConnection *) s;
23 |
24 | - (void) loadFromInfoStruct: (const pa_source_output_info *) info;
25 |
26 | @end
27 |
28 |
--------------------------------------------------------------------------------
/Framework/PulseAudio.h:
--------------------------------------------------------------------------------
1 | #import "PACardInfo.h"
2 | #import "PAClientInfo.h"
3 | #import "PAModuleInfo.h"
4 | #import "PASampleInfo.h"
5 | #import "PAServerConnection.h"
6 | #import "PAServerInfo.h"
7 | #import "PASinkInfo.h"
8 | #import "PASinkInputInfo.h"
9 | #import "PASourceInfo.h"
10 | #import "PASourceOutputInfo.h"
11 | #import "PAServiceDiscovery.h"
12 | #import "PAHelperConnection.h"
13 |
--------------------------------------------------------------------------------
/Framework/PulseAudio_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'PulseAudio' target in the 'PulseAudio' project.
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #endif
8 |
--------------------------------------------------------------------------------
/Framework/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | name=PulseAudio.framework
4 | dest=/Library/Frameworks/
5 | config=Release
6 |
7 | test -d $dest/$name || mkdir $dest/$name
8 | cp -a build/$config/$name/* $dest/$name/
9 | mkdir -p $dest/$name/Contents/MacOS
10 | mkdir -p $dest/$name/Contents/Resources
11 |
12 |
--------------------------------------------------------------------------------
/HALPlugin/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | PulseAudio
9 | CFBundleIdentifier
10 | org.pulseaudio.HALPlugin
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | PulseAudio
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 0.1.0
23 | CFPlugInFactories
24 |
25 | 45F4645C-E875-4364-9296-95837C4B7292
26 | New_PAHAL_PlugIn
27 |
28 | CFPlugInTypes
29 |
30 | F8BB1C28-BAE8-11D6-9C31-00039315CD46
31 |
32 | 45F4645C-E875-4364-9296-95837C4B7292
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/HALPlugin/Resources/version.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildVersion
6 | 1
7 | CFBundleShortVersionString
8 | 1.0.0
9 | CFBundleVersion
10 | 1.0
11 | ProjectName
12 | CoreAudioExamples
13 | SourceVersion
14 | 570000
15 |
16 |
17 |
--------------------------------------------------------------------------------
/HALPlugin/Source/HALPlugin.exp:
--------------------------------------------------------------------------------
1 | _New_PAHAL_PlugIn
2 |
--------------------------------------------------------------------------------
/HALPlugin/Source/HALPlugin_Prefix.h:
--------------------------------------------------------------------------------
1 | #ifndef _PAHARDWAREPLUGINPREFIX_H_
2 | #define _PAHARDWAREPLUGINPREFIX_H_
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | #if defined(__cplusplus)
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include