DVB Subtitles Sink

This module contains an element capable of decoding DVB Subtitles streams in accordance to the ETSI EN 300 734 specification. The element presents the decoded images on the video overlay provided by the Hardware Abstraction Layer (HAL) through the Hardware Abstraction Interface (HAI).

Loadable Module Properties

Module Name Streamer DVB Subtitle Elements
File Name libdvbsubtitleelement.so
Class Count1

Element Quick Index

DVB Subtitle Decoder Element.

DVB Subtitle Decoder at end of typical pipeline.

Generic Pipeline-wide HAL Access Negotiation

All elements that wish to use HAL decoder resources must coordinate their HAL access. The element in this module participate in such a coordination by obeying to the generic pipeline-wide HAL access negotiation rules described in this section.

DVB Subtitle Decoder Element

The DVB Subtitle Decoder Element capable of decoding DVB Subtitles streams in accordance to the ETSI EN 300 734 specification.

Class Properties

Name DVB Subtitle Decoder Descriptor
Version1
Interface Name IElementDescriptor
BindingC++

Element Descriptor

Name DVB Subtitle Decoder
TypeSink
Priority500
Input Formats MPEG-2/Transport Stream/DVB Subtitle
Output Formats (none)

Metadata

Key Input Output
PES_STARTRequiredReleased
_ActiveAudioStreamRequiredPublished
_PlaybackModeRequiredPublished

Theory of Operation

On ISink::Activate(), it opens the HAI Overlay resource instance 0 (zero) in exclusive mode. The HAI resource is closed on ISink::Deactivate().

The element decodes all PES packets having the stream_id field set to private_stream_1 (0xbd). When a subtitles bitmap is decoded, it is rendered on the HAL Overlay at the right moment in the video playback. All timing issues are handled by the HAI TimeStamp mechanism.

The element simply ignores all calls to Block() and Unblock() methods in the ISink interface, since the subtitles should just freeze in their current position when the stream is blocked (i.e. paused). When the element receives a call to ISink::Flush() it will release all segments pending on the input pad. No operation is issued on any HAI interface at this stage.