1 /*****************************************************************************
2 * media_player.cpp: Represent a media player
3 *****************************************************************************
4 * Copyright (C) 2010 the VideoLAN team
7 * Authors: RĂ©mi Duraffort <ivoire@videolan.org>
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.
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.
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 *****************************************************************************/
24 #include "media_player.hpp"
26 using namespace libvlc;
28 MediaPlayer::MediaPlayer( libVLC &libvlcInstance )
30 m_player = libvlc_media_player_new( libvlcInstance.m_instance );
32 throw libvlc_errmsg();
33 m_audio.setMediaPlayer( m_player );
34 m_video.setMediaPlayer( m_player );
37 MediaPlayer::MediaPlayer( Media &media )
39 m_player = libvlc_media_player_new_from_media( media.m_media );
41 throw libvlc_errmsg();
42 m_audio.setMediaPlayer( m_player );
43 m_video.setMediaPlayer( m_player );
46 MediaPlayer::~MediaPlayer()
49 libvlc_media_player_release( m_player );
52 void MediaPlayer::setMedia( Media &media )
54 libvlc_media_player_set_media( m_player, media.m_media );
57 int MediaPlayer::isPlaying()
59 return libvlc_media_player_is_playing( m_player );
62 void MediaPlayer::play()
64 libvlc_media_player_play( m_player );
67 void MediaPlayer::pause()
69 libvlc_media_player_pause( m_player );
72 void MediaPlayer::stop()
74 libvlc_media_player_stop( m_player );
77 void MediaPlayer::setNSObject( void *drawable )
79 libvlc_media_player_set_nsobject( m_player, drawable );
82 void* MediaPlayer::nsobject()
84 return libvlc_media_player_get_nsobject( m_player );
87 void MediaPlayer::setAgl( uint32_t drawable )
89 libvlc_media_player_set_agl( m_player, drawable );
92 uint32_t MediaPlayer::agl()
94 return libvlc_media_player_get_agl( m_player );
97 void MediaPlayer::setXWindow( uint32_t drawable )
99 libvlc_media_player_set_xwindow( m_player, drawable );
102 uint32_t MediaPlayer::xwindow()
104 return libvlc_media_player_get_xwindow( m_player );
107 void MediaPlayer::setHwnd( void *drawable )
109 libvlc_media_player_set_hwnd( m_player, drawable );
112 void *MediaPlayer::hwnd()
114 return libvlc_media_player_get_hwnd( m_player );
117 int64_t MediaPlayer::lenght()
119 return libvlc_media_player_get_length( m_player );
122 int64_t MediaPlayer::time()
124 return libvlc_media_player_get_time( m_player );
127 void MediaPlayer::setTime( int64_t new_time )
129 libvlc_media_player_set_time( m_player, new_time );
132 float MediaPlayer::position()
134 return libvlc_media_player_get_position( m_player );
137 void MediaPlayer::setPosition( float position )
139 libvlc_media_player_set_position( m_player, position );
142 int MediaPlayer::chapter()
144 return libvlc_media_player_get_chapter( m_player );
147 int MediaPlayer::chapterCount()
149 return libvlc_media_player_get_chapter_count( m_player );
152 int MediaPlayer::chapterCount( int title )
154 return libvlc_media_player_get_chapter_count_for_title( m_player, title );
157 void MediaPlayer::setChapter( int title )
159 libvlc_media_player_set_chapter( m_player, title );
162 int MediaPlayer::willPlay()
164 return libvlc_media_player_will_play( m_player );
167 int MediaPlayer::title()
169 return libvlc_media_player_get_title( m_player );
172 int MediaPlayer::titleCount()
174 return libvlc_media_player_get_title_count( m_player );
177 void MediaPlayer::setTitle( int title )
179 libvlc_media_player_set_title( m_player, title );
182 void MediaPlayer::previousChapter()
184 libvlc_media_player_previous_chapter( m_player );
187 void MediaPlayer::nextChapter()
189 libvlc_media_player_next_chapter( m_player );
192 float MediaPlayer::rate()
194 return libvlc_media_player_get_rate( m_player );
197 void MediaPlayer::setRate( float rate )
199 libvlc_media_player_set_rate( m_player, rate );
202 libvlc_state_t MediaPlayer::state()
204 return libvlc_media_player_get_state( m_player );
207 float MediaPlayer::fps()
209 return libvlc_media_player_get_fps( m_player );
212 int MediaPlayer::hasVout()
214 return libvlc_media_player_has_vout( m_player );
217 int MediaPlayer::isSeekable()
219 return libvlc_media_player_is_seekable( m_player );
221 int MediaPlayer::canPause()
223 return libvlc_media_player_can_pause( m_player );
226 void MediaPlayer::nextFrame()
228 libvlc_media_player_next_frame( m_player );
231 void MediaPlayer::toggleFullscreen()
233 libvlc_toggle_fullscreen( m_player );
236 void MediaPlayer::enableFullscreen()
238 libvlc_set_fullscreen( m_player, 1 );
241 void MediaPlayer::disableFullscreen()
243 libvlc_set_fullscreen( m_player, 0 );
246 int MediaPlayer::fullscreen()
248 return libvlc_get_fullscreen( m_player );
251 Audio &MediaPlayer::audio()
256 Video &MediaPlayer::video()