Beispiel #1
0
static gboolean
xmms_asf_init (xmms_xform_t *xform)
{
    xmms_asf_data_t *data;
    asf_iostream_t stream;
    gint ret;

    g_return_val_if_fail (xform, FALSE);

    data = g_new0 (xmms_asf_data_t, 1);

    stream.read = xmms_asf_read_callback;
    stream.write = NULL;
    stream.seek = xmms_asf_seek_callback;
    stream.opaque = xform;

    data->file = asf_open_cb (&stream);
    if (!data->file) {
        g_free (data);
        return FALSE;
    }
    data->packet = asf_packet_create ();
    data->outbuf = g_string_new (NULL);

    xmms_xform_private_data_set (xform, data);

    ret = asf_init (data->file);
    if (ret < 0) {
        XMMS_DBG ("ASF parser failed to init with error %d", ret);
        asf_packet_destroy (data->packet);
        asf_close (data->file);

        return FALSE;
    }

    data->track = xmms_asf_get_track (xform, data->file);
    if (data->track < 0) {
        XMMS_DBG ("No audio track found");
        asf_packet_destroy (data->packet);
        asf_close (data->file);

        return FALSE;
    }

    xmms_asf_get_mediainfo (xform);

    XMMS_DBG ("ASF demuxer inited successfully!");

    return TRUE;
}
Beispiel #2
0
asf_file_t *
asf_open_file(const char *filename)
{
	asf_file_t *file;
	asf_iostream_t stream;
	FILE *fstream;

	fstream = fopen(filename, "rb");
	if (!fstream)
		return NULL;

	stream.read = asf_fileio_read_cb;
	stream.write = NULL;
	stream.seek = asf_fileio_seek_cb;
	stream.opaque = fstream;

	file = asf_open_cb(&stream);
	if (!file)
		return NULL;

	file->filename = filename;

	return file;
}