TSDuck v3.40-4033
MPEG Transport Stream Toolkit
|
Definition of a character set for DVB encoding. More...
#include <tsDVBCharTable.h>
Public Member Functions | |
virtual | ~DVBCharTable () override |
Virtual destructor. | |
virtual bool | canEncode (const UString &str, size_t start=0, size_t count=NPOS) const =0 |
Check if a string can be encoded using the charset (ie all characters can be represented). | |
virtual bool | decode (UString &str, const uint8_t *data, size_t size) const =0 |
Decode a string from the specified byte buffer. | |
UString | decoded (const uint8_t *data, size_t size) const |
Decode a string from the specified byte buffer and return a UString. | |
UString | decodedWithByteLength (const uint8_t *&data, size_t &size) const |
Decode a string (preceded by its one-byte length) from the specified byte buffer. | |
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. | |
virtual size_t | encode (uint8_t *&buffer, size_t &size, const UString &str, size_t start=0, size_t count=NPOS) const =0 |
Encode a C++ Unicode string. | |
ByteBlock | encoded (const UString &str, size_t start=0, size_t count=NPOS) const |
Encode a C++ Unicode string as a ByteBlock. | |
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). | |
virtual size_t | encodeTableCode (uint8_t *&buffer, size_t &size) const |
Encode the character set table code. | |
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. | |
UString | name () const |
Get the character set name. | |
uint32_t | tableCode () const |
Get the DVB table code for the character set. | |
virtual void | unregister () const override |
Unregister the character set from the repository of character sets. | |
Static Public Member Functions | |
static bool | DecodeTableCode (uint32_t &code, size_t &codeSize, const uint8_t *dvb, size_t dvbSize) |
This static function gets the character coding table at the beginning of a DVB string. | |
static UStringList | GetAllNames () |
Find all registered character set names. | |
static const Charset * | GetCharset (const UString &name) |
Get a character set by name. | |
static const DVBCharTable * | GetTableFromLeadingCode (uint32_t code) |
Get a DVB character set by table code. | |
Protected Member Functions | |
DVBCharTable (const UChar *name, uint32_t tableCode) | |
Protected constructor. | |
Definition of a character set for DVB encoding.
It is important to understand the difference between DVBCharset and DVBCharTable.
Both classes are subclasses of Charset. So, they both have the capabilities to encode and decode binary strings in DVB representation. But this is the only similarity.
DVBCharset is the generic decoder and encoder for DVB strings. When decoding a DVB string, it recognizes the leading sequence and uses the appropriate character table (a DVBCharTable) to interpret the binary data. When encoding a string, DVBCharset selects the most appropriate DVB character table and encodes the string using that table, after inserting the appropriate leading sequence to indicate which character table was used.
DVBCharTable, on the other hand, is an abstract superclass for all DVB character tables. Each subclass of DVBCharTable implements one specific DVB character table (modified ISO 6937, ISO 8859-1, ISO 8859-2, etc.) When encoding or decoding strings, a subclass of DVBCharTable only decode or encode binary data for this specific DVB character table. No leading sequence or decoded or encoded.
Usage guidelines:
|
protected |
Protected constructor.
[in] | name | charset name |
[in] | tableCode | DVB table code |
|
static |
This static function gets the character coding table at the beginning of a DVB string.
The character coding table is encoded on up to 3 bytes at the beginning of a DVB string. The following encodings are recognized, based on the first byte of the DVB string:
[out] | code | Returned character coding table value. Zero when no code is present (use the default character table). 0xFFFFFFFF in case of invalid data. |
[out] | codeSize | Size in bytes of character coding table in dvb. |
[in] | dvb | Address of a DVB string. |
[in] | dvbSize | Size in bytes of the DVB string. |
|
inline |
Get the DVB table code for the character set.
|
static |
Get a DVB character set by table code.
[in] | code | Table code of the requested character set. |
|
virtual |
Encode the character set table code.
Stop either when the specified number of characters are serialized or when the buffer is full, whichever comes first.
[in,out] | buffer | Address of the buffer. The address is updated to point after the encoded value. |
[in,out] | size | Size of the buffer. Updated to remaining size. |
|
overridevirtual |
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 from ts::Charset.
|
inlineinherited |
Get the character set name.
Get a character set by name.
[in] | name | Name of the requested character set. |
|
staticinherited |
Find all registered character set names.
|
pure virtualinherited |
Decode a string from the specified byte buffer.
[out] | str | Returned decoded string. |
[in] | data | Address of an encoded string. |
[in] | size | Size in bytes of the encoded string. |
Implemented in ts::ARIBCharset, ts::DumpCharset, ts::DVBCharset, ts::DVBCharTableSingleByte, ts::DVBCharTableUTF16, and ts::DVBCharTableUTF8.
|
inherited |
Decode a string from the specified byte buffer and return a UString.
Errors (truncation, unsupported format, etc) are ignored.
[in] | data | Address of an encoded string. |
[in] | size | Size in bytes of the encoded string. |
|
inherited |
Decode a string (preceded by its one-byte length) from the specified byte buffer.
[out] | str | Returned decoded string. |
[in,out] | data | Address of an encoded string. The address is updated to point after the decoded value. |
[in,out] | size | Size of the buffer. Updated to remaining size. |
|
inherited |
Decode a string (preceded by its one-byte length) from the specified byte buffer.
Errors (truncation, unsupported format, etc) are ignored.
[in,out] | data | Address of an encoded string. The address is updated to point after the decoded value. |
[in,out] | size | Size of the buffer. Updated to remaining size. |
|
pure virtualinherited |
Check if a string can be encoded using the charset (ie all characters can be represented).
[in] | str | The string to encode. |
[in] | start | Starting offset in str. |
[in] | count | Maximum number of characters to encode. |
Implemented in ts::ARIBCharset, ts::DumpCharset, ts::DVBCharset, ts::DVBCharTableSingleByte, ts::DVBCharTableUTF16, and ts::DVBCharTableUTF8.
|
pure virtualinherited |
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.
[in,out] | buffer | Address of the buffer. The address is updated to point after the encoded value. |
[in,out] | size | Size of the buffer. Updated to remaining size. |
[in] | str | The string to encode. |
[in] | start | Starting offset in str. |
[in] | count | Maximum number of characters to encode. |
Implemented in ts::ARIBCharset, ts::DumpCharset, ts::DVBCharset, ts::DVBCharTableSingleByte, ts::DVBCharTableUTF16, and ts::DVBCharTableUTF8.
|
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.
[in,out] | buffer | Address of the buffer. The address is updated to point after the encoded value. |
[in,out] | size | Size of the buffer. Updated to remaining size. |
[in] | str | The string to encode. |
[in] | start | Starting offset in str. |
[in] | count | Maximum number of characters to encode. |