HDまたはQHDグラフィックスとSDビデオを共存させるためのサンプルコードである。
BD-Jでは同時に再生するMovie PlayListの解像度に引きずられてグラフィックスの解像度も変わってしまう(プレーン構成参照)。本プログラムはそれを避けるためのものである。
BD-Jでは同時に再生するMovie PlayListの解像度に引きずられてグラフィックスの解像度も変わってしまう(プレーン構成参照)。本プログラムはそれを避けるためのものである。
Main.java
import javax.media.Manager;
import javax.media.Player;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import org.bluray.net.BDLocator;
import org.bluray.ui.BDVideoConfigTemplate;
import org.davic.media.MediaLocator;
import org.davic.resources.ResourceClient;
import org.davic.resources.ResourceProxy;
import org.havi.ui.HScreen;
import org.havi.ui.HVideoConfiguration;
import org.havi.ui.HVideoDevice;
// ResourceClientインタフェースを実装する必要がある
public class Main implements Xlet, ResourceClient {
private HVideoDevice device;
public void initXlet(XletContext context){
try {
HScreen screen = HScreen.getDefaultHScreen();
// Vide Deviceを取得
device = screen.getDefaultHVideoDevice();
// configuration取得用のテンプレートを取得
BDVideoConfigTemplate template= new BDVideoConfigTemplate();
// KEEP_RESOLUTIONをテンプレートに設定
template.setPreference(BDVideoConfigTemplate.KEEP_RESOLUTION, new Object(), BDVideoConfigTemplate.REQUIRED);
// configuration取得
HVideoConfiguration config = device.getBestConfiguration(template);
// Video Deviceを占有
device.reserveDevice(this);
// configurationを設定
device.setVideoConfiguration(config);
// Movie PlayListを再生開始
BDLocator loc = new BDLocator("bd://1.PLAYLIST:00000");
MediaLocator ml = new MediaLocator(loc);
Player player = Manager.createPlayer(ml);
player.start();
} catch(Throwable thr) {
}
}
public void startXlet(){ }
public void pauseXlet(){ }
public void destroyXlet(boolean unconditional){
// Video Device占有を開放
device.releaseDevice();
}
// ResourceClientインタフェースを実装する必要がある
public void notifyRelease(ResourceProxy proxy) {}
public void release(ResourceProxy proxy) {}
public boolean requestRelease(ResourceProxy proxy, Object requestData) {return false;}
}