libvlcpp: stop the media player in the destructor.
[vlc.git] / bindings / libvlcpp / src / media_player.cpp
1 /*****************************************************************************
2  * media_player.cpp: Represent a media player
3  *****************************************************************************
4  * Copyright (C) 2010 the VideoLAN team
5  * $Id$
6  *
7  * Authors: RĂ©mi Duraffort <ivoire@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24 #include "media_player.hpp"
25
26 using namespace libvlc;
27
28 MediaPlayer::MediaPlayer( libVLC &libvlcInstance )
29 {
30     m_player = libvlc_media_player_new( libvlcInstance.m_instance );
31     m_audio.setMediaPlayer( m_player );
32 }
33
34 MediaPlayer::MediaPlayer( Media &media )
35 {
36     m_player = libvlc_media_player_new_from_media( media.m_media );
37     m_audio.setMediaPlayer( m_player );
38 }
39
40 MediaPlayer::~MediaPlayer()
41 {
42     stop();
43     libvlc_media_player_release( m_player );
44 }
45
46 void MediaPlayer::setMedia( Media &media )
47 {
48     libvlc_media_player_set_media( m_player, media.m_media );
49 }
50
51 int MediaPlayer::isPlaying()
52 {
53     return libvlc_media_player_is_playing( m_player );
54 }
55
56 void MediaPlayer::play()
57 {
58     libvlc_media_player_play( m_player );
59 }
60
61 void MediaPlayer::pause()
62 {
63     libvlc_media_player_pause( m_player );
64 }
65
66 void MediaPlayer::stop()
67 {
68     libvlc_media_player_stop( m_player );
69 }
70
71 void MediaPlayer::setNSObject( void *drawable )
72 {
73     libvlc_media_player_set_nsobject( m_player, drawable );
74 }
75
76 void* MediaPlayer::nsobject()
77 {
78     return libvlc_media_player_get_nsobject( m_player );
79 }
80
81 void MediaPlayer::setAgl( uint32_t drawable )
82 {
83     libvlc_media_player_set_agl( m_player, drawable );
84 }
85
86 uint32_t MediaPlayer::agl()
87 {
88     return libvlc_media_player_get_agl( m_player );
89 }
90
91 void MediaPlayer::setXWindow( uint32_t drawable )
92 {
93     libvlc_media_player_set_xwindow( m_player, drawable );
94 }
95
96 uint32_t MediaPlayer::xwindow()
97 {
98     return libvlc_media_player_get_xwindow( m_player );
99 }
100
101 void MediaPlayer::setHwnd( void *drawable )
102 {
103     libvlc_media_player_set_hwnd( m_player, drawable );
104 }
105
106 void *MediaPlayer::hwnd()
107 {
108     return libvlc_media_player_get_hwnd( m_player );
109 }
110
111 int64_t MediaPlayer::lenght()
112 {
113     return libvlc_media_player_get_length( m_player );
114 }
115
116 int64_t MediaPlayer::time()
117 {
118     return libvlc_media_player_get_time( m_player );
119 }
120
121 void MediaPlayer::setTime( int64_t new_time )
122 {
123     libvlc_media_player_set_time( m_player, new_time );
124 }
125
126 float MediaPlayer::position()
127 {
128     return libvlc_media_player_get_position( m_player );
129 }
130
131 void MediaPlayer::setPosition( float position )
132 {
133     libvlc_media_player_set_position( m_player, position );
134 }
135
136 int MediaPlayer::chapter()
137 {
138     return libvlc_media_player_get_chapter( m_player );
139 }
140
141 int MediaPlayer::chapterCount()
142 {
143     return libvlc_media_player_get_chapter_count( m_player );
144 }
145
146 int MediaPlayer::chapterCount( int title )
147 {
148     return libvlc_media_player_get_chapter_count_for_title( m_player, title );
149 }
150
151 void MediaPlayer::setChapter( int title )
152 {
153     libvlc_media_player_set_chapter( m_player, title );
154 }
155
156 int MediaPlayer::willPlay()
157 {
158     return libvlc_media_player_will_play( m_player );
159 }
160
161 int MediaPlayer::title()
162 {
163     return libvlc_media_player_get_title( m_player );
164 }
165
166 int MediaPlayer::titleCount()
167 {
168     return libvlc_media_player_get_title_count( m_player );
169 }
170
171 void MediaPlayer::setTitle( int title )
172 {
173     libvlc_media_player_set_title( m_player, title );
174 }
175
176 void MediaPlayer::previousChapter()
177 {
178     libvlc_media_player_previous_chapter( m_player );
179 }
180
181 void MediaPlayer::nextChapter()
182 {
183     libvlc_media_player_next_chapter( m_player );
184 }
185
186 float MediaPlayer::rate()
187 {
188     return libvlc_media_player_get_rate( m_player );
189 }
190
191 void MediaPlayer::setRate( float rate )
192 {
193     libvlc_media_player_set_rate( m_player, rate );
194 }
195
196 libvlc_state_t MediaPlayer::state()
197 {
198     return libvlc_media_player_get_state( m_player );
199 }
200
201 float MediaPlayer::fps()
202 {
203     return libvlc_media_player_get_fps( m_player );
204 }
205
206 int MediaPlayer::hasVout()
207 {
208     return libvlc_media_player_has_vout( m_player );
209 }
210
211 int MediaPlayer::isSeekable()
212 {
213     return libvlc_media_player_is_seekable( m_player );
214 }
215 int MediaPlayer::canPause()
216 {
217     return libvlc_media_player_can_pause( m_player );
218 }
219
220 void MediaPlayer::nextFrame()
221 {
222     libvlc_media_player_next_frame( m_player );
223 }
224
225 void MediaPlayer::toggleFullscreen()
226 {
227     libvlc_toggle_fullscreen( m_player );
228 }
229
230 void MediaPlayer::enableFullscreen()
231 {
232     libvlc_set_fullscreen( m_player, 1 );
233 }
234
235 void MediaPlayer::disableFullscreen()
236 {
237     libvlc_set_fullscreen( m_player, 0 );
238 }
239
240 int MediaPlayer::fullscreen()
241 {
242     return libvlc_get_fullscreen( m_player );
243 }
244
245 Audio &MediaPlayer::audio()
246 {
247     return m_audio;
248 }