Skip to content

Commit

Permalink
Expose the percentage complete indicator on the "buffering" event.
Browse files Browse the repository at this point in the history
  • Loading branch information
caprica committed May 1, 2012
1 parent 6bec392 commit 6aadcb3
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public static class ByValue extends libvlc_event_u implements Union.ByValue {}
public media_parsed_changed media_parsed_changed;
public media_freed media_freed;
public media_state_changed media_state_changed;
public media_player_buffering media_player_buffering;
public media_player_position_changed media_player_position_changed;
public media_player_time_changed media_player_time_changed;
public media_player_title_changed media_player_title_changed;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* This file is part of VLCJ.
*
* VLCJ is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VLCJ is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with VLCJ. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2009, 2010, 2011, 2012 Caprica Software Limited.
*/

package uk.co.caprica.vlcj.binding.internal;

import com.sun.jna.Structure;

/**
*
*/
public class media_player_buffering extends Structure {

/**
* A percentage complete indicator, ranging from 0.0 to 100.0.
*/
public float new_cache;
}
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ public void opening(MediaPlayer mediaPlayer) {
}

@Override
public void buffering(MediaPlayer mediaPlayer) {
public void buffering(MediaPlayer mediaPlayer, float newCache) {
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ public void opening(MediaPlayer mediaPlayer) {
}

@Override
public void buffering(MediaPlayer mediaPlayer) {
public void buffering(MediaPlayer mediaPlayer, float newCache) {
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public void opening(MediaPlayer mediaPlayer) {
}

@Override
public void buffering(MediaPlayer mediaPlayer) {
public void buffering(MediaPlayer mediaPlayer, float newCache) {
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ public interface MediaPlayerEventListener {
* Buffering media.
*
* @param mediaPlayer media player that raised the event
* @param newCache percentage complete, ranging from 0.0 to 100.0
*/
void buffering(MediaPlayer mediaPlayer);
void buffering(MediaPlayer mediaPlayer, float newCache);

/**
* The media started playing.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,23 @@
*/
class MediaPlayerBufferingEvent extends AbstractMediaPlayerEvent {

/**
*
*/
private final float newCache;

/**
* Create a media player event.
*
* @param mediaPlayer media player the event relates to
*/
MediaPlayerBufferingEvent(MediaPlayer mediaPlayer) {
MediaPlayerBufferingEvent(MediaPlayer mediaPlayer, float newCache) {
super(mediaPlayer);
this.newCache = newCache;
}

@Override
public void notify(MediaPlayerEventListener listener) {
listener.buffering(mediaPlayer);
listener.buffering(mediaPlayer, newCache);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import uk.co.caprica.vlcj.binding.internal.media_duration_changed;
import uk.co.caprica.vlcj.binding.internal.media_meta_changed;
import uk.co.caprica.vlcj.binding.internal.media_parsed_changed;
import uk.co.caprica.vlcj.binding.internal.media_player_buffering;
import uk.co.caprica.vlcj.binding.internal.media_player_length_changed;
import uk.co.caprica.vlcj.binding.internal.media_player_pausable_changed;
import uk.co.caprica.vlcj.binding.internal.media_player_position_changed;
Expand Down Expand Up @@ -94,7 +95,7 @@ public MediaPlayerEvent createEvent(libvlc_event_t event, int eventMask) {

case libvlc_MediaPlayerBuffering:
if(MediaPlayerEventType.set(eventMask, MediaPlayerEventType.BUFFERING)) {
result = new MediaPlayerBufferingEvent(mediaPlayer);
result = new MediaPlayerBufferingEvent(mediaPlayer, ((media_player_buffering)event.u.getTypedValue(media_player_buffering.class)).new_cache);
}
break;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,11 @@ public void actionPerformed(ActionEvent e) {
mediaPlayer.setPlaySubItems(true); // <--- This is very important for YouTube media

mediaPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void buffering(MediaPlayer mediaPlayer, float newCache) {
System.out.println("Buffering " + newCache);
}

@Override
public void mediaSubItemAdded(MediaPlayer mediaPlayer, libvlc_media_t subItem) {
List<String> items = mediaPlayer.subItems();
Expand Down

0 comments on commit 6aadcb3

Please sign in to comment.