/* * libzvbi -- Sliced VBI data * * Copyright (C) 2000, 2001 Michael H. Schimek * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. */ /* $Id: sliced.h,v 1.11 2008-02-24 14:17:02 mschimek Exp $ */ #ifndef SLICED_H #define SLICED_H #ifdef __cplusplus extern "C" { #endif /* Public */ #include /** * @addtogroup Sliced Sliced VBI data * @ingroup Raw * @brief Definition of sliced VBI data. * * The output of the libzvbi raw VBI decoder, and input to the data * service decoder, is VBI data in binary format as defined in this * section. It is similar to the output of hardware VBI decoders * and VBI data transmitted in digital TV streams. */ /** * @name Data service symbols * @ingroup Sliced * @{ */ /** * @anchor VBI_SLICED_ * No data service, blank vbi_sliced structure. */ #define VBI_SLICED_NONE 0 /** * Unknown data service (vbi_dvb_demux). * @since 0.2.10 */ #define VBI_SLICED_UNKNOWN 0 /** * Antiope a.k.a. Teletext System A * * Reference: ITU-R BT.653 * "Teletext Systems" * * vbi_sliced payload: Last 37 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_ANTIOPE 0x00002000 /** * Synonym of VBI_SLICED_ANTIOPE. * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_A 0x00002000 #define VBI_SLICED_TELETEXT_B_L10_625 0x00000001 #define VBI_SLICED_TELETEXT_B_L25_625 0x00000002 /** * Teletext System B for 625 line systems * * Note this is separated into Level 1.0 and Level 2.5+ since the latter * permits occupation of scan line 6 which is frequently out of * range of raw VBI capture drivers. Clients should request decoding of both, * may then verify Level 2.5 is covered. vbi_sliced id can be * VBI_SLICED_TELETEXT_B, _B_L10_625 or _B_L25_625 regardless of line number. * * Reference: EN 300 706 * "Enhanced Teletext specification", * ITU-R BT.653 "Teletext Systems" * * vbi_sliced payload: Last 42 of the 45 byte Teletext packet, that is * without clock run-in and framing code, lsb first transmitted. */ #define VBI_SLICED_TELETEXT_B (VBI_SLICED_TELETEXT_B_L10_625 | \ VBI_SLICED_TELETEXT_B_L25_625) /** * Synonym of VBI_SLICED_TELETEXT_B. * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_B_625 VBI_SLICED_TELETEXT_B /** * Teletext System C for 625 line systems * * Reference: ITU-R BT.653 * "Teletext Systems" * * vbi_sliced payload: Last 33 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_C_625 0x00004000 /** * Teletext System D for 625 line systems * * Reference: ITU-R BT.653 * "Teletext Systems" * * vbi_sliced payload: Last 34 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_D_625 0x00008000 /** * Video Program System * * Reference: ETS 300 231 * "Specification of the domestic video Programme * Delivery Control system (PDC)", * IRT 8R2 "Video-Programm-System (VPS)". * * vbi_sliced payload: Byte number 3 to 15 according to ETS 300 231 * Figure 9, lsb first transmitted. */ #define VBI_SLICED_VPS 0x00000004 /** * Pseudo-VPS signal transmitted on field 2 * * vbi_sliced payload: 13 bytes. * * @since 0.2.10 */ #define VBI_SLICED_VPS_F2 0x00001000 #define VBI_SLICED_CAPTION_625_F1 0x00000008 #define VBI_SLICED_CAPTION_625_F2 0x00000010 /** * Closed Caption for 625 line systems * * Note this is split into field one and two services since for basic * caption decoding only field one is required. vbi_sliced id can be * VBI_SLICED_CAPTION_625, _625_F1 or _625_F2 regardless of line number. * * Reference: EIA 608 * "Recommended Practice for Line 21 Data Service". * * vbi_sliced payload: First and second byte including parity, * lsb first transmitted. */ #define VBI_SLICED_CAPTION_625 (VBI_SLICED_CAPTION_625_F1 | \ VBI_SLICED_CAPTION_625_F2) /** * Wide Screen Signalling for 625 line systems * * Reference: EN 300 294 * "625-line television Wide Screen Signalling (WSS)". * * vbi_sliced payload: * ``` * Byte 0 1 * msb lsb msb lsb * bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 8 * ``` * according to EN 300 294, Table 1, lsb first transmitted. */ #define VBI_SLICED_WSS_625 0x00000400 #define VBI_SLICED_CAPTION_525_F1 0x00000020 #define VBI_SLICED_CAPTION_525_F2 0x00000040 /** * Closed Caption for 525 line systems (NTSC). * * Note this is split into field one and two services since for basic * caption decoding only field one is required. vbi_sliced id can be * VBI_SLICED_CAPTION_525, _525_F1 or _525_F2 regardless of line number. * * VBI_SLICED_CAPTION_525 also covers XDS (Extended Data Service), * V-Chip data and ITV / WebTV data. * * Reference: EIA 608 * "Recommended Practice for Line 21 Data Service". * * vbi_sliced payload: First and second byte including parity, * lsb first transmitted. */ #define VBI_SLICED_CAPTION_525 (VBI_SLICED_CAPTION_525_F1 | \ VBI_SLICED_CAPTION_525_F2) /** * Closed Caption at double bit rate for 525 line systems. * * Reference: ? * * vbi_sliced payload: First to fourth byte including parity bit, * lsb first transmitted. */ #define VBI_SLICED_2xCAPTION_525 0x00000080 /** * Teletext System B for 525 line systems * * Reference: ITU-R BT.653 * "Teletext Systems" * * vbi_sliced payload: Last 34 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_B_525 0x00010000 /** * North American Basic Teletext Specification * a.k.a. Teletext System C for 525 line systems * * Reference: EIA-516 * "North American Basic Teletext Specification (NABTS)", * ITU-R BT.653 "Teletext Systems" * * vbi_sliced payload: Last 33 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_NABTS 0x00000100 /** * Synonym of VBI_SLICED_NABTS. * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_C_525 0x00000100 /** * Misdefined. * * vbi_sliced payload: 34 bytes. * * @deprecated * This service was misdefined. * Use VBI_SLICED_TELETEXT_B_525 or VBI_SLICED_TELETEXT_D_525 in new code. */ #define VBI_SLICED_TELETEXT_BD_525 0x00000200 /** * Teletext System D for 525 line systems * * Reference: ITU-R BT.653 * "Teletext Systems" * * vbi_sliced payload: Last 34 bytes, without clock run-in and * framing code, lsb first transmitted. * * @since 0.2.10 */ #define VBI_SLICED_TELETEXT_D_525 0x00020000 /** * Wide Screen Signalling for NTSC Japan * * Reference: EIA-J CPR-1204 * * vbi_sliced payload: * ``` * Byte 0 1 2 * msb lsb msb lsb msb lsb * bit 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 x x x x 19 18 17 16 * ``` */ #define VBI_SLICED_WSS_CPR1204 0x00000800 /** * No actual data service. This symbol is used to request capturing * of all PAL/SECAM VBI data lines from the libzvbi driver interface, * as opposed to just those lines used to transmit the requested * data services. */ #define VBI_SLICED_VBI_625 0x20000000 /** * No actual data service. This symbol is used to request capturing * of all NTSC VBI data lines from the libzvbi driver interface, * as opposed to just those lines used to transmit the requested * data services. */ #define VBI_SLICED_VBI_525 0x40000000 /** @} */ typedef unsigned int vbi_service_set; /** * @ingroup Sliced * @brief This structure holds one scan line of sliced vbi data. * * For example the contents of NTSC line 21, two bytes of Closed Caption * data. Usually an array of vbi_sliced is used, covering all * VBI lines of the two fields of a video frame. */ typedef struct { /** * A @ref VBI_SLICED_ symbol identifying the data service. Under circumstances * (see VBI_SLICED_TELETEXT_B) this can be a set of VBI_SLICED_ symbols. */ uint32_t id; /** * Source line number according to the ITU-R line numbering scheme, * a value of @c 0 if the exact line number is unknown. Note that some * data services cannot be reliable decoded without line number. * * @image html zvbi_625.gif "ITU-R PAL/SECAM line numbering scheme" * @image html zvbi_525.gif "ITU-R NTSC line numbering scheme" */ uint32_t line; /** * The actual payload. See the documentation of @ref VBI_SLICED_ symbols * for details. */ uint8_t data[56]; } vbi_sliced; /** * @addtogroup Sliced * @{ */ extern const char * vbi_sliced_name (vbi_service_set service) _vbi_const; extern unsigned int vbi_sliced_payload_bits (vbi_service_set service) _vbi_const; /** @} */ /* Private */ #ifdef __cplusplus } #endif #endif /* SLICED_H */ /* Local variables: c-set-style: K&R c-basic-offset: 8 End: */