Closed Caption Disassembly Documentation: XDS

Extended Data Service is transmitted on channel CC3 (also known as channel 1 of Line 284). Its most common consumer use is to provide the program ratings used by the V-chip.

Each XDS packet consists of a Class (1 byte), a Type (1 byte), and Content (up to 32 bytes), followed by 0x40 if necessary to keep the total number of bytes even, followed by 0x8f and then a 1-byte checksum (computed so that the sum of all of the bytes in the packet is evenly divisible by 0x80, 128 decimal; also note that all bytes have the high bit set or cleared in order to have an odd number of bits set in each byte, and all non-character data bytes have bit 6 set as well). NOTE: CCASDI will compute the checksum when going from CCD to SCC, but needs to know that the packet will not be continued, so if you wish to take advantage of this, be sure to end the XDS packet with \C.

XDS is designed to be fit in between other caption data; for that reason, XDS packets can be interrupted at any time and later resumed.

XDS types are grouped into seven classes. The Current class describes the program currently being transmitted. The Future class has all of the same types as the Current class and describes any program to be transmitted in the future on the same channel. The Channel class describes the channel being tuned. The Miscellaneous class is for information that applies to all channels. The Public Service class is used for emergency messages that need to supercede all other classes. The Reserved class currently has no function. Finally, the Undefined class is for any custom use the decoder manufacturer wishes.

Here is a list of types by class, followed by their definitions:

CURRENT AND FUTURE CLASSES
Start Time/Program ID
Program Length/Time in Show
Program Name (shows example of packet interruption for Current Class)
Program Types (shows example of packet interruption for Future Class)
Program Rating (V-Chip)
Audio Streams
Caption Streams
Copy Generation Management System
Program Aspect Ratio
Program Data (an optional combination type)
Miscellaneous Data (an optional combination type)
Program Description (actually 8 types, for 8 lines of data)
CHANNEL CLASS
Network Name (shows example of packet interruption for Channel Class)
Network Call Letters
Channel Tape Delay
Transmission Signal Identifier
MISCELLANEOUS CLASS
Time of Day
Impulse Capture ID (used for programming VCRs to record a show)
Supplemental Data Location
Local Time Zone
Out of Band Channel
Channel Map Pointer
Channel Map Header
Channel Map (shows example of packet interruption for Miscellaneous Class)
PUBLIC SERVICE CLASS
National Weather Service Bulletin
National Weather Service Message (shows example of packet interruption for Public Service Class)
RESERVED CLASS
UNDEFINED CLASS
ALL CLASSES
Undocumented Type

CURRENT AND FUTURE CLASSES
Start codes for Current and Future classes are 0x01 and 0x83.
Continue codes are 0x02 and 0x04.

Start Time/Program ID
Example CCD:
00:01:01:00	{XDS Cs ST 18:30D ZTA Dec 06 \C5d}
           	     |   |  |  || |||  |   |   |
           	     1   2  3  45 678  9   1   1
           	                           0   1
SCC:
00:01:01:00	0101 5ef2 467c 8f5d
FieldNameExplanation
1Class StartClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Start Time/Program ID Type (byte 2 = 0x01).
3HourHour in UTC when program starts (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time), from 00 (Midnight) to 23 (11 PM) (byte 4 + 0x40 + Field 5 below).
4MinuteMinute program starts (usually 0 or 30), from 00 to 59 (byte 3 + 0x40).
5DSTCurrently in Daylight Savings Time, or Standard Time (add 0x20 to byte 4 if D). This field is usually ignored by the decoder.
6Zero SecondsThis is either _ for unknown seconds or Z for zero seconds (add 0x20 to byte 6 if Z).
7Tape DelayProgram is tape delayed (T) or is not (N) for Pacific and Mountain time zones (add 0x10 to byte 6 if T). See the Channel Tape Delay packet for the size of the delay.
8Leap DayIf this is February 29th, then this is L for Leap Day, otherwise, this is A (add 0x20 to byte 5 if L). This field is usually ignored by the decoder.
9MonthMonth program starts: January, February, March, April, May, June, July, August, September, October, November or December (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for Jan through Dec, then add in Fields 6 and 7 above).
10DayDay of Month, from 1 to 31 (byte 5 + 0x40 + Field 8 above).
11ChecksumChecksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Length/Time in Show
Example CCD:
00:01:02:00	{XDS Fs PL 02:30 01:45:30 \C80}
           	      |  |  |  |  |  |  |   |
           	      1  2  3  4  5  6  7   8
SCC:
00:01:02:00	8302 5ec2 6dc1 5e40 8f80
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Length/Time in Show Type (byte 2 = 0x02).
3Hours LongHour portion of Program Length, from 00 to 63 (byte 4 + 0x40).
4Minutes LongMinute portion of Program Length, from 00 to 59 (byte 3 + 0x40).
5Hours Elapsed(Optional) Hour portion of Time Elapsed in Show, from 00 to 63 (byte 6 + 0x40).
6Minutes Elapsed(Optional unless Hours Elapsed is used) Minute portion of Time Elapsed in Show, from 00 to 59 (byte 5 + 0x40).
7Seconds Elapsed(Optional even when Hours Elapsed is used) Seconds portion of Time Elapsed in Show, from 00 to 59 (but only updated every 8 seconds) (byte 7 + 0x40). If this field is used, it must be followed by the filler byte 0x40.
8ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Name
Example CCD:
CHANNEL 3
00:01:03:00	{XDS Cs PN Days of }
           	      |  |     |
           	      1  2     3
00:01:03:05	{EDM}{EDM}
00:01:03:07	{XDS Cc PN Our Lives \Cae}
           	      |  |     |       |
           	      N N+1    3       4
SCC:
00:01:03:00	0183 c461 7973 20ef e620

00:01:03:05	152c 152c

00:01:03:07	0283 4f75 f220 4ce9 76e5 7340 8fae
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Name Type (byte 2 = 0x83).
3Program NameThe name of the program (bytes 3 and up, from 2 to 32 characters, using closed caption character set).
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Types
Example CCD:
00:01:04:00	{XDS Fs PT Entertainment Drama Repeat Romance Series Soap_Opera \Cc8}
           	      |  |      |          |      |      |       |        |       |
           	      1  2      3          3      3      3       3        3       4
SCC:
00:01:04:00	8304 a1bc 6e70 f275 8fc8
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Types Type (byte 2 = 0x04).
3CodeFrom 2 to 32 codes describing the program (bytes 3 and up, using the following lookup:)
CodeProgram Type
0x20Education
0xa1Entertainment
0xa2Movie
0x23News
0xa4Religious
0x25Sports
0x26Other
0xa7Action
0xa8Advertisement
0x29Animated
0x2aAnthology
0xabAutomobile
0x2cAwards
0xadBaseball
0xaeBasketball
0x2fBulletin
0xb0Business
0x31Classical
0x32College
0xb3Combat
0x34Comedy
0xb5Commentary
0xb6Concert
0x37Consumer
0x38Contemporary
0xb9Crime
0xbaDance
0x3bDocumentary
0xbcDrama
0x3dElementary
0x3eErotica
0xbfExercise
0x40Fantasy
0xc1Farm
0xc2Fashion
0x43Fiction
0xc4Food
0x45Football
0x46Foreign
0xc7Fund-Raiser
0xc8Game/Quiz
0x49Garden
0x4aGolf
0xcbGovernment
0x4cHealth
0xcdHigh_School
0xceHistory
0x4fHobby
CodeProgram Type
0xd0Hockey
0x51Home
0x52Horror
0xd3Information
0x54Instruction
0xd5International
0xd6Interview
0x57Language
0x58Legal
0xd9Live
0xdaLocal
0x5bMath
0xdcMedical
0x5dMeeting
0x5eMilitary
0xdfMini-Series
0xe0Music
0x61Mystery
0x62National
0xe3Nature
0x64Police
0xe5Politics
0xe6Premiere
0x67Pre-Recorded
0x68Product
0xe9Professional
0xeaPublic
0x6bRacing
0xecReading
0x6dRepair
0x6eRepeat
0xefReview
0x70Romance
0xf1Science
0xf2Series
0x73Service
0xf4Shopping
0x75Soap_Opera
0x76Special
0xf7Suspense
0xf8Talk
0x79Technical
0x7aTennis
0xfbTravel
0x7cVariety
0xfdVideo
0xfeWeather
0x7fWestern
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Rating (V-Chip)
Example CCD:
00:01:05:00	{XDS Cs PR TPG TV-14 DL_V \C16}
           	      |  |  |    |   ||||   |
           	      1  2  3    4   5678   9
SCC:
00:01:05:00	0185 686d 8f16
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Rating Type (byte 2 = 0x85).
3SystemThe Rating System used: MPAA for Motion Picture Association of America (U.S. movie ratings), TPG for Television Parental Guidelines (U.S. television ratings), CE for Canada English, or CF for Canada Français (add 0x00, 0x08, 0x18, or 0x38 to byte 3 for MPAA, TPG, CE, or CF).
4RatingThe actual Rating, explained below:
MPAA Ratings
RatingExplanationByte 3Byte 4
GGeneral Audiences - All ages admitted 0x410x40
PGParental Guidance Suggested - Some material may not be suitable for children 0x420x40
PG-13Parents Strongly Cautioned - Some material may be inappropriate for children under 13 0x430x40
RRestricted - Under 17 requires accompanying parent or adult guardian 0x440x40
NC-17No one 17 and under admitted 0x450x40
XNo one under 17 admitted (no longer used) 0x460x40
NRNot Rated 0x470x40
TPG Ratings
RatingExplanationByte 3Byte 4
NoneNo rating (no content advisory) 0x400x40
TV-YAll Children (no content advisory) 0x400x41
TV-Y7Directed to Older Children (V = Fantasy Violence) 0x400x42
TV-GGeneral Audience (no content advisory) 0x400x43
TV-PGParental Guidance Suggested (V = moderate Violence, S=some Sexual situations, L=infrequent coarse Language, D=some suggestive Dialog) 0x400x44
TV-14Parents Strongly Cautioned (V = intense Violence, S=intense Sexual situations, L=strong coarse Language, D=intensely suggestive Dialog) 0x400x45
TV-MAMature Audience Only (V = graphic Violence, S=explicit Sexual activity, L=crude indecent Language) 0x400x46
NoneNo rating (no content advisory) 0x400x47
CE Ratings
RatingExplanationByte 3Byte 4
EExempt 0x400x40
CChildren 0x400x41
C8+Children 8 and older 0x400x42
GGeneral audience 0x400x43
PGParental Guidance 0x400x44
14+Viewers 14 and older 0x400x45
18+Adult programming 0x400x46
CF Ratings
RatingExplanationByte 3Byte 4
EExemptées 0x400x40
GGénéral 0x400x41
8+Général - Déconseillé aux jeunes enfants 0x400x42
13+Ne convient pas aux moins de 13 ans 0x400x43
16+Ne convient pas aux moins de 16 ans 0x400x44
18+Réeservée aux adultes 0x400x45
5Dialog Advisory(TPG System only) Warns that program contains sexually-suggestive Dialog (add 0x20 to byte 3).
6Language Advisory(TPG System only) Warns that program contains coarse Language (i.e. swearing) (add 0x08 to byte 4).
7Sex Advisory(TPG System only) Warns that program contains Sexual situations (add 0x10 to byte 4).
8Violence Advisory(TPG System only) Warns that program contains Violent content (add 0x20 to byte 4).
9ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Audio Streams
Example CCD:
00:01:06:00	{XDS Fs AS Stereo English DAS Deutsch \C3b}
           	      |  |    |      |     |     |      |
           	      1  2    3      4     5     6      7
SCC:
00:01:06:00	8386 cb62 8f3b
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Audio Streams Type (byte 2 = 0x86).
3Main TypeMain Audio Type: Unknown, Mono, Simulated (for Simulated Stereo), Stereo, Surround (for Surround Stereo), Data (for Data Service), Other or None (byte 3 = 0x40 for Unknown, 0x41 for Mono, and so on up to 0x47 for None).
4Main LanguageLanguage of Main Audio Stream: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 3 for Unknown through None).
5Second TypeSecond Audio Type (NTSC is capable of supporting two simultaneous audio streams, selectable by the TV remote control): Unknown, Mono, DAS (Descriptive Audio Service for the blind), Non-Program (i.e. unrelated to the video content), FX (for Special Effects), Data (for Data Service), Other or None (byte 4 = 0x40 for Unknown, 0x41 for Mono, and so on up to 0x47 for None).
6Second LanguageLanguage of Second Audio Stream: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 4 for Unknown through None).
7ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Caption Streams
Example CCD:
00:01:07:00	{XDS Cs CS CC1 English CC2 Español T1 Deutsch T2 Other \Cab}
           	      |  |  |     |     |     |     |    |     |   |     |
           	      1  2  3     4     3     4     3    4     3   4     5
SCC:
00:01:07:00	0107 c852 6143 8fab
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Caption Streams Type (byte 2 = 0x07).
3StreamName of the Stream being described: CC1 through CC4 or T1 through T4 (bytes 3 and up = 0x40, 0x42, 0x44, 0x46 for CC1 through CC4 or 0x41, 0x43, 0x45, 0x47 for T1 through T4). From 2 to 8 streams can be described.
4Stream LanguageLanguage of the Stream: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte for Unknown through None).
5ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Copy Generation Management System
Example CCD:
00:01:08:00	{XDS Fs CG A02 \C49}
           	      |  | |||   |
           	      1  2 345   6
SCC:
00:01:08:00	8308 5d40 8f49
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Copy Generation Management System Type (byte 2 = 0x08).
3AnalogSource: A for Analog or D for Digital (byte 3 = 0x41 for A or 0x40 for D).
4SCMSSerial Copy-generation Management System: U to allow signal to be copied unlimited times, 0 to instruct digital recording devices to prohibit recording of the signal (automatically adds Content Scrambling System) or 1 to allow signal to be copied with the copy's SCMS set to 0 (add 0x18 to byte 3 if 0 or 0x10 if 1).
5Macrovision(Always N unless SCMS is 0): N for no pseudo-sync pulse in the Vertical Blanking Interval, M for pseudo-sync pulse (called Analog Protection System or Macrovision) with no rapidly-modulated Colorstripe in the Horizontal Blanking Interval, 2 for Macrovision plus 2-line Colorstripe or 4 for Macrovision plus 4-line Colorstripe (add 0x02 to byte 3 if M, 0x04 if 2 or 0x06 if 4).
6ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Aspect Ratio
Example CCD:
00:01:09:00	{XDS Cs AR 30 30 A \C2a}
           	      |  |  |  | |   |
           	      1  2  3  4 5   6
SCC:
00:01:09:00	0189 5e5e c140 8f2a
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Aspect Ratio Type (byte 2 = 0x89).
3TopNumber of Scanlines from top of visible video area (Line 22) to top of active video area (i.e. after any letterboxing), from 0 to 63, with common values given below (byte 3 plus 0x40).
TV RatioVideo RatioTopBottom
4:34:300
16:93030
2.35:15050
16:94:300
16:900
2.35:13030
4BottomNumber of Scanlines from bottom of visible video area (Line 263) to bottom of active video area, from 0 to 63; this is usually the same as Top (see table above) (byte 4 plus 0x40).
5Anamorphic(Optional) Flag for whether 16:9 video has been squeezed to 4:3 ratio (to be "unsqueezed" by 16:9 television sets) (byte 5 = 0x40 for _ or 0xc1 for A).
6ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Data
Example CCD:
00:01:10:00	{XDS Fs PD Movie Drama Sports Romance}
           	      |  |   |     |      |      |
           	      1  2   3     3      3      3
00:01:10:03	{EDM}{EDM}
00:01:10:05	{XDS Fc PD Music PG-13 02:30 01:45 Endless Summer \C97}
           	      |  |   |     |    |  |  |  |        |         |
           	      N N+1  3     4    5  6  7  8        9        10
SCC:
00:01:10:00	838c a2bc 2570

00:01:10:03	152c 152c

00:01:10:05	048c e043 e0c2 6dc1 456e 64ec e573 7320 d375 6d6d e5f2 8f97
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Data Type (byte 2 = 8c).
3CodeExactly 5 codes describing the program (bytes 3 through 7, using the lookup from Program Types above).
4RatingMPAA Rating (byte 8, using the Byte 3 lookup from Program Rating above: 0x41 for G, 0x42 for PG, etc).
5Hours LongHour portion of Program Length, from 00 to 60 (byte 10 + 0x40).
6Minutes LongMinute portion of Program Length, from 00 to 59 (byte 9 + 0x40).
7Hours Elapsed(Optional) Hour portion of Time Elapsed in Show, from 00 to 60 (byte 12 + 0x40).
8Minutes Elapsed(Optional unless Hours Elapsed is used) Minute portion of Time Elapsed in Show, from 00 to 59 (byte 11 + 0x40).
9Program NameThe name of the program (bytes 13 and up, up to 22 characters, using closed caption character set).
10ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Miscellaneous Data
Example CCD:
00:01:11:00	{XDS Cs MD 18:30 T Dec 06 Mono English DAS Other}
           	      |  |  |  | |  |   |   |     |     |    |
           	      1  2  3  4 5  6   7   8     9    10   11
00:01:11:04	{EDM}{EDM}
00:01:11:06	{XDS Cc MD CC1 English T1 Other SCIF __ \C38}
           	      |  |  |     |     |   |     |   |   |
           	      N N+1 12   13    12  13    14  15  16 
SCC:
00:01:11:00	010d 5e52 46dc 49f2

00:01:11:04	152c 152c

00:01:11:06	020d c8f1 d343 4946 2020 8f38
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Miscellaneous Data Type (byte 2 = 0d).
3HourHour in UTC when program starts (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time), from 00 (Midnight) to 23 (11 PM) (byte 4 + 0x40).
4MinuteMinute program starts (usually 0 or 30), from 00 to 59 (byte 3 + 0x40).
5DelayProgram is tape delayed (T) or is not (N) for Pacific and Mountain time zones (add 0x10 to byte 6 if T).
6MonthMonth program starts: January, February, March, April, May, June, July, August, September, October, November or December (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for Jan through Dec, then add in Field 5 above).
7DayDay of Month, from 1 to 31 (byte 5 + 0x40).
8Main Audio TypeMain Audio Type: Unknown, Mono, Simulated (for Simulated Stereo), Stereo, Surround (for Surround Stereo), Data (for Data Service), Other or None (byte 7 = 0x40 for Unknown, 0x41 for Mono, and so on up to 0x47 for None).
9Main Audio LanguageLanguage of Main Audio Stream: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 7 for Unknown through None).
10Second Audio TypeSecond Audio Type (NTSC is capable of supporting two simultaneous audio streams, selectable by the TV remote control): Unknown, Mono, DAS (Descriptive Audio Service for the blind), Non-Program (i.e. unrelated to the video content), FX (for Special Effects), Data (for Data Service), Other or None (byte 8 = 0x40 for Unknown, 0x41 for Mono, and so on up to 0x47 for None).
11Second Audio LanguageLanguage of Second Audio Stream: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to byte 8 for Unknown through None).
12Caption StreamNames of the two streams being described: CC1 through CC4 or T1 through T4 (bytes 9 and 10 = 0x40, 0x42, 0x44, 0x46 for CC1 through CC4 or 0x41, 0x43, 0x45, 0x47 for T1 through T4).
13Caption Stream LanguageLanguages of the streams: Unknown, English, Español, Français, Deutsch, Italiano, Other or None (add 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30 or 0x38 to bytes 9 and 10 for Unknown through None).
14Call LettersCall Letters of the Network or Channel, 4 characters (bytes 11 through 14, using closed caption character set).
15Broadcast ChannelBroadcast channel number, from 02 to 69, or __ if no broadcast channel (bytes 15 and 16, converting each digit using closed caption character set; "__" is encoded as two space characters).
16ChecksumChecksum, in hexidecimal (bytes 17 and 18 are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Program Description (up to eight lines)
Example CCD:
00:01:12:00	{XDS Fs D1 Dennis Quaid; }
           	      |  |        |
           	      1  2        3
00:01:12:08	{EDM}{EDM}
00:01:12:10	{XDS Fc D1 Benny "Boom Boom" \C34}
           	      |  |         |            |
           	      N N+1        3            4
SCC:
00:01:12:00	8310 c4e5 6e6e e973 2051 7561 e964 3b20

00:01:12:08	152c 152c

00:01:12:10	0410 c2e5 6e6e 7920 a2c2 efef 6d20 c2ef ef6d a240 8f34
FieldNameExplanation
1ClassClass of Current or Future start (byte 1 = 0x01 for Current start, 0x83 for Future start).
2TypeThe Program Description Type (byte 2 = 0x10, 0x91, 0x92, 0x13, 0x94, 0x15, 0x16 or 0x97 for lines 1, 2, 3, 4, 5, 6, 7 or 8).
3DescriptionFrom 0 to 32 characters describing the program (byte 3 and up, using closed caption character set). Generating a Program Description packet with an empty Description field will create a blank line.
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Current or Future continue, applied at any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).


CHANNEL CLASS
Start code for Channel class is 0x85.
Continue code is 0x86.

Network Name
Example CCD:
00:03:01:00	{XDS Hs NN Sci-Fi Channel}
           	      |  |        |
           	      1  2        3
00:03:01:08	{EDM}{EDM}
00:03:01:10	{XDS Hc NN  Pacific \Cc8}
           	      |  |    |      |      
           	      N N+1   3      4
SCC:
00:03:01:00	8501 d3e3 e9ad 46e9 2043 6861 6e6e e5ec

00:03:01:08	152c 152c

00:03:01:10	8601 20d0 61e3 e9e6 e9e3 8fc8
FieldNameExplanation
1ClassClass of CHannel start (byte 1 = 0x85).
2TypeThe Network Name Type (byte 2 = 0x01).
3NameName of the Network or Channel, from 2 to 32 characters (bytes 3 and up, using closed caption character set).
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of CHannel continue (byte N = 0x86).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Network Call Letters
Example CCD:
00:03:02:00	{XDS Hs NC KCRA 03 \Ce6}
           	      |  |   |   |   |
           	      1  2   3   4   5
SCC:
00:03:02:00	8502 cb43 52c1 b0b3 8fe6
FieldNameExplanation
1ClassClass of CHannel start (byte 1 = 0x85).
2TypeThe Network Call Letters Type (byte 2 = 0x02).
3Call LettersCall Letters of the Channel, 4 letters (bytes 3 through 6, using closed caption character set).
4Broadcast Channel(Optional) Broadcast channel number, from 02 to 69 (bytes 7 and 8, converting each digit using closed caption character set).
5ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of CHannel continue (byte N = 0x86).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Tape Delay
Example CCD:
00:03:03:00	{XDS Hs TD 04:00 \Ce5}
           	      |  |  |  |   |
           	      1  2  3  4   5
SSC:
00:03:03:00	8583 40c4 8fe5
FieldNameExplanation
1ClassClass of CHannel start (byte 1 = 0x85).
2TypeThe Channel Tape Delay Type (byte 2 = 0x83).
3HoursNumber of Hours that channel programming is delayed after live broadcast when T is set in Start Time packet, from 0 to 23 (usually 4 for Pacific time zone) (byte 4 plus 0x40).
4MinutesNumber of additional Minutes that channel programming is delayed after live broadcast when T is set in Start Time packet, from 0 to 59 (usually 0) (byte 3 plus 0x40).
5ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of CHannel continue (byte N = 0x86).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Transmission Signal Identifier
Example CCD:
00:03:04:00	{XDS Hs TS 16e8 \Ccb}
           	      |  |   |    |
           	      1  2   3    4
SCC:
00:03:04:00	8504 c8ce 46c1 8fcb
FieldNameExplanation
1ClassClass of CHannel start (byte 1 = 0x85).
2TypeThe TSID Type (byte 2 = 0x04).
3TSIDHexidecimal ID assigned to this channel, from 0001 to ffff (take digits in reverse order to get bytes 3 - 6, adding 0x40 to each).
4ChecksumChecksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
NClass ContinueClass of CHannel continue (byte N = 0x86).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).


MISCELLANEOUS CLASS
Start code for Miscellaneous class is 0x07.
Continue code is 0x08.

Time of Day
Example CCD:
00:04:01:00	{XDS Ms TM 18:36S ZTA Dec 06 2002 Fri \Cdf}
           	      |  |  |  || |||  |   |   |   |    |
           	      1  2  3  45 678  9   1   1   1    1
           	                           0   1   2    3
SCC:
00:04:01:00	0701 6452 467c 464c 8fdf
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Time of Day Type (byte 2 = 0x01).
3HourHour in UTC (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time; note that date and Day of Week are also UTC), from 00 (Midnight) to 23 (11 PM) (byte 4 plus 0x40, plus Field 5).
4MinuteMinute, from 00 to 59 (byte 3 plus 0x40).
5DSTCurrently in Daylight Savings Time, or Standard Time (add 0x20 to byte 4 if D).
6Zero SecondsThis is either _ for unknown seconds or Z for zero seconds (Time of Day is transmitted every eight seconds, at least by Public Broadcasting System channels in the U.S.) (add 0x20 to byte 6 for Z).
7Tape DelayIs the current program being tape-delayed: T for delayed, S for simulcast (Note that Time of Day is transmitted by the local station, not the national network, which means this signal should always be accurate) (add 0x10 to byte 6 if T).
8Leap DayIf this is February 29th, then this is L for Leap Day, otherwise, this is A (add 0x20 to byte 5 if L).
9MonthMonth: January, February, March, April, May, June, July, August, September, October, November or December (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for Jan through Dec, plus Fields 6 and 7).
10DayDay of Month, from 01 to 31 (byte 5 plus 0x40, plus Field 8).
11YearYear, from 1990 to 2053 (byte 8 minus 1990 plus 0x40).
12WeekdayThe Day of the Week: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday or Saturday (byte 7 = 0xc1, 0x42, 0x43, 0xc4, 0x45, 0x46 or 0xc7 for Sun through Sat).
13ChecksumChecksum, in hexidecimal (bytes 9 and 10 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Impulse Capture ID (used to tell VCRs how long to record a program)
Example CCD:
00:04:02:00	{XDS Ms IC 18:36S ZTA Dec 06 02:30 \Cd0}
           	      |  |  |  || |||  |   |  |  |   |
           	      1  2  3  45 678  9   1  1  1   1
           	                           0  1  2   3
SCC:
00:04:02:00	0702 6452 467c 5ec2 8fd0
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Impulse Capture ID Type (byte 2 = 0x02).
3HourHour in UTC (UTC is London's time zone--subtract four hours to get Eastern Time, eight hours to get Pacific Time; note that date and Day of Week are also UTC), from 00 (Midnight) to 23 (11 PM) to receive program (byte 4 plus 0x40, plus Field 5).
4MinuteMinute, from 00 to 59 to receive program (byte 3 plus 0x40).
5DSTCurrently in Daylight Savings Time, or Standard Time (add 0x20 to byte 4 if D). Ignored by decoder.
6Zero SecondsThis is either _ for unknown seconds or Z for zero seconds (add 0x20 to byte 6 for Z). Ignored by decoder.
7Tape DelayIs the current program being tape-delayed: T for delayed, S for simulcast (add 0x10 to byte 6 if T).
8Leap DayIf this is February 29th, then this is L for Leap Day, otherwise, this is A (add 0x20 to byte 5 if L). Ignored by decoder.
9MonthMonth: January, February, March, April, May, June, July, August, September, October, November or December (byte 6 = 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a or 0x4b for Jan through Dec, plus Fields 6 and 7).
10DayDay of Month, from 01 to 31 (byte 5 plus 0x40, plus Field 8).
11Hours LongHour portion of program length, from 00 to 63 (byte 8 + 0x40).
12Minutes LongMinute portion of program length, from 00 to 59 (byte 7 + 0x40).
13ChecksumChecksum, in hexidecimal (bytes 9 and 10 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Supplemental Data Location
Example CCD:
00:04:03:00	{XDS Ms SD 20.1 18.2 \Ca1}
           	      |  |  | |  | |   |
           	      1  2  3 4  3 4   5
SCC:
00:04:03:00	0783 54f2 8fa1
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Supplemental Data Location Type (byte 2 = 0x83).
3LineScanline in the top Vertical Blanking Interval to find supplemental data, from 10 to 20 (there can be 2 to 32 of these, each including the Field in field 4) (bytes 3 and up plus 0x40).
4FieldField to use, either 1 or 2 (note that, strictly speaking, "Line 10 Field 2" is actually Line 273) (add 0x20 to byte from field 3 if 2).
5ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Local Time Zone
Example CCD:
00:04:04:00	{XDS Ms TZ -08S \Cd6}
           	      |  |   ||   |
           	      1  2   34   5
SCC:
00:04:04:00	0704 d040 8fd6
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Local Time Zone Type (byte 2 = 0x04).
3TZHours to add to UTC (London's Time Zone) to get local time: -4 for Eastern Time, -8 for Pacific Time (24 minus byte 3 plus 0x40).
4DSTEither D if Daylight Savings Time is currently being observed in this time zone, or S if Standard Time is currently being observed (add 0x20 to byte 3 if D).
5ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Out of Band Channel
Example CCD:
00:04:05:00	{XDS Ms OB 0172 \C7c}
           	      |  |   |    |
           	      1  2   3    4
SCC:
00:04:05:00	0740 ecc2 8f7c
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Out of Band Channel Type (byte 2 = 0x40).
3ChannelChannel on which to find out-of-band data, from 1 to 4096 (practically limited to range of 2 to 300 or so); "out-of-band" means there is a second channel associated with this one that carries data on all of its scanlines instead of video and VBI (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map Pointer
Example CCD:
00:04:06:00	{XDS Ms CP 0099 \C85}
           	      |  |   |    |
           	      1  2   3    4
SCC:
00:04:06:00	07c1 e3c1 8f85
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Channel Map Pointer Type (byte 2 = 0xc1).
3Map ChannelChannel where the channel map is being broadcasted (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4ChecksumChecksum, in hexidecimal (bytes 5 and 6 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map Header
Example CCD:
00:04:07:00	{XDS Ms CH 0312 v17 \C5b}
           	      |  |   |   |    |
           	      1  2   3   4    5
SCC:
00:04:07:00	07c2 f8c4 5140 8f5b
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Channel Map Header Type (byte 2 = 0xc1).
3ChannelsNumber of channels that will be mapped in the following Channel Map packets (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4VersionRunning count of how many times this table has been revised (add 0x40 and store in byte 5; byte 6 is filler of 0x40).
5ChecksumChecksum, in hexidecimal (bytes 7 and 8 are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
Channel Map
Example CCD:
00:04:08:00	{XDS Ms CM 46=173}
           	      |  | | | |
           	      1  2 3 4 5
00:04:08:03	{EDM}{EDM}
00:04:08:05	{XDS Mc CM KXRT \C61}
           	      |  |   |    |
           	      N N+1  6    7
SCC:
00:04:08:00	0743 6ee0 6dc2

00:04:08:03	152c 152c

00:04:08:05	0843 cb58 5254 8f61
FieldNameExplanation
1ClassClass of Miscellaneous start (byte 1 = 0x07).
2TypeThe Channel Map Type (byte 2 = 0x43).
3User ChannelPublic number of the channel (divide by 64: store result plus 0x40 in byte 4 and remainder plus 0x40 in byte 3).
4Remapped?(Optional) Is User Channel remapped to a Tune Channel? (add 0x20 to byte 4 if there's an equals sign here).
5Tune Channel(Optional unless Remapped is set) Number of the channel on the cable system used to tune to the User Channel (divide by 64: store result plus 0x40 in byte 6 and remainder plus 0x40 in byte 5).
6Channel ID(Optional, up to 6 characters) Public name of channel (bytes 5 [if no Tune Channel] or 7 and up, using closed caption character set).
7ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Miscellaneous continue (byte N = 0x08).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).


PUBLIC SERVICE CLASS
Start code for Public Service class is 0x89.
Continue code is 0x8a.

National Weather Service Bulletin
Example CCD:
00:05:01:00	{XDS Ps WB FFW 006 037 02:30 \Cb3}
           	      |  |  |   |   |    |     |
           	      1  2  3   4   5    6     7
SCC:
00:05:01:00	8901 4646 57b0 b0b6 b0b3 3731 b040 8fb3
FieldNameExplanation
1ClassClass of Public Service start (byte 1 = 0x89).
2TypeThe National Weather Service Bulletin Type (byte 2 = 0x01).
3Event Category3-character code for the weather event (bytes 3 - 5, using closed caption character set). Here's what they mean (note that a Warning is more severe than an Advisory):
CodeCategory
ADRAdministrative Message
BRTComposite Broadcast Statement
BZWBlizzard Warning
CEMCivil Emergency Message
DMOPractice/Demonstration Warning
FFAFlash Flood Advisory
FFSFlash Flood Statement
FFWFlash Flood Warning
FLAFlood Advisory
FLSFlood Statement
FLWFlood Warning
HLSHurricane Statement
HUAHurricane Advisory
CodeCategory
HUWHurricane Warning
HWAHigh Wind Advisory
HWWHigh Wind Warning
LFPService Area Forecast
SPSSpecial Weather Statement
SVASevere Thunderstorm Advisory
SVRSevere Thunderstorm Warning
SVSSevere Thunderstorm Statement
TOATornado Advisory
TORTornado Warning
WSAWinter Storm Advisory
WSWWinter Storm Warning
XXXUnknown
4State FIPS3-digit code (taken from Federal Information and Processing Standard 6-4) for the state or territory the bulletin applies to (bytes 6 - 8, converting each digit using closed caption character set). Here's a list:
FIPSState/Territory
001Alabama
002Alaska
004Arizona
005Arkansas
006California
008Colorado
009Connecticut
010Delaware
011District of Columbia
012Florida
013Georgia
015Hawaii
016Idaho
017Illinois
018Indiana
019Iowa
020Kansas
021Kentucky
022Louisiana
023Maine
024Maryland
025Massachusetts
026Michigan
027Minnesota
028Mississippi
029Missouri
030Montana
031Nebraska
FIPSState/Territory
032Nevada
033New Hampshire
034New Jersey
035New Mexico
036New York
037North Carolina
038North Dakota
039Ohio
040Oklahoma
041Oregon
042Pennsylvania
044Rhode Island
045South Carolina
046South Dakota
047Tennessee
048Texas
049Utah
050Vermont
051Virginia
053Washington
054West Virginia
055Wisconsin
056Wyoming
060American Samoa
066Guam
069Northern Mariana Islands
072Puerto Rico
5County FIPS3-digit FIPS code for county the bulletin applies to (bytes 9 - 11, converting each digit using closed caption character set). The list is obviously too long to include here, but it can be found on the Internet by typing "FIPS counties list" and the state name into a search engine (in the example above, county FIPS 037 in state FIPS 006 (CA) is Los Angeles County).
6DurationHow long this bulletin applies, in hours and minutes (translate into a two-digit number of quarter-hours, then covert each digit using closed caption character set to get bytes 12 and 13; byte 14 is the the filler value 0x40).
8ChecksumChecksum, in hexidecimal (bytes 15 and 16 are 0x8f and checksum byte).
NClass ContinueClass of Public Service continue (byte N = 0x8a).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).
National Weather Service Message
Example CCD:
00:05:02:00	{XDS Ps WM I-5 N }
           	      |  |    |
           	      1  2    3
00:05:02:04	{EDM}{EDM}
00:05:02:06	{XDS Pc WM closed at I-110. \C68}
           	      |  |         |          |
           	      N N+1        3          4
SCC:
00:05:02:00	8902 49ad b520 ce20

00:05:02:04	152c 152c

00:05:02:06	8a02 e3ec ef73 e564 2061 f420 49ad 3131 b0ae 8f68
FieldNameExplanation
1ClassClass of Public Service start (byte 1 = 0x89).
2TypeThe National Weather Service Message Type (byte 2 = 0x02).
3Program NameThe text of the message (bytes 3 and up, up to 32 characters, using closed caption character set).
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueClass of Public Service continue (byte N = 0x8a).
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).


RESERVED CLASS
Start code for Reserved class is 0x0b.
Continue code is 0x8c.


UNDEFINED CLASS
Start code for Undefined class is 0x0d.
Continue code is 0x0e.


ALL CLASSES
The following definition is to cover all data not defined above.

Undocumented Type
Example CCD:
00:07:01:00	{XDS Us 01 c8 c2 4f 20 \Cea}
           	      |  |      |        |
           	      1  2      3        4
SCC:
00:07:01:00	0d01 c8c2 4f20 8fea
FieldNameExplanation
1ClassClass of Current, Future, CHannel, Miscellaneous, Public Service, Reserved or Undefined, start (byte 1 = 0x01, 0x83, 0x85, 0x07, 0x89, 0x0b or 0x0d for Current start, Future start, Channel start, Miscellaneous start, Public Service start, Reserved start, or Undefined start).
2TypeUndocumented type code (byte 2 = value).
3DataHexidecimal dump of data in packet (bytes 3 and up; it may be useful to compare the bytes against the closed caption character set).
4ChecksumChecksum, in hexidecimal (last two bytes are 0x8f and checksum byte).
NClass ContinueContinuation of start class, applied any time packet has to be continued after an interruption (byte N = 0x02 for Current continue, 0x04 for Future continue, 0x86 for CHannel continue, 0x08 for Miscellaneous continue, 0x8a for Public Service continue, 0x8c for Reserved continue, or 0x0e for Undefined continue)
N+1Type ContinueSame value as Type (field 2). This is followed by the rest of the interrupted packet (with Checksum same as if there had been no interruption).

Return to SCC Tools Documentation.