![]() |
![]() |
![]() |
libMirage Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces | Signals |
#include <mirage-fragment.h> struct MirageFragment; struct MirageFragmentClass; enum MirageMainDataFormat; enum MirageSubchannelDataFormat; gint mirage_fragment_get_address (MirageFragment *self
); gint mirage_fragment_get_length (MirageFragment *self
); const gchar * mirage_fragment_main_data_get_filename (MirageFragment *self
); gint mirage_fragment_main_data_get_format (MirageFragment *self
); guint64 mirage_fragment_main_data_get_offset (MirageFragment *self
); gint mirage_fragment_main_data_get_size (MirageFragment *self
); void mirage_fragment_main_data_set_format (MirageFragment *self
,gint format
); void mirage_fragment_main_data_set_offset (MirageFragment *self
,guint64 offset
); void mirage_fragment_main_data_set_size (MirageFragment *self
,gint size
); void mirage_fragment_main_data_set_stream (MirageFragment *self
,GInputStream *stream
); gboolean mirage_fragment_read_main_data (MirageFragment *self
,gint address
,guint8 **buffer
,gint *length
,GError **error
); gboolean mirage_fragment_read_subchannel_data (MirageFragment *self
,gint address
,guint8 **buffer
,gint *length
,GError **error
); void mirage_fragment_set_address (MirageFragment *self
,gint address
); void mirage_fragment_set_length (MirageFragment *self
,gint length
); const gchar * mirage_fragment_subchannel_data_get_filename (MirageFragment *self
); gint mirage_fragment_subchannel_data_get_format (MirageFragment *self
); guint64 mirage_fragment_subchannel_data_get_offset (MirageFragment *self
); gint mirage_fragment_subchannel_data_get_size (MirageFragment *self
); void mirage_fragment_subchannel_data_set_format (MirageFragment *self
,gint format
); void mirage_fragment_subchannel_data_set_offset (MirageFragment *self
,guint64 offset
); void mirage_fragment_subchannel_data_set_size (MirageFragment *self
,gint size
); void mirage_fragment_subchannel_data_set_stream (MirageFragment *self
,GInputStream *stream
); gboolean mirage_fragment_use_the_rest_of_file (MirageFragment *self
,GError **error
);
MirageFragment object represents an interface between a MirageTrack and data stream(s) containing the data. It allows tracks to read main and subchannel data from the streams, which is then fed to sectors. When constructing a track, a parser will typically create and append at least one fragment.
A MirageFragment object is obtained using g_object_new()
function.
Both main data file stream and subchannel data file stream can be set
using mirage_fragment_main_data_set_stream()
and mirage_fragment_subchannel_data_set_stream()
functions. If no streams are set, a fragment acts as a "NULL" fragment,
and can be used to represent zero-filled pregaps and postgaps in
tracks.
struct MirageFragment;
All the fields in the MirageFragment structure are private to the MirageFragment implementation and should never be accessed directly.
struct MirageFragmentClass { MirageObjectClass parent_class; /* Signals */ gint signal_layout_changed; };
The class structure for the MirageFragment type.
MirageObjectClass |
the parent class |
"layout-changed" signal identifier |
typedef enum { MIRAGE_MAIN_DATA = 0x01, MIRAGE_MAIN_AUDIO = 0x02, MIRAGE_MAIN_AUDIO_SWAP = 0x04, } MirageMainDataFormat;
Track file data formats.
typedef enum { MIRAGE_SUBCHANNEL_INT = 0x01, MIRAGE_SUBCHANNEL_EXT = 0x02, MIRAGE_SUBCHANNEL_PW96_INT = 0x10, MIRAGE_SUBCHANNEL_PW96_LIN = 0x20, MIRAGE_SUBCHANNEL_RW96 = 0x40, MIRAGE_SUBCHANNEL_PQ16 = 0x80, } MirageSubchannelDataFormat;
Subchannel file data formats.
internal subchannel (i.e. included in track file) | |
external subchannel (i.e. provided by separate file) | |
P-W subchannel, 96 bytes, interleaved | |
P-W subchannel, 96 bytes, linear | |
R-W subchannel, 96 bytes, deinterleaved | |
PQ subchannel, 16 bytes |
gint mirage_fragment_get_address (MirageFragment *self
);
Retrieves fragment's start address. The address
is given in sectors.
|
a MirageFragment |
Returns : |
start address |
gint mirage_fragment_get_length (MirageFragment *self
);
Retrieves fragment's length. The returned length
is given in sectors.
|
a MirageFragment |
Returns : |
length |
const gchar * mirage_fragment_main_data_get_filename
(MirageFragment *self
);
Retrieves filename of main data file.
|
a MirageFragment |
Returns : |
pointer to main data file name string. The string belongs to object and should not be modified. [transfer none] |
gint mirage_fragment_main_data_get_format
(MirageFragment *self
);
Retrieves main data file format.
|
a MirageFragment |
Returns : |
main data file format |
guint64 mirage_fragment_main_data_get_offset
(MirageFragment *self
);
Retrieves main data file offset.
|
a MirageFragment |
Returns : |
main data file offset |
gint mirage_fragment_main_data_get_size (MirageFragment *self
);
Retrieves main data file sector size.
|
a MirageFragment |
Returns : |
main data file sector size |
void mirage_fragment_main_data_set_format (MirageFragment *self
,gint format
);
Sets main data file format. format
must be one of MirageMainDataFormat.
|
a MirageFragment |
|
main data file format. [in] |
void mirage_fragment_main_data_set_offset (MirageFragment *self
,guint64 offset
);
Sets main data file offset.
|
a MirageFragment |
|
main data file offset. [in] |
void mirage_fragment_main_data_set_size (MirageFragment *self
,gint size
);
Sets main data file sector size.
|
a MirageFragment |
|
main data file sector size. [in] |
void mirage_fragment_main_data_set_stream (MirageFragment *self
,GInputStream *stream
);
Sets main data stream.
|
a MirageFragment |
|
a GInputStream on main data file. [in][transfer full] |
gboolean mirage_fragment_read_main_data (MirageFragment *self
,gint address
,guint8 **buffer
,gint *length
,GError **error
);
Reads main channel data for sector at fragment-relative address
(given
in sectors). The buffer for reading data into is allocated by function
and should be freed using g_free()
when no longer needed. The pointer
to buffer is stored into buffer
and the length of read data is stored into
length
.
|
a MirageFragment |
|
address. [in] |
|
location to store pointer to buffer with read data, or NULL . [out][allow-none][array length=length]
|
|
location to store read data length. [out] |
|
location to store error, or NULL . [out][allow-none]
|
Returns : |
TRUE on success, FALSE on failure |
gboolean mirage_fragment_read_subchannel_data (MirageFragment *self
,gint address
,guint8 **buffer
,gint *length
,GError **error
);
Reads subchannel data for sector at fragment-relative address
(given
in sectors). The buffer for reading data into is allocated by function
and should be freed using g_free()
when no longer needed. The pointer
to buffer is stored into buffer
and the length of read data is stored into
length
.
|
a MirageFragment |
|
address. [in] |
|
location to store pointer to buffer with read data, or NULL . [out][allow-none][array length=length]
|
|
location to store read data length. [out] |
|
location to store error, or NULL . [out][allow-none]
|
Returns : |
TRUE on success, FALSE on failure |
void mirage_fragment_set_address (MirageFragment *self
,gint address
);
Sets fragment's start address. The address
is given in sectors.
|
a MirageFragment |
|
start address. [in] |
void mirage_fragment_set_length (MirageFragment *self
,gint length
);
Sets fragment's length. The length
is given in sectors.
|
a MirageFragment |
|
length. [in] |
const gchar * mirage_fragment_subchannel_data_get_filename
(MirageFragment *self
);
Retrieves subchannel data file name.
|
a MirageFragment |
Returns : |
pointer to subchannel data file name string. The string belongs to object and should not be modified. [transfer none] |
gint mirage_fragment_subchannel_data_get_format
(MirageFragment *self
);
Retrieves subchannel data file format.
|
a MirageFragment |
Returns : |
subchannel data file format |
guint64 mirage_fragment_subchannel_data_get_offset
(MirageFragment *self
);
Retrieves subchannel data file offset.
|
a MirageFragment |
Returns : |
subchannel data file offset |
gint mirage_fragment_subchannel_data_get_size
(MirageFragment *self
);
Retrieves subchannel data file sector size.
|
a MirageFragment |
Returns : |
subchannel data file sector size |
void mirage_fragment_subchannel_data_set_format (MirageFragment *self
,gint format
);
Sets subchannel data file format. format
must be a combination of
MirageSubchannelDataFormat.
|
a MirageFragment |
|
subchannel data file format. [in] |
void mirage_fragment_subchannel_data_set_offset (MirageFragment *self
,guint64 offset
);
Sets subchannel data file offset.
|
a MirageFragment |
|
subchannel data file offset. [in] |
void mirage_fragment_subchannel_data_set_size (MirageFragment *self
,gint size
);
Sets subchannel data file sector size.
|
a MirageFragment |
|
subchannel data file sector size. [in] |
void mirage_fragment_subchannel_data_set_stream (MirageFragment *self
,GInputStream *stream
);
Sets subchannel data stream.
|
a MirageFragment |
|
a GInputStream on subchannel data file. [in][transfer full] |
gboolean mirage_fragment_use_the_rest_of_file (MirageFragment *self
,GError **error
);
Uses the rest of data file. It automatically calculates and sets fragment's length.
|
a MirageFragment |
|
location to store error, or NULL . [out][allow-none]
|
Returns : |
TRUE on success, FALSE on failure |
"layout-changed"
signalvoid user_function (MirageFragment *fragment,
gpointer user_data) : Run Last
Emitted when a layout of MirageFragment changed in a way that causes a bottom-up change.
|
a MirageFragment |
|
user data set when the signal handler was connected. |