Blame src/iec61883.h

Packit 0bbbb1
/*
Packit 0bbbb1
 * libiec61883/iec61883.h - Linux IEEE 1394 streaming media library.
Packit 0bbbb1
 * Copyright (C) 2004 Kristian Hogsberg, Dan Dennedy, and Dan Maas.
Packit 0bbbb1
 *
Packit 0bbbb1
 * This library is free software; you can redistribute it and/or
Packit 0bbbb1
 * modify it under the terms of the GNU Lesser General Public
Packit 0bbbb1
 * License as published by the Free Software Foundation; either
Packit 0bbbb1
 * version 2 of the License, or (at your option) any later version.
Packit 0bbbb1
 *
Packit 0bbbb1
 * This library is distributed in the hope that it will be useful,
Packit 0bbbb1
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 0bbbb1
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 0bbbb1
 * Lesser General Public License for more details.
Packit 0bbbb1
 *
Packit 0bbbb1
 * You should have received a copy of the GNU Lesser General Public
Packit 0bbbb1
 * License along with this library; if not, write to the Free Software
Packit 0bbbb1
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit 0bbbb1
 */
Packit 0bbbb1
Packit 0bbbb1
#ifndef _IEC61883_H
Packit 0bbbb1
#define _IEC61883_H
Packit 0bbbb1
Packit 0bbbb1
#include <libraw1394/raw1394.h>
Packit 0bbbb1
#include <endian.h>
Packit 0bbbb1
Packit 0bbbb1
#ifdef __cplusplus
Packit 0bbbb1
extern "C" {
Packit 0bbbb1
#endif
Packit 0bbbb1
Packit 0bbbb1
enum iec61883_datarate {
Packit 0bbbb1
    IEC61883_DATARATE_100 = 0,
Packit 0bbbb1
    IEC61883_DATARATE_200,
Packit 0bbbb1
    IEC61883_DATARATE_400
Packit 0bbbb1
};
Packit 0bbbb1
Packit 0bbbb1
/*******************************************************************************
Packit 0bbbb1
 * Audio and Music Data Transport Protocol 
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
enum iec61883_amdtp_format {
Packit 0bbbb1
	IEC61883_AMDTP_FORMAT_RAW,
Packit 0bbbb1
	IEC61883_AMDTP_FORMAT_IEC958_PCM,
Packit 0bbbb1
	IEC61883_AMDTP_FORMAT_IEC958_AC3
Packit 0bbbb1
};
Packit 0bbbb1
Packit 0bbbb1
enum iec61883_cip_mode {
Packit 0bbbb1
	IEC61883_MODE_BLOCKING_EMPTY,
Packit 0bbbb1
	IEC61883_MODE_BLOCKING_NODATA,
Packit 0bbbb1
	IEC61883_MODE_NON_BLOCKING,
Packit 0bbbb1
};
Packit 0bbbb1
Packit 0bbbb1
enum iec61883_amdtp_sample_format {
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_NA = -1,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_LE16 = 0,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_BE16,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_LE20,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_BE20,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_LE24,
Packit 0bbbb1
	IEC61883_AMDTP_INPUT_BE24
Packit 0bbbb1
};
Packit 0bbbb1
Packit 0bbbb1
#define IEC61883_FDF_SFC_32KHZ   0x00
Packit 0bbbb1
#define IEC61883_FDF_SFC_44K1HZ  0x01
Packit 0bbbb1
#define IEC61883_FDF_SFC_48KHZ   0x02
Packit 0bbbb1
#define IEC61883_FDF_SFC_88K2HZ  0x03
Packit 0bbbb1
#define IEC61883_FDF_SFC_96KHZ   0x04
Packit 0bbbb1
#define IEC61883_FDF_SFC_176K4HZ 0x05
Packit 0bbbb1
#define IEC61883_FDF_SFC_192KHZ  0x06
Packit 0bbbb1
Packit 0bbbb1
typedef struct iec61883_amdtp* iec61883_amdtp_t;
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_recv_t - AMDTP receive callback function prototype
Packit 0bbbb1
 * @data: pointer to the buffer containing audio data
Packit 0bbbb1
 * @nsamples: the number of samples in the buffer
Packit 0bbbb1
 * @dimension: the number of audio channels
Packit 0bbbb1
 * @rate: sampling frequency
Packit 0bbbb1
 * @format: one of enum iec61883_amdtp_format
Packit 0bbbb1
 * @sample_format: one of enum iec61883_amdtp_sample_format
Packit 0bbbb1
 * @callback_data: the opaque pointer you supplied in the init function
Packit 0bbbb1
 *
Packit 0bbbb1
 * The buffer contains consumer-ready 16bit raw PCM if it is in that format.
Packit 0bbbb1
 * Otherwise, the data consists of quadlets containing only one sample with 
Packit 0bbbb1
 * any necessary padding minus the label if pcm, otherwise, for IEC958
Packit 0bbbb1
 * audio data, the header remains intact.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 */
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_amdtp_recv_t) (iec61883_amdtp_t amdtp, unsigned char *data, int nsamples, 
Packit 0bbbb1
	unsigned int dbc, unsigned int dropped, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_amdtp_xmit_t) (iec61883_amdtp_t amdtp, unsigned char *data, int nevents, 
Packit 0bbbb1
	unsigned int dbc, unsigned int dropped, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_xmit_init - setup transmission of AMDTP
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @rate: one of enum iec61883_datarate
Packit 0bbbb1
 * @format: one of enum iec61883_amdtp_format to describe audio data format
Packit 0bbbb1
 * @sample_format: one of enum iec61883_amdtp_sample_format
Packit 0bbbb1
 * @mode: one of iec61883_cip_mode
Packit 0bbbb1
 * @dimension: the number of audio channels
Packit 0bbbb1
 * @get_data: a function pointer to your callback routine
Packit 0bbbb1
 * @callback_data: an opaque pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * AMDTP =  Audio and Music Data Transport Protocol
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * A pointer to an iec61883_amdtp object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_amdtp_t
Packit 0bbbb1
iec61883_amdtp_xmit_init(raw1394handle_t handle,
Packit 0bbbb1
		int rate, int format, int sample_format, int mode, int dimension,
Packit 0bbbb1
		iec61883_amdtp_xmit_t get_data, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_recv_init - setup reception of AMDTP
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @put_data: a function pointer to your callback routine
Packit 0bbbb1
 * @callback_data: an opaque pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * A pointer to an iec61883_amdtp object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_amdtp_t
Packit 0bbbb1
iec61883_amdtp_recv_init(raw1394handle_t handle,
Packit 0bbbb1
		iec61883_amdtp_recv_t put_data, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/** 
Packit 0bbbb1
 * iec61883_amdtp_xmit_start - start transmission of AMDTP
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @channel: the isochronous channel number to use
Packit 0bbbb1
 **/ 
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_xmit_start(iec61883_amdtp_t amdtp, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_xmit_stop - stop transmission of AMDTP
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_xmit_stop(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/** 
Packit 0bbbb1
 * iec61883_amdtp_recv_start - start reception of AMDTP
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @channel: the isochronous channel number to use
Packit 0bbbb1
 **/ 
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_recv_start(iec61883_amdtp_t amdtp, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_recv_stop - stop reception of AMDTP
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_recv_stop(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_close - destroy an amdtp object
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_close(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_buffers - get the size of the buffer
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_amdtp_get_buffers(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_set_buffers - set the size of the buffer
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_set_buffers(iec61883_amdtp_t amdtp, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_prebuffers - get the size of the pre-transmission buffer
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_amdtp_get_prebuffers(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_set_prebuffers - set the size of the pre-transmission buffer
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_set_prebuffers(iec61883_amdtp_t amdtp, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_irq_interval - get the interrupt rate
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_amdtp_get_irq_interval(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_set_irq_interval - set the interrupt rate
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @packets: the size of the interval in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_set_irq_interval(iec61883_amdtp_t amdtp, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_synch - get behavior on close
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_get_synch(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_set_synch - set behavior on close
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @synch: 1 if you want sync behaviour, 0 otherwise
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_set_synch(iec61883_amdtp_t amdtp, int synch);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_speed - get data rate for transmission
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_get_speed(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_set_speed - set data rate for transmission
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 * @speed: one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_amdtp_set_speed(iec61883_amdtp_t amdtp, int speed);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_dropped - get the total number of dropped packets
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The total number of dropped packets since starting transmission or reception.
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_amdtp_get_dropped(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_callback_data - get the callback data you supplied
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in bus reset callback routines because only
Packit 0bbbb1
 * the libraw1394 handle is available, and libiec61883 uses the userdata
Packit 0bbbb1
 * field of the libraw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * An opaque pointer to whatever you supplied when you called init.
Packit 0bbbb1
 **/
Packit 0bbbb1
void *
Packit 0bbbb1
iec61883_amdtp_get_callback_data(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_dimension - get the AMDTP dimension
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in your callbacks.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The numeric value of the current dimension.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_get_dimension(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_rate - get the AMDTP sampling frequency
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in your callbacks.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The numeric value of the sampling frequency.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_amdtp_get_rate(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_format - get the AMDTP data format
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in your callbacks.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * One of enum iec61883_amdtp_format.
Packit 0bbbb1
 **/
Packit 0bbbb1
enum iec61883_amdtp_format
Packit 0bbbb1
iec61883_amdtp_get_format(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_amdtp_get_sample_format - get the AMDTP sample format
Packit 0bbbb1
 * @amdtp: pointer to iec61883_amdtp object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in your callbacks.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * One of enum iec61883_amdtp_sample_format.
Packit 0bbbb1
 **/
Packit 0bbbb1
enum iec61883_amdtp_sample_format
Packit 0bbbb1
iec61883_amdtp_get_sample_format(iec61883_amdtp_t amdtp);
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
/*******************************************************************************
Packit 0bbbb1
 * DV Digital Video
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
typedef struct iec61883_dv* iec61883_dv_t;
Packit 0bbbb1
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_dv_recv_t)(unsigned char *data, int len, unsigned int dropped, 
Packit 0bbbb1
	void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_dv_xmit_t)(unsigned char *data, int n_dif_blocks, 
Packit 0bbbb1
	unsigned int dropped, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_recv_init - setup reception of a DV stream
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @put_data: a function pointer to your reception callback routine
Packit 0bbbb1
 * @callback_data: an opaque data pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_dv object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_dv_t
Packit 0bbbb1
iec61883_dv_recv_init(raw1394handle_t handle,
Packit 0bbbb1
		iec61883_dv_recv_t put_data,
Packit 0bbbb1
		void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_xmit_init - setup transmission of a DV stream
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @is_pal: set to non-zero if transmitting a PAL stream (applies to transmission only)
Packit 0bbbb1
 * @get_data: a function pointer to your transmission callback routine
Packit 0bbbb1
 * @callback_data: an opaque data pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_dv object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_dv_t
Packit 0bbbb1
iec61883_dv_xmit_init(raw1394handle_t handle, int is_pal,
Packit 0bbbb1
		iec61883_dv_xmit_t get_data,
Packit 0bbbb1
		void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_recv_start - start receiving a DV stream
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @channel: the isochronous channel number
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_dv_recv_start(iec61883_dv_t dv, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_xmit_start - start transmitting a DV stream
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @channel: the isochronous channel number
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_dv_xmit_start(iec61883_dv_t dv, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_recv_stop - stop reception of a DV stream
Packit 0bbbb1
 * @dv: pointer to iec61883_dv ojbect
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_recv_stop(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_xmit_stop - stop transmission of a DV stream
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_xmit_stop(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_close - stop reception or transmission and destroy iec61883_dv object
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_close(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_buffers - get the size of the buffer
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_dv_get_buffers(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_set_buffers - set the size of the buffer
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_set_buffers(iec61883_dv_t dv, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_prebuffers - get the size of the pre-transmission buffer
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_dv_get_prebuffers(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_set_prebuffers - set the size of the pre-transmission buffer
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_set_prebuffers(iec61883_dv_t dv, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_irq_interval - get the interrupt rate
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_dv_get_irq_interval(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_set_irq_interval - set the interrupt rate
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @packets: the size of the interval in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_set_irq_interval(iec61883_dv_t dv, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_synch - get behavior on close
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_dv_get_synch(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_set_synch - set behavior on close
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @synch: 1 if you want sync behaviour, 0 otherwise
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_set_synch(iec61883_dv_t dv, int synch);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_speed - get data rate for transmission
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_dv_get_speed(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_set_speed - set data rate for transmission
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 * @speed: one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_set_speed(iec61883_dv_t dv, int speed);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_dropped - get the total number of dropped packets
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The total number of dropped packets since starting transmission or reception.
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_dv_get_dropped(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_get_callback_data - get the callback data you supplied
Packit 0bbbb1
 * @dv: pointer to iec61883_dv object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in bus reset callback routines because only
Packit 0bbbb1
 * the libraw1394 handle is available, and libiec61883 uses the userdata
Packit 0bbbb1
 * field of the libraw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * An opaque pointer to whatever you supplied when you called init.
Packit 0bbbb1
 **/
Packit 0bbbb1
void *
Packit 0bbbb1
iec61883_dv_get_callback_data(iec61883_dv_t dv);
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
/*******************************************************************************
Packit 0bbbb1
 * The DV frame interface 
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
typedef struct iec61883_dv_fb* iec61883_dv_fb_t;
Packit 0bbbb1
Packit 0bbbb1
typedef int
Packit 0bbbb1
(*iec61883_dv_fb_recv_t)(unsigned char *data, int len, int complete, 
Packit 0bbbb1
	void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_init - setup reception of DV frames
Packit 0bbbb1
 * @handle: raw1394 handle.
Packit 0bbbb1
 * @put_data: your callback function.
Packit 0bbbb1
 * @callback_data: an opaque pointer you can send to your callback.
Packit 0bbbb1
 *
Packit 0bbbb1
 * This provides a frame-oriented instead of stream-oriented interface as
Packit 0bbbb1
 * compared to iec61883_dv_init(). This means that starts at the beginning of a
Packit 0bbbb1
 * frame, and all data is frame-aligned. Your callback function
Packit 0bbbb1
 * will receive a complete DV frame even if packets are dropped.
Packit 0bbbb1
 * The callback parameter @complete indicates if a full frame is received.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_dv_fb object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_dv_fb_t
Packit 0bbbb1
iec61883_dv_fb_init (raw1394handle_t handle, 
Packit 0bbbb1
		iec61883_dv_fb_recv_t put_data,
Packit 0bbbb1
		void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_get_dv - get the parent iec61883_dv object
Packit 0bbbb1
 * @dvfb: pointer to iec61883_dv_fb object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_dv object upon success or NULL on failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
iec61883_dv_t
Packit 0bbbb1
iec61883_dv_fb_get_dv(iec61883_dv_fb_t dvfb);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_start - start receiving DV frames
Packit 0bbbb1
 * @dvfb: pointer to iec61883_dv_fb object
Packit 0bbbb1
 * @channel: the isochronous channel number
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_dv_fb_start(iec61883_dv_fb_t dvfb, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_stop - stop receiving DV frames
Packit 0bbbb1
 * @dvfb: pointer to iec61883_dv_fb object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_fb_stop(iec61883_dv_fb_t dvfb);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_close - stop receiving DV frames and destroy iec61883_dv_fb object
Packit 0bbbb1
 * @dvfb: pointer to iec61883_dv_fb object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_dv_fb_close(iec61883_dv_fb_t dvfb);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_get_incomplete - get the total number of incomplete frames
Packit 0bbbb1
 * @dvfb: point to the iec61883_dv_fb object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The total number of incomplete frames due to dropped packets since starting
Packit 0bbbb1
 * reception.
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_dv_fb_get_incomplete(iec61883_dv_fb_t dvfb);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_dv_fb_get_callback_data - get the callback data you supplied
Packit 0bbbb1
 * @dvfb: pointer to iec61883_dv_fb object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in bus reset callback routines because only
Packit 0bbbb1
 * the libraw1394 handle is available, and libiec61883 uses the userdata
Packit 0bbbb1
 * field of the libraw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * An opaque pointer to whatever you supplied when you called init.
Packit 0bbbb1
 **/
Packit 0bbbb1
void *
Packit 0bbbb1
iec61883_dv_fb_get_callback_data(iec61883_dv_fb_t dvfb);
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
/*******************************************************************************
Packit 0bbbb1
 * MPEG-2 Transport Stream
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
/* MPEG2 Time Shift Flag - not currently used anywhere */
Packit 0bbbb1
#define IEC61883_FDF_MPEG2_TSF 0x01
Packit 0bbbb1
Packit 0bbbb1
/* size of a MPEG-2 Transport Stream packet */
Packit 0bbbb1
#define IEC61883_MPEG2_TSP_SIZE 188
Packit 0bbbb1
Packit 0bbbb1
typedef struct iec61883_mpeg2* iec61883_mpeg2_t;
Packit 0bbbb1
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_mpeg2_recv_t)(unsigned char *data, int len, unsigned int dropped, 
Packit 0bbbb1
	void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
typedef int 
Packit 0bbbb1
(*iec61883_mpeg2_xmit_t)(unsigned char *data, int n_packets, 
Packit 0bbbb1
	unsigned int dropped, void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_recv_init - setup reception of MPEG2-TS
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @put_data: a function pointer to your callback routine
Packit 0bbbb1
 * @callback_data: an opaque pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_mpeg2 object upon success or NULL for failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_mpeg2_t
Packit 0bbbb1
iec61883_mpeg2_recv_init(raw1394handle_t handle,
Packit 0bbbb1
		iec61883_mpeg2_recv_t put_data,
Packit 0bbbb1
		void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_xmit_init - setup transmission of MPEG2-TS
Packit 0bbbb1
 * @handle: the libraw1394 handle to use for all operations
Packit 0bbbb1
 * @get_data: a function pointer to your callback routine
Packit 0bbbb1
 * @callback_data: an opaque pointer to provide to your callback function
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * A pointer to an iec61883_mpeg2 object upon success or NULL for failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
iec61883_mpeg2_t
Packit 0bbbb1
iec61883_mpeg2_xmit_init(raw1394handle_t handle,
Packit 0bbbb1
		iec61883_mpeg2_xmit_t get_data,
Packit 0bbbb1
		void *callback_data);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_recv_start - start receiving MPEG2-TS
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @channel: isochronous channel number
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_mpeg2_recv_start(iec61883_mpeg2_t mpeg2, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_xmit_start - start transmitting MPEG2-TS
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @pid: the program ID of the transport stream to select
Packit 0bbbb1
 * @channel: isochronous channel number
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 for success or -1 for failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_mpeg2_xmit_start(iec61883_mpeg2_t mpeg2, int pid, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_recv_stop - stop receiving MPEG2-TS
Packit 0bbbb1
 * @mpeg2: pointer to the iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_recv_stop(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_xmit_stop - stop transmitting MPEG2-TS
Packit 0bbbb1
 * @mpeg2: pointer to the iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_xmit_stop(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_close - stop receiving or transmitting and destroy iec61883_mpeg2 object
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_close(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_buffers - get the size of the raw1394 buffer
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_mpeg2_get_buffers(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_set_buffers - set the size of the raw1394 buffer
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_set_buffers(iec61883_mpeg2_t mpeg2, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_prebuffers - get the size of the pre-transmission buffer
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_mpeg2_get_prebuffers(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_set_prebuffers - set the size of the pre-transmission buffer
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @packets: the size of the buffer in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_set_prebuffers(iec61883_mpeg2_t mpeg2, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_irq_interval - get the interrupt rate
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_mpeg2_get_irq_interval(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_set_irq_interval - set the interrupt rate
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @packets: the size of the interval in packets
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is an advanced option that can only be set after initialization and 
Packit 0bbbb1
 * before reception or transmission.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_set_irq_interval(iec61883_mpeg2_t mpeg2, unsigned int packets);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_synch - get behavior on close
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_mpeg2_get_synch(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_set_synch - set behavior on close
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 * @synch: 1 if you want sync behaviour, 0 otherwise
Packit 0bbbb1
 *
Packit 0bbbb1
 * If synch is not zero, then when stopping reception all packets in
Packit 0bbbb1
 * raw1394 buffers are flushed and invoking your callback function and when
Packit 0bbbb1
 * stopping transmission all packets in the raw1394 buffers are sent before
Packit 0bbbb1
 * the close function returns.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_set_synch(iec61883_mpeg2_t mpeg2, int synch);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_speed - get data rate for transmission
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_mpeg2_get_speed(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_set_speed - set data rate for transmission
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mepg2 object
Packit 0bbbb1
 * @speed: one of enum raw1394_iso_speed (S100, S200, or S400)
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_mpeg2_set_speed(iec61883_mpeg2_t mpeg2, int speed);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_dropped - get the total number of dropped packets
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * The total number of dropped packets since starting transmission or reception.
Packit 0bbbb1
 **/
Packit 0bbbb1
unsigned int
Packit 0bbbb1
iec61883_mpeg2_get_dropped(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_mpeg2_get_callback_data - get the callback data you supplied
Packit 0bbbb1
 * @mpeg2: pointer to iec61883_mpeg2 object
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in bus reset callback routines because only
Packit 0bbbb1
 * the libraw1394 handle is available, and libiec61883 uses the userdata
Packit 0bbbb1
 * field of the libraw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * An opaque pointer to whatever you supplied when you called init.
Packit 0bbbb1
 **/
Packit 0bbbb1
void *
Packit 0bbbb1
iec61883_mpeg2_get_callback_data(iec61883_mpeg2_t mpeg2);
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
/*******************************************************************************
Packit 0bbbb1
 * Connection Management Procedures
Packit 0bbbb1
 **/
Packit 0bbbb1
Packit 0bbbb1
enum iec61883_pcr_overhead_id {
Packit 0bbbb1
	IEC61883_OVERHEAD_512 = 0, 
Packit 0bbbb1
	IEC61883_OVERHEAD_32, 
Packit 0bbbb1
	IEC61883_OVERHEAD_64,
Packit 0bbbb1
	IEC61883_OVERHEAD_96,
Packit 0bbbb1
	IEC61883_OVERHEAD_128,
Packit 0bbbb1
	IEC61883_OVERHEAD_160,
Packit 0bbbb1
	IEC61883_OVERHEAD_192,
Packit 0bbbb1
	IEC61883_OVERHEAD_224,
Packit 0bbbb1
	IEC61883_OVERHEAD_256,
Packit 0bbbb1
	IEC61883_OVERHEAD_288,
Packit 0bbbb1
	IEC61883_OVERHEAD_320,
Packit 0bbbb1
	IEC61883_OVERHEAD_352,
Packit 0bbbb1
	IEC61883_OVERHEAD_384,
Packit 0bbbb1
	IEC61883_OVERHEAD_416,
Packit 0bbbb1
	IEC61883_OVERHEAD_448,
Packit 0bbbb1
	IEC61883_OVERHEAD_480
Packit 0bbbb1
};
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_cmp_calc_bandwidth - calculate bandwidth allocation units
Packit 0bbbb1
 * @handle: a libraw1394 handle
Packit 0bbbb1
 * @output: the node id of the transmitter
Packit 0bbbb1
 * @plug: the index of the output plug
Packit 0bbbb1
 * @speed: if >= 0 then override the data rate factor
Packit 0bbbb1
 *
Packit 0bbbb1
 * Uses parameters of the output plug control register of the transmitter to
Packit 0bbbb1
 * calculate what its bandwidth requirements are. Parameters inlude payload,
Packit 0bbbb1
 * overhead_id, and data rate (optionally @speed).
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * bandwidth allocation units or -1 on failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_calc_bandwidth (raw1394handle_t handle, nodeid_t output, int plug,
Packit 0bbbb1
	int speed);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_cmp_connect - establish or overlay connection automatically
Packit 0bbbb1
 * @handle: a libraw1394 handle
Packit 0bbbb1
 * @output: node id of the transmitter
Packit 0bbbb1
 * @oplug: the output plug to use. If -1, find the first online plug, and
Packit 0bbbb1
 * upon return, contains the plug number used.
Packit 0bbbb1
 * @input: node id of the receiver
Packit 0bbbb1
 * @iplug: the input plug to use. If -1, find the first online plug, and
Packit 0bbbb1
 * upon return, contains the plug number used.
Packit 0bbbb1
 * @bandwidth: an input/output parameter. As an input this is a boolean that
Packit 0bbbb1
 * indicates whether to perform bandwidth allocation. Supply 0 to skip bandwidth
Packit 0bbbb1
 * allocation; any other value permits it. Upon return, actual bandwidth allocation
Packit 0bbbb1
 * units allocated are returned, which you supply to the disconnect routine.
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is a high level function that attempts to be as smart as possible, but
Packit 0bbbb1
 * it gives point-to-point connections higher priority over broadcast connections.
Packit 0bbbb1
 * It can automatically handle situations where either @input and/or @output does
Packit 0bbbb1
 * not implement plug control registers. However, if one node implements plug
Packit 0bbbb1
 * registers it assumes the other node has some sort of manual channel selection
Packit 0bbbb1
 * (i.e., through software or a control panel).
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * It returns the isochronous channel number selected or -1 if the function has
Packit 0bbbb1
 * failed for any reason.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_connect (raw1394handle_t handle, nodeid_t output, int *oplug,
Packit 0bbbb1
	nodeid_t input, int *iplug, int *bandwidth);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_cmp_reconnect - reestablish or overlay connection after a bus reset
Packit 0bbbb1
 * @handle: a libraw1394 handle
Packit 0bbbb1
 * @output: node id of the transmitter
Packit 0bbbb1
 * @oplug: the output plug to use. If -1, find the first online plug, and
Packit 0bbbb1
 * upon return, contains the plug number used.
Packit 0bbbb1
 * @input: node id of the receiver
Packit 0bbbb1
 * @iplug: the input plug to use. If -1, find the first online plug, and
Packit 0bbbb1
 * upon return, contains the plug number used.
Packit 0bbbb1
 * @bandwidth: an input/output parameter. As an input this is a boolean that
Packit 0bbbb1
 * indicates whether to perform bandwidth allocation. Supply 0 to skip bandwidth
Packit 0bbbb1
 * allocation; any other value permits it. Upon return, actual bandwidth allocation
Packit 0bbbb1
 * units allocated are returned, which you supply to the disconnect routine.
Packit 0bbbb1
 * @channel: the channel number on which to reconnect, if possible
Packit 0bbbb1
 *
Packit 0bbbb1
 * This is a high level function that attempts to be as smart as possible, but
Packit 0bbbb1
 * it gives point-to-point connections higher priority over broadcast connections.
Packit 0bbbb1
 * It can automatically handle situations where either @input and/or @output does
Packit 0bbbb1
 * not implement plug control registers. However, if one node implements plug
Packit 0bbbb1
 * registers it assumes the other node has some sort of manual channel selection
Packit 0bbbb1
 * (i.e., through software or a control panel).
Packit 0bbbb1
 *
Packit 0bbbb1
 * This function is useful in bus reset situations where it would be nice to 
Packit 0bbbb1
 * reconfigure the transmission or reception if the channel does not need to
Packit 0bbbb1
 * change.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * It returns the isochronous channel number selected or -1 if the function has
Packit 0bbbb1
 * failed for any reason.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_reconnect (raw1394handle_t handle, nodeid_t output, int *oplug,
Packit 0bbbb1
	nodeid_t input, int *iplug, int *bandwidth, int channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_cmp_disconnect - break connection automatically
Packit 0bbbb1
 * @handle: a libraw1394 handle
Packit 0bbbb1
 * @output: node id of the transmitter
Packit 0bbbb1
 * @oplug: the output plug to use, or -1 to find the first online plug.
Packit 0bbbb1
 * @input: node id of the receiver
Packit 0bbbb1
 * @iplug: the input plug to use, or -1 to find the first online plug.
Packit 0bbbb1
 * @channel: the isochronous channel in use
Packit 0bbbb1
 * @bandwidth: the number of bandwidth allocation units to release when needed
Packit 0bbbb1
 *
Packit 0bbbb1
 * This high level connection management function automatically locates the
Packit 0bbbb1
 * appropriate plug on @output and @input based upon the channel number. It 
Packit 0bbbb1
 * gracefully handles when node plugs exist on @output and/or @input. When there 
Packit 0bbbb1
 * are no more point-to-point connections on output plug, then the channel and
Packit 0bbbb1
 * bandwidth are released.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 on success or -1 on failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_disconnect (raw1394handle_t handle, nodeid_t output, int oplug,
Packit 0bbbb1
	nodeid_t input, int iplug, unsigned int channel, unsigned int bandwidth);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_cmp_normalize_output - make IRM channels available consistent with plug
Packit 0bbbb1
 * @handle: a libraw1394 handle
Packit 0bbbb1
 * @node: node id of the transmitter
Packit 0bbbb1
 *
Packit 0bbbb1
 * Loops over every output plug on the node, and if it has a point-to-point or
Packit 0bbbb1
 * broadcast connection, then make sure the channel is allocated with the 
Packit 0bbbb1
 * isochronous resource manager. This is used to help provide bus sanity and prevent
Packit 0bbbb1
 * a channel from being used on a subsequent connection that might really already be
Packit 0bbbb1
 * in usage!
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns:
Packit 0bbbb1
 * 0 on success or -1 ojn failure
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_normalize_output (raw1394handle_t handle, nodeid_t node);
Packit 0bbbb1
Packit 0bbbb1
/*
Packit 0bbbb1
 * The following CMP functions are lower level routines used by the above 
Packit 0bbbb1
 * connection procedures exposed here in case the above procedures do not fit 
Packit 0bbbb1
 * your use cases.
Packit 0bbbb1
 */
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_p2p (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	nodeid_t input_node, int input_plug,	
Packit 0bbbb1
	unsigned int channel, unsigned int speed);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_p2p_output (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	unsigned int channel, unsigned int speed);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_p2p_input (raw1394handle_t handle,
Packit 0bbbb1
	nodeid_t input_node, int input_plug,
Packit 0bbbb1
	unsigned int channel);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_bcast (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	nodeid_t input_node, int input_plug,
Packit 0bbbb1
	unsigned int channel, unsigned int speed);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_bcast_output (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	unsigned int channel, unsigned int speed);
Packit 0bbbb1
		
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_create_bcast_input (raw1394handle_t handle,
Packit 0bbbb1
	nodeid_t input_node, int input_plug,
Packit 0bbbb1
	unsigned int channel);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_overlay_p2p (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	nodeid_t input_node, int input_plug);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_overlay_p2p_output (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug);
Packit 0bbbb1
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_overlay_p2p_input (raw1394handle_t handle,
Packit 0bbbb1
	nodeid_t input_node, int input_plug);
Packit 0bbbb1
		
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_cmp_overlay_bcast (raw1394handle_t handle, 
Packit 0bbbb1
	nodeid_t output_node, int output_plug,
Packit 0bbbb1
	nodeid_t input_node, int input_plug);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_plug_impr_init - Initialise hosting of local input plug registers.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 * @data_rate: an enum iec61883_datarate
Packit 0bbbb1
 *
Packit 0bbbb1
 * Initially, no plugs are available; call iec61883_plug_add_ipcr() to add
Packit 0bbbb1
 * plugs.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * 0 for success, -EINVAL if data_rate is invalid, or or -1 (errno) on 
Packit 0bbbb1
 * libraw1394 failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_impr_init (raw1394handle_t h, unsigned int data_rate);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * ice61883_plug_impr_clear - Set the number of input plugs to zero.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_plug_impr_clear (raw1394handle_t h);
Packit 0bbbb1
Packit 0bbbb1
/** 
Packit 0bbbb1
 * iec61883_plug_impr_close - Stop hosting local input plugs.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * 0 for success, -1 (errno) on error.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_impr_close (raw1394handle_t h);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_plug_add_ipcr - Add a local input plug.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 * @online: The initial state of the plug: online (1) or not (0).
Packit 0bbbb1
 *
Packit 0bbbb1
 * You must call iec61883_plug_impr_init() before this.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * plug number (>=0) on sucess or -EINVAL if online is not 0 or 1, 
Packit 0bbbb1
 * -ENOSPC if maximum plugs reached, or -EPERM if iec61883_plug_impr_init() 
Packit 0bbbb1
 * not called.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_ipcr_add (raw1394handle_t h, unsigned int online);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_plug_ompr_init - Initialise hosting of local output plug registers.
Packit 0bbbb1
 * @h: A raw1394 handle
Packit 0bbbb1
 * @data_rate: one of enum iec61883_datarate
Packit 0bbbb1
 * @bcast_channel: the broacast channel base (0 - 63)
Packit 0bbbb1
 *
Packit 0bbbb1
 * Initially, no plugs are available; call iec61883_plug_add_opcr() to add
Packit 0bbbb1
 * plugs.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * 0 for success, -EINVAL if data_rate or bcast_channel is invalid, 
Packit 0bbbb1
 * or or -1 (errno) on libraw1394 failure.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_ompr_init (raw1394handle_t h, unsigned int data_rate, 
Packit 0bbbb1
	unsigned int bcast_channel);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * ice61883_plug_ompr_clear - Set the number of output plugs to zero.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 **/
Packit 0bbbb1
void
Packit 0bbbb1
iec61883_plug_ompr_clear (raw1394handle_t h);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_plug_ompr_close - Stop hosting local output plugs.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * 0 for success, -1 (errno) on error.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_ompr_close (raw1394handle_t h);
Packit 0bbbb1
Packit 0bbbb1
/**
Packit 0bbbb1
 * iec61883_plug_add_opcr - Add a local output plug.
Packit 0bbbb1
 * @h: A raw1394 handle.
Packit 0bbbb1
 * @online: The initial state of the plug: online (1) or not (0).
Packit 0bbbb1
 * @overhead_id: one of enum iec61883_pcr_overhead_id.
Packit 0bbbb1
 * @payload: the maximum number of quadlets per packet.
Packit 0bbbb1
 *
Packit 0bbbb1
 * You must call iec61883_plug_ompr_init() before this.
Packit 0bbbb1
 *
Packit 0bbbb1
 * Returns: 
Packit 0bbbb1
 * plug number (>=0) on sucess, -EINVAL if online is not 0 or 1 or
Packit 0bbbb1
 * if overhead_id or payload are out of range, -ENOSPC if maximum plugs 
Packit 0bbbb1
 * reached, or -EPERM if iec61883_plug_ompr_init() not called.
Packit 0bbbb1
 **/
Packit 0bbbb1
int
Packit 0bbbb1
iec61883_plug_opcr_add (raw1394handle_t h, unsigned int online,
Packit 0bbbb1
	unsigned int overhead_id, unsigned int payload);
Packit 0bbbb1
Packit 0bbbb1
Packit 0bbbb1
#ifdef __cplusplus
Packit 0bbbb1
}
Packit 0bbbb1
#endif
Packit 0bbbb1
Packit 0bbbb1
#endif /* _IEC61883_H */