This module contains an element capable of decoding Teletext subtitles in accordance to the ETSI EN 300 706 specification. The element presents the decoded images on the video overlay provided by the Hardware Abstraction Layer (HAL) through the Hardware Abstraction Interface (HAI).
Module Name | Streamer Teletext Subtitle Elements |
---|---|
File Name | libdvbteletextsubelement.so |
Class Count | 1 |
DVB Teletext Subtitle Decoder Element.
DVB Teletext Subtitle Decoder at end of typical pipeline.
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.
The DVB Teletext Subtitle Decoder Element capable of decoding EBU Teletext subtitles in accordance to the ETSI EN 300 706 specification. The EBU Teletext data stream is fetched from the PES stream in accordance to ETSI EN 300 472. The element depends on the teletext subtitle page information being previously decoded from the teletext_descriptor of a DVB encoded stream (ETSI EN 300 468).
Name | DVB Teletext Subtitle Decoder Descriptor |
---|---|
Version | 1 |
Interface Name | IElementDescriptor |
Binding | C++ |
Name | DVB Teletext Subtitle Decoder |
---|---|
Type | Sink |
Priority | 500 |
Input Formats | MPEG-2/Transport Stream/Teletext Subtitle |
Output Formats | (none) |
Key | Input | Output |
---|---|---|
PES_START | Required | Released |
_ActiveSubtitleStream | Required | Published |
_PlaybackMode | Required | Published |
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 page is decoded, it is rendered on the HAL Overlay immediately. The teletext stream does not contain any time synchronization information, so the subtitles are rendered on the overlay as soon as their content changes.
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.