DTV Closed Captioning EIA-708-B & CEA-608-B
CAPstack is BitRouter’s implementation of the digital TV closed captioning standard specified by EIA-708-B and mandated by the FCC order number “FCC 00-259”. CAPstack also implements CEA-608-B to process 608-B data carried within the 708-B stream or within line 21 of the VBI. CAPstack provides a robust and portable solution for implementing the software stack needed by a TV receiver to process and display closed captioning data. The implementation meets the following high level goals:
The complete implementation is provided in full source code form.
- CAPstack uses BitRouter’s kernel abstraction layer which contains approximately thirty-five OS calls and can be ported to a new OS with minimal effort. A hardware abstraction layer is used to port to any target silicon. CAPstack works with Linux and most major real-time operating systems.
- The implementation provides a font engine interface to allow any commercial font engine to be used.
- The implementation is backed by our years of experience designing software for commercial DTV sets. It is tested using comprehensive test suites developed by BitRouter and Sarnoff’s ATSC DTVCC test streams.
- An API is provided to allow applications to change font and display settings as per the FCC mandate.
EIA-708-B offers a data rate of 9600 bps as opposed to 960 bps offered by EIA-608 for analog. For picture/text synchronization purposes a data channel is allocated on a frame by frame basis such that 1200 bytes are transported per second. 960 bps is allocated for NTSC data and 8640 bps for digital.
CAPstack implements EIA-708-B in a five layer architecture. The yellow and blue blocks, below, are provided by CAPstack. The Font Engine is typically third-party software, although BitRouter can provide the FreeType font engine.
||Extract Picture User Data (PUD) and relevant data out of PMT & EIT
||Reassemble and reorder packets and identify packet boundaries
||Separate services and deliver them to individual service modules in the coding layer. There are 6 standard and 53 extended services. Such as, verbatim/near-verbatim language being spoken, Secondary language, etc.
||Decode CL, GL, CR & GR code sets including C0, C1, G0, G1 & C2, C3, G2, G3
- Caption screen provides the canvas
- Caption window provides the window on the canvas
- Caption pen defines styles and attributes of the text
- Caption text defines how text is directed to different windows
- Caption display synchronization controls the flow and interpretation of commands and caption text within individual service data streams.
The heart of the closed captioning system is the window. Windows contain text. Windows and text have attributes. PMT & EIT (EIT is optional for cable) carry the DTVCC Caption Channel Service Directory. This is described in the caption service descriptor defined by ATSC A/65B.
CAPstack implements a safe-title cell grid of 210 x 75 for 16:9 and 160 x 75 cells for 4:3 displays. This grid is used for window positioning not text positioning. CAPstack implements a TV Systems API to allow a GUI application to override styles and attributes. Optional user controls may consist of caption font size, caption color and caption intensity.
A single service can support a maximum of eight windows and three font size – small, standard & large. Window size may change when a user changes font size. As mandated by FCC 00-259, all eight fonts specified in EIA-708-B are supported. Each of the eight windows have an overlap priority. Each window has nine anchor points. Window expansion, when font size is changed, happens based on the defined anchor points. Each window has “lock row” and “lock column” parameters. These define whether the receiver can adjust the number of rows or columns.
Rendering parameters include print direction, scroll direction, cursor movement & carriage return behavior. The display-effect parameter controls include snap, fade & wipe. Windows have colors & borders. Borders can be raised, depressed, uniform or drop-shadowed (left or right).
Colors, text-painting and effects can be customized. Predefined styles can be hard stored in the receiver as defaults in order to conserve bandwidth. This definition is dynamic on a per program basis.
Pens have styles, spacing & font styles. Fonts can be subscript, superscript, normal, italics or underlined. Foreground color & opacity of characters can be defined as transparent, translucent, solid or flashing. Characters are placed in background boxes which have their own color and opacity. Edges have same opacity as a character but their color can be defined separately. Edges can be missing, raised, depressed, uniform or drop-shadowed. Caption text can have function tags like dialog, speaker id, electronically reproduced voice, dialog in non primary language, voiceover, expletive, etc. Character attributes can be overridden to suit the viewer’s preferences.
Delay and delay-cancel commands are allowed for pre-sending information.
CAPstack is a component of BitRouter’s TVrefpak. Information about TVrefpak and its other components can be found at www.bitrouter.com/products/tvrefpak.htm. CAPstack and all other stacks included in TVrefpak are standalone individual products.