MythTV master
Macros | Typedefs | Enumerations | Functions | Variables
cc708decoder.cpp File Reference
#include <cstdio>
#include <cstdlib>
#include "libmythbase/mythlogging.h"
#include "captions/cc708reader.h"
#include "captions/cc708decoder.h"
Include dependency graph for cc708decoder.cpp:

Go to the source code of this file.

Macros

#define LOC   QString("CC708: ")
 
#define DEBUG_CAPTIONS   0
 
#define DEBUG_CC_SERVICE   0
 
#define DEBUG_CC_SERVICE_2   0
 
#define DEBUG_CC_SERVICE_BLOCK   0
 
#define DEBUG_CC_RAWPACKET   0
 
#define DEBUG_CC_VALIDPACKET   0
 
#define DEBUG_CC_DECODE   0
 
#define DEBUG_CC_PARSE   0
 
#define SEND_STR
 

Typedefs

using cc_table = std::array< const uint16_t, 0x60 >
 

Enumerations

enum  kCCTypes : std::uint8_t { NTSC_CC_f1 = 0 , NTSC_CC_f2 = 1 , DTVCC_PACKET_DATA = 2 , DTVCC_PACKET_START = 3 }
 
enum  C0 : std::uint8_t {
  NUL = 0x00 , ETX = 0x03 , BS = 0x08 , FF = 0x0C ,
  CR = 0x0D , HCR = 0x0E , EXT1 = 0x10 , P16 = 0x18
}
 
enum  C1 : std::uint8_t {
  CW0 =0x80 , CW1 =0x81 , CW2 =0x82 , CW3 =0x83 ,
  CW4 =0x84 , CW5 =0x85 , CW6 =0x86 , CW7 =0x87 ,
  CLW =0x88 , DSW =0x89 , HDW =0x8A , TGW =0x8B ,
  DLW =0x8C , DLY =0x8D , DLC =0x8E , RST =0x8F ,
  SPA =0x90 , SPC =0x91 , SPL =0x92 , SWA =0x97 ,
  DF0 =0x98 , DF1 =0x99 , DF2 =0x9A , DF3 =0x9B ,
  DF4 =0x9C , DF5 =0x9D , DF6 =0x9E , DF7 =0x9F
}
 

Functions

static void parse_cc_packet (CC708Reader *cb_cbs, CaptionPacket *pkt, cc708_seen_times &last_seen)
 
static void append_character (CC708Reader *cc, uint service_num, short ch)
 
static void parse_cc_service_stream (CC708Reader *cc, uint service_num)
 
static int handle_cc_c0_ext1_p16 (CC708Reader *cc, uint service_num, int i)
 
static int handle_cc_c1 (CC708Reader *cc, uint service_num, int i)
 
static int handle_cc_c2 (CC708Reader *cc, uint service_num, int i)
 
static int handle_cc_c3 (CC708Reader *cc, uint service_num, int i)
 
static bool rightsize_buf (CC708Reader *cc, uint service_num, uint block_size)
 
static void append_cc (CC708Reader *cc, uint service_num, const unsigned char *blk_buf, int block_size)
 

Variables

const std::array< const std::string, 4 > cc_types
 
const cc_table CCtableG0
 
const cc_table CCtableG1
 
const cc_table CCtableG2
 
const cc_table CCtableG3
 

Macro Definition Documentation

◆ DEBUG_CAPTIONS

#define DEBUG_CAPTIONS   0

Definition at line 13 of file cc708decoder.cpp.

◆ DEBUG_CC_DECODE

#define DEBUG_CC_DECODE   0

Definition at line 19 of file cc708decoder.cpp.

◆ DEBUG_CC_PARSE

#define DEBUG_CC_PARSE   0

Definition at line 20 of file cc708decoder.cpp.

◆ DEBUG_CC_RAWPACKET

#define DEBUG_CC_RAWPACKET   0

Definition at line 17 of file cc708decoder.cpp.

◆ DEBUG_CC_SERVICE

#define DEBUG_CC_SERVICE   0

Definition at line 14 of file cc708decoder.cpp.

◆ DEBUG_CC_SERVICE_2

#define DEBUG_CC_SERVICE_2   0

Definition at line 15 of file cc708decoder.cpp.

◆ DEBUG_CC_SERVICE_BLOCK

#define DEBUG_CC_SERVICE_BLOCK   0

Definition at line 16 of file cc708decoder.cpp.

◆ DEBUG_CC_VALIDPACKET

#define DEBUG_CC_VALIDPACKET   0

Definition at line 18 of file cc708decoder.cpp.

◆ LOC

#define LOC   QString("CC708: ")

Definition at line 11 of file cc708decoder.cpp.

◆ SEND_STR

#define SEND_STR
Value:
do { \
if (cc->m_tempStrSize[service_num]) \
{ \
cc->TextWrite(service_num, \
cc->m_tempStr[service_num], \
cc->m_tempStrSize[service_num]); \
cc->m_tempStrSize[service_num] = 0; \
} \
} while (false)

Definition at line 124 of file cc708decoder.cpp.

Typedef Documentation

◆ cc_table

using cc_table = std::array<const uint16_t, 0x60>

Definition at line 111 of file cc708decoder.cpp.

Enumeration Type Documentation

◆ C0

enum C0 : std::uint8_t
Enumerator
NUL 
ETX 
BS 
FF 
CR 
HCR 
EXT1 
P16 

Definition at line 91 of file cc708decoder.cpp.

◆ C1

enum C1 : std::uint8_t
Enumerator
CW0 
CW1 
CW2 
CW3 
CW4 
CW5 
CW6 
CW7 
CLW 
DSW 
HDW 
TGW 
DLW 
DLY 
DLC 
RST 
SPA 
SPC 
SPL 
SWA 
DF0 
DF1 
DF2 
DF3 
DF4 
DF5 
DF6 
DF7 

Definition at line 103 of file cc708decoder.cpp.

◆ kCCTypes

enum kCCTypes : std::uint8_t
Enumerator
NTSC_CC_f1 
NTSC_CC_f2 
DTVCC_PACKET_DATA 
DTVCC_PACKET_START 

Definition at line 22 of file cc708decoder.cpp.

Function Documentation

◆ append_cc()

static void append_cc ( CC708Reader cc,
uint  service_num,
const unsigned char *  blk_buf,
int  block_size 
)
static

Definition at line 607 of file cc708decoder.cpp.

Referenced by parse_cc_packet().

◆ append_character()

static void append_character ( CC708Reader cc,
uint  service_num,
short  ch 
)
static

Definition at line 717 of file cc708decoder.cpp.

Referenced by handle_cc_c0_ext1_p16(), and parse_cc_service_stream().

◆ handle_cc_c0_ext1_p16()

static int handle_cc_c0_ext1_p16 ( CC708Reader cc,
uint  service_num,
int  i 
)
static

Definition at line 311 of file cc708decoder.cpp.

Referenced by parse_cc_service_stream().

◆ handle_cc_c1()

static int handle_cc_c1 ( CC708Reader cc,
uint  service_num,
int  i 
)
static

Definition at line 380 of file cc708decoder.cpp.

Referenced by parse_cc_service_stream().

◆ handle_cc_c2()

static int handle_cc_c2 ( CC708Reader cc,
uint  service_num,
int  i 
)
static

Definition at line 516 of file cc708decoder.cpp.

Referenced by handle_cc_c0_ext1_p16().

◆ handle_cc_c3()

static int handle_cc_c3 ( CC708Reader cc,
uint  service_num,
int  i 
)
static

Definition at line 543 of file cc708decoder.cpp.

Referenced by handle_cc_c0_ext1_p16().

◆ parse_cc_packet()

static void parse_cc_packet ( CC708Reader cb_cbs,
CaptionPacket pkt,
cc708_seen_times last_seen 
)
static

Definition at line 632 of file cc708decoder.cpp.

Referenced by CC708Decoder::decode_cc_data().

◆ parse_cc_service_stream()

static void parse_cc_service_stream ( CC708Reader cc,
uint  service_num 
)
static

Definition at line 135 of file cc708decoder.cpp.

Referenced by append_cc().

◆ rightsize_buf()

static bool rightsize_buf ( CC708Reader cc,
uint  service_num,
uint  block_size 
)
static

Definition at line 571 of file cc708decoder.cpp.

Referenced by append_cc().

Variable Documentation

◆ cc_types

const std::array<const std::string, 4> cc_types
Initial value:
=
{
"NTSC line 21 field 1 closed captions"
"NTSC line 21 field 2 closed captions"
"DTVCC Channel Packet Data"
"DTVCC Channel Packet Start"
}

Definition at line 30 of file cc708decoder.cpp.

◆ CCtableG0

const cc_table CCtableG0
Initial value:
=
{
' ', '!','\"', '#', '$', '%', '&', '\'',
'(', ')', '*', '+', ',', '-', '.', '/',
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '[', '\\',']', '^', '_',
'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '{', '|', '}', '~', 0x266a,
}

Definition at line 743 of file cc708decoder.cpp.

Referenced by parse_cc_service_stream().

◆ CCtableG1

const cc_table CCtableG1

Definition at line 763 of file cc708decoder.cpp.

Referenced by parse_cc_service_stream().

◆ CCtableG2

const cc_table CCtableG2

Definition at line 798 of file cc708decoder.cpp.

Referenced by handle_cc_c0_ext1_p16().

◆ CCtableG3

const cc_table CCtableG3
Initial value:
=
{
'#',
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
}

Definition at line 847 of file cc708decoder.cpp.

Referenced by handle_cc_c0_ext1_p16().