OpenTV
From Wikipedia, the free encyclopedia
OpenTV (NASDAQ: OPTV) is an interactive television company founded in 1996. Its main business involves the sale of set-top-box operating systems and software that provide an interactive television experience. The middleware style software layer allowed developers to rapidly code applications using the application programming interface (API) provided by OpenTV.
Contents |
[edit] OpenTV Core Middleware
OpenTV's flagship product is OpenTV Core a widely deployed digital television middleware. OpenTV Core software technology contains a hardware abstraction layer to enable hardware independence, TV libraries, a selection of application execution environments, and support for Personal Video Recorders (PVRs) to create a digital television environment for set-top box. TV libraries include support for rich graphics and High Definition, network communication from dial-up to broadband IP (via DOCSIS, DSL, ethernet or fiber), manipulation of digital audio and video streams (DVB as well as other standards and proprietary formats), and support for authentication and encryption using CA/DRM systems. OpenTV Core supports a number of application execution environments (AEE) including a 'C' virtual machine, an HTML Browser, a Flash® presentation environment and an MHP-compliant Java™ virtual machine. The 'C' virtual machine is an execution environment that supports the OpenTV Software Developer's Kit (SDK) APIs, which allows content providers to create television-centric applications in C-code using development tools from OpenTV or third-party vendors.
OpenTV middleware deployement includes some 43 cable, satellite or broadband TV network operators. For example: British Sky Broadcasting or BSkyB, Sky Italia, Télévision Par Satellite, Time Warner, UPC, Foxtel, Echostar, SKY Network Television (in New Zealand), Noos, Showtime Arabia, Cablecom, Euskaltel, Auna, Starhub, Viasat, HOT (Israeli company), Net Serviços de Comunicação S/A, Essel Group Zee Network, Digiturk, Etisalat, Liberty Global Europe UPC and others around the world.
OpenTV Core middleware has shipped some 70+ million set-top boxes worldwide (July 2006) on 37 set-top-box manufacturers: Advanced Digital Broadcast, Amstrad, Daewoo, EchoStar, Grundig, Humax, Hyundai, Matsushita, Motorola, Nokia, Pace, Philips, Sagem, Samsung, Scientific Atlanta, Sony, Toshiba, Thomson and other CE vendors.
OpenTV offers advanced interactive advertising solution. They purchased CAM Systems in 2005, an advertising traffic & Billing solution for US cable (Comcast). OpenTV provides system for allocation, scheduling, traffic, verification, and billing and supports local ad insertion/targeting at the headend or on the set-top, ad telescoping using VOD and PVR, enhanced TV for consumer call-to-action and audience measurement solutions for campaign effectiveness. The technology is used for example at Foxtel, Sky Digital (UK) called Sky Interactive (OpenTV middleware and WapTV) or on Echostar with Turner Media Group.
OpenTV is quoted on the NASDAQ under OPTV and the majority shareholder is Liberty Media.
[edit] PVR Extension
OpenTV Core PVR works with a hard disk drive and other mass storage devices, to enable to deploy a PVR solution compatible with OpenTV-based solutions. OpenTV PVR supports recording of multiple streams, concurrent recording and playback, pausing and instant rewind of live TV , recording of scheduled events and series recording, recording and playback of interactive applications, support for set-top based ad-telescoping, and APIs to enable interactive applications to control PVR functions. The solution is deployed on stand-alone PVRs, push VOD (trickle-VOD), and network PVR.
OpenTV PVR 1.0 was deployed at BSkyB with NDS XTV under the Sky+ brand (as well as Sky Italia). In 2005, OpenTV released an advanced version of the PVR called OpenTV PVR 2.0 which includes a HDD file system and interactive application recording as well as Push VOD. OpenTV PVR 2.0 is deployed at UPC, Starhub, Austar and other operators around the world. OpenTV PVR solution is deployed on millions of set-top boxes worldwide.
[edit] IPTV Extension
OpenTV Core middleware provide telecommunications operators with a platform for creating, managing and delivering IPTV solutions, with support for broadcast television (broadcast program tiers, pay-per-view), on-demand delivery (VOD using RTSP or DSMCC, NVOD, PVR and network PVR) and interactive TV (advertising, games, enhanced TV).
[edit] High Definition Television (HDTV)
OpenTV set-top box OS enables HD programs and HD-capable applications. OpenTV Middleware supports both High Definition and Standard Definition in MPEG-4 / MPEG-2 over cable, satellite and IPTV networks. The OpenTV High Definition supports DVB-S2, witch is a new modulation scheme that enables a higher bit rate than was previously possible on a satellite network. The High Definition solution includes HDCP (High Definition Copy Protocol) for secure content delivery over the digital HDMI connections.
[edit] Execution Environments
Variety of Application Models - OpenTV / HTML / Flash / MHP - OpenTV Core's architecture is configured to support interactive applications such as Electronic Program Guides (EPGs) and enhanced TV using application models including ‘C’, Flash, HTML/JavaScript, and Java/MHP.
[edit] HTML Execution Environment
Embedded HTML browser based on OpenTV Device Mosaic (OpenTV bought out Spyglass on March 2000). The acquisition was completed July 24, 2000. In the deal, they received both Device Mosaic, an embedded web browser, and Prism, a content delivery and transformation system.
The HTML solution is a browser for interactive television. The OpenTV HTML supports HTML 4.0.1 tags and attributes, plus Dynamic HTML features, Cascading Style Sheets (CSS) 1.0 and absolute positioning and media types from CSS 2.0, ECMAScript-262 compatible engine, JavaScript 1.5, with improved Script Object Model and Event Handling, Document Object Model (DOM) Level 1, HTTP 1.0 and HTTP 1.1, SSL 2.0 & 3.0 support, GIF87a, GIF89a, JPEG, PNG, and XBM image support, additional set-top box control via extensions to HTML, HTTP, JavaScript and CSS for iTV applications, support for placement of scaled TV window in HTML page, Broadcast delivery of HTML via the OpenTV Data Carousel, Primary (RAM-based) cache, Basic authentication and Cookie support, enhanced book-marking functionality for favorite URLs, user interface customization using Dynamic HTML. It is possible to use HTML authoring tools and application servers to build and deploy iTV applications. OpenTV HTML was deployed on millions of set-top boxes and TVs worldwide, from Sony, Motorola, Matsushita and PowerTV.
OpenTV HTML supports Japanese interactive TV market, with ARIB's Broadcast Markup Language (BML) for data service of digital satellite and terrestrial television services, as well as an HTML browser for Tnavi and internet access.
[edit] MHP Execution Environment
OpenTV middleware Multimedia Home Platform Package supports DVB-MHP and enables to deploy Java applications and content based on the Digital Video Broadcasting Multimedia Home Platform standard.
[edit] Flash® Execution Environment
A presentation engine that extends OpenTV middleware to support Macromedia® Flash®-based applications. Designers and developers can build applications without the need for programming skills, using existing commercially available Flash® authoring tools.
[edit] OpenTV Virtual Machine Execution Environment
OpenTV applications are written in the ANSI standard of the C language. OpenTV provides a development kit compiler similar to the standard C compiler, gcc, called gcco. This allows developers to write their applications and compile them to o-code, a portable form much like the .exe under Windows which is then run on many set-top-boxes. In this way, OpenTV encourages developers to write applications for their hardware by facilitating the process and ensures development of software for the platform. The OpenTV operating system itself is compact and micro-kernel based, ported to the host operating system in real time using OpenTV's Hardware Porting Kit (HPK). This allows it to be run on different set-top-boxes with minimal recompiling.
API functions: The OpenTV API provides a large library of functions that can display graphics on the television screen, control audio/video services, accept and respond to user input - even communicate with the outside world. This is done through a medium-independent method of communication that involves the API handling the transmission, and passing the data received onto the application, thus concealing the actual method of data transfer. The communication protocols support one-way satellite broadcasts, full bi-directional links (such as a modem or hard-wired serial port) and high-speed broadband networks.
Programming model: The OpenTV programming model is an asynchronous message-based environment. OpenTV applications make o-code function calls to the OpenTV library. The library routines initiate operations or requests. They do not block until the operation has completed; they return immediately. When an operation or request completes, a message is sent to the application indicating completion. Applications consist primarily of a message loop, which retrieves messages from the single message queue. Messages are used for notification of external events, such as key presses on the remote control or completion of function call requests.
Modules: OpenTV applications consist of two or more modules:
- The directory module, containing data about the application and its modules. This is required as the data must be transmitted before that of any other module.
- One or more modules containing the code and data. These modules must contain either application o-code or application data. The main module is automatically loaded by the set-top-box (much like C's 'main' function) while other modules are loaded on request.
Modules can be transmitted over the duration of the television program. This reduces the start-up time for OpenTV applications, and the memory footprint for large, complex programs. As modules can be loaded and unloaded when needed, splitting an application up into modules impacts well on performance.
OpenTV application code is edited on the development platform and is compiled and linked to create .otv files. C code is created using a standard text editor or C IDE and compiled into o-code using gcco. The resulting .o file, which contains o-code, is run through several stages of linking to produce objects which are processed with a postlinker to reduce the size. This part of the process is similar to application development in other environments. However, the .otv file must be combined with control information that synchronizes its transmission to the set-top box with the regular TV audio and video signals. This stream of application data is known as a flow. The flow is ready to be multiplexed with audio and video stream to create a complete OpenTV broadcast stream. During the debugging cycle, the flow is used as is to download and test the interactive application over a blank screen, assuming that the TV signals are not essential to the functional behavior of the application.
Source Code Example:
/* * Displays Hello World on the TV screen, then * waits for Quit message, and exits. */ #include "opentv.h" #include "classes.h" #include "texter.h" int main ( void ) { texter_resource hellodata = {"Hello OpenTV World\n", 1, 200, 300}; texter* hellotxt; O_debug ( "Starting...\n" ); // Initialize ALL the gadget classes we use in this program init_texter_class ( texter_ID ); // Now create the text ( string, color, x, y ) hellotxt = ( texter* ) O_gadget_new( texter_ID, hello_world_ID, &hellodata ); // set UIMS tree O_ui_set_root( hellotxt ); // Activate gadget O_gadget_activate( hellotxt ); for (;;) { o_message msg; O_ui_get_event_wait ( &msg ); switch ( O_msg_class ( &msg )) { case MSG_CLASS_CONTROL : { switch ( O_msg_type( &msg ) ) { case MSG_TYPE_QUIT: { O_debug ( "Quitting...\n" ); O_exit (); break; } } break; } } } }
"texter" is a gadget made by the user with properties defined by him.
[edit] OpenTV criticism
[edit] Lack of Openness
OpenTV SDK tools are guided by GPL like OpenTV compiler (GCCO) and linker (LDO) but OpenTV doesn't publish SDK tools source-code for community.
There's a group on SourceForge trying to port that by hand to Linux, to assure that OpenTV SDK tools are respecting GPL.
[edit] See also
- Interactive television
- C programming language
- OpenTV API
- Personal Video Recorder
- High Definition
- IPTV
- Video On Demand