Glossary

This is a glossary of terms that often appear in discussion about multimedia transmissions. Most of the terms are described and linked to its wikipedia, RFC or W3C relevant documents. Some of the terms are specific to gstreamer or kurento.

Agnostic, Media
One of the big problems of media is that the number of variants of video and audio codecs, formats and variants quickly creates high complexity in heterogeneous applications. So kurento developed the concept of an automatic converter of media formats that enables development of agnostic elements. Whenever a media element’s source is connected to another media element’s sink, the kurento framework verifies if media adaption and transcoding is necessary and, if needed, it transparently incorporates the appropriate transformations making possible the chaining of the two elements into the resulting Pipeline.
AVI

Audio Video Interleaved, known by its initials AVI, is a multimedia container format introduced by Microsoft in November 1992 as part of its Video for Windows technology. AVI files can contain both audio and video data in a file container that allows synchronous audio-with-video playback. AVI is a derivative of the Resource Interchange File Format (RIFF).

See also

Audio Video Interleave
Wikipedia reference of the AVI format
Resource Interchange File Format
Wikipedia reference of the RIFF format
Bower
Bower is a package manager for the web. It offers a generic solution to the problem of front-end package management, while exposing the package dependency model via an API that can be consumed by a build stack.
Builder Pattern

The builder pattern is an object creation software design pattern whose intention is to find a solution to the telescoping constructor anti-pattern. The telescoping constructor anti-pattern occurs when the increase of object constructor parameter combination leads to an exponential list of constructors. Instead of using numerous constructors, the builder pattern uses another object, a builder, that receives each initialization parameter step by step and then returns the resulting constructed object at once.

See also

Builder_pattern
Wikipedia reference of the Builder Pattern
CORS

CORS is a mechanism that allows JavaScript code on a web page to make XMLHttpRequests to different domains than the one the JavaScript originated from. It works by adding new HTTP headers that allow servers to serve resources to permitted origin domains. Browsers support these headers and enforce the restrictions they establish.

See also

enable-cors.org
for information on the relevance of CORS and how and when to enable it.
DOM
Document Object Model
Document Object Model is a cross-platform and language-independent convention for representing and interacting with objects in HTML, XHTML and XML documents.
EOS
Acronym of End Of Stream. In Kurento some elements will raise an EndOfStream event when the media they are processing is finished.
GStreamer
GStreamer is a pipeline-based multimedia framework written in the C programming language.
H.264

A Video Compression Format. The H.264 standard can be viewed as a “family of standards” composed of a number of profiles. Each specific decoder deals with at least one such profiles, but not necessarily all. See H.264 entry at wikipedia

See also

RFC 6184
RTP Payload Format for H.264 Video. This RFC obsoletes RFC 3984.
HTTP

The Hypertext Transfer Protocol is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web.

See also

RFC 2616

ICE
Interactive Connectivity Establishment

Interactive Connectivity Establishment (ICE) is a technique used to achieve NAT Traversal. ICE makes use of the STUN protocol and its extension, TURN. ICE can be used by any protocol utilizing the offer/answer model.

See also

RFC 5245

Interactive Connectivity Establishment
Wikipedia reference of ICE
IMS

IP Multimedia Subsystem is 3GPP Mobile Architectural Framework for delivering IP Multimedia Services in 3G (and beyond) Mobile Networks.

See also

RFC 3574

Java EE

Java EE, or Java Platform, Enterprise Edition, is a standardised set of APIs for Enterprise software development.

See also

Oracle Site
Java EE Overview
Wikipedia
Java Platform Enterprise Edition
jQuery
jQuery is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML.
JSON
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is designed to be easy to understand and write for humans and easy to parse for machines.
JSON-RPC
JSON-RPC is a simple remote procedure call protocol encoded in JSON. JSON-RPC allows for notifications and for multiple calls to be sent to the server which may be answered out of order.
Kurento
Kurento is a platform for the development of multimedia enabled applications. Kurento is the Esperanto term for the English word ‘stream’. We chose this name because we believe the Esperanto principles are inspiring for what the multimedia community needs: simplicity, openness and universality. Kurento is open source, released under Apache 2.0, and has several components, providing solutions to most multimedia common services requirements. Those components include: Kurento Media Server, Kurento API, Kurento Protocol, and Kurento Client.
Kurento API
Kurento API is an object oriented API to create media pipelines to control media. It can be seen as and interface to Kurento Media Server. It can be used from the Kurento Protocol or from Kurento Clients.
Kurento Client
A Kurento Client is a programming library (Java or JavaScript) used to control Kurento Media Server from an application. For example, with this library, any developer can create a web application that uses Kurento Media Server to receive audio and video from the user web browser, process it and send it back again over Internet. Kurento Client exposes the Kurento API to app developers.
Kurento Protocol
Communication between KMS and clients by means of JSON-RPC messages. It is based on WebSocket that uses JSON-RPC V2.0 messages for making requests and sending responses.
Kurento Media Server
Kurento Media Server is the core element of Kurento since it responsible for media transmission, processing, loading and recording.
Maven
Maven is a build automation tool used primarily for Java projects.
Media Element
A Media Element is a module that encapsulates a specific media capability. For example RecorderEndpoint, PlayerEndpoint, etc.
Media Pipeline
A Media Pipeline is a chain of media elements, where the output stream generated by one element (source) is fed into one or more other elements input streams (sinks). Hence, the pipeline represents a “machine” capable of performing a sequence of operations over a stream.
Media Plane

In the traditional 3GPP Mobile Carrier Media Framework, the handling of media is conceptually splitted in two layers. The one that handles the media itself, with functionalities such as media transport, encoding/decoding, and processing, is called Media Plane.

See also

Signaling Plane

MP4

MPEG-4 Part 14 or MP4 is a digital multimedia format most commonly used to store video and audio, but can also be used to store other data such as subtitles and still images.

See also

Wikipedia definition of MP4.

Multimedia

Multimedia is concerned with the computer controlled integration of text, graphics, video, animation, audio, and any other media where information can be represented, stored, transmitted and processed digitally.

There is a temporal relationship between many forms of media, for instance audio, video and animations. There 2 are forms of problems involved in

  • Sequencing within the media, i.e. playing frames in correct order or time frame.
  • Synchronisation, i.e. inter-media scheduling. For example, keeping video and audio synchronized or displaying captions or subtitles in the required intervals.

See also

Wikipedia definition of Multimedia

Multimedia container format

Container or wrapper formats are metafile formats whose specification describes how different data elements and metadata coexist in a computer file.

Simpler multimedia container formats can contain different types of audio formats, while more advanced container formats can support multiple audio and video streams, subtitles, chapter-information, and meta-data, along with the synchronization information needed to play back the various streams together. In most cases, the file header, most of the metadata and the synchro chunks are specified by the container format.

See also

Wikipedia definition of multimedia container formats

NAT
Network Address Translation

Network address translation (NAT) is the technique of modifying network address information in Internet Protocol (IP) datagram packet headers while they are in transit across a traffic routing device for the purpose of remapping one IP address space into another.

See also

Network Address Translation definition at Wikipedia

NAT-T
NAT Traversal

NAT traversal (sometimes abbreviated as NAT-T) is a general term for techniques that establish and maintain Internet protocol connections traversing network address translation (NAT) gateways, which break end-to-end connectivity. Intercepting and modifying traffic can only be performed transparently in the absence of secure encryption and authentication.

See also

NAT Traversal White Paper
White paper on NAT-T and solutions for end-to-end connectivity in its presence
Node.js
Node.js is a cross-platform runtime environment for server-side and networking applications. Node.js applications are written in JavaScript, and can be run within the Node.js runtime on OS X, Microsoft Windows and Linux with no changes.
npm
npm is the official package manager for Node.js.
OpenCL
OpenCL™ is standard framework for cross-platform, parallel programming of heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors.
OpenCV
OpenCV (Open Source Computer Vision Library) is a BSD-licensed open source computer vision and machine learning software library. OpenCV aims to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception.
Pad, Media

A Media Pad is is an element´s interface with the outside world. Data streams from the MediaSource pad to another element’s MediaSink pad.

See also

GStreamer Pad
Definition of the Pad structure in GStreamer
PubNub
PubNub is a publish/subscribe cloud service for sending and routing data. It streams data to global audiences on any device using persistent socket connections. PubNub has been designed to deliver data with low latencies to end-user devices. These devices can be behind firewalls, NAT environments, and other hard-to-reach network environments. PubNub provides message caching for retransmission of lost signals over unreliable network environments. This is accomplished by maintaining an always open socket connection to every device.
QR

QR code (Quick Response Code) is a type of two-dimensional barcode. that became popular in the mobile phone industry due to its fast readability and greater storage capacity compared to standard UPC barcodes.

See also

QR Code
Entry in wikipedia
REST
Representational State Transfer is an architectural style consisting of a coordinated set of constraints applied to components, connectors, and data elements, within a distributed hypermedia system. The term representational state transfer was introduced and defined in 2000 by Roy Fielding in his doctoral dissertation.
RTCP

The RTP Control Protocol is a sister protocol of the RTP, that provides out-of-band statistics and control information for an RTP flow.

See also

RFC 3605

RTP

The Real-Time Transport Protocol is a standard packet format designed for transmitting audio and video streams on IP networks. It is used in conjunction with the RTP Control Protocol. Transmissions using the RTP audio/video profile typically use SDP to describe the technical parameters of the media streams.

See also

RFC 3550

Same-origin policy
The Same-origin policy is web application security model. The policy permits scripts running on pages originating from the same site to access each other’s DOM with no specific restrictions, but prevents access to DOM on different sites.
SDP
Session Description Protocol

The Session Description Protocol describes initialization parameters for a streaming media session. Both parties of a streaming media session exchange SDP files to negotiate and agree in the parameters to be used for the streaming.

See also

RFC 4566
Definition of Session Description Protocol
RFC 4568
Security Descriptions for Media Streams in SDP
Semantic Versioning
Semantic Versioning is a formal convention for specifying
compatibility using a three-part version number: major version; minor version; and patch.
Signaling Plane

It is the layer of a media system in charge of the information exchanges concerning the establishment and control of the different media circuits and the management of the network, in contrast to the transfer of media, done by the Signaling Plane.

Functions such as media negotiation, QoS parametrization, call establishment, user registration, user presence, etc. as managed in this plane.

See also

Media Plane

Sink, Media
A Media Sink is a MediaPad that outputs a Media Stream. Data streams from a MediaSource pad to another element’s MediaSink pad.
SIP

Session Initiation Protocol is a signaling plane protocol widely used for controlling multimedia communication sessions such as voice and video calls over Internet Protocol (IP) networks. SIP works in conjunction with several other application layer protocols:

  • SDP for media identification and negotiation
  • RTP, SRTP or WebRTC for the transmission of media streams
  • A TLS layer may be used for secure transmission of SIP messages
Source, Media
A Media Source is a Media Pad that generates a Media Stream.
SPA
Single-Page Application
A single-page application is a web application that fits on a single web page with the goal of providing a more fluid user experience akin to a desktop application.
Sphinx

Documentation generation system used for kurento documentation

Spring Boot
Spring Boot is Spring’s convention-over-configuration solution for creating stand-alone, production-grade Spring based applications that can you can “just run”. It embeds Tomcat or Jetty directly and so there is no need to deploy WAR files in order to run web applications.
SRTCP

SRTCP provides the same security-related features to RTCP, as the ones provided by SRTP to RTP. Encryption, message authentication and integrity, and replay protection are the features added by SRTCP to RTCP.

See also

SRTP

SRTP
Secure RTP
is a profile of RTP (Real-time Transport Protocol), intended to provide encryption, message authentication and integrity, and replay protection to the RTP data in both unicast and multicast applications. Similar to how RTP has a sister RTCP protocol, SRTP also has a sister protocol, called Secure RTCP (or SRTCP);

See also

RFC 3711

SSL
Secure Socket Layer. See TLS.
STUN
Session Traversal Utilities for NAT
STUN is a standardized set of methods to allow an end host to discover its public IP address if it is located behind a NAT. STUN is a client-server protocol returning the public IP address to a client together with information from which the client can infer the type of NAT it sits behind.
Trickle ICE

Extension to the ICE protocol that allows ICE agents to send and receive candidates incrementally rather than exchanging complete lists. With such incremental provisioning, ICE agents can begin connectivity checks while they are still gathering candidates and considerably shorten the time necessary for ICE processing to complete.

TLS

Transport Layer Security and its prececessor Secure Socket Layer (SSL)

See also

RFC 5246
Version 1.2 of the Transport Layer Security protocol
TURN
Traversal Using Relays around NAT
TURN is a protocol that allows for a client behind a NAT or firewall to receive incoming data over TCP or UDP connections. TURN places a third party server to relay messages between two clients where peer to peer media traffic is not allowed by a firewall.
VP8

VP8 is a video compression format created by On2 Technologies as a successor to VP7. Its patents rights are owned by Google, who made an irrevocable patent promise on its patents for implementing it and released a specification under the Creative Commons Attribution 3.0 license.

See also

RFC 6386
VP8 Data Format and Decoding Guide
VP8
VP8 page at Wikipedia
WebM
WebM is an open media file format designed for the web. WebM files consist of video streams compressed with the VP8 video codec and audio streams compressed with the Vorbis audio codec. The WebM file structure is based on the Matroska media container.
WebRTC

WebRTC is an open source project that provides rich Real-Time Communcations capabilities to web browsers via Javascript and HTML5 APIs and components. These APIs are being drafted by the World Wide Web Consortium (W3C).

WebSocket
WebSocket specification (developed as part of the HTML5 initiative) defines a full-duplex single socket connection over which messages can be sent between client and server.