]> git.sesse.net Git - vlc/blob - projects/macosx/framework/Sources/VLCAudio.m
macosx/framework: VLCAudio now use a media_player. Cool.
[vlc] / projects / macosx / framework / Sources / VLCAudio.m
1 /*****************************************************************************
2  * VLCAudio.m: VLCKit.framework VLCAudio implementation
3  *****************************************************************************
4  * Copyright (C) 2007 Faustino E. Osuna
5  * Copyright (C) 2007 the VideoLAN team
6  * $Id$
7  *
8  * Authors: Faustino E. Osuna <enrique.osuna # gmail.com>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23  *****************************************************************************/
24
25 #import "VLCAudio.h"
26 #import "VLCLibVLCBridging.h"
27
28 #define VOLUME_STEP                6
29 #define VOLUME_MAX                 200
30 #define VOLUME_MIN                 0
31
32 /* Notification Messages */
33 NSString * VLCMediaPlayerVolumeChanged = @"VLCMediaPlayerVolumeChanged";
34
35 /* libvlc event callback */
36 // TODO: Callbacks
37
38
39 @implementation VLCAudio
40 /**
41  * Use this method instead of instance directly as this one is type checked.
42  */
43 - (libvlc_media_player_t *)instance
44 {
45     return instance;
46 }
47
48 - (id)init
49 {
50     return nil;
51 }
52
53 - (id)initWithMediaPlayer:(VLCMediaPlayer *)mediaPlayer
54 {
55     self = [super init];
56     if (!self)
57         return nil;
58     instance = [mediaPlayer libVLCMediaPlayer];
59     libvlc_media_player_retain([self instance]);
60     return self;
61 }
62
63 - (void) dealloc
64 {
65     libvlc_media_player_release([self instance]);
66     [super dealloc];
67 }
68
69 - (void)setMute:(BOOL)value
70 {
71     libvlc_audio_set_mute([self instance], value);
72 }
73
74 - (BOOL)isMuted
75 {
76     return libvlc_audio_get_mute([self instance]);
77 }
78
79 - (void)setVolume:(NSUInteger)value
80 {
81     if (value < VOLUME_MIN)
82         value = VOLUME_MIN;
83     else if (value > VOLUME_MAX)
84         value = VOLUME_MAX;
85     libvlc_audio_set_volume([self instance], value);
86 }
87
88 - (void)volumeUp
89 {
90     NSUInteger tempVolume = [self volume] + VOLUME_STEP;
91     if (tempVolume > VOLUME_MAX)
92         tempVolume = VOLUME_MAX;
93     else if (tempVolume < VOLUME_MIN)
94         tempVolume = VOLUME_MIN;
95     [self setVolume: tempVolume];
96 }
97
98 - (void)volumeDown
99 {
100     NSUInteger tempVolume = [self volume] - VOLUME_STEP;
101     if (tempVolume > VOLUME_MAX)
102         tempVolume = VOLUME_MAX;
103     else if (tempVolume < VOLUME_MIN)
104         tempVolume = VOLUME_MIN;
105     [self setVolume: tempVolume];
106 }
107
108 - (NSUInteger)volume
109 {
110     return libvlc_audio_get_volume([self instance]);
111 }
112 @end