APIs

     BD-J mode is designed for custom flexible programming. It includes a vast collection of API packages that offer a range of functionalities for developers to work with. These APIs enable developers to create engaging and interactive applications with features such as graphics, audio, video, menus, and more.


Personal Basis Profile
BD-J's core computing platform is built upon Personal Basis Profile 1.0., which consists of Foundation Profile 1.0 and Connected Device Configuration 1.0.

  • java.awt and sub-packages: Contains a low-level API for drawing graphics into the screen,  java.awt.Graghics2D. Also contains the infrastructure for keypresses from a remote and a mouse or keyboard.
  • java.io: Contains APIs for reading and writing data streams to files including to the player's persistent storage.
  • java.net: Provides APIs for opening sockets, working with URLs, and HTTP/HTTPS protocols on networked devices.
  • java.lang and  java.math: Gives you basic data types, threads, and exceptions.
  • java.until: Gives utility classes for things like hashtables, lists, and sorting, which also has subpackages to read and write ZIP and JAR files.
  • java.security: This package provides cryptographic functions. These functions may be used for secure transactions, and to send data securely, with more control than provided with the https protocol.
  • java.beans: Provides runtime support for the JavaBeans component framework. Useful for building component libraries.
  • java.text: Supports formatting text and numbers.
  • java.rmi and  javax.microedition: Provides the underlying support for the Xlet application model and inter-xlet communication. In PBP, java.rmi is very small and does not provide support for networked Remote Method Invocation communication with standard (desktop) Java.
  • javax.microedition.io: An alternative to java.net that is compatible with the APIs for mobile phones.


Java TV
BD-J is based on Java TV 1.1. It's an API used on American and European Cable TV Set-top-boxes. 

  • java.tv.xlet: Defines the Xlet application model.
  • javax.tv.service: Provides APIs that select a service. In the world of Broadcast TV, the term "service" is typically used to refer to a TV channel. In BD-J, the Java TV service API is mapped to Blu-ray titles. A single Blu-ray disc can have more than one title. It can be used, for example, if a BD-ROM presents several episodes of a TV show.
  • javax.tv.locator: Defines the  Locator class to address TV resources like services. A locator is a string that is formatted similarly to a URL.
  • javax.media and  javax.tv.media: These packages define an interface called a  Player. It represents a place where audio/video content can be presented and governed by any number of controls. A single control sets one or more playback parameters, like audio volume or the size and position of the video on the screen.
  • javax.tv.utiljavax.tv.net, and  javax.tv.graphics: These packages contain a few classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.


GEM & MHP
BD-J is based on the GEM and MHP standards. MHP is an open middleware system standard designed by Europe's DVB for interactive digital television. The MHP enables the reception and execution of interactive, Java-based applications on a TV set. Globally Executable MHP (GEM) is an international standard based on MHP for the non-European TV markets often used on terrestrial, satellite, and cable set-top boxes and TV sets for interactive content. BD-J is based on GEM 1.0.2 which in turn is based on MHP 1.0.3. Other GEM platforms equivalent to BD-J are DVB-J (Europe), OCAP-J (Cable), ACAP-J (N. America), ARIB-J (Japan), and Ginga-J (S. America). Since all these platforms are based on the common GEM-core, it made it possible for developers to write Java applications that will run interoperably on all these systems. The GEM/MHP specifications include APIs from other organizations - HAVi graphics and DAVIC media controls.

  • org.havi.ui: This package contains APIs for manipulating the screen resolution and other parameters of the graphics device. It also defines the main frame-like container an Xlet uses for on-screen drawing, called an HScene. Additionally, it contains widgets, like buttons and text entry screens for t-commerce (e-commerce for the TV screen). HAVi is also where some keycodes are defined, like  VK_COLORED_KEY_0, and contains an API to tell you the color of each colored key.
  • org.davic.resources: A set of APIs for arbitrating resource conflicts between different Xlets and other parts of the system. When a BD-J disc is playing, it "owns" the hardware. The resource management API may not be frequently required.
  • org.davic.media and  org.davic.net: Contains superclasses for things defined elsewhere in MHP.
  • org.dvb.application: Provides APIs for launching one Xlet from another.
  • org.dvb.dsmcc: DSMCC (Digital Storage Management, Command and Control) is a mechanism MHP uses to broadcast a filesystem hierarchy. In BD-J, it's an API used to mount a filesystem that is contained in a JAR file. It also provides the  DSMCCStreamEvent API, which a developer can use to receive triggers or call-backs tied to video. If interoperability with other GEM systems is not a concern, BD-J defines a simpler way in org.bluray.
  • org.dvb.ui: Contains the font loading class, FontFactory. It also contains a few miscellaneous definitions that are duplicated in PBP; for BD-J that can be considered obsolete.
  • org.dvb.event: Contains an important API that lets an application register for remote control keypresses with being subject to AWT focus model.
  • org.dvb.io.ixc: An entry point for inter-xlet communication. The internal mechanism for IXC is provided in PHP, under javax.microedtion.xlet.ixc.
  • org.dvb.io.persistent: A package that contains support for controlling access to the persistent storage.
  • org.dvb.media: Provides Java Media Framework controls that can be used to manage aspects of playback, such as subtitles.
  • org.dvb.lang and  org.dvb.net:  These packages contain classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.


BD-ROM Specification, Part 3-2
Part 3-2 of the BD-ROM Format, Part 3, Audio Visual Basic Specifications, contains the Blu-ray's device-control APIs.

  • org.bluray.media: Contains Java Media Framework controls. These include controls for picture-in-picture, subtitles, camera angles, audio gain and panning, and searching for playlist marks on the disc.
  • org.bluray.ti: Contains title information and control APIs. This is where you can find metadata about a disc, including play items and playlists, and information about the title(s) on a disc. A multi-title disc might contain many episodes of a TV show and each episode is a title. Or a multi-disc title might have two movies in one disc, and each one is a title. The  ti package also contains API used to manage disc insertion and ejection, which can be useful for a disc-unbound application that controls a multi-disc product such as a serial TV show or a multi-disc video game.
  • org.bluray.vfs: Allows control of the Virtual File System (VFS) and the disc's filesystem directory. VFS allows an application to download or install content to the player's storage device (HDD, SSD, Flash, USB, etc.) Then, the installed/downloaded content is integrated with the filesystem of the disc.
  • org.bluray.ui: Contains classes for an application to perform animations that are in synch to the video frames. 
  • org.bluray.storage: This package provides APIs to retrieve information on available space in persistent storage.
  • org.bluray.system: This lets you access the player's GPRs and PSRs. GPRs 4091-4095 are reserved for Java code for BDJ Mode. GPRs 1000-4005 can be used and controlled from Java code. It can be used to control the player or HDMV applications.
  • org.bluray.application: Narrowly extends one class of the org.dvb.application.
  • org.bluray.net: Contains BD-J's concrete class that implements the Java TV locator defined in  javax.tv.locator.

Author(s) : Æ Firestone

on Sunday, March 24, 2024 | | A comment?
0 responses to “APIs”

Leave a Reply

Popular Pages