|
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 */
|