📄 amdtp.h
字号:
/* -*- c-basic-offset: 8 -*- */#ifndef __AMDTP_H#define __AMDTP_H#include <asm/types.h>#include "ieee1394-ioctl.h"/* The userspace interface for the Audio & Music Data Transmission * Protocol driver is really simple. First, open /dev/amdtp, use the * ioctl to configure format, rate, dimension and either plug or * channel, then start writing samples. * * The formats supported by the driver are listed below. * AMDTP_FORMAT_RAW corresponds to the AM824 raw format, which can * carry any number of channels, so use this if you're streaming * multichannel audio. The AMDTP_FORMAT_IEC958_PCM corresponds to the * AM824 IEC958 encapsulation without the IEC958 data bit set, using * AMDTP_FORMAT_IEC958_AC3 will transmit the samples with the data bit * set, suitable for transmitting compressed AC-3 audio. * * The rate field specifies the transmission rate; supported values * are 32000, 44100, 48000, 88200, 96000, 176400 and 192000. * * The dimension field specifies the dimension of the signal, that is, * the number of audio channels. Only AMDTP_FORMAT_RAW supports * settings greater than 2. * * The mode field specifies which transmission mode to use. The AMDTP * specifies two different transmission modes: blocking and * non-blocking. The blocking transmission mode always send a fixed * number of samples, typically 8, 16 or 32. To exactly match the * transmission rate, the driver alternates between sending empty and * non-empty packets. In non-blocking mode, the driver transmits as * small packets as possible. For example, for a transmission rate of * 44100Hz, the driver should send 5 41/80 samples in every cycle, but * this is not possible so instead the driver alternates between * sending 5 and 6 samples. * * The last thing to specify is either the isochronous channel to use * or the output plug to connect to. If you know what channel the * destination device will listen on, you can specify the channel * directly and use the AMDTP_IOC_CHANNEL ioctl. However, if the * destination device chooses the channel and uses the IEC61883-1 plug * mechanism, you can specify an output plug to connect to. The * driver will pick up the channel number from the plug once the * destination device locks the output plug control register. In this * case set the plug field and use the AMDTP_IOC_PLUG ioctl. * * Having configured the interface, the driver now accepts writes of * regular 16 bit signed little endian samples, with the channels * interleaved. For example, 4 channels would look like: * * | sample 0 | sample 1 ... * | ch. 0 | ch. 1 | ch. 2 | ch. 3 | ch. 0 | ... * | lsb | msb | lsb | msb | lsb | msb | lsb | msb | lsb | msb | ... * */enum { AMDTP_FORMAT_RAW, AMDTP_FORMAT_IEC958_PCM, AMDTP_FORMAT_IEC958_AC3};enum { AMDTP_MODE_BLOCKING, AMDTP_MODE_NON_BLOCKING,};enum { AMDTP_INPUT_LE16, AMDTP_INPUT_BE16,};struct amdtp_ioctl { __u32 format; __u32 rate; __u32 dimension; __u32 mode; union { __u32 channel; __u32 plug; } u;};#endif /* __AMDTP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -