| libMirage Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | ||||
#include <mirage.h> gboolean (*MIRAGE_CDTextDataCallback) (gint langcode,gint type,gint track,const guint8 *data,gint data_len,gpointer user_data); MIRAGE_CDTextEncDec; gboolean mirage_cdtext_encoder_init (MIRAGE_CDTextEncDec *self,guint8 *buffer,gint buflen,GError **error); gboolean mirage_cdtext_encoder_set_block_info (MIRAGE_CDTextEncDec *self,gint block,gint langcode,gint charset,gint copyright,GError **error); gboolean mirage_cdtext_encoder_add_data (MIRAGE_CDTextEncDec *self,gint langcode,gint type,gint track,const guint8 *data,gint data_len,GError **error); gboolean mirage_cdtext_encoder_encode (MIRAGE_CDTextEncDec *self,guint8 **buffer,gint *buflen,GError **error); gboolean mirage_cdtext_decoder_init (MIRAGE_CDTextEncDec *self,guint8 *buffer,gint buflen,GError **error); gboolean mirage_cdtext_decoder_get_block_info (MIRAGE_CDTextEncDec *self,gint block,gint *langcode,gint *charset,gint *copyright,GError **error); gboolean mirage_cdtext_decoder_get_data (MIRAGE_CDTextEncDec *self,gint block,MIRAGE_CDTextDataCallback callback_func,gpointer user_data,GError **error);
MIRAGE_CDTextEncDec object is a general-purpose CD-TEXT encoder/decoder. It was designed to be used by MIRAGE_Session objects to encode and decode CD-TEXT data, but it should be suitable for use in other applications as well.
It is losely based on the CD-TEXT encoding/decoding code found in cdrdao and supports 8 CD-TEXT blocks with pack types from 0x80 to 0x8F. When encoding data, pack size data (pack type 0x8F) is always generated.
To be used as encoder, a MIRAGE_CDTextEncDec encoder must be first initialized
with mirage_cdtext_encoder_init(). Then, information for at least one CD-TEXT
block (up to 8 are supported) should be set with mirage_cdtext_encoder_set_block_info().
After all the CD-TEXT data is added to encoder with mirage_cdtext_encoder_add_data(),
buffer containing the encoded data can be obtained with mirage_cdtext_encoder_encode().
To use a MIRAGE_CDTextEncDec as CD-TEXT decoder, one should first initialize it
with mirage_cdtext_decoder_init(). This function already performs all the decoding;
block information can be obtained with mirage_cdtext_decoder_get_block_info() and
data for each block can be obtained with mirage_cdtext_decoder_get_data() and the
appropriate callback function.
gboolean (*MIRAGE_CDTextDataCallback) (gint langcode,gint type,gint track,const guint8 *data,gint data_len,gpointer user_data);
Specifies the type of callback functions that can be passed to
mirage_cdtext_decoder_get_data().
langcode is the language code assigned to the block which data belongs to.
track is the number of track to which data belongs to, or 0 if data is global
(belongs to session/disc). data is buffer containing data and data_len
is the length of data in the buffer.
data points to buffer that belongs to decoder and therefore should not be freed.
typedef struct _MIRAGE_CDTextEncDec MIRAGE_CDTextEncDec;
Contains private data only, and should be accessed using the functions below.
gboolean mirage_cdtext_encoder_init (MIRAGE_CDTextEncDec *self,guint8 *buffer,gint buflen,GError **error);
Initializes CD-TEXT encoder.
|
a MIRAGE_CDTextEncDec |
|
buffer into which data will be encoded |
|
buffer length |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_encoder_set_block_info (MIRAGE_CDTextEncDec *self,gint block,gint langcode,gint charset,gint copyright,GError **error);
Sets block information for CD-TEXT block specified by block. block must be
a valid block number (0-7). langcode is the language code that is to be assigned
to the block (e.g. 9 for English), charset denotes character set that is used within
the block, and copyright is the copyright flag for the block.
|
a MIRAGE_CDTextEncDec |
|
block number |
|
language code |
|
character set |
|
copyright flag |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_encoder_add_data (MIRAGE_CDTextEncDec *self,gint langcode,gint type,gint track,const guint8 *data,gint data_len,GError **error);
Adds data to the encoder. langcode is language code of the block the data
should be added to. type denotes pack type and should be one of MIRAGE_Language_PackTypes.
track is track number the data belongs to, or 0 if data is global (belongs to disc/session).
data is buffer containing data to be added, and data_len is length of data in the buffer.
This function does not perform any encoding yet; it merely adds the data into encoder's internal representation of CD-TEXT block.
mirage_cdtext_encoder_set_block_info()
before data can be added to it.
|
a MIRAGE_CDTextEncDec |
|
language code |
|
data type |
|
track number |
|
data |
|
data length |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_encoder_encode (MIRAGE_CDTextEncDec *self,guint8 **buffer,gint *buflen,GError **error);
Encodes the CD-TEXT data. Pointer to buffer containing the encoded data is
stored in buffer, and length of data in buffer is stored in buflen.
Note that buffer is the same as the argument passed to mirage_cdtext_encoder_init().
|
a MIRAGE_CDTextEncDec |
|
location to store buffer |
|
location to store buffer length |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_decoder_init (MIRAGE_CDTextEncDec *self,guint8 *buffer,gint buflen,GError **error);
Initializes CD-TEXT decoder. buffer is the buffer containing encoded CD-TEXT
data and buflen is length of data in the buffer.
This function decodes CD-TEXT data and stores it in decoder's internal representation.
Information about decoded CD-TEXT blocks and their data can be obtained via
subsequent calls to mirage_cdtext_decoder_get_block_info() and
mirage_cdtext_decoder_get_data().
|
a MIRAGE_CDTextEncDec |
|
buffer containing encoded data |
|
length of data in buffer |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_decoder_get_block_info (MIRAGE_CDTextEncDec *self,gint block,gint *langcode,gint *charset,gint *copyright,GError **error);
Retrieves block information for CD-TEXT block specified by block. block
must be a valid block number (0-7). Language code assigned to the block is
stored in langcode, code of character set used within block is stored in
charset and block's copyright flag is stored in copyright.
|
a MIRAGE_CDTextEncDec |
|
block number |
|
location to store language code |
|
location to store character set |
|
location to store copyright flag |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|
gboolean mirage_cdtext_decoder_get_data (MIRAGE_CDTextEncDec *self,gint block,MIRAGE_CDTextDataCallback callback_func,gpointer user_data,GError **error);
Retrieves data for CD-TEXT block specified by block. block must be a valid
block number (0-7). It calls callback_func for every data pack that has been
encoded in the block.
If callback_func returns FALSE, the function immediately returns FALSE and
error is set to MIRAGE_E_ITERCANCELLED.
|
a MIRAGE_CDTextEncDec |
|
block number |
|
callback function |
|
data to be passed to callback function |
|
location to store error, or NULL
|
Returns : |
TRUE on success, FALSE on failure
|