BD-J
BD-J , eller Blu-ray Disc Java , är en specifikation som stöder Java ME (särskilt Personal Basis Profile of the Connected Device Configuration eller CDC) Xlets för avancerat innehåll på Blu-ray Disc och Packed Media-profilen för Globally Executable MHP ( PÄRLA).
BD-J möjliggör mer sofistikerat bonusinnehåll på Blu-ray Disc-titlar än standard DVD , inklusive nätverksåtkomst, bild-i-bild och tillgång till utökad lokal lagring . Sammantaget kallas dessa funktioner (förutom internetåtkomst) som " Bonusvy ", och tillägget av internetåtkomst kallas " BD Live ". BD-J utvecklades av Blu-ray Disc Association . Alla Blu-ray Disc-spelare som stöder videoinnehåll krävs enligt specifikationen för att stödja BD-J. Från och med den 31 oktober 2007 måste alla nya spelare ha hårdvarustöd för "Bonus View"-funktionerna, men spelarna kan behöva framtida firmwareuppdateringar för att aktivera funktionerna. "BD Live"-stöd är alltid valfritt för en BD-spelare.
Sonys PlayStation 3 har de facto varit ledande inom efterlevnad och stöd för BD-J, och lagt till Blu-ray Profile 1.1-stöd med en uppgradering av firmware, som användes för att visa upp BD-Live på CES 2008 i januari.
BD-J Xlet-funktioner
- Anropet av BD-J Xlets utlöses av händelser som inträffar runt dem – till exempel genom valet av en filmtitel eller genom att en ny skiva sätts in. Xlets i sin tur kan sedan kalla andra Xlets i spel.
- Säkerheten i BD-J är baserad på säkerhetsmodellen för Java-plattformen. Det vill säga, signerade applikationer i JAR:er kan utföra fler uppgifter än icke-signerade, såsom läs-/skrivåtkomst till lokal lagring, nätverksåtkomst, val av andra titlar på BD-ROM-skivan och kontroll av andra körande BD-J-applikationer.
- Xlets (som en del av CDC Personal Basis-profilen) har inget GUI (dvs inga AWT- widgets som
java . awt . Button
), så ytterligare klasser kallas in för att generera animering och GUI. BD-J använder Havi UI-enhetsmodellen och widgetuppsättningen för fjärrkontrollanvändning, men den är utökad för att möjliggöra BD-stödda upplösningar och BD-stödda A/V-kontroller. - BD-J har klasser som gör att användaren kan synkronisera exakt till specifika bildrutor i filmen.
- Det finns två typer av videosynkroniseringar tillåtna, en som kallas "lös synkronisering", som använder en återuppringningsmetod och är korrekt inom flera ramar av händelsen, och den andra är "tight synkronisering", som använder paketet
org . bluray
. Tät synkronisering tillåter applikationer att synkronisera exakt till den exakta ramen med hjälp av tidskoder från paketetjavax . media . Tid
för JMF ( Java Media Framework) . - En BD-J-applikations GUI kan styras med en fjärrkontroll med en nödvändig uppsättning nycklar och en valfri pekenhet. Uppsättningen av nödvändiga nycklar inkluderar åtminstone de nycklar som behövs för att stödja användaroperationer i HDMV [ expansion akronym ] -applikationer.
- GUI-ramverket i BD-J inkluderar HAVi (6) UI-ramverket på uppdrag av GEM ; det är inte ett ramverk för skrivbordsgränssnitt som Swing eller AWT . GUI-ramverket är baserat på kärnan av AWT som specificerats av PBP, men widgetuppsättningen innehåller mekanismer för fjärrkontrollsnavigering från GEM och enkel anpassning av utseende och känsla från HAVi.
- BD-J inkluderar ett mediaramverk som liknar JMF för uppspelning av mediainnehåll relaterat till BD-ROM-skivan. Det antas att BD-ROM-skivan kommer att vara den primära källan för mediafiler, men det kommer inte att vara den enda; andra källor kan vara studions webbserver och lokal lagring.
- BD-J innehåller standard Java-bibliotek för avkodning och visning av bilder i JFIF ( JPEG ), PNG och andra bildformat. Dessa bilder kan visas på Java-grafikplanet med hjälp av standard Java-grafikfunktioner. En bild kan också renderas i bakgrundsplanet med ett BD-J-specifikt paket.
- Text kan renderas med vanliga Java-textfunktioner. Dessa textåtergivningsfunktioner utökas med en mer avancerad textlayouthanterare som integreras med BD-J UI-ramverket. Texten renderas med ett vektorbaserat teckensnitt som antingen kommer från skivan, spelaren (standardteckensnitt) eller laddas ner från nätverket.
- Knappljud från HDMV [ expandera akronym ] kan också användas av Java UI-ramverket. Ljudfiler kan laddas och återges som en reaktion på att användaren trycker på en tangent, eller som en reaktion på en markerad händelse relaterad till filmen – eller som en reaktion på en händelse som genereras av en BD-J-applikation.
- Autentiserade applikationer kan använda en (signerad) fil för begäran om behörighet för att skaffa behörigheter som går utöver BD-J-sandlådan. Behörigheter kan erhållas för:
- Läsa och skriva till lokal och systemlagring
- Använda nätverksanslutningen (för att ansluta till definierade servrar)
- Åtkomst till filsystemet på BD-ROM-skivan
- Titelval av andra titlar på BD-ROM-skivan
- Kontroll av andra körande BD-J-applikationer
- BD-J-applikationer kan använda
java . net-
paket för att ansluta till servrar på Internet. Den fysiska anslutningen kan skilja sig åt mellan olika implementeringar, t.ex. Ethernet, telefonlinje, etc. På nätverksnivå stöds TCP/IP och HTTP- protokollet kan användas. Dessutom ingår Java-paketet för säkra anslutningar ( JSSE ) som en del av BD-J-plattformen. Innan en BD-J-applikation kan använda nätverksanslutningen måste den vara autentiserad och ha lämplig behörighet att använda nätverket. - Webbplatserna som applikationen kommer till är under full kontroll av innehållsleverantören. Denna kontroll garanteras på två sätt:
- Endast (skiva) autentiserade BD-J-applikationer får köras när skivan spelas. Applikationen styr användningen av nätverksanslutningen.
- Dessutom kan behörigheter som definieras på skivan begränsa användningen av (TCP/IP) nätverksanslutningen till vissa platser.
- BD-J kommer att innehålla stöd för lagring. Två varianter av förvaring ingår: obligatorisk systemlagring och valfri lokal förvaring. All lagring nås med metoder från Java IO-paketet. Sökvägen för lokal lagring är som specificerad av [GEM].
- Systemlagring är lagring som kommer att finnas i alla BD-J-spelare. Den erforderliga minimistorleken på detta systemlagring tillåter lagring av applikationsdata som inställningar, höga poäng etc. Det kommer inte att vara tillräckligt stort för att lagra nedladdat AV-material. För detta ändamål finns valfri lokal lagring tillgänglig. Vanligtvis kommer systemlagring att implementeras med hjälp av Flash-minne och den valfria lokala lagringen kommer att implementeras på en hårddisk.
- Eftersom lagring är en delad resurs mellan alla skivor som spelas på spelaren, är Java-åtkomstkontroll en del av BD-J. BD-J-applikationer kan bara komma åt en skivspecifik del av lagringsutrymmet och kan inte komma åt den del som hör till andra skivor.
Innehållsutveckling
Innehållsförfattare har en mängd olika utvecklingsstrategier tillgängliga, inklusive användningen av traditionella integrerade utvecklingsmiljöer (IDE) som NetBeans eller Eclipse , icke-programmerande grafiska miljöer som liknar Macromedia Director, eller via renderingsmotorer som använder standarddataformat som HTML, XML , eller SVG. Att ha en komplett programmeringsmiljö tillgänglig på alla Blu-ray Disc-spelare ger utvecklare en plattform för att skapa innehållstyper som inte är bundna av begränsningarna för standard DVD. Utöver de vanliga BD-J API:erna kan utvecklare använda befintliga Java-bibliotek och applikationsramverk, förutsatt att de inte använder funktioner utanför begränsningarna för BD-J-plattformen, inklusive att Java ME endast stöder Java version 1.3 klassfiler .
En uppsättning fritt tillgängliga verktyg som gör att Java-utvecklare kan producera kompletta skivbilder som innehåller BD-J är tillgängliga från HD Cookbook Project. För att testa innehåll i en typisk utvecklingsmiljö (MS Windows), behöver man antingen en PlayStation 3 eller en tredjeparts mjukvaruspelare för Windows, uppmärksamma spelarversionerna för att säkerställa att spelaren stöder BD-J.
På grund av de många olika standarder och komponenter som är involverade har det visat sig vara en utmaning att skapa enhetlig dokumentation på BD-J.
Exempelkod
BD-J-miljön är utformad för att köra Xlets med icke- javax . *
paket tillgängliga för att dra nytta av funktionerna som är specifika för denna plattform utöver vad som definieras av Java TV .
Även ett enkelt exempel som FirstBDJApp.
En utvecklare kan välja att inte använda javax . *
paket och använd istället:
-
HAVi -klasser i paketträdet
org . havi . *
: alternativa klasser för att få till exempel enorg . havi . ui . HScene långt utöver vad
javax . tv . grafik . TVContainer
tillhandahåller (de är båda förlängningar avjava . awt . Container
) -
Digital Video Broadcasting (DVB) klasser i paketträdet
org . dvb . *
: alternativa klasser till till exempelorg . dvb . händelse . UserEventListener-
gränssnitt snarare änjava . awt . händelse . KeyListener
för stöd för tangenttryckningar och tangentkoder specifika för populära CDC-enheter. - Blu-ray Disc-klasser i paketträdet
org . bluray . *
: DAVIC- och DVB-klasserna är beroende av att känna igen ytterligare händelser som är speciella för BD-J-plattformen, såsom popup-menyer och för att lokalisera media på Blu-ray-skivan. -
DAVIC API-klasser i paketträdet
org . davic . *
: En liten uppsättning klasser som omsluter eller utökar andra nätverks- och mediaresurser som är speciella för interaktiv TV som HAVi-, DVB- och Blu-ray-klasserna använder för lokaliseringar och specialiserade undantag utanför JMF:s område (som innehållsauktorisering).
Ett fungerande exempel på ett program som använder några funktioner från vart och ett av klassträden skulle vara BdjGunBunny Xlet (en mycket enkel version av Space Invaders som använder en bild av en kanin som skytt och sköldpaddor som mål) som ett exempel i Java ME 3.0 SDK .
importera javax.tv.xlet.XletContext ; importera org.havi.ui.HScene ; importera org.havi.ui.HSceneFactory ; importera java.awt.Container ; importera javax.tv.graphics.TVContainer ; // Att få en behållare för skärmen kan vara public void initXlet ( XletContext context ) { // Java TV API för att vara kompatibel med Java TV TVContainer scene = TVContainer . getRootContainer ( kontext ); // Eller för BD-J, för att använda HAVi-funktioner som inte är tillgängliga i Java TV HScene scene = HSceneFactory . getInstance (). getDefaultHScene (); // Eller kanske mer allmänt... Container container = null ; boolesk realBDJ = sant ; if ( realBDJ ) container = HSceneFactory . getInstance (). getDefaultHScene (); else container = TVContainer . getRootContainer ( kontext ); ... }
och samma sak för andra icke- javax . *
paket. På samma sätt, när man försöker spela upp en video, kan man kalla Blu-ray- och DAVIC-verktyget istället för att använda generisk JMF:
importera javax.media.Player ; importera org.bluray.net.BDLocator ; importera org.davic.media.MediaLocator ; MediaLocator stars = new MediaLocator ( ny BDLocator ( "bd://0.PLAYLIST:00003") ); Spelare spelare = Manager . createPlayer ( stjärnor ); // Snarare än traditionell och bärbar men mer begränsad ren JMF import java.net.URL ; importera javax.media.Manager ; importera javax.media.Player ; Spelare mediaPlayer = Manager . createRealizedPlayer ( ny URL ( "file:/mymovie.mov") );
Relaterad publikation
- Programmera HD DVD och Blu-ray Disc The HD Cookbook (2008) av Michael Zink, Philip C. Starner, Bill Foote - ISBN 978-0-07-149670-4 - bokens webbplats
Se även
- Advanced Content , BD-J:s motsvarighet på HD DVD
externa länkar
- Officiella java.net BD-J-forum - Officiella Sun java.net-forum för Blu-ray Disc Java.
- bdjforum.com - Inofficiellt forum för BD-J-utvecklare och problem kring HD-författarskap.
- JavaOne 2007 Technical Sessions: Producerar Blu-ray Java Software Titlar för Hollywood
- Officiell webbplats för DVB-MHP och DVB-GEM - Open Middleware for Interactive TV
- TV Without Borders - MHP/OCAP-webbplats från Steven Morris.
- HD Cookbook - Kod och andra recept för Blu-ray Java, GEM, MHP och OCAP
- Alticast BD-J Solutions