TSDuck Version 3.32-2769 (TSDuck - The MPEG Transport Stream Toolkit)
ts::ARIBCharset Class Reference

Definition of the ARIB STD-B24 character set (ISDB Japan). More...

Inheritance diagram for ts::ARIBCharset:
Collaboration diagram for ts::ARIBCharset:

Public Member Functions

virtual bool canEncode (const UString &str, size_t start=0, size_t count=NPOS) const override
 Check if a string can be encoded using the charset (ie all characters can be represented). More...
 
virtual bool decode (UString &str, const uint8_t *data, size_t size) const override
 Decode a string from the specified byte buffer. More...
 
UString decoded (const uint8_t *data, size_t size) const
 Decode a string from the specified byte buffer and return a UString. More...
 
UString decodedWithByteLength (const uint8_t *&data, size_t &size) const
 Decode a string (preceded by its one-byte length) from the specified byte buffer. More...
 
bool decodeWithByteLength (UString &str, const uint8_t *&data, size_t &size) const
 Decode a string (preceded by its one-byte length) from the specified byte buffer. More...
 
virtual size_t encode (uint8_t *&buffer, size_t &size, const UString &str, size_t start=0, size_t count=NPOS) const override
 Encode a C++ Unicode string. More...
 
ByteBlock encoded (const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string as a ByteBlock. More...
 
ByteBlock encodedWithByteLength (const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string as a ByteBlock (preceded by its one-byte length). More...
 
size_t encodeWithByteLength (uint8_t *&buffer, size_t &size, const UString &str, size_t start=0, size_t count=NPOS) const
 Encode a C++ Unicode string preceded by its one-byte length. More...
 
UString name () const
 Get the character set name. More...
 
virtual void unregister () const
 Unregister the character set from the repository of character sets. More...
 

Static Public Member Functions

static UStringList GetAllNames ()
 Find all registered character set names. More...
 
static const CharsetGetCharset (const UString &name)
 Get a character set by name. More...
 

Static Public Attributes

static const ARIBCharset B24
 Only one predefined character set for ARIB STD-B24.
 

Detailed Description

Definition of the ARIB STD-B24 character set (ISDB Japan).

Limitations:

  • The decoding operation produces a Unicode string (UString). All non-Unicode concepts in ARIB STD-B24 are dropped (colors, placemenent, Mosaic and DRCS character sets).
  • User-defined macros are ignored, only predefined macros are decoded.
  • The encoding operation is character-based and not optimized. The resulting data could be shorter with a prior global analysis of the input string.
See also
ARIB STD-B24, chapter 7
ARIB STD-B62, fascicle 1, part 2, chapter 5
ISO/IEC 2022
https://en.wikipedia.org/wiki/ARIB_STD_B24_character_set
https://en.wikipedia.org/wiki/ISO/IEC_2022

Member Function Documentation

◆ decode()

virtual bool ts::ARIBCharset::decode ( UString str,
const uint8_t *  data,
size_t  size 
) const
overridevirtual

Decode a string from the specified byte buffer.

Parameters
[out]strReturned decoded string.
[in]dataAddress of an encoded string.
[in]sizeSize in bytes of the encoded string.
Returns
True on success, false on error (truncated, unsupported format, etc.)

Implements ts::Charset.

◆ canEncode()

virtual bool ts::ARIBCharset::canEncode ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
overridevirtual

Check if a string can be encoded using the charset (ie all characters can be represented).

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
True if all characters can be encoded.

Implements ts::Charset.

◆ encode()

virtual size_t ts::ARIBCharset::encode ( uint8_t *&  buffer,
size_t &  size,
const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
overridevirtual

Encode a C++ Unicode string.

Unrepresentable characters are skipped. Stop either when the specified number of characters are serialized or when the buffer is full, whichever comes first.

Parameters
[in,out]bufferAddress of the buffer. The address is updated to point after the encoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
The number of serialized characters (which is usually not the same as the number of written bytes).

Implements ts::Charset.

◆ name()

UString ts::Charset::name ( ) const
inlineinherited

Get the character set name.

Returns
The name.

◆ GetCharset()

static const Charset* ts::Charset::GetCharset ( const UString name)
staticinherited

Get a character set by name.

Parameters
[in]nameName of the requested character set.
Returns
Address of the character set or zero if not found.

◆ GetAllNames()

static UStringList ts::Charset::GetAllNames ( )
staticinherited

Find all registered character set names.

Returns
List of all registered names.

◆ decoded()

UString ts::Charset::decoded ( const uint8_t *  data,
size_t  size 
) const
inherited

Decode a string from the specified byte buffer and return a UString.

Errors (truncation, unsupported format, etc) are ignored.

Parameters
[in]dataAddress of an encoded string.
[in]sizeSize in bytes of the encoded string.
Returns
The decoded string.

◆ decodeWithByteLength()

bool ts::Charset::decodeWithByteLength ( UString str,
const uint8_t *&  data,
size_t &  size 
) const
inherited

Decode a string (preceded by its one-byte length) from the specified byte buffer.

Parameters
[out]strReturned decoded string.
[in,out]dataAddress of an encoded string. The address is updated to point after the decoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
Returns
True on success, false on error (truncated, unsupported format, etc.)

◆ decodedWithByteLength()

UString ts::Charset::decodedWithByteLength ( const uint8_t *&  data,
size_t &  size 
) const
inherited

Decode a string (preceded by its one-byte length) from the specified byte buffer.

Errors (truncation, unsupported format, etc) are ignored.

Parameters
[in,out]dataAddress of an encoded string. The address is updated to point after the decoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
Returns
The decoded string.

◆ encodeWithByteLength()

size_t ts::Charset::encodeWithByteLength ( uint8_t *&  buffer,
size_t &  size,
const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
inherited

Encode a C++ Unicode string preceded by its one-byte length.

Unrepresentable characters are skipped. Stop either when the specified number of characters are serialized or when the buffer is full, whichever comes first.

Parameters
[in,out]bufferAddress of the buffer. The address is updated to point after the encoded value.
[in,out]sizeSize of the buffer. Updated to remaining size.
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
The number of serialized characters (which is usually not the same as the number of written bytes).

◆ encoded()

ByteBlock ts::Charset::encoded ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
inherited

Encode a C++ Unicode string as a ByteBlock.

Unrepresentable characters are skipped.

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
A ByteBlock containing the encoded string.

◆ encodedWithByteLength()

ByteBlock ts::Charset::encodedWithByteLength ( const UString str,
size_t  start = 0,
size_t  count = NPOS 
) const
inherited

Encode a C++ Unicode string as a ByteBlock (preceded by its one-byte length).

Unrepresentable characters are skipped.

Parameters
[in]strThe string to encode.
[in]startStarting offset in str.
[in]countMaximum number of characters to encode.
Returns
A ByteBlock containing the encoded string.

◆ unregister()

virtual void ts::Charset::unregister ( ) const
virtualinherited

Unregister the character set from the repository of character sets.

This is done automatically when the object is destructed. Can be called earlier to make sure a character set is no longer referenced.

Reimplemented in ts::DVBCharTable.


The documentation for this class was generated from the following file: