MacOSX/Framework/VLCMediaPlayer.m: -isSeekable.
[vlc.git] / extras / MacOSX / Framework / Headers / Public / VLCMediaPlayer.h
1 /*****************************************************************************
2  * VLCMediaPlayer.h: VLC.framework VLCMediaPlayer header
3  *****************************************************************************
4  * Copyright (C) 2007 Pierre d'Herbemont
5  * Copyright (C) 2007 the VideoLAN team
6  * $Id$
7  *
8  * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
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 <Cocoa/Cocoa.h>
26 #import "VLCMedia.h"
27 #import "VLCVideoView.h"
28 #import "VLCTime.h"
29
30 /* Notification Messages */
31 extern NSString * VLCMediaPlayerTimeChanged;
32 extern NSString * VLCMediaPlayerStateChanged;
33
34 // TODO: Documentation
35 typedef enum VLCMediaPlayerState
36 {
37     VLCMediaPlayerStateStopped,        //< Player has stopped
38     VLCMediaPlayerStateOpening,        //< Stream is opening
39     VLCMediaPlayerStateBuffering,      //< Stream is buffering
40     VLCMediaPlayerStateEnded,          //< Stream has ended
41     VLCMediaPlayerStateError,          //< Player has generated an error
42     VLCMediaPlayerStatePlaying,        //< Stream is playing
43     VLCMediaPlayerStatePaused          //< Stream is paused
44 } VLCMediaPlayerState;
45
46 extern NSString *VLCMediaPlayerStateToString(VLCMediaPlayerState state);
47
48 /**
49  * Formal protocol declaration for playback delegates.  Allows playback messages
50  * to be trapped by delegated objects.
51  */
52 @protocol VLCMediaPlayerDelegate
53 - (void)mediaPlayerTimeChanged:(NSNotification *)aNotification;
54 - (void)mediaPlayerStateChanged:(NSNotification *)aNotification;
55 @end
56
57 // TODO: Should we use medialist_player or our own flavor of media player?
58 @interface VLCMediaPlayer : NSObject 
59 {
60     id delegate;            //< Object delegate
61     VLCVideoView *videoView;//< NSView instance where media is rendered to
62
63     void *instance;            //  Internal
64     VLCMedia *media;        //< Current media being played
65     VLCTime *cachedTime;
66     VLCMediaPlayerState cachedState;
67     float position;
68 }
69
70 /* Initializers */
71 - (id)initWithVideoView:(VLCVideoView *)aVideoView;
72
73 /* Properties */
74 - (void)setDelegate:(id)value;
75 - (id)delegate;
76
77 /* Video View Options */
78 // TODO: Should be it's own object?
79
80 // TODO: use VLCVideoView instead of NSView
81 - (void)setVideoView:(VLCVideoView *)value;
82 - (VLCVideoView *)videoView;
83
84 - (void)setFullscreen:(BOOL)value;
85 - (BOOL)fullscreen;
86
87 - (void)setVideoAspectRatio:(char *)value;
88 - (char *)videoAspectRatio;
89 - (void)setVideoSubTitles:(int)value;
90 - (int)videoSubTitles;
91
92 - (void)setVideoCropGeometry:(char *)value;
93 - (char *)videoCropGeometry;
94
95 - (void)setVideoTeleText:(int)value;
96 - (int)videoTeleText;
97
98 - (void)setRate:(int)value;
99 - (int)rate;
100
101 /* Video Information */
102 - (NSSize)videoSize;
103 - (BOOL)hasVideoOut;
104 - (float)framesPerSecond;
105
106 /**
107  * Sets the current position (or time) of the feed.
108  * \param value New time to set the current position to.  If time is [VLCTime nullTime], 0 is assumed.
109  */
110 - (void)setTime:(VLCTime *)value;
111
112 /** 
113  * Returns the current position (or time) of the feed.
114  * \return VLCTIme object with current time.
115  */
116 - (VLCTime *)time;
117
118 - (void)setChapter:(int)value;
119 - (int)chapter;
120 - (int)countOfChapters;
121
122 /* Audio Options */
123 - (void)setAudioTrack:(int)value;
124 - (int)audioTrack;
125 - (int)countOfAudioTracks;
126
127 - (void)setAudioChannel:(int)value;
128 - (int)audioChannel;
129
130 /* Media Options */
131 - (void)setMedia:(VLCMedia *)value;
132 - (VLCMedia *)media;
133
134 /* Playback Operations */
135 /**
136  * Plays a media resource using the currently selected media controller (or 
137  * default controller.  If feed was paused then the feed resumes at the position 
138  * it was paused in.
139  * \return A Boolean determining whether the stream was played or not.
140  */
141 - (BOOL)play;
142
143 /**
144  * Toggle's the pause state of the feed.
145  */
146 - (void)pause;
147
148 /**
149  * Fast forwards through the feed at the standard 1x rate.
150  */
151 //- (void)fastForward;
152
153 /**
154  * Fast forwards through the feed at the rate specified.
155  * \param rate Rate at which the feed should be fast forwarded.
156  */
157 //- (void)fastForwardAtRate:(int)rate;
158
159 /**
160  * Rewinds through the feed at the standard 1x rate.
161  */
162 //- (void)rewind;
163
164 /**
165  * Rewinds through the feed at the rate specified.
166  * \param rate Rate at which the feed should be fast rewound.
167  */
168 //- (void)rewindAtRate:(int)rate;
169
170 /* Playback Information */
171 /**
172  * Playback state flag identifying that the stream is currently playing.
173  * \return TRUE if the feed is playing, FALSE if otherwise.
174  */
175 - (BOOL)isPlaying;
176
177 /**
178  * Playback state flag identifying wheather the stream will play.
179  * \return TRUE if the feed is ready for playback, FALSE if otherwise.
180  */
181 - (BOOL)willPlay;
182
183 /**
184  * Playback's current state.
185  * \see VLCMediaState
186  */
187 - (VLCMediaPlayerState)state;
188
189 /**
190  * Returns the receiver's position in the reading. 
191  * \return A number between 0 and 1. indicating the position
192  */
193 - (float)position;
194 - (void)setPosition:(float)newPosition;
195
196 - (BOOL)isSeekable;
197
198 @end