Browse Prior Art Database

System and method for processing multiple multimedia data streams on server environment Disclosure Number: IPCOM000124049D
Original Publication Date: 2005-Apr-07
Included in the Prior Art Database: 2005-Apr-07
Document File: 3 page(s) / 53K

Publishing Venue



Server-side media processing has to be efficient due to the number of channels involved. This restriction has usually resulted in ad-hoc solutions tailored to the type of server needed. These solutions were regenerated when new requirements arrived. Client-side media processing component frameworks exists, but they do not scale well to many concurrent channels. Since these frameworks consider each channel independently, they fail to share resources among channels. In addition, client frameworks are built with the idea of rendering rather than transforming the data. Presented here is a solution to this problem.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 35% of the total text.

Page 1 of 3

System and method for processing multiple multimedia data streams on server environment

EMF (Enterprise Media Framework) is a component-based Java* architecture for handling time-based media in J2EE* environment. Each session is dynamically configured by attaching together the needed media processing components. Such media components include network adapters (RTP,TCP), media codecs, signal processing (e.g. voice activity detection), and interface adapters. EMF is designed to support a multitude of concurrent sessions efficiently by sharing resources (e.g. threads and sockets) across sessions. It includes a scheduler, which allows running the components in real time. It fits into the J2EE Connector Architecture (JCA) model, and it is managed by WAS. It may be viewed as a transformation and adaptation of JMF (Java Media Framework)* from the J2SE* desktop world to the J2EE server world (similar to Mobile Media API in the J2ME world). Targeted applications are initially VoIP related, such as Voice Servers, Transcription Servers, Collaboration Servers, or Conferencing Servers.

Component Architecture

Executables: Modules and Tasks

    The basic component in the framework is the Executable component. It is a passive component (a.k.a. thread-less), which is called by the framework to process chunks of data (it allows management and scalability, as noted below). Sample components are sources (RTP receiver, Audio capture), codecs (g711 Encoder, Voice Activity Detection), and Sinks (RTP transmitter, Audio playback).

    Executables receive data in its input Connectors, and transmit data in its output Connectors. Data transfer is elaborated below in the Data-transfer section. The Threading model is outside the scope of the Executables and will be described in the Threading section below.

    The framework includes two implementations of the Executable interface: Module and Task. The task is a leaf component, while the Module contains several Executables such as Tasks or Modules. To those proficient in design patterns, the "Composite Design Pattern" has been chosen for components.The topology of the system may be a simple pipeline or a more complicated arbitrary graph.

  There are special types of executables used in the context of EMF: SelectExecutable - is a task that handles multiple (possibly blocking) inputs using a single thread. Such a scenario appears when reading data from multiple input sockets using a single thread.

SyncExecutable - is a task that looks into its input data timestamps "presentation time" and waits for that time to elapse before processing the data. It is similar to "renderers" in former frameworks.

Data Transfer

    A method for transferring data between Executables is defined below. The main requirement from the method is transferring the data without copy, whenever it is possible. Since a server handling multiple concurrent sessions is being described, a task which is typically memory bound, the importance of this requirement is cle...