doc-rst: linux_tv: remove whitespaces
Let's remove bad whitespaces on the entire book. That helps to avoid mixing whitespace removal with other patches. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
a163ad5ceb
commit
0579e6e3a3
@ -34,52 +34,52 @@ file: audio.h
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
|
AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||||
AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */
|
AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */
|
||||||
} audio_stream_source_t;
|
} audio_stream_source_t;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_STOPPED, /* Device is stopped */
|
AUDIO_STOPPED, /* Device is stopped */
|
||||||
AUDIO_PLAYING, /* Device is currently playing */
|
AUDIO_PLAYING, /* Device is currently playing */
|
||||||
AUDIO_PAUSED /* Device is paused */
|
AUDIO_PAUSED /* Device is paused */
|
||||||
} audio_play_state_t;
|
} audio_play_state_t;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_STEREO,
|
AUDIO_STEREO,
|
||||||
AUDIO_MONO_LEFT,
|
AUDIO_MONO_LEFT,
|
||||||
AUDIO_MONO_RIGHT,
|
AUDIO_MONO_RIGHT,
|
||||||
AUDIO_MONO,
|
AUDIO_MONO,
|
||||||
AUDIO_STEREO_SWAPPED
|
AUDIO_STEREO_SWAPPED
|
||||||
} audio_channel_select_t;
|
} audio_channel_select_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct audio_mixer {
|
typedef struct audio_mixer {
|
||||||
unsigned int volume_left;
|
unsigned int volume_left;
|
||||||
unsigned int volume_right;
|
unsigned int volume_right;
|
||||||
// what else do we need? bass, pass-through, ...
|
// what else do we need? bass, pass-through, ...
|
||||||
} audio_mixer_t;
|
} audio_mixer_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct audio_status {
|
typedef struct audio_status {
|
||||||
int AV_sync_state; /* sync audio and video? */
|
int AV_sync_state; /* sync audio and video? */
|
||||||
int mute_state; /* audio is muted */
|
int mute_state; /* audio is muted */
|
||||||
audio_play_state_t play_state; /* current playback state */
|
audio_play_state_t play_state; /* current playback state */
|
||||||
audio_stream_source_t stream_source; /* current stream source */
|
audio_stream_source_t stream_source; /* current stream source */
|
||||||
audio_channel_select_t channel_select; /* currently selected channel */
|
audio_channel_select_t channel_select; /* currently selected channel */
|
||||||
int bypass_mode; /* pass on audio data to */
|
int bypass_mode; /* pass on audio data to */
|
||||||
audio_mixer_t mixer_state; /* current mixer state */
|
audio_mixer_t mixer_state; /* current mixer state */
|
||||||
} audio_status_t; /* separate decoder hardware */
|
} audio_status_t; /* separate decoder hardware */
|
||||||
|
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct audio_karaoke { /* if Vocal1 or Vocal2 are non-zero, they get mixed */
|
struct audio_karaoke { /* if Vocal1 or Vocal2 are non-zero, they get mixed */
|
||||||
int vocal1; /* into left and right t at 70% each */
|
int vocal1; /* into left and right t at 70% each */
|
||||||
int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
|
int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
|
||||||
int melody; /* mixed into the left channel and */
|
int melody; /* mixed into the left channel and */
|
||||||
/* Vocal2 into the right channel at 100% each. */
|
/* Vocal2 into the right channel at 100% each. */
|
||||||
/* if Melody is non-zero, the melody channel gets mixed*/
|
/* if Melody is non-zero, the melody channel gets mixed*/
|
||||||
} audio_karaoke_t; /* into left and right */
|
} audio_karaoke_t; /* into left and right */
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,16 +34,16 @@ file: ca.h
|
|||||||
/* slot interface types and info */
|
/* slot interface types and info */
|
||||||
|
|
||||||
typedef struct ca_slot_info {
|
typedef struct ca_slot_info {
|
||||||
int num; /* slot number */
|
int num; /* slot number */
|
||||||
|
|
||||||
int type; /* CA interface this slot supports */
|
int type; /* CA interface this slot supports */
|
||||||
#define CA_CI 1 /* CI high level interface */
|
#define CA_CI 1 /* CI high level interface */
|
||||||
#define CA_CI_LINK 2 /* CI link layer level interface */
|
#define CA_CI_LINK 2 /* CI link layer level interface */
|
||||||
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
||||||
#define CA_DESCR 8 /* built-in descrambler */
|
#define CA_DESCR 8 /* built-in descrambler */
|
||||||
#define CA_SC 128 /* simple smart card interface */
|
#define CA_SC 128 /* simple smart card interface */
|
||||||
|
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
||||||
#define CA_CI_MODULE_READY 2
|
#define CA_CI_MODULE_READY 2
|
||||||
} ca_slot_info_t;
|
} ca_slot_info_t;
|
||||||
@ -52,37 +52,37 @@ file: ca.h
|
|||||||
/* descrambler types and info */
|
/* descrambler types and info */
|
||||||
|
|
||||||
typedef struct ca_descr_info {
|
typedef struct ca_descr_info {
|
||||||
unsigned int num; /* number of available descramblers (keys) */
|
unsigned int num; /* number of available descramblers (keys) */
|
||||||
unsigned int type; /* type of supported scrambling system */
|
unsigned int type; /* type of supported scrambling system */
|
||||||
#define CA_ECD 1
|
#define CA_ECD 1
|
||||||
#define CA_NDS 2
|
#define CA_NDS 2
|
||||||
#define CA_DSS 4
|
#define CA_DSS 4
|
||||||
} ca_descr_info_t;
|
} ca_descr_info_t;
|
||||||
|
|
||||||
typedef struct ca_caps {
|
typedef struct ca_caps {
|
||||||
unsigned int slot_num; /* total number of CA card and module slots */
|
unsigned int slot_num; /* total number of CA card and module slots */
|
||||||
unsigned int slot_type; /* OR of all supported types */
|
unsigned int slot_type; /* OR of all supported types */
|
||||||
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
||||||
unsigned int descr_type; /* OR of all supported types */
|
unsigned int descr_type; /* OR of all supported types */
|
||||||
} ca_caps_t;
|
} ca_caps_t;
|
||||||
|
|
||||||
/* a message to/from a CI-CAM */
|
/* a message to/from a CI-CAM */
|
||||||
typedef struct ca_msg {
|
typedef struct ca_msg {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
unsigned int length;
|
unsigned int length;
|
||||||
unsigned char msg[256];
|
unsigned char msg[256];
|
||||||
} ca_msg_t;
|
} ca_msg_t;
|
||||||
|
|
||||||
typedef struct ca_descr {
|
typedef struct ca_descr {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
unsigned int parity; /* 0 == even, 1 == odd */
|
unsigned int parity; /* 0 == even, 1 == odd */
|
||||||
unsigned char cw[8];
|
unsigned char cw[8];
|
||||||
} ca_descr_t;
|
} ca_descr_t;
|
||||||
|
|
||||||
typedef struct ca_pid {
|
typedef struct ca_pid {
|
||||||
unsigned int pid;
|
unsigned int pid;
|
||||||
int index; /* -1 == disable*/
|
int index; /* -1 == disable*/
|
||||||
} ca_pid_t;
|
} ca_pid_t;
|
||||||
|
|
||||||
#define CA_RESET _IO('o', 128)
|
#define CA_RESET _IO('o', 128)
|
||||||
|
@ -41,51 +41,51 @@ file: dmx.h
|
|||||||
|
|
||||||
enum dmx_output
|
enum dmx_output
|
||||||
{
|
{
|
||||||
DMX_OUT_DECODER, /* Streaming directly to decoder. */
|
DMX_OUT_DECODER, /* Streaming directly to decoder. */
|
||||||
DMX_OUT_TAP, /* Output going to a memory buffer */
|
DMX_OUT_TAP, /* Output going to a memory buffer */
|
||||||
/* (to be retrieved via the read command).*/
|
/* (to be retrieved via the read command).*/
|
||||||
DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
|
DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
|
||||||
/* (to be retrieved by reading from the */
|
/* (to be retrieved by reading from the */
|
||||||
/* logical DVR device). */
|
/* logical DVR device). */
|
||||||
DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
|
DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum dmx_output dmx_output_t;
|
typedef enum dmx_output dmx_output_t;
|
||||||
|
|
||||||
typedef enum dmx_input
|
typedef enum dmx_input
|
||||||
{
|
{
|
||||||
DMX_IN_FRONTEND, /* Input from a front-end device. */
|
DMX_IN_FRONTEND, /* Input from a front-end device. */
|
||||||
DMX_IN_DVR /* Input from the logical DVR device. */
|
DMX_IN_DVR /* Input from the logical DVR device. */
|
||||||
} dmx_input_t;
|
} dmx_input_t;
|
||||||
|
|
||||||
|
|
||||||
typedef enum dmx_ts_pes
|
typedef enum dmx_ts_pes
|
||||||
{
|
{
|
||||||
DMX_PES_AUDIO0,
|
DMX_PES_AUDIO0,
|
||||||
DMX_PES_VIDEO0,
|
DMX_PES_VIDEO0,
|
||||||
DMX_PES_TELETEXT0,
|
DMX_PES_TELETEXT0,
|
||||||
DMX_PES_SUBTITLE0,
|
DMX_PES_SUBTITLE0,
|
||||||
DMX_PES_PCR0,
|
DMX_PES_PCR0,
|
||||||
|
|
||||||
DMX_PES_AUDIO1,
|
DMX_PES_AUDIO1,
|
||||||
DMX_PES_VIDEO1,
|
DMX_PES_VIDEO1,
|
||||||
DMX_PES_TELETEXT1,
|
DMX_PES_TELETEXT1,
|
||||||
DMX_PES_SUBTITLE1,
|
DMX_PES_SUBTITLE1,
|
||||||
DMX_PES_PCR1,
|
DMX_PES_PCR1,
|
||||||
|
|
||||||
DMX_PES_AUDIO2,
|
DMX_PES_AUDIO2,
|
||||||
DMX_PES_VIDEO2,
|
DMX_PES_VIDEO2,
|
||||||
DMX_PES_TELETEXT2,
|
DMX_PES_TELETEXT2,
|
||||||
DMX_PES_SUBTITLE2,
|
DMX_PES_SUBTITLE2,
|
||||||
DMX_PES_PCR2,
|
DMX_PES_PCR2,
|
||||||
|
|
||||||
DMX_PES_AUDIO3,
|
DMX_PES_AUDIO3,
|
||||||
DMX_PES_VIDEO3,
|
DMX_PES_VIDEO3,
|
||||||
DMX_PES_TELETEXT3,
|
DMX_PES_TELETEXT3,
|
||||||
DMX_PES_SUBTITLE3,
|
DMX_PES_SUBTITLE3,
|
||||||
DMX_PES_PCR3,
|
DMX_PES_PCR3,
|
||||||
|
|
||||||
DMX_PES_OTHER
|
DMX_PES_OTHER
|
||||||
} dmx_pes_type_t;
|
} dmx_pes_type_t;
|
||||||
|
|
||||||
#define DMX_PES_AUDIO DMX_PES_AUDIO0
|
#define DMX_PES_AUDIO DMX_PES_AUDIO0
|
||||||
@ -97,18 +97,18 @@ file: dmx.h
|
|||||||
|
|
||||||
typedef struct dmx_filter
|
typedef struct dmx_filter
|
||||||
{
|
{
|
||||||
__u8 filter[DMX_FILTER_SIZE];
|
__u8 filter[DMX_FILTER_SIZE];
|
||||||
__u8 mask[DMX_FILTER_SIZE];
|
__u8 mask[DMX_FILTER_SIZE];
|
||||||
__u8 mode[DMX_FILTER_SIZE];
|
__u8 mode[DMX_FILTER_SIZE];
|
||||||
} dmx_filter_t;
|
} dmx_filter_t;
|
||||||
|
|
||||||
|
|
||||||
struct dmx_sct_filter_params
|
struct dmx_sct_filter_params
|
||||||
{
|
{
|
||||||
__u16 pid;
|
__u16 pid;
|
||||||
dmx_filter_t filter;
|
dmx_filter_t filter;
|
||||||
__u32 timeout;
|
__u32 timeout;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
#define DMX_CHECK_CRC 1
|
#define DMX_CHECK_CRC 1
|
||||||
#define DMX_ONESHOT 2
|
#define DMX_ONESHOT 2
|
||||||
#define DMX_IMMEDIATE_START 4
|
#define DMX_IMMEDIATE_START 4
|
||||||
@ -118,33 +118,33 @@ file: dmx.h
|
|||||||
|
|
||||||
struct dmx_pes_filter_params
|
struct dmx_pes_filter_params
|
||||||
{
|
{
|
||||||
__u16 pid;
|
__u16 pid;
|
||||||
dmx_input_t input;
|
dmx_input_t input;
|
||||||
dmx_output_t output;
|
dmx_output_t output;
|
||||||
dmx_pes_type_t pes_type;
|
dmx_pes_type_t pes_type;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct dmx_caps {
|
typedef struct dmx_caps {
|
||||||
__u32 caps;
|
__u32 caps;
|
||||||
int num_decoders;
|
int num_decoders;
|
||||||
} dmx_caps_t;
|
} dmx_caps_t;
|
||||||
|
|
||||||
typedef enum dmx_source {
|
typedef enum dmx_source {
|
||||||
DMX_SOURCE_FRONT0 = 0,
|
DMX_SOURCE_FRONT0 = 0,
|
||||||
DMX_SOURCE_FRONT1,
|
DMX_SOURCE_FRONT1,
|
||||||
DMX_SOURCE_FRONT2,
|
DMX_SOURCE_FRONT2,
|
||||||
DMX_SOURCE_FRONT3,
|
DMX_SOURCE_FRONT3,
|
||||||
DMX_SOURCE_DVR0 = 16,
|
DMX_SOURCE_DVR0 = 16,
|
||||||
DMX_SOURCE_DVR1,
|
DMX_SOURCE_DVR1,
|
||||||
DMX_SOURCE_DVR2,
|
DMX_SOURCE_DVR2,
|
||||||
DMX_SOURCE_DVR3
|
DMX_SOURCE_DVR3
|
||||||
} dmx_source_t;
|
} dmx_source_t;
|
||||||
|
|
||||||
struct dmx_stc {
|
struct dmx_stc {
|
||||||
unsigned int num; /* input : which STC? 0..N */
|
unsigned int num; /* input : which STC? 0..N */
|
||||||
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
|
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
|
||||||
__u64 stc; /* output: stc in 'base'*90 kHz units */
|
__u64 stc; /* output: stc in 'base'*90 kHz units */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DMX_START _IO('o', 41)
|
#define DMX_START _IO('o', 41)
|
||||||
|
@ -36,58 +36,58 @@ file: frontend.h
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
enum fe_type {
|
enum fe_type {
|
||||||
FE_QPSK,
|
FE_QPSK,
|
||||||
FE_QAM,
|
FE_QAM,
|
||||||
FE_OFDM,
|
FE_OFDM,
|
||||||
FE_ATSC
|
FE_ATSC
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_caps {
|
enum fe_caps {
|
||||||
FE_IS_STUPID = 0,
|
FE_IS_STUPID = 0,
|
||||||
FE_CAN_INVERSION_AUTO = 0x1,
|
FE_CAN_INVERSION_AUTO = 0x1,
|
||||||
FE_CAN_FEC_1_2 = 0x2,
|
FE_CAN_FEC_1_2 = 0x2,
|
||||||
FE_CAN_FEC_2_3 = 0x4,
|
FE_CAN_FEC_2_3 = 0x4,
|
||||||
FE_CAN_FEC_3_4 = 0x8,
|
FE_CAN_FEC_3_4 = 0x8,
|
||||||
FE_CAN_FEC_4_5 = 0x10,
|
FE_CAN_FEC_4_5 = 0x10,
|
||||||
FE_CAN_FEC_5_6 = 0x20,
|
FE_CAN_FEC_5_6 = 0x20,
|
||||||
FE_CAN_FEC_6_7 = 0x40,
|
FE_CAN_FEC_6_7 = 0x40,
|
||||||
FE_CAN_FEC_7_8 = 0x80,
|
FE_CAN_FEC_7_8 = 0x80,
|
||||||
FE_CAN_FEC_8_9 = 0x100,
|
FE_CAN_FEC_8_9 = 0x100,
|
||||||
FE_CAN_FEC_AUTO = 0x200,
|
FE_CAN_FEC_AUTO = 0x200,
|
||||||
FE_CAN_QPSK = 0x400,
|
FE_CAN_QPSK = 0x400,
|
||||||
FE_CAN_QAM_16 = 0x800,
|
FE_CAN_QAM_16 = 0x800,
|
||||||
FE_CAN_QAM_32 = 0x1000,
|
FE_CAN_QAM_32 = 0x1000,
|
||||||
FE_CAN_QAM_64 = 0x2000,
|
FE_CAN_QAM_64 = 0x2000,
|
||||||
FE_CAN_QAM_128 = 0x4000,
|
FE_CAN_QAM_128 = 0x4000,
|
||||||
FE_CAN_QAM_256 = 0x8000,
|
FE_CAN_QAM_256 = 0x8000,
|
||||||
FE_CAN_QAM_AUTO = 0x10000,
|
FE_CAN_QAM_AUTO = 0x10000,
|
||||||
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
|
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
|
||||||
FE_CAN_BANDWIDTH_AUTO = 0x40000,
|
FE_CAN_BANDWIDTH_AUTO = 0x40000,
|
||||||
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
|
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
|
||||||
FE_CAN_HIERARCHY_AUTO = 0x100000,
|
FE_CAN_HIERARCHY_AUTO = 0x100000,
|
||||||
FE_CAN_8VSB = 0x200000,
|
FE_CAN_8VSB = 0x200000,
|
||||||
FE_CAN_16VSB = 0x400000,
|
FE_CAN_16VSB = 0x400000,
|
||||||
FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
|
FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
|
||||||
FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
|
FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
|
||||||
FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
|
FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
|
||||||
FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
|
FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
|
||||||
FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
|
FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
|
||||||
FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
|
FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
|
||||||
FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
|
FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_frontend_info {
|
struct dvb_frontend_info {
|
||||||
char name[128];
|
char name[128];
|
||||||
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
|
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
|
||||||
__u32 frequency_min;
|
__u32 frequency_min;
|
||||||
__u32 frequency_max;
|
__u32 frequency_max;
|
||||||
__u32 frequency_stepsize;
|
__u32 frequency_stepsize;
|
||||||
__u32 frequency_tolerance;
|
__u32 frequency_tolerance;
|
||||||
__u32 symbol_rate_min;
|
__u32 symbol_rate_min;
|
||||||
__u32 symbol_rate_max;
|
__u32 symbol_rate_max;
|
||||||
__u32 symbol_rate_tolerance; /* ppm */
|
__u32 symbol_rate_tolerance; /* ppm */
|
||||||
__u32 notifier_delay; /* DEPRECATED */
|
__u32 notifier_delay; /* DEPRECATED */
|
||||||
enum fe_caps caps;
|
enum fe_caps caps;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -96,30 +96,30 @@ file: frontend.h
|
|||||||
* the meaning of this struct...
|
* the meaning of this struct...
|
||||||
*/
|
*/
|
||||||
struct dvb_diseqc_master_cmd {
|
struct dvb_diseqc_master_cmd {
|
||||||
__u8 msg [6]; /* { framing, address, command, data [3] } */
|
__u8 msg [6]; /* { framing, address, command, data [3] } */
|
||||||
__u8 msg_len; /* valid values are 3...6 */
|
__u8 msg_len; /* valid values are 3...6 */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_diseqc_slave_reply {
|
struct dvb_diseqc_slave_reply {
|
||||||
__u8 msg [4]; /* { framing, data [3] } */
|
__u8 msg [4]; /* { framing, data [3] } */
|
||||||
__u8 msg_len; /* valid values are 0...4, 0 means no msg */
|
__u8 msg_len; /* valid values are 0...4, 0 means no msg */
|
||||||
int timeout; /* return from ioctl after timeout ms with */
|
int timeout; /* return from ioctl after timeout ms with */
|
||||||
}; /* errorcode when no message was received */
|
}; /* errorcode when no message was received */
|
||||||
|
|
||||||
enum fe_sec_voltage {
|
enum fe_sec_voltage {
|
||||||
SEC_VOLTAGE_13,
|
SEC_VOLTAGE_13,
|
||||||
SEC_VOLTAGE_18,
|
SEC_VOLTAGE_18,
|
||||||
SEC_VOLTAGE_OFF
|
SEC_VOLTAGE_OFF
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_sec_tone_mode {
|
enum fe_sec_tone_mode {
|
||||||
SEC_TONE_ON,
|
SEC_TONE_ON,
|
||||||
SEC_TONE_OFF
|
SEC_TONE_OFF
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_sec_mini_cmd {
|
enum fe_sec_mini_cmd {
|
||||||
SEC_MINI_A,
|
SEC_MINI_A,
|
||||||
SEC_MINI_B
|
SEC_MINI_B
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -134,93 +134,93 @@ file: frontend.h
|
|||||||
* to reset DiSEqC, tone and parameters
|
* to reset DiSEqC, tone and parameters
|
||||||
*/
|
*/
|
||||||
enum fe_status {
|
enum fe_status {
|
||||||
FE_HAS_SIGNAL = 0x01,
|
FE_HAS_SIGNAL = 0x01,
|
||||||
FE_HAS_CARRIER = 0x02,
|
FE_HAS_CARRIER = 0x02,
|
||||||
FE_HAS_VITERBI = 0x04,
|
FE_HAS_VITERBI = 0x04,
|
||||||
FE_HAS_SYNC = 0x08,
|
FE_HAS_SYNC = 0x08,
|
||||||
FE_HAS_LOCK = 0x10,
|
FE_HAS_LOCK = 0x10,
|
||||||
FE_TIMEDOUT = 0x20,
|
FE_TIMEDOUT = 0x20,
|
||||||
FE_REINIT = 0x40,
|
FE_REINIT = 0x40,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_spectral_inversion {
|
enum fe_spectral_inversion {
|
||||||
INVERSION_OFF,
|
INVERSION_OFF,
|
||||||
INVERSION_ON,
|
INVERSION_ON,
|
||||||
INVERSION_AUTO
|
INVERSION_AUTO
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_code_rate {
|
enum fe_code_rate {
|
||||||
FEC_NONE = 0,
|
FEC_NONE = 0,
|
||||||
FEC_1_2,
|
FEC_1_2,
|
||||||
FEC_2_3,
|
FEC_2_3,
|
||||||
FEC_3_4,
|
FEC_3_4,
|
||||||
FEC_4_5,
|
FEC_4_5,
|
||||||
FEC_5_6,
|
FEC_5_6,
|
||||||
FEC_6_7,
|
FEC_6_7,
|
||||||
FEC_7_8,
|
FEC_7_8,
|
||||||
FEC_8_9,
|
FEC_8_9,
|
||||||
FEC_AUTO,
|
FEC_AUTO,
|
||||||
FEC_3_5,
|
FEC_3_5,
|
||||||
FEC_9_10,
|
FEC_9_10,
|
||||||
FEC_2_5,
|
FEC_2_5,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_modulation {
|
enum fe_modulation {
|
||||||
QPSK,
|
QPSK,
|
||||||
QAM_16,
|
QAM_16,
|
||||||
QAM_32,
|
QAM_32,
|
||||||
QAM_64,
|
QAM_64,
|
||||||
QAM_128,
|
QAM_128,
|
||||||
QAM_256,
|
QAM_256,
|
||||||
QAM_AUTO,
|
QAM_AUTO,
|
||||||
VSB_8,
|
VSB_8,
|
||||||
VSB_16,
|
VSB_16,
|
||||||
PSK_8,
|
PSK_8,
|
||||||
APSK_16,
|
APSK_16,
|
||||||
APSK_32,
|
APSK_32,
|
||||||
DQPSK,
|
DQPSK,
|
||||||
QAM_4_NR,
|
QAM_4_NR,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_transmit_mode {
|
enum fe_transmit_mode {
|
||||||
TRANSMISSION_MODE_2K,
|
TRANSMISSION_MODE_2K,
|
||||||
TRANSMISSION_MODE_8K,
|
TRANSMISSION_MODE_8K,
|
||||||
TRANSMISSION_MODE_AUTO,
|
TRANSMISSION_MODE_AUTO,
|
||||||
TRANSMISSION_MODE_4K,
|
TRANSMISSION_MODE_4K,
|
||||||
TRANSMISSION_MODE_1K,
|
TRANSMISSION_MODE_1K,
|
||||||
TRANSMISSION_MODE_16K,
|
TRANSMISSION_MODE_16K,
|
||||||
TRANSMISSION_MODE_32K,
|
TRANSMISSION_MODE_32K,
|
||||||
TRANSMISSION_MODE_C1,
|
TRANSMISSION_MODE_C1,
|
||||||
TRANSMISSION_MODE_C3780,
|
TRANSMISSION_MODE_C3780,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_guard_interval {
|
enum fe_guard_interval {
|
||||||
GUARD_INTERVAL_1_32,
|
GUARD_INTERVAL_1_32,
|
||||||
GUARD_INTERVAL_1_16,
|
GUARD_INTERVAL_1_16,
|
||||||
GUARD_INTERVAL_1_8,
|
GUARD_INTERVAL_1_8,
|
||||||
GUARD_INTERVAL_1_4,
|
GUARD_INTERVAL_1_4,
|
||||||
GUARD_INTERVAL_AUTO,
|
GUARD_INTERVAL_AUTO,
|
||||||
GUARD_INTERVAL_1_128,
|
GUARD_INTERVAL_1_128,
|
||||||
GUARD_INTERVAL_19_128,
|
GUARD_INTERVAL_19_128,
|
||||||
GUARD_INTERVAL_19_256,
|
GUARD_INTERVAL_19_256,
|
||||||
GUARD_INTERVAL_PN420,
|
GUARD_INTERVAL_PN420,
|
||||||
GUARD_INTERVAL_PN595,
|
GUARD_INTERVAL_PN595,
|
||||||
GUARD_INTERVAL_PN945,
|
GUARD_INTERVAL_PN945,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_hierarchy {
|
enum fe_hierarchy {
|
||||||
HIERARCHY_NONE,
|
HIERARCHY_NONE,
|
||||||
HIERARCHY_1,
|
HIERARCHY_1,
|
||||||
HIERARCHY_2,
|
HIERARCHY_2,
|
||||||
HIERARCHY_4,
|
HIERARCHY_4,
|
||||||
HIERARCHY_AUTO
|
HIERARCHY_AUTO
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_interleaving {
|
enum fe_interleaving {
|
||||||
INTERLEAVING_NONE,
|
INTERLEAVING_NONE,
|
||||||
INTERLEAVING_AUTO,
|
INTERLEAVING_AUTO,
|
||||||
INTERLEAVING_240,
|
INTERLEAVING_240,
|
||||||
INTERLEAVING_720,
|
INTERLEAVING_720,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* S2API Commands */
|
/* S2API Commands */
|
||||||
@ -317,38 +317,38 @@ file: frontend.h
|
|||||||
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
|
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
|
||||||
|
|
||||||
enum fe_pilot {
|
enum fe_pilot {
|
||||||
PILOT_ON,
|
PILOT_ON,
|
||||||
PILOT_OFF,
|
PILOT_OFF,
|
||||||
PILOT_AUTO,
|
PILOT_AUTO,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_rolloff {
|
enum fe_rolloff {
|
||||||
ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
|
ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
|
||||||
ROLLOFF_20,
|
ROLLOFF_20,
|
||||||
ROLLOFF_25,
|
ROLLOFF_25,
|
||||||
ROLLOFF_AUTO,
|
ROLLOFF_AUTO,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fe_delivery_system {
|
enum fe_delivery_system {
|
||||||
SYS_UNDEFINED,
|
SYS_UNDEFINED,
|
||||||
SYS_DVBC_ANNEX_A,
|
SYS_DVBC_ANNEX_A,
|
||||||
SYS_DVBC_ANNEX_B,
|
SYS_DVBC_ANNEX_B,
|
||||||
SYS_DVBT,
|
SYS_DVBT,
|
||||||
SYS_DSS,
|
SYS_DSS,
|
||||||
SYS_DVBS,
|
SYS_DVBS,
|
||||||
SYS_DVBS2,
|
SYS_DVBS2,
|
||||||
SYS_DVBH,
|
SYS_DVBH,
|
||||||
SYS_ISDBT,
|
SYS_ISDBT,
|
||||||
SYS_ISDBS,
|
SYS_ISDBS,
|
||||||
SYS_ISDBC,
|
SYS_ISDBC,
|
||||||
SYS_ATSC,
|
SYS_ATSC,
|
||||||
SYS_ATSCMH,
|
SYS_ATSCMH,
|
||||||
SYS_DTMB,
|
SYS_DTMB,
|
||||||
SYS_CMMB,
|
SYS_CMMB,
|
||||||
SYS_DAB,
|
SYS_DAB,
|
||||||
SYS_DVBT2,
|
SYS_DVBT2,
|
||||||
SYS_TURBO,
|
SYS_TURBO,
|
||||||
SYS_DVBC_ANNEX_C,
|
SYS_DVBC_ANNEX_C,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* backward compatibility */
|
/* backward compatibility */
|
||||||
@ -358,47 +358,47 @@ file: frontend.h
|
|||||||
/* ATSC-MH */
|
/* ATSC-MH */
|
||||||
|
|
||||||
enum atscmh_sccc_block_mode {
|
enum atscmh_sccc_block_mode {
|
||||||
ATSCMH_SCCC_BLK_SEP = 0,
|
ATSCMH_SCCC_BLK_SEP = 0,
|
||||||
ATSCMH_SCCC_BLK_COMB = 1,
|
ATSCMH_SCCC_BLK_COMB = 1,
|
||||||
ATSCMH_SCCC_BLK_RES = 2,
|
ATSCMH_SCCC_BLK_RES = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum atscmh_sccc_code_mode {
|
enum atscmh_sccc_code_mode {
|
||||||
ATSCMH_SCCC_CODE_HLF = 0,
|
ATSCMH_SCCC_CODE_HLF = 0,
|
||||||
ATSCMH_SCCC_CODE_QTR = 1,
|
ATSCMH_SCCC_CODE_QTR = 1,
|
||||||
ATSCMH_SCCC_CODE_RES = 2,
|
ATSCMH_SCCC_CODE_RES = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum atscmh_rs_frame_ensemble {
|
enum atscmh_rs_frame_ensemble {
|
||||||
ATSCMH_RSFRAME_ENS_PRI = 0,
|
ATSCMH_RSFRAME_ENS_PRI = 0,
|
||||||
ATSCMH_RSFRAME_ENS_SEC = 1,
|
ATSCMH_RSFRAME_ENS_SEC = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum atscmh_rs_frame_mode {
|
enum atscmh_rs_frame_mode {
|
||||||
ATSCMH_RSFRAME_PRI_ONLY = 0,
|
ATSCMH_RSFRAME_PRI_ONLY = 0,
|
||||||
ATSCMH_RSFRAME_PRI_SEC = 1,
|
ATSCMH_RSFRAME_PRI_SEC = 1,
|
||||||
ATSCMH_RSFRAME_RES = 2,
|
ATSCMH_RSFRAME_RES = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum atscmh_rs_code_mode {
|
enum atscmh_rs_code_mode {
|
||||||
ATSCMH_RSCODE_211_187 = 0,
|
ATSCMH_RSCODE_211_187 = 0,
|
||||||
ATSCMH_RSCODE_223_187 = 1,
|
ATSCMH_RSCODE_223_187 = 1,
|
||||||
ATSCMH_RSCODE_235_187 = 2,
|
ATSCMH_RSCODE_235_187 = 2,
|
||||||
ATSCMH_RSCODE_RES = 3,
|
ATSCMH_RSCODE_RES = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NO_STREAM_ID_FILTER (~0U)
|
#define NO_STREAM_ID_FILTER (~0U)
|
||||||
#define LNA_AUTO (~0U)
|
#define LNA_AUTO (~0U)
|
||||||
|
|
||||||
struct dtv_cmds_h {
|
struct dtv_cmds_h {
|
||||||
char *name; /* A display name for debugging purposes */
|
char *name; /* A display name for debugging purposes */
|
||||||
|
|
||||||
__u32 cmd; /* A unique ID */
|
__u32 cmd; /* A unique ID */
|
||||||
|
|
||||||
/* Flags */
|
/* Flags */
|
||||||
__u32 set:1; /* Either a set or get property */
|
__u32 set:1; /* Either a set or get property */
|
||||||
__u32 buffer:1; /* Does this property use the buffer? */
|
__u32 buffer:1; /* Does this property use the buffer? */
|
||||||
__u32 reserved:30; /* Align */
|
__u32 reserved:30; /* Align */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -414,10 +414,10 @@ file: frontend.h
|
|||||||
* bit error, block error, lapsed time.
|
* bit error, block error, lapsed time.
|
||||||
*/
|
*/
|
||||||
enum fecap_scale_params {
|
enum fecap_scale_params {
|
||||||
FE_SCALE_NOT_AVAILABLE = 0,
|
FE_SCALE_NOT_AVAILABLE = 0,
|
||||||
FE_SCALE_DECIBEL,
|
FE_SCALE_DECIBEL,
|
||||||
FE_SCALE_RELATIVE,
|
FE_SCALE_RELATIVE,
|
||||||
FE_SCALE_COUNTER
|
FE_SCALE_COUNTER
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -452,43 +452,43 @@ file: frontend.h
|
|||||||
* u.st.len = 4;
|
* u.st.len = 4;
|
||||||
*/
|
*/
|
||||||
struct dtv_stats {
|
struct dtv_stats {
|
||||||
__u8 scale; /* enum fecap_scale_params type */
|
__u8 scale; /* enum fecap_scale_params type */
|
||||||
union {
|
union {
|
||||||
__u64 uvalue; /* for counters and relative scales */
|
__u64 uvalue; /* for counters and relative scales */
|
||||||
__s64 svalue; /* for 0.001 dB measures */
|
__s64 svalue; /* for 0.001 dB measures */
|
||||||
};
|
};
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
|
||||||
#define MAX_DTV_STATS 4
|
#define MAX_DTV_STATS 4
|
||||||
|
|
||||||
struct dtv_fe_stats {
|
struct dtv_fe_stats {
|
||||||
__u8 len;
|
__u8 len;
|
||||||
struct dtv_stats stat[MAX_DTV_STATS];
|
struct dtv_stats stat[MAX_DTV_STATS];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct dtv_property {
|
struct dtv_property {
|
||||||
__u32 cmd;
|
__u32 cmd;
|
||||||
__u32 reserved[3];
|
__u32 reserved[3];
|
||||||
union {
|
union {
|
||||||
__u32 data;
|
__u32 data;
|
||||||
struct dtv_fe_stats st;
|
struct dtv_fe_stats st;
|
||||||
struct {
|
struct {
|
||||||
__u8 data[32];
|
__u8 data[32];
|
||||||
__u32 len;
|
__u32 len;
|
||||||
__u32 reserved1[3];
|
__u32 reserved1[3];
|
||||||
void *reserved2;
|
void *reserved2;
|
||||||
} buffer;
|
} buffer;
|
||||||
} u;
|
} u;
|
||||||
int result;
|
int result;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
|
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
|
||||||
#define DTV_IOCTL_MAX_MSGS 64
|
#define DTV_IOCTL_MAX_MSGS 64
|
||||||
|
|
||||||
struct dtv_properties {
|
struct dtv_properties {
|
||||||
__u32 num;
|
__u32 num;
|
||||||
struct dtv_property *props;
|
struct dtv_property *props;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(__DVB_CORE__) || !defined (__KERNEL__)
|
#if defined(__DVB_CORE__) || !defined (__KERNEL__)
|
||||||
@ -500,13 +500,13 @@ file: frontend.h
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
enum fe_bandwidth {
|
enum fe_bandwidth {
|
||||||
BANDWIDTH_8_MHZ,
|
BANDWIDTH_8_MHZ,
|
||||||
BANDWIDTH_7_MHZ,
|
BANDWIDTH_7_MHZ,
|
||||||
BANDWIDTH_6_MHZ,
|
BANDWIDTH_6_MHZ,
|
||||||
BANDWIDTH_AUTO,
|
BANDWIDTH_AUTO,
|
||||||
BANDWIDTH_5_MHZ,
|
BANDWIDTH_5_MHZ,
|
||||||
BANDWIDTH_10_MHZ,
|
BANDWIDTH_10_MHZ,
|
||||||
BANDWIDTH_1_712_MHZ,
|
BANDWIDTH_1_712_MHZ,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is needed for legacy userspace support */
|
/* This is needed for legacy userspace support */
|
||||||
@ -528,45 +528,45 @@ file: frontend.h
|
|||||||
typedef enum fe_delivery_system fe_delivery_system_t;
|
typedef enum fe_delivery_system fe_delivery_system_t;
|
||||||
|
|
||||||
struct dvb_qpsk_parameters {
|
struct dvb_qpsk_parameters {
|
||||||
__u32 symbol_rate; /* symbol rate in Symbols per second */
|
__u32 symbol_rate; /* symbol rate in Symbols per second */
|
||||||
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_qam_parameters {
|
struct dvb_qam_parameters {
|
||||||
__u32 symbol_rate; /* symbol rate in Symbols per second */
|
__u32 symbol_rate; /* symbol rate in Symbols per second */
|
||||||
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
||||||
fe_modulation_t modulation; /* modulation type (see above) */
|
fe_modulation_t modulation; /* modulation type (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_vsb_parameters {
|
struct dvb_vsb_parameters {
|
||||||
fe_modulation_t modulation; /* modulation type (see above) */
|
fe_modulation_t modulation; /* modulation type (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_ofdm_parameters {
|
struct dvb_ofdm_parameters {
|
||||||
fe_bandwidth_t bandwidth;
|
fe_bandwidth_t bandwidth;
|
||||||
fe_code_rate_t code_rate_HP; /* high priority stream code rate */
|
fe_code_rate_t code_rate_HP; /* high priority stream code rate */
|
||||||
fe_code_rate_t code_rate_LP; /* low priority stream code rate */
|
fe_code_rate_t code_rate_LP; /* low priority stream code rate */
|
||||||
fe_modulation_t constellation; /* modulation type (see above) */
|
fe_modulation_t constellation; /* modulation type (see above) */
|
||||||
fe_transmit_mode_t transmission_mode;
|
fe_transmit_mode_t transmission_mode;
|
||||||
fe_guard_interval_t guard_interval;
|
fe_guard_interval_t guard_interval;
|
||||||
fe_hierarchy_t hierarchy_information;
|
fe_hierarchy_t hierarchy_information;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_frontend_parameters {
|
struct dvb_frontend_parameters {
|
||||||
__u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
|
__u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
|
||||||
/* intermediate frequency in kHz for DVB-S */
|
/* intermediate frequency in kHz for DVB-S */
|
||||||
fe_spectral_inversion_t inversion;
|
fe_spectral_inversion_t inversion;
|
||||||
union {
|
union {
|
||||||
struct dvb_qpsk_parameters qpsk; /* DVB-S */
|
struct dvb_qpsk_parameters qpsk; /* DVB-S */
|
||||||
struct dvb_qam_parameters qam; /* DVB-C */
|
struct dvb_qam_parameters qam; /* DVB-C */
|
||||||
struct dvb_ofdm_parameters ofdm; /* DVB-T */
|
struct dvb_ofdm_parameters ofdm; /* DVB-T */
|
||||||
struct dvb_vsb_parameters vsb; /* ATSC */
|
struct dvb_vsb_parameters vsb; /* ATSC */
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dvb_frontend_event {
|
struct dvb_frontend_event {
|
||||||
fe_status_t status;
|
fe_status_t status;
|
||||||
struct dvb_frontend_parameters parameters;
|
struct dvb_frontend_parameters parameters;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Arguments
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- if any, is to be stored.
|
- if any, is to be stored.
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ Arguments
|
|||||||
- int request
|
- int request
|
||||||
|
|
||||||
- Equals :ref:`FE_SET_FRONTEND` for this
|
- Equals :ref:`FE_SET_FRONTEND` for this
|
||||||
command.
|
command.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ Arguments
|
|||||||
- int request
|
- int request
|
||||||
|
|
||||||
- Equals
|
- Equals
|
||||||
:ref:`FE_READ_SIGNAL_STRENGTH`
|
:ref:`FE_READ_SIGNAL_STRENGTH`
|
||||||
for this command.
|
for this command.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ Arguments
|
|||||||
- int request
|
- int request
|
||||||
|
|
||||||
- Equals
|
- Equals
|
||||||
:ref:`FE_READ_UNCORRECTED_BLOCKS`
|
:ref:`FE_READ_UNCORRECTED_BLOCKS`
|
||||||
for this command.
|
for this command.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ Arguments
|
|||||||
- int request
|
- int request
|
||||||
|
|
||||||
- Equals :ref:`FE_SET_FRONTEND` for this
|
- Equals :ref:`FE_SET_FRONTEND` for this
|
||||||
command.
|
command.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@ from an internal (demux) or external (user write) source.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_SOURCE_DEMUX,
|
AUDIO_SOURCE_DEMUX,
|
||||||
AUDIO_SOURCE_MEMORY
|
AUDIO_SOURCE_MEMORY
|
||||||
} audio_stream_source_t;
|
} audio_stream_source_t;
|
||||||
|
|
||||||
AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the
|
AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the
|
||||||
@ -45,9 +45,9 @@ representing the state of audio playback.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_STOPPED,
|
AUDIO_STOPPED,
|
||||||
AUDIO_PLAYING,
|
AUDIO_PLAYING,
|
||||||
AUDIO_PAUSED
|
AUDIO_PAUSED
|
||||||
} audio_play_state_t;
|
} audio_play_state_t;
|
||||||
|
|
||||||
|
|
||||||
@ -63,11 +63,11 @@ the following values.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AUDIO_STEREO,
|
AUDIO_STEREO,
|
||||||
AUDIO_MONO_LEFT,
|
AUDIO_MONO_LEFT,
|
||||||
AUDIO_MONO_RIGHT,
|
AUDIO_MONO_RIGHT,
|
||||||
AUDIO_MONO,
|
AUDIO_MONO,
|
||||||
AUDIO_STEREO_SWAPPED
|
AUDIO_STEREO_SWAPPED
|
||||||
} audio_channel_select_t;
|
} audio_channel_select_t;
|
||||||
|
|
||||||
|
|
||||||
@ -83,13 +83,13 @@ about various states of the playback operation.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct audio_status {
|
typedef struct audio_status {
|
||||||
boolean AV_sync_state;
|
boolean AV_sync_state;
|
||||||
boolean mute_state;
|
boolean mute_state;
|
||||||
audio_play_state_t play_state;
|
audio_play_state_t play_state;
|
||||||
audio_stream_source_t stream_source;
|
audio_stream_source_t stream_source;
|
||||||
audio_channel_select_t channel_select;
|
audio_channel_select_t channel_select;
|
||||||
boolean bypass_mode;
|
boolean bypass_mode;
|
||||||
audio_mixer_t mixer_state;
|
audio_mixer_t mixer_state;
|
||||||
} audio_status_t;
|
} audio_status_t;
|
||||||
|
|
||||||
|
|
||||||
@ -105,8 +105,8 @@ audio volume.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct audio_mixer {
|
typedef struct audio_mixer {
|
||||||
unsigned int volume_left;
|
unsigned int volume_left;
|
||||||
unsigned int volume_right;
|
unsigned int volume_right;
|
||||||
} audio_mixer_t;
|
} audio_mixer_t;
|
||||||
|
|
||||||
|
|
||||||
@ -144,9 +144,9 @@ The ioctl AUDIO_SET_KARAOKE uses the following format:
|
|||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct audio_karaoke {
|
struct audio_karaoke {
|
||||||
int vocal1;
|
int vocal1;
|
||||||
int vocal2;
|
int vocal2;
|
||||||
int melody;
|
int melody;
|
||||||
} audio_karaoke_t;
|
} audio_karaoke_t;
|
||||||
|
|
||||||
If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t
|
If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t
|
||||||
|
@ -58,22 +58,22 @@ Arguments
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDONLY read-only access
|
- O_RDONLY read-only access
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDWR read/write access
|
- O_RDWR read/write access
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_NONBLOCK open in non-blocking mode
|
- O_NONBLOCK open in non-blocking mode
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- (blocking mode is the default)
|
- (blocking mode is the default)
|
||||||
|
|
||||||
|
|
||||||
@ -529,12 +529,12 @@ Arguments
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- TRUE Audio Mute
|
- TRUE Audio Mute
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- FALSE Audio Un-mute
|
- FALSE Audio Un-mute
|
||||||
|
|
||||||
|
|
||||||
@ -592,12 +592,12 @@ Arguments
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- TRUE AV-sync ON
|
- TRUE AV-sync ON
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- FALSE AV-sync OFF
|
- FALSE AV-sync OFF
|
||||||
|
|
||||||
|
|
||||||
@ -655,16 +655,16 @@ Arguments
|
|||||||
- boolean mode
|
- boolean mode
|
||||||
|
|
||||||
- Enables or disables the decoding of the current Audio stream in
|
- Enables or disables the decoding of the current Audio stream in
|
||||||
the DVB subsystem.
|
the DVB subsystem.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- TRUE Bypass is disabled
|
- TRUE Bypass is disabled
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- FALSE Bypass is enabled
|
- FALSE Bypass is enabled
|
||||||
|
|
||||||
|
|
||||||
@ -836,11 +836,11 @@ Arguments
|
|||||||
- __u64 \*pts
|
- __u64 \*pts
|
||||||
|
|
||||||
- Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
|
- Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
|
||||||
ISO/IEC 13818-1.
|
ISO/IEC 13818-1.
|
||||||
|
|
||||||
The PTS should belong to the currently played frame if possible,
|
The PTS should belong to the currently played frame if possible,
|
||||||
but may also be a value close to it like the PTS of the last
|
but may also be a value close to it like the PTS of the last
|
||||||
decoded frame or the last PTS extracted by the PES parser.
|
decoded frame or the last PTS extracted by the PES parser.
|
||||||
|
|
||||||
|
|
||||||
Return Value
|
Return Value
|
||||||
|
@ -16,16 +16,16 @@ ca_slot_info_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct ca_slot_info {
|
typedef struct ca_slot_info {
|
||||||
int num; /* slot number */
|
int num; /* slot number */
|
||||||
|
|
||||||
int type; /* CA interface this slot supports */
|
int type; /* CA interface this slot supports */
|
||||||
#define CA_CI 1 /* CI high level interface */
|
#define CA_CI 1 /* CI high level interface */
|
||||||
#define CA_CI_LINK 2 /* CI link layer level interface */
|
#define CA_CI_LINK 2 /* CI link layer level interface */
|
||||||
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
||||||
#define CA_DESCR 8 /* built-in descrambler */
|
#define CA_DESCR 8 /* built-in descrambler */
|
||||||
#define CA_SC 128 /* simple smart card interface */
|
#define CA_SC 128 /* simple smart card interface */
|
||||||
|
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
||||||
#define CA_CI_MODULE_READY 2
|
#define CA_CI_MODULE_READY 2
|
||||||
} ca_slot_info_t;
|
} ca_slot_info_t;
|
||||||
@ -40,8 +40,8 @@ ca_descr_info_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct ca_descr_info {
|
typedef struct ca_descr_info {
|
||||||
unsigned int num; /* number of available descramblers (keys) */
|
unsigned int num; /* number of available descramblers (keys) */
|
||||||
unsigned int type; /* type of supported scrambling system */
|
unsigned int type; /* type of supported scrambling system */
|
||||||
#define CA_ECD 1
|
#define CA_ECD 1
|
||||||
#define CA_NDS 2
|
#define CA_NDS 2
|
||||||
#define CA_DSS 4
|
#define CA_DSS 4
|
||||||
@ -57,10 +57,10 @@ ca_caps_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct ca_caps {
|
typedef struct ca_caps {
|
||||||
unsigned int slot_num; /* total number of CA card and module slots */
|
unsigned int slot_num; /* total number of CA card and module slots */
|
||||||
unsigned int slot_type; /* OR of all supported types */
|
unsigned int slot_type; /* OR of all supported types */
|
||||||
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
||||||
unsigned int descr_type;/* OR of all supported types */
|
unsigned int descr_type;/* OR of all supported types */
|
||||||
} ca_cap_t;
|
} ca_cap_t;
|
||||||
|
|
||||||
|
|
||||||
@ -74,10 +74,10 @@ ca_msg_t
|
|||||||
|
|
||||||
/* a message to/from a CI-CAM */
|
/* a message to/from a CI-CAM */
|
||||||
typedef struct ca_msg {
|
typedef struct ca_msg {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
unsigned int type;
|
unsigned int type;
|
||||||
unsigned int length;
|
unsigned int length;
|
||||||
unsigned char msg[256];
|
unsigned char msg[256];
|
||||||
} ca_msg_t;
|
} ca_msg_t;
|
||||||
|
|
||||||
|
|
||||||
@ -90,9 +90,9 @@ ca_descr_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct ca_descr {
|
typedef struct ca_descr {
|
||||||
unsigned int index;
|
unsigned int index;
|
||||||
unsigned int parity;
|
unsigned int parity;
|
||||||
unsigned char cw[8];
|
unsigned char cw[8];
|
||||||
} ca_descr_t;
|
} ca_descr_t;
|
||||||
|
|
||||||
|
|
||||||
@ -105,6 +105,6 @@ ca-pid
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct ca_pid {
|
typedef struct ca_pid {
|
||||||
unsigned int pid;
|
unsigned int pid;
|
||||||
int index; /* -1 == disable*/
|
int index; /* -1 == disable*/
|
||||||
} ca_pid_t;
|
} ca_pid_t;
|
||||||
|
@ -57,22 +57,22 @@ Arguments
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDONLY read-only access
|
- O_RDONLY read-only access
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDWR read/write access
|
- O_RDWR read/write access
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_NONBLOCK open in non-blocking mode
|
- O_NONBLOCK open in non-blocking mode
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- (blocking mode is the default)
|
- (blocking mode is the default)
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,17 +61,17 @@ Arguments
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDWR read/write access
|
- O_RDWR read/write access
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_NONBLOCK open in non-blocking mode
|
- O_NONBLOCK open in non-blocking mode
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- (blocking mode is the default)
|
- (blocking mode is the default)
|
||||||
|
|
||||||
|
|
||||||
@ -236,33 +236,33 @@ Return Value
|
|||||||
- ``ECRC``
|
- ``ECRC``
|
||||||
|
|
||||||
- Last section had a CRC error - no data returned. The buffer is
|
- Last section had a CRC error - no data returned. The buffer is
|
||||||
flushed.
|
flushed.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``EOVERFLOW``
|
- ``EOVERFLOW``
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- The filtered data was not read from the buffer in due time,
|
- The filtered data was not read from the buffer in due time,
|
||||||
resulting in non-read data being lost. The buffer is flushed.
|
resulting in non-read data being lost. The buffer is flushed.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``ETIMEDOUT``
|
- ``ETIMEDOUT``
|
||||||
|
|
||||||
- The section was not loaded within the stated timeout period. See
|
- The section was not loaded within the stated timeout period. See
|
||||||
ioctl DMX_SET_FILTER for how to set a timeout.
|
ioctl DMX_SET_FILTER for how to set a timeout.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``EFAULT``
|
- ``EFAULT``
|
||||||
|
|
||||||
- The driver failed to write to the callers buffer due to an invalid
|
- The driver failed to write to the callers buffer due to an invalid
|
||||||
\*buf pointer.
|
\*buf pointer.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -330,18 +330,18 @@ Return Value
|
|||||||
- ``EWOULDBLOCK``
|
- ``EWOULDBLOCK``
|
||||||
|
|
||||||
- No data was written. This might happen if O_NONBLOCK was
|
- No data was written. This might happen if O_NONBLOCK was
|
||||||
specified and there is no more buffer space available (if
|
specified and there is no more buffer space available (if
|
||||||
O_NONBLOCK is not specified the function will block until buffer
|
O_NONBLOCK is not specified the function will block until buffer
|
||||||
space is available).
|
space is available).
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``EBUSY``
|
- ``EBUSY``
|
||||||
|
|
||||||
- This error code indicates that there are conflicting requests. The
|
- This error code indicates that there are conflicting requests. The
|
||||||
corresponding demux device is setup to receive data from the
|
corresponding demux device is setup to receive data from the
|
||||||
front- end. Make sure that these filters are stopped and that the
|
front- end. Make sure that these filters are stopped and that the
|
||||||
filters with input set to DMX_IN_DVR are started.
|
filters with input set to DMX_IN_DVR are started.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -409,16 +409,16 @@ appropriately. The generic error codes are described at the
|
|||||||
- ``EINVAL``
|
- ``EINVAL``
|
||||||
|
|
||||||
- Invalid argument, i.e. no filtering parameters provided via the
|
- Invalid argument, i.e. no filtering parameters provided via the
|
||||||
DMX_SET_FILTER or DMX_SET_PES_FILTER functions.
|
DMX_SET_FILTER or DMX_SET_PES_FILTER functions.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``EBUSY``
|
- ``EBUSY``
|
||||||
|
|
||||||
- This error code indicates that there are conflicting requests.
|
- This error code indicates that there are conflicting requests.
|
||||||
There are active filters filtering data from another input source.
|
There are active filters filtering data from another input source.
|
||||||
Make sure that these filters are stopped before starting this
|
Make sure that these filters are stopped before starting this
|
||||||
filter.
|
filter.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -597,9 +597,9 @@ appropriately. The generic error codes are described at the
|
|||||||
- ``EBUSY``
|
- ``EBUSY``
|
||||||
|
|
||||||
- This error code indicates that there are conflicting requests.
|
- This error code indicates that there are conflicting requests.
|
||||||
There are active filters filtering data from another input source.
|
There are active filters filtering data from another input source.
|
||||||
Make sure that these filters are stopped before starting this
|
Make sure that these filters are stopped before starting this
|
||||||
filter.
|
filter.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Output for the demux
|
|||||||
|
|
||||||
- .. _`DMX-OUT-DECODER`:
|
- .. _`DMX-OUT-DECODER`:
|
||||||
|
|
||||||
DMX_OUT_DECODER
|
DMX_OUT_DECODER
|
||||||
|
|
||||||
- Streaming directly to decoder.
|
- Streaming directly to decoder.
|
||||||
|
|
||||||
@ -38,31 +38,31 @@ Output for the demux
|
|||||||
|
|
||||||
- .. _`DMX-OUT-TAP`:
|
- .. _`DMX-OUT-TAP`:
|
||||||
|
|
||||||
DMX_OUT_TAP
|
DMX_OUT_TAP
|
||||||
|
|
||||||
- Output going to a memory buffer (to be retrieved via the read
|
- Output going to a memory buffer (to be retrieved via the read
|
||||||
command). Delivers the stream output to the demux device on which
|
command). Delivers the stream output to the demux device on which
|
||||||
the ioctl is called.
|
the ioctl is called.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- .. _`DMX-OUT-TS-TAP`:
|
- .. _`DMX-OUT-TS-TAP`:
|
||||||
|
|
||||||
DMX_OUT_TS_TAP
|
DMX_OUT_TS_TAP
|
||||||
|
|
||||||
- Output multiplexed into a new TS (to be retrieved by reading from
|
- Output multiplexed into a new TS (to be retrieved by reading from
|
||||||
the logical DVR device). Routes output to the logical DVR device
|
the logical DVR device). Routes output to the logical DVR device
|
||||||
``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
|
``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
|
||||||
all filters for which ``DMX_OUT_TS_TAP`` was specified.
|
all filters for which ``DMX_OUT_TS_TAP`` was specified.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- .. _`DMX-OUT-TSDEMUX-TAP`:
|
- .. _`DMX-OUT-TSDEMUX-TAP`:
|
||||||
|
|
||||||
DMX_OUT_TSDEMUX_TAP
|
DMX_OUT_TSDEMUX_TAP
|
||||||
|
|
||||||
- Like :ref:`DMX_OUT_TS_TAP <DMX-OUT-TS-TAP>` but retrieved
|
- Like :ref:`DMX_OUT_TS_TAP <DMX-OUT-TS-TAP>` but retrieved
|
||||||
from the DMX device.
|
from the DMX device.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -76,8 +76,8 @@ dmx_input_t
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
DMX_IN_FRONTEND, /* Input from a front-end device. */
|
DMX_IN_FRONTEND, /* Input from a front-end device. */
|
||||||
DMX_IN_DVR /* Input from the logical DVR device. */
|
DMX_IN_DVR /* Input from the logical DVR device. */
|
||||||
} dmx_input_t;
|
} dmx_input_t;
|
||||||
|
|
||||||
|
|
||||||
@ -91,31 +91,31 @@ dmx_pes_type_t
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
DMX_PES_AUDIO0,
|
DMX_PES_AUDIO0,
|
||||||
DMX_PES_VIDEO0,
|
DMX_PES_VIDEO0,
|
||||||
DMX_PES_TELETEXT0,
|
DMX_PES_TELETEXT0,
|
||||||
DMX_PES_SUBTITLE0,
|
DMX_PES_SUBTITLE0,
|
||||||
DMX_PES_PCR0,
|
DMX_PES_PCR0,
|
||||||
|
|
||||||
DMX_PES_AUDIO1,
|
DMX_PES_AUDIO1,
|
||||||
DMX_PES_VIDEO1,
|
DMX_PES_VIDEO1,
|
||||||
DMX_PES_TELETEXT1,
|
DMX_PES_TELETEXT1,
|
||||||
DMX_PES_SUBTITLE1,
|
DMX_PES_SUBTITLE1,
|
||||||
DMX_PES_PCR1,
|
DMX_PES_PCR1,
|
||||||
|
|
||||||
DMX_PES_AUDIO2,
|
DMX_PES_AUDIO2,
|
||||||
DMX_PES_VIDEO2,
|
DMX_PES_VIDEO2,
|
||||||
DMX_PES_TELETEXT2,
|
DMX_PES_TELETEXT2,
|
||||||
DMX_PES_SUBTITLE2,
|
DMX_PES_SUBTITLE2,
|
||||||
DMX_PES_PCR2,
|
DMX_PES_PCR2,
|
||||||
|
|
||||||
DMX_PES_AUDIO3,
|
DMX_PES_AUDIO3,
|
||||||
DMX_PES_VIDEO3,
|
DMX_PES_VIDEO3,
|
||||||
DMX_PES_TELETEXT3,
|
DMX_PES_TELETEXT3,
|
||||||
DMX_PES_SUBTITLE3,
|
DMX_PES_SUBTITLE3,
|
||||||
DMX_PES_PCR3,
|
DMX_PES_PCR3,
|
||||||
|
|
||||||
DMX_PES_OTHER
|
DMX_PES_OTHER
|
||||||
} dmx_pes_type_t;
|
} dmx_pes_type_t;
|
||||||
|
|
||||||
|
|
||||||
@ -129,9 +129,9 @@ struct dmx_filter
|
|||||||
|
|
||||||
typedef struct dmx_filter
|
typedef struct dmx_filter
|
||||||
{
|
{
|
||||||
__u8 filter[DMX_FILTER_SIZE];
|
__u8 filter[DMX_FILTER_SIZE];
|
||||||
__u8 mask[DMX_FILTER_SIZE];
|
__u8 mask[DMX_FILTER_SIZE];
|
||||||
__u8 mode[DMX_FILTER_SIZE];
|
__u8 mode[DMX_FILTER_SIZE];
|
||||||
} dmx_filter_t;
|
} dmx_filter_t;
|
||||||
|
|
||||||
|
|
||||||
@ -145,10 +145,10 @@ struct dmx_sct_filter_params
|
|||||||
|
|
||||||
struct dmx_sct_filter_params
|
struct dmx_sct_filter_params
|
||||||
{
|
{
|
||||||
__u16 pid;
|
__u16 pid;
|
||||||
dmx_filter_t filter;
|
dmx_filter_t filter;
|
||||||
__u32 timeout;
|
__u32 timeout;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
#define DMX_CHECK_CRC 1
|
#define DMX_CHECK_CRC 1
|
||||||
#define DMX_ONESHOT 2
|
#define DMX_ONESHOT 2
|
||||||
#define DMX_IMMEDIATE_START 4
|
#define DMX_IMMEDIATE_START 4
|
||||||
@ -166,11 +166,11 @@ struct dmx_pes_filter_params
|
|||||||
|
|
||||||
struct dmx_pes_filter_params
|
struct dmx_pes_filter_params
|
||||||
{
|
{
|
||||||
__u16 pid;
|
__u16 pid;
|
||||||
dmx_input_t input;
|
dmx_input_t input;
|
||||||
dmx_output_t output;
|
dmx_output_t output;
|
||||||
dmx_pes_type_t pes_type;
|
dmx_pes_type_t pes_type;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -184,12 +184,12 @@ struct dmx_event
|
|||||||
|
|
||||||
struct dmx_event
|
struct dmx_event
|
||||||
{
|
{
|
||||||
dmx_event_t event;
|
dmx_event_t event;
|
||||||
time_t timeStamp;
|
time_t timeStamp;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
dmx_scrambling_status_t scrambling;
|
dmx_scrambling_status_t scrambling;
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -202,9 +202,9 @@ struct dmx_stc
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dmx_stc {
|
struct dmx_stc {
|
||||||
unsigned int num; /* input : which STC? 0..N */
|
unsigned int num; /* input : which STC? 0..N */
|
||||||
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
|
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
|
||||||
__u64 stc; /* output: stc in 'base'*90 kHz units */
|
__u64 stc; /* output: stc in 'base'*90 kHz units */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -217,8 +217,8 @@ struct dmx_caps
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct dmx_caps {
|
typedef struct dmx_caps {
|
||||||
__u32 caps;
|
__u32 caps;
|
||||||
int num_decoders;
|
int num_decoders;
|
||||||
} dmx_caps_t;
|
} dmx_caps_t;
|
||||||
|
|
||||||
|
|
||||||
@ -231,12 +231,12 @@ enum dmx_source_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
DMX_SOURCE_FRONT0 = 0,
|
DMX_SOURCE_FRONT0 = 0,
|
||||||
DMX_SOURCE_FRONT1,
|
DMX_SOURCE_FRONT1,
|
||||||
DMX_SOURCE_FRONT2,
|
DMX_SOURCE_FRONT2,
|
||||||
DMX_SOURCE_FRONT3,
|
DMX_SOURCE_FRONT3,
|
||||||
DMX_SOURCE_DVR0 = 16,
|
DMX_SOURCE_DVR0 = 16,
|
||||||
DMX_SOURCE_DVR1,
|
DMX_SOURCE_DVR1,
|
||||||
DMX_SOURCE_DVR2,
|
DMX_SOURCE_DVR2,
|
||||||
DMX_SOURCE_DVR3
|
DMX_SOURCE_DVR3
|
||||||
} dmx_source_t;
|
} dmx_source_t;
|
||||||
|
@ -12,6 +12,6 @@ struct dtv_fe_stats
|
|||||||
#define MAX_DTV_STATS 4
|
#define MAX_DTV_STATS 4
|
||||||
|
|
||||||
struct dtv_fe_stats {
|
struct dtv_fe_stats {
|
||||||
__u8 len;
|
__u8 len;
|
||||||
struct dtv_stats stat[MAX_DTV_STATS];
|
struct dtv_stats stat[MAX_DTV_STATS];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
@ -10,6 +10,6 @@ struct dtv_properties
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dtv_properties {
|
struct dtv_properties {
|
||||||
__u32 num;
|
__u32 num;
|
||||||
struct dtv_property *props;
|
struct dtv_property *props;
|
||||||
};
|
};
|
||||||
|
@ -12,19 +12,19 @@ struct dtv_property
|
|||||||
/* Reserved fields should be set to 0 */
|
/* Reserved fields should be set to 0 */
|
||||||
|
|
||||||
struct dtv_property {
|
struct dtv_property {
|
||||||
__u32 cmd;
|
__u32 cmd;
|
||||||
__u32 reserved[3];
|
__u32 reserved[3];
|
||||||
union {
|
union {
|
||||||
__u32 data;
|
__u32 data;
|
||||||
struct dtv_fe_stats st;
|
struct dtv_fe_stats st;
|
||||||
struct {
|
struct {
|
||||||
__u8 data[32];
|
__u8 data[32];
|
||||||
__u32 len;
|
__u32 len;
|
||||||
__u32 reserved1[3];
|
__u32 reserved1[3];
|
||||||
void *reserved2;
|
void *reserved2;
|
||||||
} buffer;
|
} buffer;
|
||||||
} u;
|
} u;
|
||||||
int result;
|
int result;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
|
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
|
||||||
|
@ -10,9 +10,9 @@ struct dtv_stats
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dtv_stats {
|
struct dtv_stats {
|
||||||
__u8 scale; /* enum fecap_scale_params type */
|
__u8 scale; /* enum fecap_scale_params type */
|
||||||
union {
|
union {
|
||||||
__u64 uvalue; /* for counters and relative scales */
|
__u64 uvalue; /* for counters and relative scales */
|
||||||
__s64 svalue; /* for 1/1000 dB measures */
|
__s64 svalue; /* for 1/1000 dB measures */
|
||||||
};
|
};
|
||||||
} __packed;
|
} __packed;
|
||||||
|
@ -10,6 +10,6 @@ frontend events
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_frontend_event {
|
struct dvb_frontend_event {
|
||||||
fe_status_t status;
|
fe_status_t status;
|
||||||
struct dvb_frontend_parameters parameters;
|
struct dvb_frontend_parameters parameters;
|
||||||
};
|
};
|
||||||
|
@ -30,15 +30,15 @@ FrontendParameters structure:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_frontend_parameters {
|
struct dvb_frontend_parameters {
|
||||||
uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
|
uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
|
||||||
/* intermediate frequency in kHz for QPSK */
|
/* intermediate frequency in kHz for QPSK */
|
||||||
fe_spectral_inversion_t inversion;
|
fe_spectral_inversion_t inversion;
|
||||||
union {
|
union {
|
||||||
struct dvb_qpsk_parameters qpsk;
|
struct dvb_qpsk_parameters qpsk;
|
||||||
struct dvb_qam_parameters qam;
|
struct dvb_qam_parameters qam;
|
||||||
struct dvb_ofdm_parameters ofdm;
|
struct dvb_ofdm_parameters ofdm;
|
||||||
struct dvb_vsb_parameters vsb;
|
struct dvb_vsb_parameters vsb;
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
In the case of QPSK frontends the ``frequency`` field specifies the
|
In the case of QPSK frontends the ``frequency`` field specifies the
|
||||||
@ -61,8 +61,8 @@ structure:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_qpsk_parameters {
|
struct dvb_qpsk_parameters {
|
||||||
uint32_t symbol_rate; /* symbol rate in Symbols per second */
|
uint32_t symbol_rate; /* symbol rate in Symbols per second */
|
||||||
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -77,9 +77,9 @@ for cable QAM frontend you use the ``dvb_qam_parameters`` structure:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_qam_parameters {
|
struct dvb_qam_parameters {
|
||||||
uint32_t symbol_rate; /* symbol rate in Symbols per second */
|
uint32_t symbol_rate; /* symbol rate in Symbols per second */
|
||||||
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
fe_code_rate_t fec_inner; /* forward error correction (see above) */
|
||||||
fe_modulation_t modulation; /* modulation type (see above) */
|
fe_modulation_t modulation; /* modulation type (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_vsb_parameters {
|
struct dvb_vsb_parameters {
|
||||||
fe_modulation_t modulation; /* modulation type (see above) */
|
fe_modulation_t modulation; /* modulation type (see above) */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -109,11 +109,11 @@ DVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct dvb_ofdm_parameters {
|
struct dvb_ofdm_parameters {
|
||||||
fe_bandwidth_t bandwidth;
|
fe_bandwidth_t bandwidth;
|
||||||
fe_code_rate_t code_rate_HP; /* high priority stream code rate */
|
fe_code_rate_t code_rate_HP; /* high priority stream code rate */
|
||||||
fe_code_rate_t code_rate_LP; /* low priority stream code rate */
|
fe_code_rate_t code_rate_LP; /* low priority stream code rate */
|
||||||
fe_modulation_t constellation; /* modulation type (see above) */
|
fe_modulation_t constellation; /* modulation type (see above) */
|
||||||
fe_transmit_mode_t transmission_mode;
|
fe_transmit_mode_t transmission_mode;
|
||||||
fe_guard_interval_t guard_interval;
|
fe_guard_interval_t guard_interval;
|
||||||
fe_hierarchy_t hierarchy_information;
|
fe_hierarchy_t hierarchy_information;
|
||||||
};
|
};
|
||||||
|
@ -59,33 +59,33 @@ The code that would do the above is:
|
|||||||
#include <linux/dvb/frontend.h>
|
#include <linux/dvb/frontend.h>
|
||||||
|
|
||||||
static struct dtv_property props[] = {
|
static struct dtv_property props[] = {
|
||||||
{ .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
|
{ .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
|
||||||
{ .cmd = DTV_FREQUENCY, .u.data = 651000000 },
|
{ .cmd = DTV_FREQUENCY, .u.data = 651000000 },
|
||||||
{ .cmd = DTV_MODULATION, .u.data = QAM_256 },
|
{ .cmd = DTV_MODULATION, .u.data = QAM_256 },
|
||||||
{ .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
|
{ .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
|
||||||
{ .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
|
{ .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
|
||||||
{ .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
|
{ .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
|
||||||
{ .cmd = DTV_TUNE }
|
{ .cmd = DTV_TUNE }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct dtv_properties dtv_prop = {
|
static struct dtv_properties dtv_prop = {
|
||||||
.num = 6, .props = props
|
.num = 6, .props = props
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
|
int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
|
||||||
|
|
||||||
if (!fd) {
|
if (!fd) {
|
||||||
perror ("open");
|
perror ("open");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) {
|
if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) {
|
||||||
perror("ioctl");
|
perror("ioctl");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("Frontend set\\n");
|
printf("Frontend set\\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
NOTE: While it is possible to directly call the Kernel code like the
|
NOTE: While it is possible to directly call the Kernel code like the
|
||||||
|
@ -48,23 +48,23 @@ tuners, but can easily be adjusted for QAM.
|
|||||||
/* routine for checking if we have a signal and other status information*/
|
/* routine for checking if we have a signal and other status information*/
|
||||||
int FEReadStatus(int fd, fe_status_t *stat)
|
int FEReadStatus(int fd, fe_status_t *stat)
|
||||||
{
|
{
|
||||||
int ans;
|
int ans;
|
||||||
|
|
||||||
if ( (ans = ioctl(fd,FE_READ_STATUS,stat) < 0)){
|
if ( (ans = ioctl(fd,FE_READ_STATUS,stat) < 0)){
|
||||||
perror("FE READ STATUS: ");
|
perror("FE READ STATUS: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*stat & FE_HAS_POWER)
|
if (*stat & FE_HAS_POWER)
|
||||||
printf("FE HAS POWER\\n");
|
printf("FE HAS POWER\\n");
|
||||||
|
|
||||||
if (*stat & FE_HAS_SIGNAL)
|
if (*stat & FE_HAS_SIGNAL)
|
||||||
printf("FE HAS SIGNAL\\n");
|
printf("FE HAS SIGNAL\\n");
|
||||||
|
|
||||||
if (*stat & FE_SPECTRUM_INV)
|
if (*stat & FE_SPECTRUM_INV)
|
||||||
printf("SPEKTRUM INV\\n");
|
printf("SPEKTRUM INV\\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -80,153 +80,153 @@ tuners, but can easily be adjusted for QAM.
|
|||||||
/* lnb_slof: switch frequency of LNB */
|
/* lnb_slof: switch frequency of LNB */
|
||||||
|
|
||||||
int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
|
int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
|
||||||
int diseqc, int pol, int srate, int fec, int lnb_lof1,
|
int diseqc, int pol, int srate, int fec, int lnb_lof1,
|
||||||
int lnb_lof2, int lnb_slof)
|
int lnb_lof2, int lnb_slof)
|
||||||
{
|
{
|
||||||
struct secCommand scmd;
|
struct secCommand scmd;
|
||||||
struct secCmdSequence scmds;
|
struct secCmdSequence scmds;
|
||||||
struct dmx_pes_filter_params pesFilterParams;
|
struct dmx_pes_filter_params pesFilterParams;
|
||||||
FrontendParameters frp;
|
FrontendParameters frp;
|
||||||
struct pollfd pfd[1];
|
struct pollfd pfd[1];
|
||||||
FrontendEvent event;
|
FrontendEvent event;
|
||||||
int demux1, demux2, demux3, front;
|
int demux1, demux2, demux3, front;
|
||||||
|
|
||||||
frequency = (uint32_t) freq;
|
frequency = (uint32_t) freq;
|
||||||
symbolrate = (uint32_t) srate;
|
symbolrate = (uint32_t) srate;
|
||||||
|
|
||||||
if((front = open(FRONT,O_RDWR)) < 0){
|
if((front = open(FRONT,O_RDWR)) < 0){
|
||||||
perror("FRONTEND DEVICE: ");
|
perror("FRONTEND DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((sec = open(SEC,O_RDWR)) < 0){
|
if((sec = open(SEC,O_RDWR)) < 0){
|
||||||
perror("SEC DEVICE: ");
|
perror("SEC DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demux1 < 0){
|
if (demux1 < 0){
|
||||||
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
||||||
< 0){
|
< 0){
|
||||||
perror("DEMUX DEVICE: ");
|
perror("DEMUX DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demux2 < 0){
|
if (demux2 < 0){
|
||||||
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
||||||
< 0){
|
< 0){
|
||||||
perror("DEMUX DEVICE: ");
|
perror("DEMUX DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demux3 < 0){
|
if (demux3 < 0){
|
||||||
if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
|
if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
|
||||||
< 0){
|
< 0){
|
||||||
perror("DEMUX DEVICE: ");
|
perror("DEMUX DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (freq < lnb_slof) {
|
if (freq < lnb_slof) {
|
||||||
frp.Frequency = (freq - lnb_lof1);
|
frp.Frequency = (freq - lnb_lof1);
|
||||||
scmds.continuousTone = SEC_TONE_OFF;
|
scmds.continuousTone = SEC_TONE_OFF;
|
||||||
} else {
|
} else {
|
||||||
frp.Frequency = (freq - lnb_lof2);
|
frp.Frequency = (freq - lnb_lof2);
|
||||||
scmds.continuousTone = SEC_TONE_ON;
|
scmds.continuousTone = SEC_TONE_ON;
|
||||||
}
|
}
|
||||||
frp.Inversion = INVERSION_AUTO;
|
frp.Inversion = INVERSION_AUTO;
|
||||||
if (pol) scmds.voltage = SEC_VOLTAGE_18;
|
if (pol) scmds.voltage = SEC_VOLTAGE_18;
|
||||||
else scmds.voltage = SEC_VOLTAGE_13;
|
else scmds.voltage = SEC_VOLTAGE_13;
|
||||||
|
|
||||||
scmd.type=0;
|
scmd.type=0;
|
||||||
scmd.u.diseqc.addr=0x10;
|
scmd.u.diseqc.addr=0x10;
|
||||||
scmd.u.diseqc.cmd=0x38;
|
scmd.u.diseqc.cmd=0x38;
|
||||||
scmd.u.diseqc.numParams=1;
|
scmd.u.diseqc.numParams=1;
|
||||||
scmd.u.diseqc.params[0] = 0xF0 | ((diseqc * 4) & 0x0F) |
|
scmd.u.diseqc.params[0] = 0xF0 | ((diseqc * 4) & 0x0F) |
|
||||||
(scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
|
(scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
|
||||||
(scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
|
(scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
|
||||||
|
|
||||||
scmds.miniCommand=SEC_MINI_NONE;
|
scmds.miniCommand=SEC_MINI_NONE;
|
||||||
scmds.numCommands=1;
|
scmds.numCommands=1;
|
||||||
scmds.commands=&scmd;
|
scmds.commands=&scmd;
|
||||||
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
||||||
perror("SEC SEND: ");
|
perror("SEC SEND: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
|
||||||
perror("SEC SEND: ");
|
perror("SEC SEND: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
frp.u.qpsk.SymbolRate = srate;
|
frp.u.qpsk.SymbolRate = srate;
|
||||||
frp.u.qpsk.FEC_inner = fec;
|
frp.u.qpsk.FEC_inner = fec;
|
||||||
|
|
||||||
if (ioctl(front, FE_SET_FRONTEND, &frp) < 0){
|
if (ioctl(front, FE_SET_FRONTEND, &frp) < 0){
|
||||||
perror("QPSK TUNE: ");
|
perror("QPSK TUNE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pfd[0].fd = front;
|
pfd[0].fd = front;
|
||||||
pfd[0].events = POLLIN;
|
pfd[0].events = POLLIN;
|
||||||
|
|
||||||
if (poll(pfd,1,3000)){
|
if (poll(pfd,1,3000)){
|
||||||
if (pfd[0].revents & POLLIN){
|
if (pfd[0].revents & POLLIN){
|
||||||
printf("Getting QPSK event\\n");
|
printf("Getting QPSK event\\n");
|
||||||
if ( ioctl(front, FE_GET_EVENT, &event)
|
if ( ioctl(front, FE_GET_EVENT, &event)
|
||||||
|
|
||||||
== -EOVERFLOW){
|
== -EOVERFLOW){
|
||||||
perror("qpsk get event");
|
perror("qpsk get event");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("Received ");
|
printf("Received ");
|
||||||
switch(event.type){
|
switch(event.type){
|
||||||
case FE_UNEXPECTED_EV:
|
case FE_UNEXPECTED_EV:
|
||||||
printf("unexpected event\\n");
|
printf("unexpected event\\n");
|
||||||
return -1;
|
return -1;
|
||||||
case FE_FAILURE_EV:
|
case FE_FAILURE_EV:
|
||||||
printf("failure event\\n");
|
printf("failure event\\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case FE_COMPLETION_EV:
|
case FE_COMPLETION_EV:
|
||||||
printf("completion event\\n");
|
printf("completion event\\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pesFilterParams.pid = vpid;
|
pesFilterParams.pid = vpid;
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
pesFilterParams.output = DMX_OUT_DECODER;
|
||||||
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
||||||
perror("set_vpid");
|
perror("set_vpid");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pesFilterParams.pid = apid;
|
pesFilterParams.pid = apid;
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
pesFilterParams.output = DMX_OUT_DECODER;
|
||||||
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
||||||
perror("set_apid");
|
perror("set_apid");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pesFilterParams.pid = tpid;
|
pesFilterParams.pid = tpid;
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
pesFilterParams.output = DMX_OUT_DECODER;
|
pesFilterParams.output = DMX_OUT_DECODER;
|
||||||
pesFilterParams.pes_type = DMX_PES_TELETEXT;
|
pesFilterParams.pes_type = DMX_PES_TELETEXT;
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
if (ioctl(demux3, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
if (ioctl(demux3, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
||||||
perror("set_tpid");
|
perror("set_tpid");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return has_signal(fds);
|
return has_signal(fds);
|
||||||
}
|
}
|
||||||
|
|
||||||
The program assumes that you are using a universal LNB and a standard
|
The program assumes that you are using a universal LNB and a standard
|
||||||
@ -274,43 +274,43 @@ recording.
|
|||||||
|
|
||||||
int switch_to_record(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
int switch_to_record(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
||||||
{
|
{
|
||||||
struct dmx_pes_filter_params pesFilterParams;
|
struct dmx_pes_filter_params pesFilterParams;
|
||||||
|
|
||||||
if (demux1 < 0){
|
if (demux1 < 0){
|
||||||
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
|
||||||
< 0){
|
< 0){
|
||||||
perror("DEMUX DEVICE: ");
|
perror("DEMUX DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demux2 < 0){
|
if (demux2 < 0){
|
||||||
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
|
||||||
< 0){
|
< 0){
|
||||||
perror("DEMUX DEVICE: ");
|
perror("DEMUX DEVICE: ");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pesFilterParams.pid = vpid;
|
pesFilterParams.pid = vpid;
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
pesFilterParams.output = DMX_OUT_TS_TAP;
|
pesFilterParams.output = DMX_OUT_TS_TAP;
|
||||||
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
pesFilterParams.pes_type = DMX_PES_VIDEO;
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
||||||
perror("DEMUX DEVICE");
|
perror("DEMUX DEVICE");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pesFilterParams.pid = apid;
|
pesFilterParams.pid = apid;
|
||||||
pesFilterParams.input = DMX_IN_FRONTEND;
|
pesFilterParams.input = DMX_IN_FRONTEND;
|
||||||
pesFilterParams.output = DMX_OUT_TS_TAP;
|
pesFilterParams.output = DMX_OUT_TS_TAP;
|
||||||
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
pesFilterParams.pes_type = DMX_PES_AUDIO;
|
||||||
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
pesFilterParams.flags = DMX_IMMEDIATE_START;
|
||||||
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
|
||||||
perror("DEMUX DEVICE");
|
perror("DEMUX DEVICE");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* start recording MAX_LENGTH , assuming the transponder is tuned */
|
/* start recording MAX_LENGTH , assuming the transponder is tuned */
|
||||||
@ -319,62 +319,62 @@ recording.
|
|||||||
/* vpid, apid: PIDs of video and audio channels */
|
/* vpid, apid: PIDs of video and audio channels */
|
||||||
int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
int written;
|
int written;
|
||||||
uint8_t buf[BUFFY];
|
uint8_t buf[BUFFY];
|
||||||
uint64_t length;
|
uint64_t length;
|
||||||
struct pollfd pfd[1];
|
struct pollfd pfd[1];
|
||||||
int dvr, dvr_out;
|
int dvr, dvr_out;
|
||||||
|
|
||||||
/* open dvr device */
|
/* open dvr device */
|
||||||
if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) < 0){
|
if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) < 0){
|
||||||
perror("DVR DEVICE");
|
perror("DVR DEVICE");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* switch video and audio demuxes to dvr */
|
/* switch video and audio demuxes to dvr */
|
||||||
printf ("Switching dvr on\\n");
|
printf ("Switching dvr on\\n");
|
||||||
i = switch_to_record(demux1, demux2, vpid, apid);
|
i = switch_to_record(demux1, demux2, vpid, apid);
|
||||||
printf("finished: ");
|
printf("finished: ");
|
||||||
|
|
||||||
printf("Recording %2.0f MB of test file in TS format\\n",
|
printf("Recording %2.0f MB of test file in TS format\\n",
|
||||||
MAX_LENGTH/(1024.0*1024.0));
|
MAX_LENGTH/(1024.0*1024.0));
|
||||||
length = 0;
|
length = 0;
|
||||||
|
|
||||||
/* open output file */
|
/* open output file */
|
||||||
if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
|
if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
|
||||||
|O_TRUNC, S_IRUSR|S_IWUSR
|
|O_TRUNC, S_IRUSR|S_IWUSR
|
||||||
|S_IRGRP|S_IWGRP|S_IROTH|
|
|S_IRGRP|S_IWGRP|S_IROTH|
|
||||||
S_IWOTH)) < 0){
|
S_IWOTH)) < 0){
|
||||||
perror("Can't open file for dvr test");
|
perror("Can't open file for dvr test");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pfd[0].fd = dvr;
|
pfd[0].fd = dvr;
|
||||||
pfd[0].events = POLLIN;
|
pfd[0].events = POLLIN;
|
||||||
|
|
||||||
/* poll for dvr data and write to file */
|
/* poll for dvr data and write to file */
|
||||||
while (length < MAX_LENGTH ) {
|
while (length < MAX_LENGTH ) {
|
||||||
if (poll(pfd,1,1)){
|
if (poll(pfd,1,1)){
|
||||||
if (pfd[0].revents & POLLIN){
|
if (pfd[0].revents & POLLIN){
|
||||||
len = read(dvr, buf, BUFFY);
|
len = read(dvr, buf, BUFFY);
|
||||||
if (len < 0){
|
if (len < 0){
|
||||||
perror("recording");
|
perror("recording");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (len > 0){
|
if (len > 0){
|
||||||
written = 0;
|
written = 0;
|
||||||
while (written < len)
|
while (written < len)
|
||||||
written +=
|
written +=
|
||||||
write (dvr_out,
|
write (dvr_out,
|
||||||
buf, len);
|
buf, len);
|
||||||
length += len;
|
length += len;
|
||||||
printf("written %2.0f MB\\r",
|
printf("written %2.0f MB\\r",
|
||||||
length/1024./1024.);
|
length/1024./1024.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-AUTO`:
|
- .. _`BANDWIDTH-AUTO`:
|
||||||
|
|
||||||
``BANDWIDTH_AUTO``
|
``BANDWIDTH_AUTO``
|
||||||
|
|
||||||
- Autodetect bandwidth (if supported)
|
- Autodetect bandwidth (if supported)
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-1-712-MHZ`:
|
- .. _`BANDWIDTH-1-712-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_1_712_MHZ``
|
``BANDWIDTH_1_712_MHZ``
|
||||||
|
|
||||||
- 1.712 MHz
|
- 1.712 MHz
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-5-MHZ`:
|
- .. _`BANDWIDTH-5-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_5_MHZ``
|
``BANDWIDTH_5_MHZ``
|
||||||
|
|
||||||
- 5 MHz
|
- 5 MHz
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-6-MHZ`:
|
- .. _`BANDWIDTH-6-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_6_MHZ``
|
``BANDWIDTH_6_MHZ``
|
||||||
|
|
||||||
- 6 MHz
|
- 6 MHz
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-7-MHZ`:
|
- .. _`BANDWIDTH-7-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_7_MHZ``
|
``BANDWIDTH_7_MHZ``
|
||||||
|
|
||||||
- 7 MHz
|
- 7 MHz
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-8-MHZ`:
|
- .. _`BANDWIDTH-8-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_8_MHZ``
|
``BANDWIDTH_8_MHZ``
|
||||||
|
|
||||||
- 8 MHz
|
- 8 MHz
|
||||||
|
|
||||||
@ -72,6 +72,6 @@ Frontend bandwidth
|
|||||||
|
|
||||||
- .. _`BANDWIDTH-10-MHZ`:
|
- .. _`BANDWIDTH-10-MHZ`:
|
||||||
|
|
||||||
``BANDWIDTH_10_MHZ``
|
``BANDWIDTH_10_MHZ``
|
||||||
|
|
||||||
- 10 MHz
|
- 10 MHz
|
||||||
|
@ -65,7 +65,7 @@ appropriately. The generic error codes are described at the
|
|||||||
- msg_len
|
- msg_len
|
||||||
|
|
||||||
- Length of the DiSEqC message. Valid values are 0 to 4, where 0
|
- Length of the DiSEqC message. Valid values are 0 to 4, where 0
|
||||||
means no msg
|
means no msg
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -74,4 +74,4 @@ appropriately. The generic error codes are described at the
|
|||||||
- timeout
|
- timeout
|
||||||
|
|
||||||
- Return from ioctl after timeout ms with errorcode when no message
|
- Return from ioctl after timeout ms with errorcode when no message
|
||||||
was received
|
was received
|
||||||
|
@ -69,7 +69,7 @@ enum fe_sec_mini_cmd
|
|||||||
|
|
||||||
- .. _`SEC-MINI-A`:
|
- .. _`SEC-MINI-A`:
|
||||||
|
|
||||||
``SEC_MINI_A``
|
``SEC_MINI_A``
|
||||||
|
|
||||||
- Sends a mini-DiSEqC 22kHz '0' Tone Burst to select satellite-A
|
- Sends a mini-DiSEqC 22kHz '0' Tone Burst to select satellite-A
|
||||||
|
|
||||||
@ -77,6 +77,6 @@ enum fe_sec_mini_cmd
|
|||||||
|
|
||||||
- .. _`SEC-MINI-B`:
|
- .. _`SEC-MINI-B`:
|
||||||
|
|
||||||
``SEC_MINI_B``
|
``SEC_MINI_B``
|
||||||
|
|
||||||
- Sends a mini-DiSEqC 22kHz '1' Data Burst to select satellite-B
|
- Sends a mini-DiSEqC 22kHz '1' Data Burst to select satellite-B
|
||||||
|
@ -71,8 +71,8 @@ appropriately. The generic error codes are described at the
|
|||||||
- type
|
- type
|
||||||
|
|
||||||
- **DEPRECATED**. DVBv3 type. Should not be used on modern programs,
|
- **DEPRECATED**. DVBv3 type. Should not be used on modern programs,
|
||||||
as a frontend may have more than one type. So, the DVBv5 API
|
as a frontend may have more than one type. So, the DVBv5 API
|
||||||
should be used instead to enumerate and select the frontend type.
|
should be used instead to enumerate and select the frontend type.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -177,16 +177,16 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-IS-STUPID`:
|
- .. _`FE-IS-STUPID`:
|
||||||
|
|
||||||
``FE_IS_STUPID``
|
``FE_IS_STUPID``
|
||||||
|
|
||||||
- There's something wrong at the frontend, and it can't report its
|
- There's something wrong at the frontend, and it can't report its
|
||||||
capabilities
|
capabilities
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- .. _`FE-CAN-INVERSION-AUTO`:
|
- .. _`FE-CAN-INVERSION-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_INVERSION_AUTO``
|
``FE_CAN_INVERSION_AUTO``
|
||||||
|
|
||||||
- The frontend is capable of auto-detecting inversion
|
- The frontend is capable of auto-detecting inversion
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-1-2`:
|
- .. _`FE-CAN-FEC-1-2`:
|
||||||
|
|
||||||
``FE_CAN_FEC_1_2``
|
``FE_CAN_FEC_1_2``
|
||||||
|
|
||||||
- The frontend supports FEC 1/2
|
- The frontend supports FEC 1/2
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-2-3`:
|
- .. _`FE-CAN-FEC-2-3`:
|
||||||
|
|
||||||
``FE_CAN_FEC_2_3``
|
``FE_CAN_FEC_2_3``
|
||||||
|
|
||||||
- The frontend supports FEC 2/3
|
- The frontend supports FEC 2/3
|
||||||
|
|
||||||
@ -210,7 +210,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-3-4`:
|
- .. _`FE-CAN-FEC-3-4`:
|
||||||
|
|
||||||
``FE_CAN_FEC_3_4``
|
``FE_CAN_FEC_3_4``
|
||||||
|
|
||||||
- The frontend supports FEC 3/4
|
- The frontend supports FEC 3/4
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-4-5`:
|
- .. _`FE-CAN-FEC-4-5`:
|
||||||
|
|
||||||
``FE_CAN_FEC_4_5``
|
``FE_CAN_FEC_4_5``
|
||||||
|
|
||||||
- The frontend supports FEC 4/5
|
- The frontend supports FEC 4/5
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-5-6`:
|
- .. _`FE-CAN-FEC-5-6`:
|
||||||
|
|
||||||
``FE_CAN_FEC_5_6``
|
``FE_CAN_FEC_5_6``
|
||||||
|
|
||||||
- The frontend supports FEC 5/6
|
- The frontend supports FEC 5/6
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-6-7`:
|
- .. _`FE-CAN-FEC-6-7`:
|
||||||
|
|
||||||
``FE_CAN_FEC_6_7``
|
``FE_CAN_FEC_6_7``
|
||||||
|
|
||||||
- The frontend supports FEC 6/7
|
- The frontend supports FEC 6/7
|
||||||
|
|
||||||
@ -242,7 +242,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-7-8`:
|
- .. _`FE-CAN-FEC-7-8`:
|
||||||
|
|
||||||
``FE_CAN_FEC_7_8``
|
``FE_CAN_FEC_7_8``
|
||||||
|
|
||||||
- The frontend supports FEC 7/8
|
- The frontend supports FEC 7/8
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-8-9`:
|
- .. _`FE-CAN-FEC-8-9`:
|
||||||
|
|
||||||
``FE_CAN_FEC_8_9``
|
``FE_CAN_FEC_8_9``
|
||||||
|
|
||||||
- The frontend supports FEC 8/9
|
- The frontend supports FEC 8/9
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-FEC-AUTO`:
|
- .. _`FE-CAN-FEC-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_FEC_AUTO``
|
``FE_CAN_FEC_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect FEC.
|
- The frontend can autodetect FEC.
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QPSK`:
|
- .. _`FE-CAN-QPSK`:
|
||||||
|
|
||||||
``FE_CAN_QPSK``
|
``FE_CAN_QPSK``
|
||||||
|
|
||||||
- The frontend supports QPSK modulation
|
- The frontend supports QPSK modulation
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-16`:
|
- .. _`FE-CAN-QAM-16`:
|
||||||
|
|
||||||
``FE_CAN_QAM_16``
|
``FE_CAN_QAM_16``
|
||||||
|
|
||||||
- The frontend supports 16-QAM modulation
|
- The frontend supports 16-QAM modulation
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-32`:
|
- .. _`FE-CAN-QAM-32`:
|
||||||
|
|
||||||
``FE_CAN_QAM_32``
|
``FE_CAN_QAM_32``
|
||||||
|
|
||||||
- The frontend supports 32-QAM modulation
|
- The frontend supports 32-QAM modulation
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-64`:
|
- .. _`FE-CAN-QAM-64`:
|
||||||
|
|
||||||
``FE_CAN_QAM_64``
|
``FE_CAN_QAM_64``
|
||||||
|
|
||||||
- The frontend supports 64-QAM modulation
|
- The frontend supports 64-QAM modulation
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-128`:
|
- .. _`FE-CAN-QAM-128`:
|
||||||
|
|
||||||
``FE_CAN_QAM_128``
|
``FE_CAN_QAM_128``
|
||||||
|
|
||||||
- The frontend supports 128-QAM modulation
|
- The frontend supports 128-QAM modulation
|
||||||
|
|
||||||
@ -306,7 +306,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-256`:
|
- .. _`FE-CAN-QAM-256`:
|
||||||
|
|
||||||
``FE_CAN_QAM_256``
|
``FE_CAN_QAM_256``
|
||||||
|
|
||||||
- The frontend supports 256-QAM modulation
|
- The frontend supports 256-QAM modulation
|
||||||
|
|
||||||
@ -314,7 +314,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-QAM-AUTO`:
|
- .. _`FE-CAN-QAM-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_QAM_AUTO``
|
``FE_CAN_QAM_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect modulation
|
- The frontend can autodetect modulation
|
||||||
|
|
||||||
@ -322,7 +322,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-TRANSMISSION-MODE-AUTO`:
|
- .. _`FE-CAN-TRANSMISSION-MODE-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_TRANSMISSION_MODE_AUTO``
|
``FE_CAN_TRANSMISSION_MODE_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect the transmission mode
|
- The frontend can autodetect the transmission mode
|
||||||
|
|
||||||
@ -330,7 +330,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-BANDWIDTH-AUTO`:
|
- .. _`FE-CAN-BANDWIDTH-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_BANDWIDTH_AUTO``
|
``FE_CAN_BANDWIDTH_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect the bandwidth
|
- The frontend can autodetect the bandwidth
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-GUARD-INTERVAL-AUTO`:
|
- .. _`FE-CAN-GUARD-INTERVAL-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_GUARD_INTERVAL_AUTO``
|
``FE_CAN_GUARD_INTERVAL_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect the guard interval
|
- The frontend can autodetect the guard interval
|
||||||
|
|
||||||
@ -346,7 +346,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-HIERARCHY-AUTO`:
|
- .. _`FE-CAN-HIERARCHY-AUTO`:
|
||||||
|
|
||||||
``FE_CAN_HIERARCHY_AUTO``
|
``FE_CAN_HIERARCHY_AUTO``
|
||||||
|
|
||||||
- The frontend can autodetect hierarch
|
- The frontend can autodetect hierarch
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-8VSB`:
|
- .. _`FE-CAN-8VSB`:
|
||||||
|
|
||||||
``FE_CAN_8VSB``
|
``FE_CAN_8VSB``
|
||||||
|
|
||||||
- The frontend supports 8-VSB modulation
|
- The frontend supports 8-VSB modulation
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-16VSB`:
|
- .. _`FE-CAN-16VSB`:
|
||||||
|
|
||||||
``FE_CAN_16VSB``
|
``FE_CAN_16VSB``
|
||||||
|
|
||||||
- The frontend supports 16-VSB modulation
|
- The frontend supports 16-VSB modulation
|
||||||
|
|
||||||
@ -370,7 +370,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-HAS-EXTENDED-CAPS`:
|
- .. _`FE-HAS-EXTENDED-CAPS`:
|
||||||
|
|
||||||
``FE_HAS_EXTENDED_CAPS``
|
``FE_HAS_EXTENDED_CAPS``
|
||||||
|
|
||||||
- Currently, unused
|
- Currently, unused
|
||||||
|
|
||||||
@ -378,7 +378,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-MULTISTREAM`:
|
- .. _`FE-CAN-MULTISTREAM`:
|
||||||
|
|
||||||
``FE_CAN_MULTISTREAM``
|
``FE_CAN_MULTISTREAM``
|
||||||
|
|
||||||
- The frontend supports multistream filtering
|
- The frontend supports multistream filtering
|
||||||
|
|
||||||
@ -386,7 +386,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-TURBO-FEC`:
|
- .. _`FE-CAN-TURBO-FEC`:
|
||||||
|
|
||||||
``FE_CAN_TURBO_FEC``
|
``FE_CAN_TURBO_FEC``
|
||||||
|
|
||||||
- The frontend supports turbo FEC modulation
|
- The frontend supports turbo FEC modulation
|
||||||
|
|
||||||
@ -394,7 +394,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-2G-MODULATION`:
|
- .. _`FE-CAN-2G-MODULATION`:
|
||||||
|
|
||||||
``FE_CAN_2G_MODULATION``
|
``FE_CAN_2G_MODULATION``
|
||||||
|
|
||||||
- The frontend supports "2nd generation modulation" (DVB-S2/T2)>
|
- The frontend supports "2nd generation modulation" (DVB-S2/T2)>
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-NEEDS-BENDING`:
|
- .. _`FE-NEEDS-BENDING`:
|
||||||
|
|
||||||
``FE_NEEDS_BENDING``
|
``FE_NEEDS_BENDING``
|
||||||
|
|
||||||
- Not supported anymore, don't use it
|
- Not supported anymore, don't use it
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-RECOVER`:
|
- .. _`FE-CAN-RECOVER`:
|
||||||
|
|
||||||
``FE_CAN_RECOVER``
|
``FE_CAN_RECOVER``
|
||||||
|
|
||||||
- The frontend can recover from a cable unplug automatically
|
- The frontend can recover from a cable unplug automatically
|
||||||
|
|
||||||
@ -418,6 +418,6 @@ supported only on some specific frontend types.
|
|||||||
|
|
||||||
- .. _`FE-CAN-MUTE-TS`:
|
- .. _`FE-CAN-MUTE-TS`:
|
||||||
|
|
||||||
``FE_CAN_MUTE_TS``
|
``FE_CAN_MUTE_TS``
|
||||||
|
|
||||||
- The frontend can stop spurious TS data output
|
- The frontend can stop spurious TS data output
|
||||||
|
@ -77,7 +77,7 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-HAS-SIGNAL`:
|
- .. _`FE-HAS-SIGNAL`:
|
||||||
|
|
||||||
``FE_HAS_SIGNAL``
|
``FE_HAS_SIGNAL``
|
||||||
|
|
||||||
- The frontend has found something above the noise level
|
- The frontend has found something above the noise level
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-HAS-CARRIER`:
|
- .. _`FE-HAS-CARRIER`:
|
||||||
|
|
||||||
``FE_HAS_CARRIER``
|
``FE_HAS_CARRIER``
|
||||||
|
|
||||||
- The frontend has found a DVB signal
|
- The frontend has found a DVB signal
|
||||||
|
|
||||||
@ -93,16 +93,16 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-HAS-VITERBI`:
|
- .. _`FE-HAS-VITERBI`:
|
||||||
|
|
||||||
``FE_HAS_VITERBI``
|
``FE_HAS_VITERBI``
|
||||||
|
|
||||||
- The frontend FEC inner coding (Viterbi, LDPC or other inner code)
|
- The frontend FEC inner coding (Viterbi, LDPC or other inner code)
|
||||||
is stable
|
is stable
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- .. _`FE-HAS-SYNC`:
|
- .. _`FE-HAS-SYNC`:
|
||||||
|
|
||||||
``FE_HAS_SYNC``
|
``FE_HAS_SYNC``
|
||||||
|
|
||||||
- Synchronization bytes was found
|
- Synchronization bytes was found
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-HAS-LOCK`:
|
- .. _`FE-HAS-LOCK`:
|
||||||
|
|
||||||
``FE_HAS_LOCK``
|
``FE_HAS_LOCK``
|
||||||
|
|
||||||
- The DVB were locked and everything is working
|
- The DVB were locked and everything is working
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-TIMEDOUT`:
|
- .. _`FE-TIMEDOUT`:
|
||||||
|
|
||||||
``FE_TIMEDOUT``
|
``FE_TIMEDOUT``
|
||||||
|
|
||||||
- no lock within the last about 2 seconds
|
- no lock within the last about 2 seconds
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ state changes of the frontend hardware. It is produced using the enum
|
|||||||
|
|
||||||
- .. _`FE-REINIT`:
|
- .. _`FE-REINIT`:
|
||||||
|
|
||||||
``FE_REINIT``
|
``FE_REINIT``
|
||||||
|
|
||||||
- The frontend was reinitialized, application is recommended to
|
- The frontend was reinitialized, application is recommended to
|
||||||
reset DiSEqC, tone and parameters
|
reset DiSEqC, tone and parameters
|
||||||
|
@ -75,7 +75,7 @@ enum fe_sec_tone_mode
|
|||||||
|
|
||||||
- .. _`SEC-TONE-ON`:
|
- .. _`SEC-TONE-ON`:
|
||||||
|
|
||||||
``SEC_TONE_ON``
|
``SEC_TONE_ON``
|
||||||
|
|
||||||
- Sends a 22kHz tone burst to the antenna
|
- Sends a 22kHz tone burst to the antenna
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ enum fe_sec_tone_mode
|
|||||||
|
|
||||||
- .. _`SEC-TONE-OFF`:
|
- .. _`SEC-TONE-OFF`:
|
||||||
|
|
||||||
``SEC_TONE_OFF``
|
``SEC_TONE_OFF``
|
||||||
|
|
||||||
- Don't send a 22kHz tone to the antenna (except if the
|
- Don't send a 22kHz tone to the antenna (except if the
|
||||||
FE_DISEQC_* ioctls are called)
|
FE_DISEQC_* ioctls are called)
|
||||||
|
@ -26,13 +26,13 @@ fe_type_t type, defined as:
|
|||||||
- Description
|
- Description
|
||||||
|
|
||||||
- :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` equivalent
|
- :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` equivalent
|
||||||
type
|
type
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- .. _`FE-QPSK`:
|
- .. _`FE-QPSK`:
|
||||||
|
|
||||||
``FE_QPSK``
|
``FE_QPSK``
|
||||||
|
|
||||||
- For DVB-S standard
|
- For DVB-S standard
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ fe_type_t type, defined as:
|
|||||||
|
|
||||||
- .. _`FE-QAM`:
|
- .. _`FE-QAM`:
|
||||||
|
|
||||||
``FE_QAM``
|
``FE_QAM``
|
||||||
|
|
||||||
- For DVB-C annex A standard
|
- For DVB-C annex A standard
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ fe_type_t type, defined as:
|
|||||||
|
|
||||||
- .. _`FE-OFDM`:
|
- .. _`FE-OFDM`:
|
||||||
|
|
||||||
``FE_OFDM``
|
``FE_OFDM``
|
||||||
|
|
||||||
- For DVB-T standard
|
- For DVB-T standard
|
||||||
|
|
||||||
@ -62,10 +62,10 @@ fe_type_t type, defined as:
|
|||||||
|
|
||||||
- .. _`FE-ATSC`:
|
- .. _`FE-ATSC`:
|
||||||
|
|
||||||
``FE_ATSC``
|
``FE_ATSC``
|
||||||
|
|
||||||
- For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used
|
- For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used
|
||||||
in US.
|
in US.
|
||||||
|
|
||||||
- ``SYS_ATSC`` (terrestrial) or ``SYS_DVBC_ANNEX_B`` (cable)
|
- ``SYS_ATSC`` (terrestrial) or ``SYS_DVBC_ANNEX_B`` (cable)
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QPSK`:
|
- .. _`QPSK`:
|
||||||
|
|
||||||
``QPSK``
|
``QPSK``
|
||||||
|
|
||||||
- QPSK modulation
|
- QPSK modulation
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-16`:
|
- .. _`QAM-16`:
|
||||||
|
|
||||||
``QAM_16``
|
``QAM_16``
|
||||||
|
|
||||||
- 16-QAM modulation
|
- 16-QAM modulation
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-32`:
|
- .. _`QAM-32`:
|
||||||
|
|
||||||
``QAM_32``
|
``QAM_32``
|
||||||
|
|
||||||
- 32-QAM modulation
|
- 32-QAM modulation
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-64`:
|
- .. _`QAM-64`:
|
||||||
|
|
||||||
``QAM_64``
|
``QAM_64``
|
||||||
|
|
||||||
- 64-QAM modulation
|
- 64-QAM modulation
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-128`:
|
- .. _`QAM-128`:
|
||||||
|
|
||||||
``QAM_128``
|
``QAM_128``
|
||||||
|
|
||||||
- 128-QAM modulation
|
- 128-QAM modulation
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-256`:
|
- .. _`QAM-256`:
|
||||||
|
|
||||||
``QAM_256``
|
``QAM_256``
|
||||||
|
|
||||||
- 256-QAM modulation
|
- 256-QAM modulation
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-AUTO`:
|
- .. _`QAM-AUTO`:
|
||||||
|
|
||||||
``QAM_AUTO``
|
``QAM_AUTO``
|
||||||
|
|
||||||
- Autodetect QAM modulation
|
- Autodetect QAM modulation
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`VSB-8`:
|
- .. _`VSB-8`:
|
||||||
|
|
||||||
``VSB_8``
|
``VSB_8``
|
||||||
|
|
||||||
- 8-VSB modulation
|
- 8-VSB modulation
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`VSB-16`:
|
- .. _`VSB-16`:
|
||||||
|
|
||||||
``VSB_16``
|
``VSB_16``
|
||||||
|
|
||||||
- 16-VSB modulation
|
- 16-VSB modulation
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`PSK-8`:
|
- .. _`PSK-8`:
|
||||||
|
|
||||||
``PSK_8``
|
``PSK_8``
|
||||||
|
|
||||||
- 8-PSK modulation
|
- 8-PSK modulation
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`APSK-16`:
|
- .. _`APSK-16`:
|
||||||
|
|
||||||
``APSK_16``
|
``APSK_16``
|
||||||
|
|
||||||
- 16-APSK modulation
|
- 16-APSK modulation
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`APSK-32`:
|
- .. _`APSK-32`:
|
||||||
|
|
||||||
``APSK_32``
|
``APSK_32``
|
||||||
|
|
||||||
- 32-APSK modulation
|
- 32-APSK modulation
|
||||||
|
|
||||||
@ -189,7 +189,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`DQPSK`:
|
- .. _`DQPSK`:
|
||||||
|
|
||||||
``DQPSK``
|
``DQPSK``
|
||||||
|
|
||||||
- DQPSK modulation
|
- DQPSK modulation
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ modulations are supported by a given standard.
|
|||||||
|
|
||||||
- .. _`QAM-4-NR`:
|
- .. _`QAM-4-NR`:
|
||||||
|
|
||||||
``QAM_4_NR``
|
``QAM_4_NR``
|
||||||
|
|
||||||
- 4-QAM-NR modulation
|
- 4-QAM-NR modulation
|
||||||
|
|
||||||
@ -269,7 +269,7 @@ inversion off. If it fails, it will try to enable inversion.
|
|||||||
|
|
||||||
- .. _`INVERSION-OFF`:
|
- .. _`INVERSION-OFF`:
|
||||||
|
|
||||||
``INVERSION_OFF``
|
``INVERSION_OFF``
|
||||||
|
|
||||||
- Don't do spectral band inversion.
|
- Don't do spectral band inversion.
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ inversion off. If it fails, it will try to enable inversion.
|
|||||||
|
|
||||||
- .. _`INVERSION-ON`:
|
- .. _`INVERSION-ON`:
|
||||||
|
|
||||||
``INVERSION_ON``
|
``INVERSION_ON``
|
||||||
|
|
||||||
- Do spectral band inversion.
|
- Do spectral band inversion.
|
||||||
|
|
||||||
@ -285,7 +285,7 @@ inversion off. If it fails, it will try to enable inversion.
|
|||||||
|
|
||||||
- .. _`INVERSION-AUTO`:
|
- .. _`INVERSION-AUTO`:
|
||||||
|
|
||||||
``INVERSION_AUTO``
|
``INVERSION_AUTO``
|
||||||
|
|
||||||
- Autodetect spectral band inversion.
|
- Autodetect spectral band inversion.
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-NONE`:
|
- .. _`FEC-NONE`:
|
||||||
|
|
||||||
``FEC_NONE``
|
``FEC_NONE``
|
||||||
|
|
||||||
- No Forward Error Correction Code
|
- No Forward Error Correction Code
|
||||||
|
|
||||||
@ -347,7 +347,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-AUTO`:
|
- .. _`FEC-AUTO`:
|
||||||
|
|
||||||
``FEC_AUTO``
|
``FEC_AUTO``
|
||||||
|
|
||||||
- Autodetect Error Correction Code
|
- Autodetect Error Correction Code
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-1-2`:
|
- .. _`FEC-1-2`:
|
||||||
|
|
||||||
``FEC_1_2``
|
``FEC_1_2``
|
||||||
|
|
||||||
- Forward Error Correction Code 1/2
|
- Forward Error Correction Code 1/2
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-2-3`:
|
- .. _`FEC-2-3`:
|
||||||
|
|
||||||
``FEC_2_3``
|
``FEC_2_3``
|
||||||
|
|
||||||
- Forward Error Correction Code 2/3
|
- Forward Error Correction Code 2/3
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-3-4`:
|
- .. _`FEC-3-4`:
|
||||||
|
|
||||||
``FEC_3_4``
|
``FEC_3_4``
|
||||||
|
|
||||||
- Forward Error Correction Code 3/4
|
- Forward Error Correction Code 3/4
|
||||||
|
|
||||||
@ -379,7 +379,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-4-5`:
|
- .. _`FEC-4-5`:
|
||||||
|
|
||||||
``FEC_4_5``
|
``FEC_4_5``
|
||||||
|
|
||||||
- Forward Error Correction Code 4/5
|
- Forward Error Correction Code 4/5
|
||||||
|
|
||||||
@ -387,7 +387,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-5-6`:
|
- .. _`FEC-5-6`:
|
||||||
|
|
||||||
``FEC_5_6``
|
``FEC_5_6``
|
||||||
|
|
||||||
- Forward Error Correction Code 5/6
|
- Forward Error Correction Code 5/6
|
||||||
|
|
||||||
@ -395,7 +395,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-6-7`:
|
- .. _`FEC-6-7`:
|
||||||
|
|
||||||
``FEC_6_7``
|
``FEC_6_7``
|
||||||
|
|
||||||
- Forward Error Correction Code 6/7
|
- Forward Error Correction Code 6/7
|
||||||
|
|
||||||
@ -403,7 +403,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-7-8`:
|
- .. _`FEC-7-8`:
|
||||||
|
|
||||||
``FEC_7_8``
|
``FEC_7_8``
|
||||||
|
|
||||||
- Forward Error Correction Code 7/8
|
- Forward Error Correction Code 7/8
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-8-9`:
|
- .. _`FEC-8-9`:
|
||||||
|
|
||||||
``FEC_8_9``
|
``FEC_8_9``
|
||||||
|
|
||||||
- Forward Error Correction Code 8/9
|
- Forward Error Correction Code 8/9
|
||||||
|
|
||||||
@ -419,7 +419,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-9-10`:
|
- .. _`FEC-9-10`:
|
||||||
|
|
||||||
``FEC_9_10``
|
``FEC_9_10``
|
||||||
|
|
||||||
- Forward Error Correction Code 9/10
|
- Forward Error Correction Code 9/10
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-2-5`:
|
- .. _`FEC-2-5`:
|
||||||
|
|
||||||
``FEC_2_5``
|
``FEC_2_5``
|
||||||
|
|
||||||
- Forward Error Correction Code 2/5
|
- Forward Error Correction Code 2/5
|
||||||
|
|
||||||
@ -435,7 +435,7 @@ enum fe_code_rate: type of the Forward Error Correction.
|
|||||||
|
|
||||||
- .. _`FEC-3-5`:
|
- .. _`FEC-3-5`:
|
||||||
|
|
||||||
``FEC_3_5``
|
``FEC_3_5``
|
||||||
|
|
||||||
- Forward Error Correction Code 3/5
|
- Forward Error Correction Code 3/5
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ described in the DiSEqC spec.
|
|||||||
|
|
||||||
- .. _`SEC-VOLTAGE-13`:
|
- .. _`SEC-VOLTAGE-13`:
|
||||||
|
|
||||||
``SEC_VOLTAGE_13``
|
``SEC_VOLTAGE_13``
|
||||||
|
|
||||||
- Set DC voltage level to 13V
|
- Set DC voltage level to 13V
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ described in the DiSEqC spec.
|
|||||||
|
|
||||||
- .. _`SEC-VOLTAGE-18`:
|
- .. _`SEC-VOLTAGE-18`:
|
||||||
|
|
||||||
``SEC_VOLTAGE_18``
|
``SEC_VOLTAGE_18``
|
||||||
|
|
||||||
- Set DC voltage level to 18V
|
- Set DC voltage level to 18V
|
||||||
|
|
||||||
@ -485,7 +485,7 @@ described in the DiSEqC spec.
|
|||||||
|
|
||||||
- .. _`SEC-VOLTAGE-OFF`:
|
- .. _`SEC-VOLTAGE-OFF`:
|
||||||
|
|
||||||
``SEC_VOLTAGE_OFF``
|
``SEC_VOLTAGE_OFF``
|
||||||
|
|
||||||
- Don't send any voltage to the antenna
|
- Don't send any voltage to the antenna
|
||||||
|
|
||||||
@ -530,7 +530,7 @@ fe_pilot type
|
|||||||
|
|
||||||
- .. _`PILOT-ON`:
|
- .. _`PILOT-ON`:
|
||||||
|
|
||||||
``PILOT_ON``
|
``PILOT_ON``
|
||||||
|
|
||||||
- Pilot tones enabled
|
- Pilot tones enabled
|
||||||
|
|
||||||
@ -538,7 +538,7 @@ fe_pilot type
|
|||||||
|
|
||||||
- .. _`PILOT-OFF`:
|
- .. _`PILOT-OFF`:
|
||||||
|
|
||||||
``PILOT_OFF``
|
``PILOT_OFF``
|
||||||
|
|
||||||
- Pilot tones disabled
|
- Pilot tones disabled
|
||||||
|
|
||||||
@ -546,7 +546,7 @@ fe_pilot type
|
|||||||
|
|
||||||
- .. _`PILOT-AUTO`:
|
- .. _`PILOT-AUTO`:
|
||||||
|
|
||||||
``PILOT_AUTO``
|
``PILOT_AUTO``
|
||||||
|
|
||||||
- Autodetect pilot tones
|
- Autodetect pilot tones
|
||||||
|
|
||||||
@ -583,7 +583,7 @@ fe_rolloff type
|
|||||||
|
|
||||||
- .. _`ROLLOFF-35`:
|
- .. _`ROLLOFF-35`:
|
||||||
|
|
||||||
``ROLLOFF_35``
|
``ROLLOFF_35``
|
||||||
|
|
||||||
- Roloff factor: α=35%
|
- Roloff factor: α=35%
|
||||||
|
|
||||||
@ -591,7 +591,7 @@ fe_rolloff type
|
|||||||
|
|
||||||
- .. _`ROLLOFF-20`:
|
- .. _`ROLLOFF-20`:
|
||||||
|
|
||||||
``ROLLOFF_20``
|
``ROLLOFF_20``
|
||||||
|
|
||||||
- Roloff factor: α=20%
|
- Roloff factor: α=20%
|
||||||
|
|
||||||
@ -599,7 +599,7 @@ fe_rolloff type
|
|||||||
|
|
||||||
- .. _`ROLLOFF-25`:
|
- .. _`ROLLOFF-25`:
|
||||||
|
|
||||||
``ROLLOFF_25``
|
``ROLLOFF_25``
|
||||||
|
|
||||||
- Roloff factor: α=25%
|
- Roloff factor: α=25%
|
||||||
|
|
||||||
@ -607,7 +607,7 @@ fe_rolloff type
|
|||||||
|
|
||||||
- .. _`ROLLOFF-AUTO`:
|
- .. _`ROLLOFF-AUTO`:
|
||||||
|
|
||||||
``ROLLOFF_AUTO``
|
``ROLLOFF_AUTO``
|
||||||
|
|
||||||
- Auto-detect the roloff factor.
|
- Auto-detect the roloff factor.
|
||||||
|
|
||||||
@ -670,7 +670,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-UNDEFINED`:
|
- .. _`SYS-UNDEFINED`:
|
||||||
|
|
||||||
``SYS_UNDEFINED``
|
``SYS_UNDEFINED``
|
||||||
|
|
||||||
- Undefined standard. Generally, indicates an error
|
- Undefined standard. Generally, indicates an error
|
||||||
|
|
||||||
@ -678,7 +678,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBC-ANNEX-A`:
|
- .. _`SYS-DVBC-ANNEX-A`:
|
||||||
|
|
||||||
``SYS_DVBC_ANNEX_A``
|
``SYS_DVBC_ANNEX_A``
|
||||||
|
|
||||||
- Cable TV: DVB-C following ITU-T J.83 Annex A spec
|
- Cable TV: DVB-C following ITU-T J.83 Annex A spec
|
||||||
|
|
||||||
@ -686,7 +686,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBC-ANNEX-B`:
|
- .. _`SYS-DVBC-ANNEX-B`:
|
||||||
|
|
||||||
``SYS_DVBC_ANNEX_B``
|
``SYS_DVBC_ANNEX_B``
|
||||||
|
|
||||||
- Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)
|
- Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)
|
||||||
|
|
||||||
@ -694,7 +694,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBC-ANNEX-C`:
|
- .. _`SYS-DVBC-ANNEX-C`:
|
||||||
|
|
||||||
``SYS_DVBC_ANNEX_C``
|
``SYS_DVBC_ANNEX_C``
|
||||||
|
|
||||||
- Cable TV: DVB-C following ITU-T J.83 Annex C spec
|
- Cable TV: DVB-C following ITU-T J.83 Annex C spec
|
||||||
|
|
||||||
@ -702,7 +702,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-ISDBC`:
|
- .. _`SYS-ISDBC`:
|
||||||
|
|
||||||
``SYS_ISDBC``
|
``SYS_ISDBC``
|
||||||
|
|
||||||
- Cable TV: ISDB-C (no drivers yet)
|
- Cable TV: ISDB-C (no drivers yet)
|
||||||
|
|
||||||
@ -710,7 +710,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBT`:
|
- .. _`SYS-DVBT`:
|
||||||
|
|
||||||
``SYS_DVBT``
|
``SYS_DVBT``
|
||||||
|
|
||||||
- Terrestral TV: DVB-T
|
- Terrestral TV: DVB-T
|
||||||
|
|
||||||
@ -718,7 +718,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBT2`:
|
- .. _`SYS-DVBT2`:
|
||||||
|
|
||||||
``SYS_DVBT2``
|
``SYS_DVBT2``
|
||||||
|
|
||||||
- Terrestral TV: DVB-T2
|
- Terrestral TV: DVB-T2
|
||||||
|
|
||||||
@ -726,7 +726,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-ISDBT`:
|
- .. _`SYS-ISDBT`:
|
||||||
|
|
||||||
``SYS_ISDBT``
|
``SYS_ISDBT``
|
||||||
|
|
||||||
- Terrestral TV: ISDB-T
|
- Terrestral TV: ISDB-T
|
||||||
|
|
||||||
@ -734,7 +734,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-ATSC`:
|
- .. _`SYS-ATSC`:
|
||||||
|
|
||||||
``SYS_ATSC``
|
``SYS_ATSC``
|
||||||
|
|
||||||
- Terrestral TV: ATSC
|
- Terrestral TV: ATSC
|
||||||
|
|
||||||
@ -742,7 +742,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-ATSCMH`:
|
- .. _`SYS-ATSCMH`:
|
||||||
|
|
||||||
``SYS_ATSCMH``
|
``SYS_ATSCMH``
|
||||||
|
|
||||||
- Terrestral TV (mobile): ATSC-M/H
|
- Terrestral TV (mobile): ATSC-M/H
|
||||||
|
|
||||||
@ -750,7 +750,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DTMB`:
|
- .. _`SYS-DTMB`:
|
||||||
|
|
||||||
``SYS_DTMB``
|
``SYS_DTMB``
|
||||||
|
|
||||||
- Terrestrial TV: DTMB
|
- Terrestrial TV: DTMB
|
||||||
|
|
||||||
@ -758,7 +758,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBS`:
|
- .. _`SYS-DVBS`:
|
||||||
|
|
||||||
``SYS_DVBS``
|
``SYS_DVBS``
|
||||||
|
|
||||||
- Satellite TV: DVB-S
|
- Satellite TV: DVB-S
|
||||||
|
|
||||||
@ -766,7 +766,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBS2`:
|
- .. _`SYS-DVBS2`:
|
||||||
|
|
||||||
``SYS_DVBS2``
|
``SYS_DVBS2``
|
||||||
|
|
||||||
- Satellite TV: DVB-S2
|
- Satellite TV: DVB-S2
|
||||||
|
|
||||||
@ -774,7 +774,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-TURBO`:
|
- .. _`SYS-TURBO`:
|
||||||
|
|
||||||
``SYS_TURBO``
|
``SYS_TURBO``
|
||||||
|
|
||||||
- Satellite TV: DVB-S Turbo
|
- Satellite TV: DVB-S Turbo
|
||||||
|
|
||||||
@ -782,7 +782,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-ISDBS`:
|
- .. _`SYS-ISDBS`:
|
||||||
|
|
||||||
``SYS_ISDBS``
|
``SYS_ISDBS``
|
||||||
|
|
||||||
- Satellite TV: ISDB-S
|
- Satellite TV: ISDB-S
|
||||||
|
|
||||||
@ -790,7 +790,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DAB`:
|
- .. _`SYS-DAB`:
|
||||||
|
|
||||||
``SYS_DAB``
|
``SYS_DAB``
|
||||||
|
|
||||||
- Digital audio: DAB (not fully supported)
|
- Digital audio: DAB (not fully supported)
|
||||||
|
|
||||||
@ -798,7 +798,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DSS`:
|
- .. _`SYS-DSS`:
|
||||||
|
|
||||||
``SYS_DSS``
|
``SYS_DSS``
|
||||||
|
|
||||||
- Satellite TV:"DSS (not fully supported)
|
- Satellite TV:"DSS (not fully supported)
|
||||||
|
|
||||||
@ -806,7 +806,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-CMMB`:
|
- .. _`SYS-CMMB`:
|
||||||
|
|
||||||
``SYS_CMMB``
|
``SYS_CMMB``
|
||||||
|
|
||||||
- Terrestral TV (mobile):CMMB (not fully supported)
|
- Terrestral TV (mobile):CMMB (not fully supported)
|
||||||
|
|
||||||
@ -814,7 +814,7 @@ Possible values:
|
|||||||
|
|
||||||
- .. _`SYS-DVBH`:
|
- .. _`SYS-DVBH`:
|
||||||
|
|
||||||
``SYS_DVBH``
|
``SYS_DVBH``
|
||||||
|
|
||||||
- Terrestral TV (mobile): DVB-H (standard deprecated)
|
- Terrestral TV (mobile): DVB-H (standard deprecated)
|
||||||
|
|
||||||
@ -1240,20 +1240,20 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSFRAME-PRI-ONLY`:
|
- .. _`ATSCMH-RSFRAME-PRI-ONLY`:
|
||||||
|
|
||||||
``ATSCMH_RSFRAME_PRI_ONLY``
|
``ATSCMH_RSFRAME_PRI_ONLY``
|
||||||
|
|
||||||
- Single Frame: There is only a primary RS Frame for all Group
|
- Single Frame: There is only a primary RS Frame for all Group
|
||||||
Regions.
|
Regions.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- .. _`ATSCMH-RSFRAME-PRI-SEC`:
|
- .. _`ATSCMH-RSFRAME-PRI-SEC`:
|
||||||
|
|
||||||
``ATSCMH_RSFRAME_PRI_SEC``
|
``ATSCMH_RSFRAME_PRI_SEC``
|
||||||
|
|
||||||
- Dual Frame: There are two separate RS Frames: Primary RS Frame for
|
- Dual Frame: There are two separate RS Frames: Primary RS Frame for
|
||||||
Group Region A and B and Secondary RS Frame for Group Region C and
|
Group Region A and B and Secondary RS Frame for Group Region C and
|
||||||
D.
|
D.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1284,7 +1284,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSFRAME-ENS-PRI`:
|
- .. _`ATSCMH-RSFRAME-ENS-PRI`:
|
||||||
|
|
||||||
``ATSCMH_RSFRAME_ENS_PRI``
|
``ATSCMH_RSFRAME_ENS_PRI``
|
||||||
|
|
||||||
- Primary Ensemble.
|
- Primary Ensemble.
|
||||||
|
|
||||||
@ -1292,7 +1292,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSFRAME-ENS-SEC`:
|
- .. _`ATSCMH-RSFRAME-ENS-SEC`:
|
||||||
|
|
||||||
``AATSCMH_RSFRAME_PRI_SEC``
|
``AATSCMH_RSFRAME_PRI_SEC``
|
||||||
|
|
||||||
- Secondary Ensemble.
|
- Secondary Ensemble.
|
||||||
|
|
||||||
@ -1300,7 +1300,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSFRAME-RES`:
|
- .. _`ATSCMH-RSFRAME-RES`:
|
||||||
|
|
||||||
``AATSCMH_RSFRAME_RES``
|
``AATSCMH_RSFRAME_RES``
|
||||||
|
|
||||||
- Reserved. Shouldn't be used.
|
- Reserved. Shouldn't be used.
|
||||||
|
|
||||||
@ -1333,7 +1333,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSCODE-211-187`:
|
- .. _`ATSCMH-RSCODE-211-187`:
|
||||||
|
|
||||||
``ATSCMH_RSCODE_211_187``
|
``ATSCMH_RSCODE_211_187``
|
||||||
|
|
||||||
- Reed Solomon code (211,187).
|
- Reed Solomon code (211,187).
|
||||||
|
|
||||||
@ -1341,7 +1341,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSCODE-223-187`:
|
- .. _`ATSCMH-RSCODE-223-187`:
|
||||||
|
|
||||||
``ATSCMH_RSCODE_223_187``
|
``ATSCMH_RSCODE_223_187``
|
||||||
|
|
||||||
- Reed Solomon code (223,187).
|
- Reed Solomon code (223,187).
|
||||||
|
|
||||||
@ -1349,7 +1349,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSCODE-235-187`:
|
- .. _`ATSCMH-RSCODE-235-187`:
|
||||||
|
|
||||||
``ATSCMH_RSCODE_235_187``
|
``ATSCMH_RSCODE_235_187``
|
||||||
|
|
||||||
- Reed Solomon code (235,187).
|
- Reed Solomon code (235,187).
|
||||||
|
|
||||||
@ -1357,7 +1357,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-RSCODE-RES`:
|
- .. _`ATSCMH-RSCODE-RES`:
|
||||||
|
|
||||||
``ATSCMH_RSCODE_RES``
|
``ATSCMH_RSCODE_RES``
|
||||||
|
|
||||||
- Reserved. Shouldn't be used.
|
- Reserved. Shouldn't be used.
|
||||||
|
|
||||||
@ -1401,25 +1401,25 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-SCCC-BLK-SEP`:
|
- .. _`ATSCMH-SCCC-BLK-SEP`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_BLK_SEP``
|
``ATSCMH_SCCC_BLK_SEP``
|
||||||
|
|
||||||
- Separate SCCC: the SCCC outer code mode shall be set independently
|
- Separate SCCC: the SCCC outer code mode shall be set independently
|
||||||
for each Group Region (A, B, C, D)
|
for each Group Region (A, B, C, D)
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- .. _`ATSCMH-SCCC-BLK-COMB`:
|
- .. _`ATSCMH-SCCC-BLK-COMB`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_BLK_COMB``
|
``ATSCMH_SCCC_BLK_COMB``
|
||||||
|
|
||||||
- Combined SCCC: all four Regions shall have the same SCCC outer
|
- Combined SCCC: all four Regions shall have the same SCCC outer
|
||||||
code mode.
|
code mode.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- .. _`ATSCMH-SCCC-BLK-RES`:
|
- .. _`ATSCMH-SCCC-BLK-RES`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_BLK_RES``
|
``ATSCMH_SCCC_BLK_RES``
|
||||||
|
|
||||||
- Reserved. Shouldn't be used.
|
- Reserved. Shouldn't be used.
|
||||||
|
|
||||||
@ -1452,7 +1452,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-SCCC-CODE-HLF`:
|
- .. _`ATSCMH-SCCC-CODE-HLF`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_CODE_HLF``
|
``ATSCMH_SCCC_CODE_HLF``
|
||||||
|
|
||||||
- The outer code rate of a SCCC Block is 1/2 rate.
|
- The outer code rate of a SCCC Block is 1/2 rate.
|
||||||
|
|
||||||
@ -1460,7 +1460,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-SCCC-CODE-QTR`:
|
- .. _`ATSCMH-SCCC-CODE-QTR`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_CODE_QTR``
|
``ATSCMH_SCCC_CODE_QTR``
|
||||||
|
|
||||||
- The outer code rate of a SCCC Block is 1/4 rate.
|
- The outer code rate of a SCCC Block is 1/4 rate.
|
||||||
|
|
||||||
@ -1468,7 +1468,7 @@ Possible values are:
|
|||||||
|
|
||||||
- .. _`ATSCMH-SCCC-CODE-RES`:
|
- .. _`ATSCMH-SCCC-CODE-RES`:
|
||||||
|
|
||||||
``ATSCMH_SCCC_CODE_RES``
|
``ATSCMH_SCCC_CODE_RES``
|
||||||
|
|
||||||
- to be documented.
|
- to be documented.
|
||||||
|
|
||||||
@ -1564,7 +1564,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-AUTO`:
|
- .. _`GUARD-INTERVAL-AUTO`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_AUTO``
|
``GUARD_INTERVAL_AUTO``
|
||||||
|
|
||||||
- Autodetect the guard interval
|
- Autodetect the guard interval
|
||||||
|
|
||||||
@ -1572,7 +1572,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-1-128`:
|
- .. _`GUARD-INTERVAL-1-128`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_1_128``
|
``GUARD_INTERVAL_1_128``
|
||||||
|
|
||||||
- Guard interval 1/128
|
- Guard interval 1/128
|
||||||
|
|
||||||
@ -1580,7 +1580,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-1-32`:
|
- .. _`GUARD-INTERVAL-1-32`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_1_32``
|
``GUARD_INTERVAL_1_32``
|
||||||
|
|
||||||
- Guard interval 1/32
|
- Guard interval 1/32
|
||||||
|
|
||||||
@ -1588,7 +1588,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-1-16`:
|
- .. _`GUARD-INTERVAL-1-16`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_1_16``
|
``GUARD_INTERVAL_1_16``
|
||||||
|
|
||||||
- Guard interval 1/16
|
- Guard interval 1/16
|
||||||
|
|
||||||
@ -1596,7 +1596,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-1-8`:
|
- .. _`GUARD-INTERVAL-1-8`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_1_8``
|
``GUARD_INTERVAL_1_8``
|
||||||
|
|
||||||
- Guard interval 1/8
|
- Guard interval 1/8
|
||||||
|
|
||||||
@ -1604,7 +1604,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-1-4`:
|
- .. _`GUARD-INTERVAL-1-4`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_1_4``
|
``GUARD_INTERVAL_1_4``
|
||||||
|
|
||||||
- Guard interval 1/4
|
- Guard interval 1/4
|
||||||
|
|
||||||
@ -1612,7 +1612,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-19-128`:
|
- .. _`GUARD-INTERVAL-19-128`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_19_128``
|
``GUARD_INTERVAL_19_128``
|
||||||
|
|
||||||
- Guard interval 19/128
|
- Guard interval 19/128
|
||||||
|
|
||||||
@ -1620,7 +1620,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-19-256`:
|
- .. _`GUARD-INTERVAL-19-256`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_19_256``
|
``GUARD_INTERVAL_19_256``
|
||||||
|
|
||||||
- Guard interval 19/256
|
- Guard interval 19/256
|
||||||
|
|
||||||
@ -1628,7 +1628,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-PN420`:
|
- .. _`GUARD-INTERVAL-PN420`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_PN420``
|
``GUARD_INTERVAL_PN420``
|
||||||
|
|
||||||
- PN length 420 (1/4)
|
- PN length 420 (1/4)
|
||||||
|
|
||||||
@ -1636,7 +1636,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-PN595`:
|
- .. _`GUARD-INTERVAL-PN595`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_PN595``
|
``GUARD_INTERVAL_PN595``
|
||||||
|
|
||||||
- PN length 595 (1/6)
|
- PN length 595 (1/6)
|
||||||
|
|
||||||
@ -1644,7 +1644,7 @@ Modulation guard interval
|
|||||||
|
|
||||||
- .. _`GUARD-INTERVAL-PN945`:
|
- .. _`GUARD-INTERVAL-PN945`:
|
||||||
|
|
||||||
``GUARD_INTERVAL_PN945``
|
``GUARD_INTERVAL_PN945``
|
||||||
|
|
||||||
- PN length 945 (1/9)
|
- PN length 945 (1/9)
|
||||||
|
|
||||||
@ -1693,16 +1693,16 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-AUTO`:
|
- .. _`TRANSMISSION-MODE-AUTO`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_AUTO``
|
``TRANSMISSION_MODE_AUTO``
|
||||||
|
|
||||||
- Autodetect transmission mode. The hardware will try to find the
|
- Autodetect transmission mode. The hardware will try to find the
|
||||||
correct FFT-size (if capable) to fill in the missing parameters.
|
correct FFT-size (if capable) to fill in the missing parameters.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-1K`:
|
- .. _`TRANSMISSION-MODE-1K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_1K``
|
``TRANSMISSION_MODE_1K``
|
||||||
|
|
||||||
- Transmission mode 1K
|
- Transmission mode 1K
|
||||||
|
|
||||||
@ -1710,7 +1710,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-2K`:
|
- .. _`TRANSMISSION-MODE-2K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_2K``
|
``TRANSMISSION_MODE_2K``
|
||||||
|
|
||||||
- Transmission mode 2K
|
- Transmission mode 2K
|
||||||
|
|
||||||
@ -1718,7 +1718,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-8K`:
|
- .. _`TRANSMISSION-MODE-8K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_8K``
|
``TRANSMISSION_MODE_8K``
|
||||||
|
|
||||||
- Transmission mode 8K
|
- Transmission mode 8K
|
||||||
|
|
||||||
@ -1726,7 +1726,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-4K`:
|
- .. _`TRANSMISSION-MODE-4K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_4K``
|
``TRANSMISSION_MODE_4K``
|
||||||
|
|
||||||
- Transmission mode 4K
|
- Transmission mode 4K
|
||||||
|
|
||||||
@ -1734,7 +1734,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-16K`:
|
- .. _`TRANSMISSION-MODE-16K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_16K``
|
``TRANSMISSION_MODE_16K``
|
||||||
|
|
||||||
- Transmission mode 16K
|
- Transmission mode 16K
|
||||||
|
|
||||||
@ -1742,7 +1742,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-32K`:
|
- .. _`TRANSMISSION-MODE-32K`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_32K``
|
``TRANSMISSION_MODE_32K``
|
||||||
|
|
||||||
- Transmission mode 32K
|
- Transmission mode 32K
|
||||||
|
|
||||||
@ -1750,7 +1750,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-C1`:
|
- .. _`TRANSMISSION-MODE-C1`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_C1``
|
``TRANSMISSION_MODE_C1``
|
||||||
|
|
||||||
- Single Carrier (C=1) transmission mode (DTMB)
|
- Single Carrier (C=1) transmission mode (DTMB)
|
||||||
|
|
||||||
@ -1758,7 +1758,7 @@ enum fe_transmit_mode: Number of carriers per channel
|
|||||||
|
|
||||||
- .. _`TRANSMISSION-MODE-C3780`:
|
- .. _`TRANSMISSION-MODE-C3780`:
|
||||||
|
|
||||||
``TRANSMISSION_MODE_C3780``
|
``TRANSMISSION_MODE_C3780``
|
||||||
|
|
||||||
- Multi Carrier (C=3780) transmission mode (DTMB)
|
- Multi Carrier (C=3780) transmission mode (DTMB)
|
||||||
|
|
||||||
@ -1810,7 +1810,7 @@ Frontend hierarchy
|
|||||||
|
|
||||||
- .. _`HIERARCHY-NONE`:
|
- .. _`HIERARCHY-NONE`:
|
||||||
|
|
||||||
``HIERARCHY_NONE``
|
``HIERARCHY_NONE``
|
||||||
|
|
||||||
- No hierarchy
|
- No hierarchy
|
||||||
|
|
||||||
@ -1818,7 +1818,7 @@ Frontend hierarchy
|
|||||||
|
|
||||||
- .. _`HIERARCHY-AUTO`:
|
- .. _`HIERARCHY-AUTO`:
|
||||||
|
|
||||||
``HIERARCHY_AUTO``
|
``HIERARCHY_AUTO``
|
||||||
|
|
||||||
- Autodetect hierarchy (if supported)
|
- Autodetect hierarchy (if supported)
|
||||||
|
|
||||||
@ -1826,7 +1826,7 @@ Frontend hierarchy
|
|||||||
|
|
||||||
- .. _`HIERARCHY-1`:
|
- .. _`HIERARCHY-1`:
|
||||||
|
|
||||||
``HIERARCHY_1``
|
``HIERARCHY_1``
|
||||||
|
|
||||||
- Hierarchy 1
|
- Hierarchy 1
|
||||||
|
|
||||||
@ -1834,7 +1834,7 @@ Frontend hierarchy
|
|||||||
|
|
||||||
- .. _`HIERARCHY-2`:
|
- .. _`HIERARCHY-2`:
|
||||||
|
|
||||||
``HIERARCHY_2``
|
``HIERARCHY_2``
|
||||||
|
|
||||||
- Hierarchy 2
|
- Hierarchy 2
|
||||||
|
|
||||||
@ -1842,7 +1842,7 @@ Frontend hierarchy
|
|||||||
|
|
||||||
- .. _`HIERARCHY-4`:
|
- .. _`HIERARCHY-4`:
|
||||||
|
|
||||||
``HIERARCHY_4``
|
``HIERARCHY_4``
|
||||||
|
|
||||||
- Hierarchy 4
|
- Hierarchy 4
|
||||||
|
|
||||||
@ -1917,7 +1917,7 @@ Time interleaving to be used. Currently, used only on DTMB.
|
|||||||
|
|
||||||
- .. _`INTERLEAVING-NONE`:
|
- .. _`INTERLEAVING-NONE`:
|
||||||
|
|
||||||
``INTERLEAVING_NONE``
|
``INTERLEAVING_NONE``
|
||||||
|
|
||||||
- No interleaving.
|
- No interleaving.
|
||||||
|
|
||||||
@ -1925,7 +1925,7 @@ Time interleaving to be used. Currently, used only on DTMB.
|
|||||||
|
|
||||||
- .. _`INTERLEAVING-AUTO`:
|
- .. _`INTERLEAVING-AUTO`:
|
||||||
|
|
||||||
``INTERLEAVING_AUTO``
|
``INTERLEAVING_AUTO``
|
||||||
|
|
||||||
- Auto-detect interleaving.
|
- Auto-detect interleaving.
|
||||||
|
|
||||||
@ -1933,7 +1933,7 @@ Time interleaving to be used. Currently, used only on DTMB.
|
|||||||
|
|
||||||
- .. _`INTERLEAVING-240`:
|
- .. _`INTERLEAVING-240`:
|
||||||
|
|
||||||
``INTERLEAVING_240``
|
``INTERLEAVING_240``
|
||||||
|
|
||||||
- Interleaving of 240 symbols.
|
- Interleaving of 240 symbols.
|
||||||
|
|
||||||
@ -1941,7 +1941,7 @@ Time interleaving to be used. Currently, used only on DTMB.
|
|||||||
|
|
||||||
- .. _`INTERLEAVING-720`:
|
- .. _`INTERLEAVING-720`:
|
||||||
|
|
||||||
``INTERLEAVING_720``
|
``INTERLEAVING_720``
|
||||||
|
|
||||||
- Interleaving of 720 symbols.
|
- Interleaving of 720 symbols.
|
||||||
|
|
||||||
|
@ -158,37 +158,37 @@ partial path like:
|
|||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/audio.h>
|
#include <linux/dvb/audio.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/ca.h>
|
#include <linux/dvb/ca.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/dmx.h>
|
#include <linux/dvb/dmx.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/frontend.h>
|
#include <linux/dvb/frontend.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/net.h>
|
#include <linux/dvb/net.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/osd.h>
|
#include <linux/dvb/osd.h>
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
#include <linux/dvb/video.h>
|
#include <linux/dvb/video.h>
|
||||||
|
|
||||||
To enable applications to support different API version, an additional
|
To enable applications to support different API version, an additional
|
||||||
include file ``linux/dvb/version.h`` exists, which defines the constant
|
include file ``linux/dvb/version.h`` exists, which defines the constant
|
||||||
|
@ -116,8 +116,8 @@ struct dvb_net_if description
|
|||||||
- feedtype
|
- feedtype
|
||||||
|
|
||||||
- Encapsulation type of the feed. It can be:
|
- Encapsulation type of the feed. It can be:
|
||||||
``DVB_NET_FEEDTYPE_MPE`` for MPE encoding or
|
``DVB_NET_FEEDTYPE_MPE`` for MPE encoding or
|
||||||
``DVB_NET_FEEDTYPE_ULE`` for ULE encoding.
|
``DVB_NET_FEEDTYPE_ULE`` for ULE encoding.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,22 +58,22 @@ Arguments
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDONLY read-only access
|
- O_RDONLY read-only access
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_RDWR read/write access
|
- O_RDWR read/write access
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- O_NONBLOCK open in non-blocking mode
|
- O_NONBLOCK open in non-blocking mode
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- (blocking mode is the default)
|
- (blocking mode is the default)
|
||||||
|
|
||||||
|
|
||||||
@ -291,12 +291,12 @@ Arguments
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- TRUE: Blank screen when stop.
|
- TRUE: Blank screen when stop.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- FALSE: Show last decoded frame.
|
- FALSE: Show last decoded frame.
|
||||||
|
|
||||||
|
|
||||||
@ -565,7 +565,7 @@ Arguments
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- FALSE: Show last decoded frame.
|
- FALSE: Show last decoded frame.
|
||||||
|
|
||||||
|
|
||||||
@ -677,7 +677,7 @@ Arguments
|
|||||||
- __u64 \*pts
|
- __u64 \*pts
|
||||||
|
|
||||||
- Returns the number of frames displayed since the decoder was
|
- Returns the number of frames displayed since the decoder was
|
||||||
started.
|
started.
|
||||||
|
|
||||||
|
|
||||||
Return Value
|
Return Value
|
||||||
@ -735,11 +735,11 @@ Arguments
|
|||||||
- __u64 \*pts
|
- __u64 \*pts
|
||||||
|
|
||||||
- Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
|
- Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
|
||||||
ISO/IEC 13818-1.
|
ISO/IEC 13818-1.
|
||||||
|
|
||||||
The PTS should belong to the currently played frame if possible,
|
The PTS should belong to the currently played frame if possible,
|
||||||
but may also be a value close to it like the PTS of the last
|
but may also be a value close to it like the PTS of the last
|
||||||
decoded frame or the last PTS extracted by the PES parser.
|
decoded frame or the last PTS extracted by the PES parser.
|
||||||
|
|
||||||
|
|
||||||
Return Value
|
Return Value
|
||||||
@ -1754,7 +1754,7 @@ Arguments
|
|||||||
- video_spu_t \*spu
|
- video_spu_t \*spu
|
||||||
|
|
||||||
- SPU decoding (de)activation and subid setting according to section
|
- SPU decoding (de)activation and subid setting according to section
|
||||||
??.
|
??.
|
||||||
|
|
||||||
|
|
||||||
Return Value
|
Return Value
|
||||||
|
@ -18,9 +18,9 @@ The ``video_format_t`` data type defined by
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_FORMAT_4_3, /* Select 4:3 format */
|
VIDEO_FORMAT_4_3, /* Select 4:3 format */
|
||||||
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
|
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
|
||||||
VIDEO_FORMAT_221_1 /* 2.21:1 */
|
VIDEO_FORMAT_221_1 /* 2.21:1 */
|
||||||
} video_format_t;
|
} video_format_t;
|
||||||
|
|
||||||
is used in the VIDEO_SET_FORMAT function (??) to tell the driver which
|
is used in the VIDEO_SET_FORMAT function (??) to tell the driver which
|
||||||
@ -44,9 +44,9 @@ VIDEO_SET_DISPLAY_FORMAT call (??) which accepts
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_PAN_SCAN, /* use pan and scan format */
|
VIDEO_PAN_SCAN, /* use pan and scan format */
|
||||||
VIDEO_LETTER_BOX, /* use letterbox format */
|
VIDEO_LETTER_BOX, /* use letterbox format */
|
||||||
VIDEO_CENTER_CUT_OUT /* use center cut out format */
|
VIDEO_CENTER_CUT_OUT /* use center cut out format */
|
||||||
} video_displayformat_t;
|
} video_displayformat_t;
|
||||||
|
|
||||||
as argument.
|
as argument.
|
||||||
@ -65,10 +65,10 @@ from an internal (demuxer) or external (user write) source.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
|
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||||
VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
|
VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
|
||||||
comes from the user through the write
|
comes from the user through the write
|
||||||
system call */
|
system call */
|
||||||
} video_stream_source_t;
|
} video_stream_source_t;
|
||||||
|
|
||||||
VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the
|
VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the
|
||||||
@ -89,9 +89,9 @@ representing the state of video playback.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_STOPPED, /* Video is stopped */
|
VIDEO_STOPPED, /* Video is stopped */
|
||||||
VIDEO_PLAYING, /* Video is currently playing */
|
VIDEO_PLAYING, /* Video is currently playing */
|
||||||
VIDEO_FREEZED /* Video is freezed */
|
VIDEO_FREEZED /* Video is freezed */
|
||||||
} video_play_state_t;
|
} video_play_state_t;
|
||||||
|
|
||||||
|
|
||||||
@ -107,27 +107,27 @@ it can be extended safely in the future.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct video_command {
|
struct video_command {
|
||||||
__u32 cmd;
|
__u32 cmd;
|
||||||
__u32 flags;
|
__u32 flags;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
__u64 pts;
|
__u64 pts;
|
||||||
} stop;
|
} stop;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
/* 0 or 1000 specifies normal speed,
|
/* 0 or 1000 specifies normal speed,
|
||||||
1 specifies forward single stepping,
|
1 specifies forward single stepping,
|
||||||
-1 specifies backward single stepping,
|
-1 specifies backward single stepping,
|
||||||
>>1: playback at speed/1000 of the normal speed,
|
>>1: playback at speed/1000 of the normal speed,
|
||||||
<-1: reverse playback at (-speed/1000) of the normal speed. */
|
<-1: reverse playback at (-speed/1000) of the normal speed. */
|
||||||
__s32 speed;
|
__s32 speed;
|
||||||
__u32 format;
|
__u32 format;
|
||||||
} play;
|
} play;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
__u32 data[16];
|
__u32 data[16];
|
||||||
} raw;
|
} raw;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -140,9 +140,9 @@ video_size_t
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int w;
|
int w;
|
||||||
int h;
|
int h;
|
||||||
video_format_t aspect_ratio;
|
video_format_t aspect_ratio;
|
||||||
} video_size_t;
|
} video_size_t;
|
||||||
|
|
||||||
|
|
||||||
@ -158,17 +158,17 @@ VIDEO_GET_EVENT call.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct video_event {
|
struct video_event {
|
||||||
__s32 type;
|
__s32 type;
|
||||||
#define VIDEO_EVENT_SIZE_CHANGED 1
|
#define VIDEO_EVENT_SIZE_CHANGED 1
|
||||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||||
#define VIDEO_EVENT_VSYNC 4
|
#define VIDEO_EVENT_VSYNC 4
|
||||||
__kernel_time_t timestamp;
|
__kernel_time_t timestamp;
|
||||||
union {
|
union {
|
||||||
video_size_t size;
|
video_size_t size;
|
||||||
unsigned int frame_rate; /* in frames per 1000sec */
|
unsigned int frame_rate; /* in frames per 1000sec */
|
||||||
unsigned char vsync_field; /* unknown/odd/even/progressive */
|
unsigned char vsync_field; /* unknown/odd/even/progressive */
|
||||||
} u;
|
} u;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -184,11 +184,11 @@ about various states of the playback operation.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
struct video_status {
|
struct video_status {
|
||||||
int video_blank; /* blank video on freeze? */
|
int video_blank; /* blank video on freeze? */
|
||||||
video_play_state_t play_state; /* current state of playback */
|
video_play_state_t play_state; /* current state of playback */
|
||||||
video_stream_source_t stream_source; /* current source (demux/memory) */
|
video_stream_source_t stream_source; /* current source (demux/memory) */
|
||||||
video_format_t video_format; /* current aspect ratio of stream */
|
video_format_t video_format; /* current aspect ratio of stream */
|
||||||
video_displayformat_t display_format;/* selected cropping mode */
|
video_displayformat_t display_format;/* selected cropping mode */
|
||||||
};
|
};
|
||||||
|
|
||||||
If video_blank is set video will be blanked out if the channel is
|
If video_blank is set video will be blanked out if the channel is
|
||||||
@ -216,8 +216,8 @@ within the following structure.
|
|||||||
|
|
||||||
/* pointer to and size of a single iframe in memory */
|
/* pointer to and size of a single iframe in memory */
|
||||||
struct video_still_picture {
|
struct video_still_picture {
|
||||||
char *iFrame; /* pointer to a single iframe in memory */
|
char *iFrame; /* pointer to a single iframe in memory */
|
||||||
int32_t size;
|
int32_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -237,12 +237,12 @@ following bits set according to the hardwares capabilities.
|
|||||||
#define VIDEO_CAP_MPEG1 1
|
#define VIDEO_CAP_MPEG1 1
|
||||||
#define VIDEO_CAP_MPEG2 2
|
#define VIDEO_CAP_MPEG2 2
|
||||||
/* can you send a system and/or program stream to video device?
|
/* can you send a system and/or program stream to video device?
|
||||||
(you still have to open the video and the audio device but only
|
(you still have to open the video and the audio device but only
|
||||||
send the stream to the video device) */
|
send the stream to the video device) */
|
||||||
#define VIDEO_CAP_SYS 4
|
#define VIDEO_CAP_SYS 4
|
||||||
#define VIDEO_CAP_PROG 8
|
#define VIDEO_CAP_PROG 8
|
||||||
/* can the driver also handle SPU, NAVI and CSS encoded data?
|
/* can the driver also handle SPU, NAVI and CSS encoded data?
|
||||||
(CSS API is not present yet) */
|
(CSS API is not present yet) */
|
||||||
#define VIDEO_CAP_SPU 16
|
#define VIDEO_CAP_SPU 16
|
||||||
#define VIDEO_CAP_NAVI 32
|
#define VIDEO_CAP_NAVI 32
|
||||||
#define VIDEO_CAP_CSS 64
|
#define VIDEO_CAP_CSS 64
|
||||||
@ -260,14 +260,14 @@ output. The following system types can be set:
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
VIDEO_SYSTEM_PAL,
|
VIDEO_SYSTEM_PAL,
|
||||||
VIDEO_SYSTEM_NTSC,
|
VIDEO_SYSTEM_NTSC,
|
||||||
VIDEO_SYSTEM_PALN,
|
VIDEO_SYSTEM_PALN,
|
||||||
VIDEO_SYSTEM_PALNc,
|
VIDEO_SYSTEM_PALNc,
|
||||||
VIDEO_SYSTEM_PALM,
|
VIDEO_SYSTEM_PALM,
|
||||||
VIDEO_SYSTEM_NTSC60,
|
VIDEO_SYSTEM_NTSC60,
|
||||||
VIDEO_SYSTEM_PAL60,
|
VIDEO_SYSTEM_PAL60,
|
||||||
VIDEO_SYSTEM_PALM60
|
VIDEO_SYSTEM_PALM60
|
||||||
} video_system_t;
|
} video_system_t;
|
||||||
|
|
||||||
|
|
||||||
@ -284,21 +284,21 @@ information. The call expects the following format for that information:
|
|||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct video_highlight {
|
struct video_highlight {
|
||||||
boolean active; /* 1=show highlight, 0=hide highlight */
|
boolean active; /* 1=show highlight, 0=hide highlight */
|
||||||
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
|
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
|
||||||
/* 3- 0 Background pixel contrast */
|
/* 3- 0 Background pixel contrast */
|
||||||
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
||||||
/* 3- 0 Emphasis pixel-1 contrast */
|
/* 3- 0 Emphasis pixel-1 contrast */
|
||||||
uint8_t color1; /* 7- 4 Pattern pixel color */
|
uint8_t color1; /* 7- 4 Pattern pixel color */
|
||||||
/* 3- 0 Background pixel color */
|
/* 3- 0 Background pixel color */
|
||||||
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
|
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
|
||||||
/* 3- 0 Emphasis pixel-1 color */
|
/* 3- 0 Emphasis pixel-1 color */
|
||||||
uint32_t ypos; /* 23-22 auto action mode */
|
uint32_t ypos; /* 23-22 auto action mode */
|
||||||
/* 21-12 start y */
|
/* 21-12 start y */
|
||||||
/* 9- 0 end y */
|
/* 9- 0 end y */
|
||||||
uint32_t xpos; /* 23-22 button color number */
|
uint32_t xpos; /* 23-22 button color number */
|
||||||
/* 21-12 start x */
|
/* 21-12 start x */
|
||||||
/* 9- 0 end x */
|
/* 9- 0 end x */
|
||||||
} video_highlight_t;
|
} video_highlight_t;
|
||||||
|
|
||||||
|
|
||||||
@ -315,8 +315,8 @@ to the following format:
|
|||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct video_spu {
|
struct video_spu {
|
||||||
boolean active;
|
boolean active;
|
||||||
int stream_id;
|
int stream_id;
|
||||||
} video_spu_t;
|
} video_spu_t;
|
||||||
|
|
||||||
|
|
||||||
@ -333,8 +333,8 @@ VIDEO_SPU_PALETTE:
|
|||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct video_spu_palette {
|
struct video_spu_palette {
|
||||||
int length;
|
int length;
|
||||||
uint8_t *palette;
|
uint8_t *palette;
|
||||||
} video_spu_palette_t;
|
} video_spu_palette_t;
|
||||||
|
|
||||||
|
|
||||||
@ -351,8 +351,8 @@ passed to the ioctl VIDEO_GET_NAVI:
|
|||||||
|
|
||||||
typedef
|
typedef
|
||||||
struct video_navi_pack {
|
struct video_navi_pack {
|
||||||
int length; /* 0 ... 1024 */
|
int length; /* 0 ... 1024 */
|
||||||
uint8_t data[1024];
|
uint8_t data[1024];
|
||||||
} video_navi_pack_t;
|
} video_navi_pack_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,10 +19,10 @@ Generic Error Codes
|
|||||||
- ``EAGAIN`` (aka ``EWOULDBLOCK``)
|
- ``EAGAIN`` (aka ``EWOULDBLOCK``)
|
||||||
|
|
||||||
- The ioctl can't be handled because the device is in state where it
|
- The ioctl can't be handled because the device is in state where it
|
||||||
can't perform it. This could happen for example in case where
|
can't perform it. This could happen for example in case where
|
||||||
device is sleeping and ioctl is performed to query statistics. It
|
device is sleeping and ioctl is performed to query statistics. It
|
||||||
is also returned when the ioctl would need to wait for an event,
|
is also returned when the ioctl would need to wait for an event,
|
||||||
but the device was opened in non-blocking mode.
|
but the device was opened in non-blocking mode.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -35,26 +35,26 @@ Generic Error Codes
|
|||||||
- ``EBUSY``
|
- ``EBUSY``
|
||||||
|
|
||||||
- The ioctl can't be handled because the device is busy. This is
|
- The ioctl can't be handled because the device is busy. This is
|
||||||
typically return while device is streaming, and an ioctl tried to
|
typically return while device is streaming, and an ioctl tried to
|
||||||
change something that would affect the stream, or would require
|
change something that would affect the stream, or would require
|
||||||
the usage of a hardware resource that was already allocated. The
|
the usage of a hardware resource that was already allocated. The
|
||||||
ioctl must not be retried without performing another action to fix
|
ioctl must not be retried without performing another action to fix
|
||||||
the problem first (typically: stop the stream before retrying).
|
the problem first (typically: stop the stream before retrying).
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``EFAULT``
|
- ``EFAULT``
|
||||||
|
|
||||||
- There was a failure while copying data from/to userspace, probably
|
- There was a failure while copying data from/to userspace, probably
|
||||||
caused by an invalid pointer reference.
|
caused by an invalid pointer reference.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``EINVAL``
|
- ``EINVAL``
|
||||||
|
|
||||||
- One or more of the ioctl parameters are invalid or out of the
|
- One or more of the ioctl parameters are invalid or out of the
|
||||||
allowed range. This is a widely used error code. See the
|
allowed range. This is a widely used error code. See the
|
||||||
individual ioctl requests for specific causes.
|
individual ioctl requests for specific causes.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -73,23 +73,23 @@ Generic Error Codes
|
|||||||
- ``ENOTTY``
|
- ``ENOTTY``
|
||||||
|
|
||||||
- The ioctl is not supported by the driver, actually meaning that
|
- The ioctl is not supported by the driver, actually meaning that
|
||||||
the required functionality is not available, or the file
|
the required functionality is not available, or the file
|
||||||
descriptor is not for a media device.
|
descriptor is not for a media device.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
- ``ENOSPC``
|
- ``ENOSPC``
|
||||||
|
|
||||||
- On USB devices, the stream ioctl's can return this error, meaning
|
- On USB devices, the stream ioctl's can return this error, meaning
|
||||||
that this request would overcommit the usb bandwidth reserved for
|
that this request would overcommit the usb bandwidth reserved for
|
||||||
periodic transfers (up to 80% of the USB bandwidth).
|
periodic transfers (up to 80% of the USB bandwidth).
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
- ``EPERM``
|
- ``EPERM``
|
||||||
|
|
||||||
- Permission denied. Can be returned if the device needs write
|
- Permission denied. Can be returned if the device needs write
|
||||||
permission, or some special capabilities is needed (e. g. root)
|
permission, or some special capabilities is needed (e. g. root)
|
||||||
|
|
||||||
|
|
||||||
Note 1: ioctls may return other error codes. Since errors may have side
|
Note 1: ioctls may return other error codes. Since errors may have side
|
||||||
|
@ -53,12 +53,12 @@ ioctl never fails.
|
|||||||
- ``driver``\ [16]
|
- ``driver``\ [16]
|
||||||
|
|
||||||
- Name of the driver implementing the media API as a NUL-terminated
|
- Name of the driver implementing the media API as a NUL-terminated
|
||||||
ASCII string. The driver version is stored in the
|
ASCII string. The driver version is stored in the
|
||||||
``driver_version`` field.
|
``driver_version`` field.
|
||||||
|
|
||||||
Driver specific applications can use this information to verify
|
Driver specific applications can use this information to verify
|
||||||
the driver identity. It is also useful to work around known bugs,
|
the driver identity. It is also useful to work around known bugs,
|
||||||
or to identify drivers in error reports.
|
or to identify drivers in error reports.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -67,8 +67,8 @@ ioctl never fails.
|
|||||||
- ``model``\ [32]
|
- ``model``\ [32]
|
||||||
|
|
||||||
- Device model name as a NUL-terminated UTF-8 string. The device
|
- Device model name as a NUL-terminated UTF-8 string. The device
|
||||||
version is stored in the ``device_version`` field and is not be
|
version is stored in the ``device_version`` field and is not be
|
||||||
appended to the model name.
|
appended to the model name.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -85,8 +85,8 @@ ioctl never fails.
|
|||||||
- ``bus_info``\ [32]
|
- ``bus_info``\ [32]
|
||||||
|
|
||||||
- Location of the device in the system as a NUL-terminated ASCII
|
- Location of the device in the system as a NUL-terminated ASCII
|
||||||
string. This includes the bus type name (PCI, USB, ...) and a
|
string. This includes the bus type name (PCI, USB, ...) and a
|
||||||
bus-specific identifier.
|
bus-specific identifier.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -111,8 +111,8 @@ ioctl never fails.
|
|||||||
- ``driver_version``
|
- ``driver_version``
|
||||||
|
|
||||||
- Media device driver version, formatted with the
|
- Media device driver version, formatted with the
|
||||||
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
|
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
|
||||||
this identifies a particular driver.
|
this identifies a particular driver.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ ioctl never fails.
|
|||||||
- ``reserved``\ [31]
|
- ``reserved``\ [31]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
|
||||||
The ``serial`` and ``bus_info`` fields can be used to distinguish
|
The ``serial`` and ``bus_info`` fields can be used to distinguish
|
||||||
|
@ -60,11 +60,11 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity id, set by the application. When the id is or'ed with
|
- Entity id, set by the application. When the id is or'ed with
|
||||||
``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
|
``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
|
||||||
the first entity with a larger id.
|
the first entity with a larger id.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -72,8 +72,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``name``\ [32]
|
- ``name``\ [32]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity name as an UTF-8 NULL-terminated string.
|
- Entity name as an UTF-8 NULL-terminated string.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
@ -82,8 +82,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity type, see :ref:`media-entity-type` for details.
|
- Entity type, see :ref:`media-entity-type` for details.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
@ -92,8 +92,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``revision``
|
- ``revision``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity revision. Always zero (obsolete)
|
- Entity revision. Always zero (obsolete)
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
@ -102,8 +102,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity flags, see :ref:`media-entity-flag` for details.
|
- Entity flags, see :ref:`media-entity-flag` for details.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
@ -112,8 +112,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``group_id``
|
- ``group_id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity group ID. Always zero (obsolete)
|
- Entity group ID. Always zero (obsolete)
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
@ -122,8 +122,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``pads``
|
- ``pads``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Number of pads
|
- Number of pads
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
@ -132,10 +132,10 @@ id's until they get an error.
|
|||||||
|
|
||||||
- ``links``
|
- ``links``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Total number of outbound links. Inbound links are not counted in
|
- Total number of outbound links. Inbound links are not counted in
|
||||||
this field.
|
this field.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -143,18 +143,18 @@ id's until they get an error.
|
|||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct
|
- struct
|
||||||
|
|
||||||
- ``dev``
|
- ``dev``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Valid for (sub-)devices that create a single device node.
|
- Valid for (sub-)devices that create a single device node.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``major``
|
- ``major``
|
||||||
@ -163,8 +163,8 @@ id's until they get an error.
|
|||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``minor``
|
- ``minor``
|
||||||
@ -173,13 +173,13 @@ id's until they get an error.
|
|||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u8
|
- __u8
|
||||||
|
|
||||||
- ``raw``\ [184]
|
- ``raw``\ [184]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ returned during the enumeration process.
|
|||||||
- \*\ ``pads``
|
- \*\ ``pads``
|
||||||
|
|
||||||
- Pointer to a pads array allocated by the application. Ignored if
|
- Pointer to a pads array allocated by the application. Ignored if
|
||||||
NULL.
|
NULL.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ returned during the enumeration process.
|
|||||||
- \*\ ``links``
|
- \*\ ``links``
|
||||||
|
|
||||||
- Pointer to a links array allocated by the application. Ignored if
|
- Pointer to a links array allocated by the application. Ignored if
|
||||||
NULL.
|
NULL.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,11 +60,11 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``topology_version``
|
- ``topology_version``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Version of the media graph topology. When the graph is created,
|
- Version of the media graph topology. When the graph is created,
|
||||||
this field starts with zero. Every time a graph element is added
|
this field starts with zero. Every time a graph element is added
|
||||||
or removed, this field is incremented.
|
or removed, this field is incremented.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -72,8 +72,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``num_entities``
|
- ``num_entities``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Number of entities in the graph
|
- Number of entities in the graph
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
@ -82,12 +82,12 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``ptr_entities``
|
- ``ptr_entities``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- A pointer to a memory area where the entities array will be
|
- A pointer to a memory area where the entities array will be
|
||||||
stored, converted to a 64-bits integer. It can be zero. if zero,
|
stored, converted to a 64-bits integer. It can be zero. if zero,
|
||||||
the ioctl won't store the entities. It will just update
|
the ioctl won't store the entities. It will just update
|
||||||
``num_entities``
|
``num_entities``
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -95,8 +95,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``num_interfaces``
|
- ``num_interfaces``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Number of interfaces in the graph
|
- Number of interfaces in the graph
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
@ -105,12 +105,12 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``ptr_interfaces``
|
- ``ptr_interfaces``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- A pointer to a memory area where the interfaces array will be
|
- A pointer to a memory area where the interfaces array will be
|
||||||
stored, converted to a 64-bits integer. It can be zero. if zero,
|
stored, converted to a 64-bits integer. It can be zero. if zero,
|
||||||
the ioctl won't store the interfaces. It will just update
|
the ioctl won't store the interfaces. It will just update
|
||||||
``num_interfaces``
|
``num_interfaces``
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -118,8 +118,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``num_pads``
|
- ``num_pads``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Total number of pads in the graph
|
- Total number of pads in the graph
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
@ -128,11 +128,11 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``ptr_pads``
|
- ``ptr_pads``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- A pointer to a memory area where the pads array will be stored,
|
- A pointer to a memory area where the pads array will be stored,
|
||||||
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
||||||
won't store the pads. It will just update ``num_pads``
|
won't store the pads. It will just update ``num_pads``
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -140,8 +140,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``num_links``
|
- ``num_links``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Total number of data and interface links in the graph
|
- Total number of data and interface links in the graph
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
@ -150,11 +150,11 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``ptr_links``
|
- ``ptr_links``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- A pointer to a memory area where the links array will be stored,
|
- A pointer to a memory area where the links array will be stored,
|
||||||
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
||||||
won't store the links. It will just update ``num_links``
|
won't store the links. It will just update ``num_links``
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -171,8 +171,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Unique ID for the entity.
|
- Unique ID for the entity.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -181,8 +181,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``name``\ [64]
|
- ``name``\ [64]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity name as an UTF-8 NULL-terminated string.
|
- Entity name as an UTF-8 NULL-terminated string.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
@ -191,8 +191,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``function``
|
- ``function``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity main function, see :ref:`media-entity-type` for details.
|
- Entity main function, see :ref:`media-entity-type` for details.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
@ -202,7 +202,7 @@ desired arrays with the media graph elements.
|
|||||||
- ``reserved``\ [12]
|
- ``reserved``\ [12]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -219,8 +219,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Unique ID for the interface.
|
- Unique ID for the interface.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -229,8 +229,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``intf_type``
|
- ``intf_type``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Interface type, see :ref:`media-intf-type` for details.
|
- Interface type, see :ref:`media-intf-type` for details.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
@ -239,8 +239,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Interface flags. Currently unused.
|
- Interface flags. Currently unused.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
@ -249,10 +249,10 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``reserved``\ [9]
|
- ``reserved``\ [9]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -260,10 +260,10 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``devnode``
|
- ``devnode``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Used only for device node interfaces. See
|
- Used only for device node interfaces. See
|
||||||
:ref:`media-v2-intf-devnode` for details..
|
:ref:`media-v2-intf-devnode` for details..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -280,8 +280,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``major``
|
- ``major``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Device node major number.
|
- Device node major number.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -290,8 +290,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``minor``
|
- ``minor``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Device node minor number.
|
- Device node minor number.
|
||||||
|
|
||||||
|
|
||||||
@ -309,8 +309,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Unique ID for the pad.
|
- Unique ID for the pad.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -319,8 +319,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``entity_id``
|
- ``entity_id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Unique ID for the entity where this pad belongs.
|
- Unique ID for the entity where this pad belongs.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
@ -329,8 +329,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Pad flags, see :ref:`media-pad-flag` for more details.
|
- Pad flags, see :ref:`media-pad-flag` for more details.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
@ -339,10 +339,10 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``reserved``\ [9]
|
- ``reserved``\ [9]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -359,8 +359,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Unique ID for the pad.
|
- Unique ID for the pad.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -369,11 +369,11 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``source_id``
|
- ``source_id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- On pad to pad links: unique ID for the source pad.
|
- On pad to pad links: unique ID for the source pad.
|
||||||
|
|
||||||
On interface to entity links: unique ID for the interface.
|
On interface to entity links: unique ID for the interface.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -381,11 +381,11 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``sink_id``
|
- ``sink_id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- On pad to pad links: unique ID for the sink pad.
|
- On pad to pad links: unique ID for the sink pad.
|
||||||
|
|
||||||
On interface to entity links: unique ID for the entity.
|
On interface to entity links: unique ID for the entity.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -393,8 +393,8 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Link flags, see :ref:`media-link-flag` for more details.
|
- Link flags, see :ref:`media-link-flag` for more details.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
@ -403,10 +403,10 @@ desired arrays with the media graph elements.
|
|||||||
|
|
||||||
- ``reserved``\ [5]
|
- ``reserved``\ [5]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_ENT_F_UNKNOWN`` and ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
|
- ``MEDIA_ENT_F_UNKNOWN`` and ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
|
||||||
|
|
||||||
- Unknown entity. That generally indicates that a driver didn't
|
- Unknown entity. That generally indicates that a driver didn't
|
||||||
initialize properly the entity, with is a Kernel bug
|
initialize properly the entity, with is a Kernel bug
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_ENT_F_TS_DEMUX``
|
- ``MEDIA_ENT_F_TS_DEMUX``
|
||||||
|
|
||||||
- MPEG Transport stream demux entity. Could be implemented on
|
- MPEG Transport stream demux entity. Could be implemented on
|
||||||
hardware or in Kernelspace by the Linux DVB subsystem.
|
hardware or in Kernelspace by the Linux DVB subsystem.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_ENT_F_DTV_NET_DECAP``
|
- ``MEDIA_ENT_F_DTV_NET_DECAP``
|
||||||
|
|
||||||
- Digital TV network ULE/MLE desencapsulation entity. Could be
|
- Digital TV network ULE/MLE desencapsulation entity. Could be
|
||||||
implemented on hardware or in Kernelspace
|
implemented on hardware or in Kernelspace
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -111,42 +111,42 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_ENT_F_ATV_DECODER``
|
- ``MEDIA_ENT_F_ATV_DECODER``
|
||||||
|
|
||||||
- Analog video decoder, the basic function of the video decoder is
|
- Analog video decoder, the basic function of the video decoder is
|
||||||
to accept analogue video from a wide variety of sources such as
|
to accept analogue video from a wide variety of sources such as
|
||||||
broadcast, DVD players, cameras and video cassette recorders, in
|
broadcast, DVD players, cameras and video cassette recorders, in
|
||||||
either NTSC, PAL, SECAM or HD format, separating the stream into
|
either NTSC, PAL, SECAM or HD format, separating the stream into
|
||||||
its component parts, luminance and chrominance, and output it in
|
its component parts, luminance and chrominance, and output it in
|
||||||
some digital video standard, with appropriate timing signals.
|
some digital video standard, with appropriate timing signals.
|
||||||
|
|
||||||
- .. row 17
|
- .. row 17
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_TUNER``
|
- ``MEDIA_ENT_F_TUNER``
|
||||||
|
|
||||||
- Digital TV, analog TV, radio and/or software radio tuner, with
|
- Digital TV, analog TV, radio and/or software radio tuner, with
|
||||||
consists on a PLL tuning stage that converts radio frequency (RF)
|
consists on a PLL tuning stage that converts radio frequency (RF)
|
||||||
signal into an Intermediate Frequency (IF). Modern tuners have
|
signal into an Intermediate Frequency (IF). Modern tuners have
|
||||||
internally IF-PLL decoders for audio and video, but older models
|
internally IF-PLL decoders for audio and video, but older models
|
||||||
have those stages implemented on separate entities.
|
have those stages implemented on separate entities.
|
||||||
|
|
||||||
- .. row 18
|
- .. row 18
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IF_VID_DECODER``
|
- ``MEDIA_ENT_F_IF_VID_DECODER``
|
||||||
|
|
||||||
- IF-PLL video decoder. It receives the IF from a PLL and decodes
|
- IF-PLL video decoder. It receives the IF from a PLL and decodes
|
||||||
the analog TV video signal. This is commonly found on some very
|
the analog TV video signal. This is commonly found on some very
|
||||||
old analog tuners, like Philips MK3 designs. They all contain a
|
old analog tuners, like Philips MK3 designs. They all contain a
|
||||||
tda9887 (or some software compatible similar chip, like tda9885).
|
tda9887 (or some software compatible similar chip, like tda9885).
|
||||||
Those devices use a different I2C address than the tuner PLL.
|
Those devices use a different I2C address than the tuner PLL.
|
||||||
|
|
||||||
- .. row 19
|
- .. row 19
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IF_AUD_DECODER``
|
- ``MEDIA_ENT_F_IF_AUD_DECODER``
|
||||||
|
|
||||||
- IF-PLL sound decoder. It receives the IF from a PLL and decodes
|
- IF-PLL sound decoder. It receives the IF from a PLL and decodes
|
||||||
the analog TV audio signal. This is commonly found on some very
|
the analog TV audio signal. This is commonly found on some very
|
||||||
old analog hardware, like Micronas msp3400, Philips tda9840,
|
old analog hardware, like Micronas msp3400, Philips tda9840,
|
||||||
tda985x, etc. Those devices use a different I2C address than the
|
tda985x, etc. Those devices use a different I2C address than the
|
||||||
tuner PLL and should be controlled together with the IF-PLL video
|
tuner PLL and should be controlled together with the IF-PLL video
|
||||||
decoder.
|
decoder.
|
||||||
|
|
||||||
- .. row 20
|
- .. row 20
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_ENT_FL_DEFAULT``
|
- ``MEDIA_ENT_FL_DEFAULT``
|
||||||
|
|
||||||
- Default entity for its type. Used to discover the default audio,
|
- Default entity for its type. Used to discover the default audio,
|
||||||
VBI and video devices, the default camera sensor, ...
|
VBI and video devices, the default camera sensor, ...
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -355,25 +355,25 @@ Types and flags used to represent the media graph elements
|
|||||||
- ``MEDIA_PAD_FL_SINK``
|
- ``MEDIA_PAD_FL_SINK``
|
||||||
|
|
||||||
- Input pad, relative to the entity. Input pads sink data and are
|
- Input pad, relative to the entity. Input pads sink data and are
|
||||||
targets of links.
|
targets of links.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``MEDIA_PAD_FL_SOURCE``
|
- ``MEDIA_PAD_FL_SOURCE``
|
||||||
|
|
||||||
- Output pad, relative to the entity. Output pads source data and
|
- Output pad, relative to the entity. Output pads source data and
|
||||||
are origins of links.
|
are origins of links.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``MEDIA_PAD_FL_MUST_CONNECT``
|
- ``MEDIA_PAD_FL_MUST_CONNECT``
|
||||||
|
|
||||||
- If this flag is set and the pad is linked to any other pad, then
|
- If this flag is set and the pad is linked to any other pad, then
|
||||||
at least one of those links must be enabled for the entity to be
|
at least one of those links must be enabled for the entity to be
|
||||||
able to stream. There could be temporary reasons (e.g. device
|
able to stream. There could be temporary reasons (e.g. device
|
||||||
configuration dependent) for the pad to need enabled links even
|
configuration dependent) for the pad to need enabled links even
|
||||||
when this flag isn't set; the absence of the flag doesn't imply
|
when this flag isn't set; the absence of the flag doesn't imply
|
||||||
there is none.
|
there is none.
|
||||||
|
|
||||||
|
|
||||||
One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
|
One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
|
||||||
@ -392,31 +392,31 @@ must be set for every pad.
|
|||||||
- ``MEDIA_LNK_FL_ENABLED``
|
- ``MEDIA_LNK_FL_ENABLED``
|
||||||
|
|
||||||
- The link is enabled and can be used to transfer media data. When
|
- The link is enabled and can be used to transfer media data. When
|
||||||
two or more links target a sink pad, only one of them can be
|
two or more links target a sink pad, only one of them can be
|
||||||
enabled at a time.
|
enabled at a time.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_IMMUTABLE``
|
- ``MEDIA_LNK_FL_IMMUTABLE``
|
||||||
|
|
||||||
- The link enabled state can't be modified at runtime. An immutable
|
- The link enabled state can't be modified at runtime. An immutable
|
||||||
link is always enabled.
|
link is always enabled.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_DYNAMIC``
|
- ``MEDIA_LNK_FL_DYNAMIC``
|
||||||
|
|
||||||
- The link enabled state can be modified during streaming. This flag
|
- The link enabled state can be modified during streaming. This flag
|
||||||
is set by drivers and is read-only for applications.
|
is set by drivers and is read-only for applications.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_LINK_TYPE``
|
- ``MEDIA_LNK_FL_LINK_TYPE``
|
||||||
|
|
||||||
- This is a bitmask that defines the type of the link. Currently,
|
- This is a bitmask that defines the type of the link. Currently,
|
||||||
two types of links are supported:
|
two types of links are supported:
|
||||||
|
|
||||||
``MEDIA_LNK_FL_DATA_LINK`` if the link is between two pads
|
``MEDIA_LNK_FL_DATA_LINK`` if the link is between two pads
|
||||||
|
|
||||||
``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
|
``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
|
||||||
interface and an entity
|
interface and an entity
|
||||||
|
@ -288,7 +288,7 @@ the remote via /dev/input/event devices.
|
|||||||
- ``KEY_ANGLE``
|
- ``KEY_ANGLE``
|
||||||
|
|
||||||
- Switch video camera angle (on videos with more than one angle
|
- Switch video camera angle (on videos with more than one angle
|
||||||
stored)
|
stored)
|
||||||
|
|
||||||
- ANGLE / SWAP
|
- ANGLE / SWAP
|
||||||
|
|
||||||
@ -739,19 +739,19 @@ at some cheaper IR's. Due to that, it is recommended to:
|
|||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
- On simpler IR's, without separate channel keys, you need to map UP
|
- On simpler IR's, without separate channel keys, you need to map UP
|
||||||
as ``KEY_CHANNELUP``
|
as ``KEY_CHANNELUP``
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- On simpler IR's, without separate channel keys, you need to map
|
- On simpler IR's, without separate channel keys, you need to map
|
||||||
DOWN as ``KEY_CHANNELDOWN``
|
DOWN as ``KEY_CHANNELDOWN``
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- On simpler IR's, without separate volume keys, you need to map
|
- On simpler IR's, without separate volume keys, you need to map
|
||||||
LEFT as ``KEY_VOLUMEDOWN``
|
LEFT as ``KEY_VOLUMEDOWN``
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- On simpler IR's, without separate volume keys, you need to map
|
- On simpler IR's, without separate volume keys, you need to map
|
||||||
RIGHT as ``KEY_VOLUMEUP``
|
RIGHT as ``KEY_VOLUMEUP``
|
||||||
|
@ -32,145 +32,145 @@ file: media/v4l/keytable.c
|
|||||||
|
|
||||||
void prtcode (int *codes)
|
void prtcode (int *codes)
|
||||||
{
|
{
|
||||||
struct parse_key *p;
|
struct parse_key *p;
|
||||||
|
|
||||||
for (p=keynames;p->name!=NULL;p++) {
|
for (p=keynames;p->name!=NULL;p++) {
|
||||||
if (p->value == (unsigned)codes[1]) {
|
if (p->value == (unsigned)codes[1]) {
|
||||||
printf("scancode 0x%04x = %s (0x%02x)\\n", codes[0], p->name, codes[1]);
|
printf("scancode 0x%04x = %s (0x%02x)\\n", codes[0], p->name, codes[1]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isprint (codes[1]))
|
if (isprint (codes[1]))
|
||||||
printf("scancode %d = '%c' (0x%02x)\\n", codes[0], codes[1], codes[1]);
|
printf("scancode %d = '%c' (0x%02x)\\n", codes[0], codes[1], codes[1]);
|
||||||
else
|
else
|
||||||
printf("scancode %d = 0x%02x\\n", codes[0], codes[1]);
|
printf("scancode %d = 0x%02x\\n", codes[0], codes[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_code(char *string)
|
int parse_code(char *string)
|
||||||
{
|
{
|
||||||
struct parse_key *p;
|
struct parse_key *p;
|
||||||
|
|
||||||
for (p=keynames;p->name!=NULL;p++) {
|
for (p=keynames;p->name!=NULL;p++) {
|
||||||
if (!strcasecmp(p->name, string)) {
|
if (!strcasecmp(p->name, string)) {
|
||||||
return p->value;
|
return p->value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
int main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
int codes[2];
|
int codes[2];
|
||||||
|
|
||||||
if (argc<2 || argc>4) {
|
if (argc<2 || argc>4) {
|
||||||
printf ("usage: %s <device> to get table; or\\n"
|
printf ("usage: %s <device> to get table; or\\n"
|
||||||
" %s <device> <scancode> <keycode>\\n"
|
" %s <device> <scancode> <keycode>\\n"
|
||||||
" %s <device> <keycode_file>n",*argv,*argv,*argv);
|
" %s <device> <keycode_file>n",*argv,*argv,*argv);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((fd = open(argv[1], O_RDONLY)) < 0) {
|
if ((fd = open(argv[1], O_RDONLY)) < 0) {
|
||||||
perror("Couldn't open input device");
|
perror("Couldn't open input device");
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc==4) {
|
if (argc==4) {
|
||||||
int value;
|
int value;
|
||||||
|
|
||||||
value=parse_code(argv[3]);
|
value=parse_code(argv[3]);
|
||||||
|
|
||||||
if (value==-1) {
|
if (value==-1) {
|
||||||
value = strtol(argv[3], NULL, 0);
|
value = strtol(argv[3], NULL, 0);
|
||||||
if (errno)
|
if (errno)
|
||||||
perror("value");
|
perror("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
codes [0] = (unsigned) strtol(argv[2], NULL, 0);
|
codes [0] = (unsigned) strtol(argv[2], NULL, 0);
|
||||||
codes [1] = (unsigned) value;
|
codes [1] = (unsigned) value;
|
||||||
|
|
||||||
if(ioctl(fd, EVIOCSKEYCODE, codes))
|
if(ioctl(fd, EVIOCSKEYCODE, codes))
|
||||||
perror ("EVIOCSKEYCODE");
|
perror ("EVIOCSKEYCODE");
|
||||||
|
|
||||||
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
|
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
|
||||||
prtcode(codes);
|
prtcode(codes);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc==3) {
|
if (argc==3) {
|
||||||
FILE *fin;
|
FILE *fin;
|
||||||
int value;
|
int value;
|
||||||
char *scancode, *keycode, s[2048];
|
char *scancode, *keycode, s[2048];
|
||||||
|
|
||||||
fin=fopen(argv[2],"r");
|
fin=fopen(argv[2],"r");
|
||||||
if (fin==NULL) {
|
if (fin==NULL) {
|
||||||
perror ("opening keycode file");
|
perror ("opening keycode file");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clears old table */
|
/* Clears old table */
|
||||||
for (j = 0; j < 256; j++) {
|
for (j = 0; j < 256; j++) {
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
codes[0] = (j << 8) | i;
|
codes[0] = (j << 8) | i;
|
||||||
codes[1] = KEY_RESERVED;
|
codes[1] = KEY_RESERVED;
|
||||||
ioctl(fd, EVIOCSKEYCODE, codes);
|
ioctl(fd, EVIOCSKEYCODE, codes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (fgets(s,sizeof(s),fin)) {
|
while (fgets(s,sizeof(s),fin)) {
|
||||||
scancode=strtok(s,"\\n\\t =:");
|
scancode=strtok(s,"\\n\\t =:");
|
||||||
if (!scancode) {
|
if (!scancode) {
|
||||||
perror ("parsing input file scancode");
|
perror ("parsing input file scancode");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!strcasecmp(scancode, "scancode")) {
|
if (!strcasecmp(scancode, "scancode")) {
|
||||||
scancode = strtok(NULL,"\\n\\t =:");
|
scancode = strtok(NULL,"\\n\\t =:");
|
||||||
if (!scancode) {
|
if (!scancode) {
|
||||||
perror ("parsing input file scancode");
|
perror ("parsing input file scancode");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keycode=strtok(NULL,"\\n\\t =:(");
|
keycode=strtok(NULL,"\\n\\t =:(");
|
||||||
if (!keycode) {
|
if (!keycode) {
|
||||||
perror ("parsing input file keycode");
|
perror ("parsing input file keycode");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf ("parsing %s=%s:", scancode, keycode);
|
// printf ("parsing %s=%s:", scancode, keycode);
|
||||||
value=parse_code(keycode);
|
value=parse_code(keycode);
|
||||||
// printf ("\\tvalue=%d\\n",value);
|
// printf ("\\tvalue=%d\\n",value);
|
||||||
|
|
||||||
if (value==-1) {
|
if (value==-1) {
|
||||||
value = strtol(keycode, NULL, 0);
|
value = strtol(keycode, NULL, 0);
|
||||||
if (errno)
|
if (errno)
|
||||||
perror("value");
|
perror("value");
|
||||||
}
|
}
|
||||||
|
|
||||||
codes [0] = (unsigned) strtol(scancode, NULL, 0);
|
codes [0] = (unsigned) strtol(scancode, NULL, 0);
|
||||||
codes [1] = (unsigned) value;
|
codes [1] = (unsigned) value;
|
||||||
|
|
||||||
// printf("\\t%04x=%04x\\n",codes[0], codes[1]);
|
// printf("\\t%04x=%04x\\n",codes[0], codes[1]);
|
||||||
if(ioctl(fd, EVIOCSKEYCODE, codes)) {
|
if(ioctl(fd, EVIOCSKEYCODE, codes)) {
|
||||||
fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
|
fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
|
||||||
perror ("EVIOCSKEYCODE");
|
perror ("EVIOCSKEYCODE");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
|
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
|
||||||
prtcode(codes);
|
prtcode(codes);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get scancode table */
|
/* Get scancode table */
|
||||||
for (j = 0; j < 256; j++) {
|
for (j = 0; j < 256; j++) {
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
codes[0] = (j << 8) | i;
|
codes[0] = (j << 8) | i;
|
||||||
if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
|
if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
|
||||||
prtcode(codes);
|
prtcode(codes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -62,8 +62,8 @@ the :ref:`VIDIOC_QUERYCAP` ioctl.
|
|||||||
memset(&audio, 0, sizeof(audio));
|
memset(&audio, 0, sizeof(audio));
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_AUDIO, &audio)) {
|
if (-1 == ioctl(fd, VIDIOC_G_AUDIO, &audio)) {
|
||||||
perror("VIDIOC_G_AUDIO");
|
perror("VIDIOC_G_AUDIO");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Current input: %s\\n", audio.name);
|
printf("Current input: %s\\n", audio.name);
|
||||||
@ -79,8 +79,8 @@ the :ref:`VIDIOC_QUERYCAP` ioctl.
|
|||||||
audio.index = 0;
|
audio.index = 0;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_S_AUDIO, &audio)) {
|
if (-1 == ioctl(fd, VIDIOC_S_AUDIO, &audio)) {
|
||||||
perror("VIDIOC_S_AUDIO");
|
perror("VIDIOC_S_AUDIO");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
.. [1]
|
.. [1]
|
||||||
|
@ -48,14 +48,14 @@ buffer.
|
|||||||
|
|
||||||
- ``index``
|
- ``index``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Number of the buffer, set by the application except when calling
|
- Number of the buffer, set by the application except when calling
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the
|
||||||
driver. This field can range from zero to the number of buffers
|
driver. This field can range from zero to the number of buffers
|
||||||
allocated with the :ref:`VIDIOC_REQBUFS` ioctl
|
allocated with the :ref:`VIDIOC_REQBUFS` ioctl
|
||||||
(struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>`
|
(struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>`
|
||||||
``count``), plus any buffers allocated with
|
``count``), plus any buffers allocated with
|
||||||
:ref:`VIDIOC_CREATE_BUFS` minus one.
|
:ref:`VIDIOC_CREATE_BUFS` minus one.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -63,11 +63,11 @@ buffer.
|
|||||||
|
|
||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Type of the buffer, same as struct
|
- Type of the buffer, same as struct
|
||||||
:ref:`v4l2_format <v4l2-format>` ``type`` or struct
|
:ref:`v4l2_format <v4l2-format>` ``type`` or struct
|
||||||
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set
|
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set
|
||||||
by the application. See :ref:`v4l2-buf-type`
|
by the application. See :ref:`v4l2-buf-type`
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -75,16 +75,16 @@ buffer.
|
|||||||
|
|
||||||
- ``bytesused``
|
- ``bytesused``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The number of bytes occupied by the data in the buffer. It depends
|
- The number of bytes occupied by the data in the buffer. It depends
|
||||||
on the negotiated data format and may change with each buffer for
|
on the negotiated data format and may change with each buffer for
|
||||||
compressed variable size data like JPEG images. Drivers must set
|
compressed variable size data like JPEG images. Drivers must set
|
||||||
this field when ``type`` refers to a capture stream, applications
|
this field when ``type`` refers to a capture stream, applications
|
||||||
when it refers to an output stream. If the application sets this
|
when it refers to an output stream. If the application sets this
|
||||||
to 0 for an output stream, then ``bytesused`` will be set to the
|
to 0 for an output stream, then ``bytesused`` will be set to the
|
||||||
size of the buffer (see the ``length`` field of this struct) by
|
size of the buffer (see the ``length`` field of this struct) by
|
||||||
the driver. For multiplanar formats this field is ignored and the
|
the driver. For multiplanar formats this field is ignored and the
|
||||||
``planes`` pointer is used instead.
|
``planes`` pointer is used instead.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ buffer.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Flags set by the application or driver, see :ref:`buffer-flags`.
|
- Flags set by the application or driver, see :ref:`buffer-flags`.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
@ -101,11 +101,11 @@ buffer.
|
|||||||
|
|
||||||
- ``field``
|
- ``field``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Indicates the field order of the image in the buffer, see
|
- Indicates the field order of the image in the buffer, see
|
||||||
:ref:`v4l2-field`. This field is not used when the buffer
|
:ref:`v4l2-field`. This field is not used when the buffer
|
||||||
contains VBI data. Drivers must set it when ``type`` refers to a
|
contains VBI data. Drivers must set it when ``type`` refers to a
|
||||||
capture stream, applications when it refers to an output stream.
|
capture stream, applications when it refers to an output stream.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -113,17 +113,17 @@ buffer.
|
|||||||
|
|
||||||
- ``timestamp``
|
- ``timestamp``
|
||||||
|
|
||||||
-
|
-
|
||||||
- For capture streams this is time when the first data byte was
|
- For capture streams this is time when the first data byte was
|
||||||
captured, as returned by the :c:func:`clock_gettime()` function
|
captured, as returned by the :c:func:`clock_gettime()` function
|
||||||
for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in
|
for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in
|
||||||
:ref:`buffer-flags`. For output streams the driver stores the
|
:ref:`buffer-flags`. For output streams the driver stores the
|
||||||
time at which the last data byte was actually sent out in the
|
time at which the last data byte was actually sent out in the
|
||||||
``timestamp`` field. This permits applications to monitor the
|
``timestamp`` field. This permits applications to monitor the
|
||||||
drift between the video and system clock. For output streams that
|
drift between the video and system clock. For output streams that
|
||||||
use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill
|
use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill
|
||||||
in the timestamp which will be copied by the driver to the capture
|
in the timestamp which will be copied by the driver to the capture
|
||||||
stream.
|
stream.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -131,15 +131,15 @@ buffer.
|
|||||||
|
|
||||||
- ``timecode``
|
- ``timecode``
|
||||||
|
|
||||||
-
|
-
|
||||||
- When ``type`` is ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` and the
|
- When ``type`` is ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` and the
|
||||||
``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this
|
``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this
|
||||||
structure contains a frame timecode. In
|
structure contains a frame timecode. In
|
||||||
:ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
|
:ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
|
||||||
bottom field contain the same timecode. Timecodes are intended to
|
bottom field contain the same timecode. Timecodes are intended to
|
||||||
help video editing and are typically recorded on video tapes, but
|
help video editing and are typically recorded on video tapes, but
|
||||||
also embedded in compressed formats like MPEG. This field is
|
also embedded in compressed formats like MPEG. This field is
|
||||||
independent of the ``timestamp`` and ``sequence`` fields.
|
independent of the ``timestamp`` and ``sequence`` fields.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -147,27 +147,27 @@ buffer.
|
|||||||
|
|
||||||
- ``sequence``
|
- ``sequence``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Set by the driver, counting the frames (not fields!) in sequence.
|
- Set by the driver, counting the frames (not fields!) in sequence.
|
||||||
This field is set for both input and output devices.
|
This field is set for both input and output devices.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
- :cspan:`3`
|
- :cspan:`3`
|
||||||
|
|
||||||
In :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
|
In :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
|
||||||
bottom field have the same sequence number. The count starts at
|
bottom field have the same sequence number. The count starts at
|
||||||
zero and includes dropped or repeated frames. A dropped frame was
|
zero and includes dropped or repeated frames. A dropped frame was
|
||||||
received by an input device but could not be stored due to lack of
|
received by an input device but could not be stored due to lack of
|
||||||
free buffer space. A repeated frame was displayed again by an
|
free buffer space. A repeated frame was displayed again by an
|
||||||
output device because the application did not pass new data in
|
output device because the application did not pass new data in
|
||||||
time.
|
time.
|
||||||
|
|
||||||
Note this may count the frames received e.g. over USB, without
|
Note this may count the frames received e.g. over USB, without
|
||||||
taking into account the frames dropped by the remote hardware due
|
taking into account the frames dropped by the remote hardware due
|
||||||
to limited compression throughput or bus bandwidth. These devices
|
to limited compression throughput or bus bandwidth. These devices
|
||||||
identify by not enumerating any video standards, see
|
identify by not enumerating any video standards, see
|
||||||
:ref:`standard`.
|
:ref:`standard`.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -175,9 +175,9 @@ buffer.
|
|||||||
|
|
||||||
- ``memory``
|
- ``memory``
|
||||||
|
|
||||||
-
|
-
|
||||||
- This field must be set by applications and/or drivers in
|
- This field must be set by applications and/or drivers in
|
||||||
accordance with the selected I/O method. See :ref:`v4l2-memory`
|
accordance with the selected I/O method. See :ref:`v4l2-memory`
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -187,52 +187,52 @@ buffer.
|
|||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``offset``
|
- ``offset``
|
||||||
|
|
||||||
- For the single-planar API and when ``memory`` is
|
- For the single-planar API and when ``memory`` is
|
||||||
``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the
|
``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the
|
||||||
start of the device memory. The value is returned by the driver
|
start of the device memory. The value is returned by the driver
|
||||||
and apart of serving as parameter to the
|
and apart of serving as parameter to the
|
||||||
:ref:`mmap() <func-mmap>` function not useful for applications.
|
:ref:`mmap() <func-mmap>` function not useful for applications.
|
||||||
See :ref:`mmap` for details
|
See :ref:`mmap` for details
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
-
|
-
|
||||||
- unsigned long
|
- unsigned long
|
||||||
|
|
||||||
- ``userptr``
|
- ``userptr``
|
||||||
|
|
||||||
- For the single-planar API and when ``memory`` is
|
- For the single-planar API and when ``memory`` is
|
||||||
``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to
|
``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to
|
||||||
unsigned long type) in virtual memory, set by the application. See
|
unsigned long type) in virtual memory, set by the application. See
|
||||||
:ref:`userp` for details.
|
:ref:`userp` for details.
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct v4l2_plane
|
- struct v4l2_plane
|
||||||
|
|
||||||
- ``*planes``
|
- ``*planes``
|
||||||
|
|
||||||
- When using the multi-planar API, contains a userspace pointer to
|
- When using the multi-planar API, contains a userspace pointer to
|
||||||
an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of
|
an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of
|
||||||
the array should be put in the ``length`` field of this
|
the array should be put in the ``length`` field of this
|
||||||
:ref:`struct v4l2_buffer <v4l2-buffer>` structure.
|
:ref:`struct v4l2_buffer <v4l2-buffer>` structure.
|
||||||
|
|
||||||
- .. row 15
|
- .. row 15
|
||||||
|
|
||||||
-
|
-
|
||||||
- int
|
- int
|
||||||
|
|
||||||
- ``fd``
|
- ``fd``
|
||||||
|
|
||||||
- For the single-plane API and when ``memory`` is
|
- For the single-plane API and when ``memory`` is
|
||||||
``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with
|
``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with
|
||||||
a DMABUF buffer.
|
a DMABUF buffer.
|
||||||
|
|
||||||
- .. row 16
|
- .. row 16
|
||||||
|
|
||||||
@ -240,14 +240,14 @@ buffer.
|
|||||||
|
|
||||||
- ``length``
|
- ``length``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Size of the buffer (not the payload) in bytes for the
|
- Size of the buffer (not the payload) in bytes for the
|
||||||
single-planar API. This is set by the driver based on the calls to
|
single-planar API. This is set by the driver based on the calls to
|
||||||
:ref:`VIDIOC_REQBUFS` and/or
|
:ref:`VIDIOC_REQBUFS` and/or
|
||||||
:ref:`VIDIOC_CREATE_BUFS`. For the
|
:ref:`VIDIOC_CREATE_BUFS`. For the
|
||||||
multi-planar API the application sets this to the number of
|
multi-planar API the application sets this to the number of
|
||||||
elements in the ``planes`` array. The driver will fill in the
|
elements in the ``planes`` array. The driver will fill in the
|
||||||
actual number of valid elements in that array.
|
actual number of valid elements in that array.
|
||||||
|
|
||||||
- .. row 17
|
- .. row 17
|
||||||
|
|
||||||
@ -255,9 +255,9 @@ buffer.
|
|||||||
|
|
||||||
- ``reserved2``
|
- ``reserved2``
|
||||||
|
|
||||||
-
|
-
|
||||||
- A place holder for future extensions. Drivers and applications
|
- A place holder for future extensions. Drivers and applications
|
||||||
must set this to 0.
|
must set this to 0.
|
||||||
|
|
||||||
- .. row 18
|
- .. row 18
|
||||||
|
|
||||||
@ -265,9 +265,9 @@ buffer.
|
|||||||
|
|
||||||
- ``reserved``
|
- ``reserved``
|
||||||
|
|
||||||
-
|
-
|
||||||
- A place holder for future extensions. Drivers and applications
|
- A place holder for future extensions. Drivers and applications
|
||||||
must set this to 0.
|
must set this to 0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -285,14 +285,14 @@ buffer.
|
|||||||
|
|
||||||
- ``bytesused``
|
- ``bytesused``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The number of bytes occupied by data in the plane (its payload).
|
- The number of bytes occupied by data in the plane (its payload).
|
||||||
Drivers must set this field when ``type`` refers to a capture
|
Drivers must set this field when ``type`` refers to a capture
|
||||||
stream, applications when it refers to an output stream. If the
|
stream, applications when it refers to an output stream. If the
|
||||||
application sets this to 0 for an output stream, then
|
application sets this to 0 for an output stream, then
|
||||||
``bytesused`` will be set to the size of the plane (see the
|
``bytesused`` will be set to the size of the plane (see the
|
||||||
``length`` field of this struct) by the driver. Note that the
|
``length`` field of this struct) by the driver. Note that the
|
||||||
actual image data starts at ``data_offset`` which may not be 0.
|
actual image data starts at ``data_offset`` which may not be 0.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -300,11 +300,11 @@ buffer.
|
|||||||
|
|
||||||
- ``length``
|
- ``length``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Size in bytes of the plane (not its payload). This is set by the
|
- Size in bytes of the plane (not its payload). This is set by the
|
||||||
driver based on the calls to
|
driver based on the calls to
|
||||||
:ref:`VIDIOC_REQBUFS` and/or
|
:ref:`VIDIOC_REQBUFS` and/or
|
||||||
:ref:`VIDIOC_CREATE_BUFS`.
|
:ref:`VIDIOC_CREATE_BUFS`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -312,45 +312,45 @@ buffer.
|
|||||||
|
|
||||||
- ``m``
|
- ``m``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``mem_offset``
|
- ``mem_offset``
|
||||||
|
|
||||||
- When the memory type in the containing struct
|
- When the memory type in the containing struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this
|
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this
|
||||||
is the value that should be passed to :ref:`mmap() <func-mmap>`,
|
is the value that should be passed to :ref:`mmap() <func-mmap>`,
|
||||||
similar to the ``offset`` field in struct
|
similar to the ``offset`` field in struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>`.
|
:ref:`v4l2_buffer <v4l2-buffer>`.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- unsigned long
|
- unsigned long
|
||||||
|
|
||||||
- ``userptr``
|
- ``userptr``
|
||||||
|
|
||||||
- When the memory type in the containing struct
|
- When the memory type in the containing struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``,
|
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``,
|
||||||
this is a userspace pointer to the memory allocated for this plane
|
this is a userspace pointer to the memory allocated for this plane
|
||||||
by an application.
|
by an application.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- int
|
- int
|
||||||
|
|
||||||
- ``fd``
|
- ``fd``
|
||||||
|
|
||||||
- When the memory type in the containing struct
|
- When the memory type in the containing struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``,
|
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``,
|
||||||
this is a file descriptor associated with a DMABUF buffer, similar
|
this is a file descriptor associated with a DMABUF buffer, similar
|
||||||
to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`.
|
to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -358,13 +358,13 @@ buffer.
|
|||||||
|
|
||||||
- ``data_offset``
|
- ``data_offset``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Offset in bytes to video data in the plane. Drivers must set this
|
- Offset in bytes to video data in the plane. Drivers must set this
|
||||||
field when ``type`` refers to a capture stream, applications when
|
field when ``type`` refers to a capture stream, applications when
|
||||||
it refers to an output stream. Note that data_offset is included
|
it refers to an output stream. Note that data_offset is included
|
||||||
in ``bytesused``. So the size of the image in the plane is
|
in ``bytesused``. So the size of the image in the plane is
|
||||||
``bytesused``-``data_offset`` at offset ``data_offset`` from the
|
``bytesused``-``data_offset`` at offset ``data_offset`` from the
|
||||||
start of the plane.
|
start of the plane.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -372,9 +372,9 @@ buffer.
|
|||||||
|
|
||||||
- ``reserved[11]``
|
- ``reserved[11]``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Reserved for future use. Should be zeroed by drivers and
|
- Reserved for future use. Should be zeroed by drivers and
|
||||||
applications.
|
applications.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -393,7 +393,7 @@ buffer.
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Buffer of a single-planar video capture stream, see
|
- Buffer of a single-planar video capture stream, see
|
||||||
:ref:`capture`.
|
:ref:`capture`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ buffer.
|
|||||||
- 9
|
- 9
|
||||||
|
|
||||||
- Buffer of a multi-planar video capture stream, see
|
- Buffer of a multi-planar video capture stream, see
|
||||||
:ref:`capture`.
|
:ref:`capture`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ buffer.
|
|||||||
- 2
|
- 2
|
||||||
|
|
||||||
- Buffer of a single-planar video output stream, see
|
- Buffer of a single-planar video output stream, see
|
||||||
:ref:`output`.
|
:ref:`output`.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -476,7 +476,7 @@ buffer.
|
|||||||
- 11
|
- 11
|
||||||
|
|
||||||
- Buffer for Software Defined Radio (SDR) capture stream, see
|
- Buffer for Software Defined Radio (SDR) capture stream, see
|
||||||
:ref:`sdr`.
|
:ref:`sdr`.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
@ -485,7 +485,7 @@ buffer.
|
|||||||
- 12
|
- 12
|
||||||
|
|
||||||
- Buffer for Software Defined Radio (SDR) output stream, see
|
- Buffer for Software Defined Radio (SDR) output stream, see
|
||||||
:ref:`sdr`.
|
:ref:`sdr`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -504,12 +504,12 @@ buffer.
|
|||||||
- 0x00000001
|
- 0x00000001
|
||||||
|
|
||||||
- The buffer resides in device memory and has been mapped into the
|
- The buffer resides in device memory and has been mapped into the
|
||||||
application's address space, see :ref:`mmap` for details.
|
application's address space, see :ref:`mmap` for details.
|
||||||
Drivers set or clear this flag when the
|
Drivers set or clear this flag when the
|
||||||
:ref:`VIDIOC_QUERYBUF`,
|
:ref:`VIDIOC_QUERYBUF`,
|
||||||
:ref:`VIDIOC_QBUF` or
|
:ref:`VIDIOC_QBUF` or
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the
|
||||||
driver.
|
driver.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -518,13 +518,13 @@ buffer.
|
|||||||
- 0x00000002
|
- 0x00000002
|
||||||
|
|
||||||
- Internally drivers maintain two buffer queues, an incoming and
|
- Internally drivers maintain two buffer queues, an incoming and
|
||||||
outgoing queue. When this flag is set, the buffer is currently on
|
outgoing queue. When this flag is set, the buffer is currently on
|
||||||
the incoming queue. It automatically moves to the outgoing queue
|
the incoming queue. It automatically moves to the outgoing queue
|
||||||
after the buffer has been filled (capture devices) or displayed
|
after the buffer has been filled (capture devices) or displayed
|
||||||
(output devices). Drivers set or clear this flag when the
|
(output devices). Drivers set or clear this flag when the
|
||||||
``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling
|
``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling
|
||||||
the ``VIDIOC_QBUF``\ ioctl it is always set and after
|
the ``VIDIOC_QBUF``\ ioctl it is always set and after
|
||||||
``VIDIOC_DQBUF`` always cleared.
|
``VIDIOC_DQBUF`` always cleared.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -533,14 +533,14 @@ buffer.
|
|||||||
- 0x00000004
|
- 0x00000004
|
||||||
|
|
||||||
- When this flag is set, the buffer is currently on the outgoing
|
- When this flag is set, the buffer is currently on the outgoing
|
||||||
queue, ready to be dequeued from the driver. Drivers set or clear
|
queue, ready to be dequeued from the driver. Drivers set or clear
|
||||||
this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After
|
this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After
|
||||||
calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always
|
calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always
|
||||||
cleared. Of course a buffer cannot be on both queues at the same
|
cleared. Of course a buffer cannot be on both queues at the same
|
||||||
time, the ``V4L2_BUF_FLAG_QUEUED`` and ``V4L2_BUF_FLAG_DONE`` flag
|
time, the ``V4L2_BUF_FLAG_QUEUED`` and ``V4L2_BUF_FLAG_DONE`` flag
|
||||||
are mutually exclusive. They can be both cleared however, then the
|
are mutually exclusive. They can be both cleared however, then the
|
||||||
buffer is in "dequeued" state, in the application domain so to
|
buffer is in "dequeued" state, in the application domain so to
|
||||||
say.
|
say.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -549,10 +549,10 @@ buffer.
|
|||||||
- 0x00000040
|
- 0x00000040
|
||||||
|
|
||||||
- When this flag is set, the buffer has been dequeued successfully,
|
- When this flag is set, the buffer has been dequeued successfully,
|
||||||
although the data might have been corrupted. This is recoverable,
|
although the data might have been corrupted. This is recoverable,
|
||||||
streaming may continue as normal and the buffer may be reused
|
streaming may continue as normal and the buffer may be reused
|
||||||
normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is
|
normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is
|
||||||
called.
|
called.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -561,11 +561,11 @@ buffer.
|
|||||||
- 0x00000008
|
- 0x00000008
|
||||||
|
|
||||||
- Drivers set or clear this flag when calling the ``VIDIOC_DQBUF``
|
- Drivers set or clear this flag when calling the ``VIDIOC_DQBUF``
|
||||||
ioctl. It may be set by video capture devices when the buffer
|
ioctl. It may be set by video capture devices when the buffer
|
||||||
contains a compressed image which is a key frame (or field), i. e.
|
contains a compressed image which is a key frame (or field), i. e.
|
||||||
can be decompressed on its own. Also known as an I-frame.
|
can be decompressed on its own. Also known as an I-frame.
|
||||||
Applications can set this bit when ``type`` refers to an output
|
Applications can set this bit when ``type`` refers to an output
|
||||||
stream.
|
stream.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -574,9 +574,9 @@ buffer.
|
|||||||
- 0x00000010
|
- 0x00000010
|
||||||
|
|
||||||
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags predicted frames
|
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags predicted frames
|
||||||
or fields which contain only differences to a previous key frame.
|
or fields which contain only differences to a previous key frame.
|
||||||
Applications can set this bit when ``type`` refers to an output
|
Applications can set this bit when ``type`` refers to an output
|
||||||
stream.
|
stream.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -585,10 +585,10 @@ buffer.
|
|||||||
- 0x00000020
|
- 0x00000020
|
||||||
|
|
||||||
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags a bi-directional
|
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags a bi-directional
|
||||||
predicted frame or field which contains only the differences
|
predicted frame or field which contains only the differences
|
||||||
between the current frame and both the preceding and following key
|
between the current frame and both the preceding and following key
|
||||||
frames to specify its content. Applications can set this bit when
|
frames to specify its content. Applications can set this bit when
|
||||||
``type`` refers to an output stream.
|
``type`` refers to an output stream.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -597,9 +597,9 @@ buffer.
|
|||||||
- 0x00000100
|
- 0x00000100
|
||||||
|
|
||||||
- The ``timecode`` field is valid. Drivers set or clear this flag
|
- The ``timecode`` field is valid. Drivers set or clear this flag
|
||||||
when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set
|
when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set
|
||||||
this bit and the corresponding ``timecode`` structure when
|
this bit and the corresponding ``timecode`` structure when
|
||||||
``type`` refers to an output stream.
|
``type`` refers to an output stream.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -608,11 +608,11 @@ buffer.
|
|||||||
- 0x00000400
|
- 0x00000400
|
||||||
|
|
||||||
- The buffer has been prepared for I/O and can be queued by the
|
- The buffer has been prepared for I/O and can be queued by the
|
||||||
application. Drivers set or clear this flag when the
|
application. Drivers set or clear this flag when the
|
||||||
:ref:`VIDIOC_QUERYBUF`,
|
:ref:`VIDIOC_QUERYBUF`,
|
||||||
:ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`,
|
:ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`,
|
||||||
:ref:`VIDIOC_QBUF` or
|
:ref:`VIDIOC_QBUF` or
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called.
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -621,10 +621,10 @@ buffer.
|
|||||||
- 0x00000800
|
- 0x00000800
|
||||||
|
|
||||||
- Caches do not have to be invalidated for this buffer. Typically
|
- Caches do not have to be invalidated for this buffer. Typically
|
||||||
applications shall use this flag if the data captured in the
|
applications shall use this flag if the data captured in the
|
||||||
buffer is not going to be touched by the CPU, instead the buffer
|
buffer is not going to be touched by the CPU, instead the buffer
|
||||||
will, probably, be passed on to a DMA-capable hardware unit for
|
will, probably, be passed on to a DMA-capable hardware unit for
|
||||||
further processing or output.
|
further processing or output.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -633,9 +633,9 @@ buffer.
|
|||||||
- 0x00001000
|
- 0x00001000
|
||||||
|
|
||||||
- Caches do not have to be cleaned for this buffer. Typically
|
- Caches do not have to be cleaned for this buffer. Typically
|
||||||
applications shall use this flag for output buffers if the data in
|
applications shall use this flag for output buffers if the data in
|
||||||
this buffer has not been created by the CPU but by some
|
this buffer has not been created by the CPU but by some
|
||||||
DMA-capable unit, in which case caches have not been used.
|
DMA-capable unit, in which case caches have not been used.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
@ -644,14 +644,14 @@ buffer.
|
|||||||
- 0x00100000
|
- 0x00100000
|
||||||
|
|
||||||
- Last buffer produced by the hardware. mem2mem codec drivers set
|
- Last buffer produced by the hardware. mem2mem codec drivers set
|
||||||
this flag on the capture queue for the last buffer when the
|
this flag on the capture queue for the last buffer when the
|
||||||
:ref:`VIDIOC_QUERYBUF` or
|
:ref:`VIDIOC_QUERYBUF` or
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
|
||||||
hardware limitations, the last buffer may be empty. In this case
|
hardware limitations, the last buffer may be empty. In this case
|
||||||
the driver will set the ``bytesused`` field to 0, regardless of
|
the driver will set the ``bytesused`` field to 0, regardless of
|
||||||
the format. Any Any subsequent call to the
|
the format. Any Any subsequent call to the
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
||||||
but return an ``EPIPE`` error code.
|
but return an ``EPIPE`` error code.
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
@ -660,8 +660,8 @@ buffer.
|
|||||||
- 0x0000e000
|
- 0x0000e000
|
||||||
|
|
||||||
- Mask for timestamp types below. To test the timestamp type, mask
|
- Mask for timestamp types below. To test the timestamp type, mask
|
||||||
out bits not belonging to timestamp type by performing a logical
|
out bits not belonging to timestamp type by performing a logical
|
||||||
and operation with buffer flags and timestamp mask.
|
and operation with buffer flags and timestamp mask.
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
@ -670,12 +670,12 @@ buffer.
|
|||||||
- 0x00000000
|
- 0x00000000
|
||||||
|
|
||||||
- Unknown timestamp type. This type is used by drivers before Linux
|
- Unknown timestamp type. This type is used by drivers before Linux
|
||||||
3.9 and may be either monotonic (see below) or realtime (wall
|
3.9 and may be either monotonic (see below) or realtime (wall
|
||||||
clock). Monotonic clock has been favoured in embedded systems
|
clock). Monotonic clock has been favoured in embedded systems
|
||||||
whereas most of the drivers use the realtime clock. Either kinds
|
whereas most of the drivers use the realtime clock. Either kinds
|
||||||
of timestamps are available in user space via
|
of timestamps are available in user space via
|
||||||
:c:func:`clock_gettime(2)` using clock IDs ``CLOCK_MONOTONIC``
|
:c:func:`clock_gettime(2)` using clock IDs ``CLOCK_MONOTONIC``
|
||||||
and ``CLOCK_REALTIME``, respectively.
|
and ``CLOCK_REALTIME``, respectively.
|
||||||
|
|
||||||
- .. row 15
|
- .. row 15
|
||||||
|
|
||||||
@ -684,8 +684,8 @@ buffer.
|
|||||||
- 0x00002000
|
- 0x00002000
|
||||||
|
|
||||||
- The buffer timestamp has been taken from the ``CLOCK_MONOTONIC``
|
- The buffer timestamp has been taken from the ``CLOCK_MONOTONIC``
|
||||||
clock. To access the same clock outside V4L2, use
|
clock. To access the same clock outside V4L2, use
|
||||||
:c:func:`clock_gettime(2)`.
|
:c:func:`clock_gettime(2)`.
|
||||||
|
|
||||||
- .. row 16
|
- .. row 16
|
||||||
|
|
||||||
@ -694,7 +694,7 @@ buffer.
|
|||||||
- 0x00004000
|
- 0x00004000
|
||||||
|
|
||||||
- The CAPTURE buffer timestamp has been taken from the corresponding
|
- The CAPTURE buffer timestamp has been taken from the corresponding
|
||||||
OUTPUT buffer. This flag applies only to mem2mem devices.
|
OUTPUT buffer. This flag applies only to mem2mem devices.
|
||||||
|
|
||||||
- .. row 17
|
- .. row 17
|
||||||
|
|
||||||
@ -703,12 +703,12 @@ buffer.
|
|||||||
- 0x00070000
|
- 0x00070000
|
||||||
|
|
||||||
- Mask for timestamp sources below. The timestamp source defines the
|
- Mask for timestamp sources below. The timestamp source defines the
|
||||||
point of time the timestamp is taken in relation to the frame.
|
point of time the timestamp is taken in relation to the frame.
|
||||||
Logical 'and' operation between the ``flags`` field and
|
Logical 'and' operation between the ``flags`` field and
|
||||||
``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the
|
``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the
|
||||||
timestamp source. Applications must set the timestamp source when
|
timestamp source. Applications must set the timestamp source when
|
||||||
``type`` refers to an output stream and
|
``type`` refers to an output stream and
|
||||||
``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set.
|
``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set.
|
||||||
|
|
||||||
- .. row 18
|
- .. row 18
|
||||||
|
|
||||||
@ -717,11 +717,11 @@ buffer.
|
|||||||
- 0x00000000
|
- 0x00000000
|
||||||
|
|
||||||
- End Of Frame. The buffer timestamp has been taken when the last
|
- End Of Frame. The buffer timestamp has been taken when the last
|
||||||
pixel of the frame has been received or the last pixel of the
|
pixel of the frame has been received or the last pixel of the
|
||||||
frame has been transmitted. In practice, software generated
|
frame has been transmitted. In practice, software generated
|
||||||
timestamps will typically be read from the clock a small amount of
|
timestamps will typically be read from the clock a small amount of
|
||||||
time after the last pixel has been received or transmitten,
|
time after the last pixel has been received or transmitten,
|
||||||
depending on the system and other activity in it.
|
depending on the system and other activity in it.
|
||||||
|
|
||||||
- .. row 19
|
- .. row 19
|
||||||
|
|
||||||
@ -730,8 +730,8 @@ buffer.
|
|||||||
- 0x00010000
|
- 0x00010000
|
||||||
|
|
||||||
- Start Of Exposure. The buffer timestamp has been taken when the
|
- Start Of Exposure. The buffer timestamp has been taken when the
|
||||||
exposure of the frame has begun. This is only valid for the
|
exposure of the frame has begun. This is only valid for the
|
||||||
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type.
|
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -817,7 +817,7 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
|
|||||||
- ``frames``
|
- ``frames``
|
||||||
|
|
||||||
- Frame count, 0 ... 23/24/29/49/59, depending on the type of
|
- Frame count, 0 ... 23/24/29/49/59, depending on the type of
|
||||||
timecode.
|
timecode.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -891,7 +891,7 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
|
|||||||
|
|
||||||
- 4
|
- 4
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -899,7 +899,7 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
|
|||||||
|
|
||||||
- 5
|
- 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -918,9 +918,9 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
|
|||||||
- 0x0001
|
- 0x0001
|
||||||
|
|
||||||
- Indicates "drop frame" semantics for counting frames in 29.97 fps
|
- Indicates "drop frame" semantics for counting frames in 29.97 fps
|
||||||
material. When set, frame numbers 0 and 1 at the start of each
|
material. When set, frame numbers 0 and 1 at the start of each
|
||||||
minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the
|
minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the
|
||||||
count.
|
count.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -231,7 +231,7 @@ Control IDs
|
|||||||
- ``V4L2_COLORFX_EMBOSS``
|
- ``V4L2_COLORFX_EMBOSS``
|
||||||
|
|
||||||
- Emboss, the highlights and shadows replace light/dark boundaries
|
- Emboss, the highlights and shadows replace light/dark boundaries
|
||||||
and low contrast areas are set to a gray background.
|
and low contrast areas are set to a gray background.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ Control IDs
|
|||||||
- ``V4L2_COLORFX_SOLARIZATION``
|
- ``V4L2_COLORFX_SOLARIZATION``
|
||||||
|
|
||||||
- Solarization, the image is partially reversed in tone, only color
|
- Solarization, the image is partially reversed in tone, only color
|
||||||
values above or below a certain threshold are inverted.
|
values above or below a certain threshold are inverted.
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
@ -293,7 +293,7 @@ Control IDs
|
|||||||
- ``V4L2_COLORFX_SET_CBCR``
|
- ``V4L2_COLORFX_SET_CBCR``
|
||||||
|
|
||||||
- The Cb and Cr chroma components are replaced by fixed coefficients
|
- The Cb and Cr chroma components are replaced by fixed coefficients
|
||||||
determined by ``V4L2_CID_COLORFX_CBCR`` control.
|
determined by ``V4L2_CID_COLORFX_CBCR`` control.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -382,59 +382,59 @@ more menu type controls.
|
|||||||
|
|
||||||
static void enumerate_menu(void)
|
static void enumerate_menu(void)
|
||||||
{
|
{
|
||||||
printf(" Menu items:\\n");
|
printf(" Menu items:\\n");
|
||||||
|
|
||||||
memset(&querymenu, 0, sizeof(querymenu));
|
memset(&querymenu, 0, sizeof(querymenu));
|
||||||
querymenu.id = queryctrl.id;
|
querymenu.id = queryctrl.id;
|
||||||
|
|
||||||
for (querymenu.index = queryctrl.minimum;
|
for (querymenu.index = queryctrl.minimum;
|
||||||
querymenu.index <= queryctrl.maximum;
|
querymenu.index <= queryctrl.maximum;
|
||||||
querymenu.index++) {
|
querymenu.index++) {
|
||||||
if (0 == ioctl(fd, VIDIOC_QUERYMENU, &querymenu)) {
|
if (0 == ioctl(fd, VIDIOC_QUERYMENU, &querymenu)) {
|
||||||
printf(" %s\\n", querymenu.name);
|
printf(" %s\\n", querymenu.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&queryctrl, 0, sizeof(queryctrl));
|
memset(&queryctrl, 0, sizeof(queryctrl));
|
||||||
|
|
||||||
for (queryctrl.id = V4L2_CID_BASE;
|
for (queryctrl.id = V4L2_CID_BASE;
|
||||||
queryctrl.id < V4L2_CID_LASTP1;
|
queryctrl.id < V4L2_CID_LASTP1;
|
||||||
queryctrl.id++) {
|
queryctrl.id++) {
|
||||||
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
||||||
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
printf("Control %s\\n", queryctrl.name);
|
printf("Control %s\\n", queryctrl.name);
|
||||||
|
|
||||||
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
||||||
enumerate_menu();
|
enumerate_menu();
|
||||||
} else {
|
} else {
|
||||||
if (errno == EINVAL)
|
if (errno == EINVAL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
perror("VIDIOC_QUERYCTRL");
|
perror("VIDIOC_QUERYCTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
|
for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
|
||||||
queryctrl.id++) {
|
queryctrl.id++) {
|
||||||
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
||||||
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
printf("Control %s\\n", queryctrl.name);
|
printf("Control %s\\n", queryctrl.name);
|
||||||
|
|
||||||
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
||||||
enumerate_menu();
|
enumerate_menu();
|
||||||
} else {
|
} else {
|
||||||
if (errno == EINVAL)
|
if (errno == EINVAL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
perror("VIDIOC_QUERYCTRL");
|
perror("VIDIOC_QUERYCTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -445,21 +445,21 @@ more menu type controls.
|
|||||||
|
|
||||||
queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL;
|
queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
||||||
if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
|
if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
|
||||||
break;
|
break;
|
||||||
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
printf("Control %s\\n", queryctrl.name);
|
printf("Control %s\\n", queryctrl.name);
|
||||||
|
|
||||||
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
|
||||||
enumerate_menu();
|
enumerate_menu();
|
||||||
|
|
||||||
queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
}
|
}
|
||||||
if (errno != EINVAL) {
|
if (errno != EINVAL) {
|
||||||
perror("VIDIOC_QUERYCTRL");
|
perror("VIDIOC_QUERYCTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -473,42 +473,42 @@ more menu type controls.
|
|||||||
queryctrl.id = V4L2_CID_BRIGHTNESS;
|
queryctrl.id = V4L2_CID_BRIGHTNESS;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
if (-1 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
|
||||||
if (errno != EINVAL) {
|
if (errno != EINVAL) {
|
||||||
perror("VIDIOC_QUERYCTRL");
|
perror("VIDIOC_QUERYCTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
} else {
|
} else {
|
||||||
printf("V4L2_CID_BRIGHTNESS is not supportedn");
|
printf("V4L2_CID_BRIGHTNESS is not supportedn");
|
||||||
}
|
}
|
||||||
} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) {
|
} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) {
|
||||||
printf("V4L2_CID_BRIGHTNESS is not supportedn");
|
printf("V4L2_CID_BRIGHTNESS is not supportedn");
|
||||||
} else {
|
} else {
|
||||||
memset(&control, 0, sizeof (control));
|
memset(&control, 0, sizeof (control));
|
||||||
control.id = V4L2_CID_BRIGHTNESS;
|
control.id = V4L2_CID_BRIGHTNESS;
|
||||||
control.value = queryctrl.default_value;
|
control.value = queryctrl.default_value;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)) {
|
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)) {
|
||||||
perror("VIDIOC_S_CTRL");
|
perror("VIDIOC_S_CTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&control, 0, sizeof(control));
|
memset(&control, 0, sizeof(control));
|
||||||
control.id = V4L2_CID_CONTRAST;
|
control.id = V4L2_CID_CONTRAST;
|
||||||
|
|
||||||
if (0 == ioctl(fd, VIDIOC_G_CTRL, &control)) {
|
if (0 == ioctl(fd, VIDIOC_G_CTRL, &control)) {
|
||||||
control.value += 1;
|
control.value += 1;
|
||||||
|
|
||||||
/* The driver may clamp the value or return ERANGE, ignored here */
|
/* The driver may clamp the value or return ERANGE, ignored here */
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)
|
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)
|
||||||
&& errno != ERANGE) {
|
&& errno != ERANGE) {
|
||||||
perror("VIDIOC_S_CTRL");
|
perror("VIDIOC_S_CTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
/* Ignore if V4L2_CID_CONTRAST is unsupported */
|
/* Ignore if V4L2_CID_CONTRAST is unsupported */
|
||||||
} else if (errno != EINVAL) {
|
} else if (errno != EINVAL) {
|
||||||
perror("VIDIOC_G_CTRL");
|
perror("VIDIOC_G_CTRL");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
control.id = V4L2_CID_AUDIO_MUTE;
|
control.id = V4L2_CID_AUDIO_MUTE;
|
||||||
|
@ -60,38 +60,38 @@ EBUSY error code until all applications closed the framebuffer device.
|
|||||||
int fb_fd;
|
int fb_fd;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_FBUF, &fbuf)) {
|
if (-1 == ioctl(fd, VIDIOC_G_FBUF, &fbuf)) {
|
||||||
perror("VIDIOC_G_FBUF");
|
perror("VIDIOC_G_FBUF");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 30; i++) {
|
for (i = 0; i < 30; i++) {
|
||||||
char dev_name[16];
|
char dev_name[16];
|
||||||
struct fb_fix_screeninfo si;
|
struct fb_fix_screeninfo si;
|
||||||
|
|
||||||
snprintf(dev_name, sizeof(dev_name), "/dev/fb%u", i);
|
snprintf(dev_name, sizeof(dev_name), "/dev/fb%u", i);
|
||||||
|
|
||||||
fb_fd = open(dev_name, O_RDWR);
|
fb_fd = open(dev_name, O_RDWR);
|
||||||
if (-1 == fb_fd) {
|
if (-1 == fb_fd) {
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
case ENOENT: /* no such file */
|
case ENOENT: /* no such file */
|
||||||
case ENXIO: /* no driver */
|
case ENXIO: /* no driver */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
perror("open");
|
perror("open");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == ioctl(fb_fd, FBIOGET_FSCREENINFO, &si)) {
|
if (0 == ioctl(fb_fd, FBIOGET_FSCREENINFO, &si)) {
|
||||||
if (si.smem_start == (unsigned long)fbuf.base)
|
if (si.smem_start == (unsigned long)fbuf.base)
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
/* Apparently not a framebuffer device. */
|
/* Apparently not a framebuffer device. */
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fb_fd);
|
close(fb_fd);
|
||||||
fb_fd = -1;
|
fb_fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fb_fd is the file descriptor of the framebuffer device
|
/* fb_fd is the file descriptor of the framebuffer device
|
||||||
|
@ -123,10 +123,10 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``offset``
|
- ``offset``
|
||||||
|
|
||||||
- Horizontal offset of the VBI image, relative to the leading edge
|
- Horizontal offset of the VBI image, relative to the leading edge
|
||||||
of the line synchronization pulse and counted in samples: The
|
of the line synchronization pulse and counted in samples: The
|
||||||
first sample in the VBI image will be located ``offset`` /
|
first sample in the VBI image will be located ``offset`` /
|
||||||
``sampling_rate`` seconds following the leading edge. See also
|
``sampling_rate`` seconds following the leading edge. See also
|
||||||
:ref:`vbi-hsync`.
|
:ref:`vbi-hsync`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
|
|
||||||
- ``samples_per_line``
|
- ``samples_per_line``
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -143,13 +143,13 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``sample_format``
|
- ``sample_format``
|
||||||
|
|
||||||
- Defines the sample format as in :ref:`pixfmt`, a
|
- Defines the sample format as in :ref:`pixfmt`, a
|
||||||
four-character-code. [2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
|
four-character-code. [2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
|
||||||
i. e. each sample consists of 8 bits with lower values oriented
|
i. e. each sample consists of 8 bits with lower values oriented
|
||||||
towards the black level. Do not assume any other correlation of
|
towards the black level. Do not assume any other correlation of
|
||||||
values with the signal level. For example, the MSB does not
|
values with the signal level. For example, the MSB does not
|
||||||
necessarily indicate if the signal is 'high' or 'low' because 128
|
necessarily indicate if the signal is 'high' or 'low' because 128
|
||||||
may not be the mean value of the signal. Drivers shall not convert
|
may not be the mean value of the signal. Drivers shall not convert
|
||||||
the sample format by software.
|
the sample format by software.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -158,16 +158,16 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``start``\ [2]
|
- ``start``\ [2]
|
||||||
|
|
||||||
- This is the scanning system line number associated with the first
|
- This is the scanning system line number associated with the first
|
||||||
line of the VBI image, of the first and the second field
|
line of the VBI image, of the first and the second field
|
||||||
respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid
|
respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid
|
||||||
values. The ``V4L2_VBI_ITU_525_F1_START``,
|
values. The ``V4L2_VBI_ITU_525_F1_START``,
|
||||||
``V4L2_VBI_ITU_525_F2_START``, ``V4L2_VBI_ITU_625_F1_START`` and
|
``V4L2_VBI_ITU_525_F2_START``, ``V4L2_VBI_ITU_625_F1_START`` and
|
||||||
``V4L2_VBI_ITU_625_F2_START`` defines give the start line numbers
|
``V4L2_VBI_ITU_625_F2_START`` defines give the start line numbers
|
||||||
for each field for each 525 or 625 line format as a convenience.
|
for each field for each 525 or 625 line format as a convenience.
|
||||||
Don't forget that ITU line numbering starts at 1, not 0. VBI input
|
Don't forget that ITU line numbering starts at 1, not 0. VBI input
|
||||||
drivers can return start values 0 if the hardware cannot reliable
|
drivers can return start values 0 if the hardware cannot reliable
|
||||||
identify scanning lines, VBI acquisition may not require this
|
identify scanning lines, VBI acquisition may not require this
|
||||||
information.
|
information.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -176,34 +176,34 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``count``\ [2]
|
- ``count``\ [2]
|
||||||
|
|
||||||
- The number of lines in the first and second field image,
|
- The number of lines in the first and second field image,
|
||||||
respectively.
|
respectively.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- :cspan:`2`
|
- :cspan:`2`
|
||||||
|
|
||||||
Drivers should be as flexibility as possible. For example, it may
|
Drivers should be as flexibility as possible. For example, it may
|
||||||
be possible to extend or move the VBI capture window down to the
|
be possible to extend or move the VBI capture window down to the
|
||||||
picture area, implementing a 'full field mode' to capture data
|
picture area, implementing a 'full field mode' to capture data
|
||||||
service transmissions embedded in the picture.
|
service transmissions embedded in the picture.
|
||||||
|
|
||||||
An application can set the first or second ``count`` value to zero
|
An application can set the first or second ``count`` value to zero
|
||||||
if no data is required from the respective field; ``count``\ [1]
|
if no data is required from the respective field; ``count``\ [1]
|
||||||
if the scanning system is progressive, i. e. not interlaced. The
|
if the scanning system is progressive, i. e. not interlaced. The
|
||||||
corresponding start value shall be ignored by the application and
|
corresponding start value shall be ignored by the application and
|
||||||
driver. Anyway, drivers may not support single field capturing and
|
driver. Anyway, drivers may not support single field capturing and
|
||||||
return both count values non-zero.
|
return both count values non-zero.
|
||||||
|
|
||||||
Both ``count`` values set to zero, or line numbers outside the
|
Both ``count`` values set to zero, or line numbers outside the
|
||||||
bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a
|
bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a
|
||||||
field image covering lines of two fields, are invalid and shall
|
field image covering lines of two fields, are invalid and shall
|
||||||
not be returned by the driver.
|
not be returned by the driver.
|
||||||
|
|
||||||
To initialize the ``start`` and ``count`` fields, applications
|
To initialize the ``start`` and ``count`` fields, applications
|
||||||
must first determine the current video standard selection. The
|
must first determine the current video standard selection. The
|
||||||
:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
|
:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
|
||||||
of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated
|
of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated
|
||||||
for this purpose.
|
for this purpose.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- See :ref:`vbifmt-flags` below. Currently only drivers set flags,
|
- See :ref:`vbifmt-flags` below. Currently only drivers set flags,
|
||||||
applications must set this field to zero.
|
applications must set this field to zero.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -221,7 +221,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- ``reserved``\ [2]
|
- ``reserved``\ [2]
|
||||||
|
|
||||||
- This array is reserved for future extensions. Drivers and
|
- This array is reserved for future extensions. Drivers and
|
||||||
applications must set it to zero.
|
applications must set it to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -240,12 +240,12 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- 0x0001
|
- 0x0001
|
||||||
|
|
||||||
- This flag indicates hardware which does not properly distinguish
|
- This flag indicates hardware which does not properly distinguish
|
||||||
between fields. Normally the VBI image stores the first field
|
between fields. Normally the VBI image stores the first field
|
||||||
(lower scanning line numbers) first in memory. This may be a top
|
(lower scanning line numbers) first in memory. This may be a top
|
||||||
or bottom field depending on the video standard. When this flag is
|
or bottom field depending on the video standard. When this flag is
|
||||||
set the first or second field may be stored first, however the
|
set the first or second field may be stored first, however the
|
||||||
fields are still in correct temporal order with the older field
|
fields are still in correct temporal order with the older field
|
||||||
first in memory. [3]_
|
first in memory. [3]_
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -254,18 +254,18 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||||||
- 0x0002
|
- 0x0002
|
||||||
|
|
||||||
- By default the two field images will be passed sequentially; all
|
- By default the two field images will be passed sequentially; all
|
||||||
lines of the first field followed by all lines of the second field
|
lines of the first field followed by all lines of the second field
|
||||||
(compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and
|
(compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and
|
||||||
``V4L2_FIELD_SEQ_BT``, whether the top or bottom field is first in
|
``V4L2_FIELD_SEQ_BT``, whether the top or bottom field is first in
|
||||||
memory depends on the video standard). When this flag is set, the
|
memory depends on the video standard). When this flag is set, the
|
||||||
two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). The
|
two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). The
|
||||||
first line of the first field followed by the first line of the
|
first line of the first field followed by the first line of the
|
||||||
second field, then the two second lines, and so on. Such a layout
|
second field, then the two second lines, and so on. Such a layout
|
||||||
may be necessary when the hardware has been programmed to capture
|
may be necessary when the hardware has been programmed to capture
|
||||||
or output interlaced video images and is unable to separate the
|
or output interlaced video images and is unable to separate the
|
||||||
fields for VBI capturing at the same time. For simplicity setting
|
fields for VBI capturing at the same time. For simplicity setting
|
||||||
this flag implies that both ``count`` values are equal and
|
this flag implies that both ``count`` values are equal and
|
||||||
non-zero.
|
non-zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -144,21 +144,21 @@ RDS datastructures
|
|||||||
- Bits 3-5
|
- Bits 3-5
|
||||||
|
|
||||||
- Deprecated. Currently identical to bits 0-2. Do not use these
|
- Deprecated. Currently identical to bits 0-2. Do not use these
|
||||||
bits.
|
bits.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- Bit 6
|
- Bit 6
|
||||||
|
|
||||||
- Corrected bit. Indicates that an error was corrected for this data
|
- Corrected bit. Indicates that an error was corrected for this data
|
||||||
block.
|
block.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- Bit 7
|
- Bit 7
|
||||||
|
|
||||||
- Error bit. Indicates that an uncorrectable error occurred during
|
- Error bit. Indicates that an uncorrectable error occurred during
|
||||||
reception of this block.
|
reception of this block.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_MSK
|
- V4L2_RDS_BLOCK_MSK
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- Mask for bits 0-2 to get the block ID.
|
- Mask for bits 0-2 to get the block ID.
|
||||||
@ -183,7 +183,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_A
|
- V4L2_RDS_BLOCK_A
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Block A.
|
- Block A.
|
||||||
@ -192,7 +192,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_B
|
- V4L2_RDS_BLOCK_B
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Block B.
|
- Block B.
|
||||||
@ -201,7 +201,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_C
|
- V4L2_RDS_BLOCK_C
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
- Block C.
|
- Block C.
|
||||||
@ -210,7 +210,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_D
|
- V4L2_RDS_BLOCK_D
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- Block D.
|
- Block D.
|
||||||
@ -219,7 +219,7 @@ RDS datastructures
|
|||||||
|
|
||||||
- V4L2_RDS_BLOCK_C_ALT
|
- V4L2_RDS_BLOCK_C_ALT
|
||||||
|
|
||||||
-
|
-
|
||||||
- 4
|
- 4
|
||||||
|
|
||||||
- Block C'.
|
- Block C'.
|
||||||
|
@ -93,9 +93,9 @@ data transfer, set by the driver in order to inform application.
|
|||||||
- ``pixelformat``
|
- ``pixelformat``
|
||||||
|
|
||||||
- The data format or type of compression, set by the application.
|
- The data format or type of compression, set by the application.
|
||||||
This is a little endian
|
This is a little endian
|
||||||
:ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR
|
:ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR
|
||||||
formats in :ref:`sdr-formats`.
|
formats in :ref:`sdr-formats`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ data transfer, set by the driver in order to inform application.
|
|||||||
- ``buffersize``
|
- ``buffersize``
|
||||||
|
|
||||||
- Maximum size in bytes required for data. Value is set by the
|
- Maximum size in bytes required for data. Value is set by the
|
||||||
driver.
|
driver.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ data transfer, set by the driver in order to inform application.
|
|||||||
- ``reserved[24]``
|
- ``reserved[24]``
|
||||||
|
|
||||||
- This array is reserved for future extensions. Drivers and
|
- This array is reserved for future extensions. Drivers and
|
||||||
applications must set it to zero.
|
applications must set it to zero.
|
||||||
|
|
||||||
|
|
||||||
An SDR device may support :ref:`read/write <rw>` and/or streaming
|
An SDR device may support :ref:`read/write <rw>` and/or streaming
|
||||||
|
@ -116,22 +116,22 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- :cspan:`2`
|
- :cspan:`2`
|
||||||
|
|
||||||
If ``service_set`` is non-zero when passed with
|
If ``service_set`` is non-zero when passed with
|
||||||
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
|
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
|
||||||
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines``
|
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines``
|
||||||
array will be filled by the driver according to the services
|
array will be filled by the driver according to the services
|
||||||
specified in this field. For example, if ``service_set`` is
|
specified in this field. For example, if ``service_set`` is
|
||||||
initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``,
|
initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``,
|
||||||
a driver for the cx25840 video decoder sets lines 7-22 of both
|
a driver for the cx25840 video decoder sets lines 7-22 of both
|
||||||
fields [1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first
|
fields [1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first
|
||||||
field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to
|
field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to
|
||||||
zero, then the values of ``service_lines`` will be used instead.
|
zero, then the values of ``service_lines`` will be used instead.
|
||||||
|
|
||||||
On return the driver sets this field to the union of all elements
|
On return the driver sets this field to the union of all elements
|
||||||
of the returned ``service_lines`` array. It may contain less
|
of the returned ``service_lines`` array. It may contain less
|
||||||
services than requested, perhaps just one, if the hardware cannot
|
services than requested, perhaps just one, if the hardware cannot
|
||||||
handle more services simultaneously. It may be empty (zero) if
|
handle more services simultaneously. It may be empty (zero) if
|
||||||
none of the requested services are supported by the hardware.
|
none of the requested services are supported by the hardware.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -141,22 +141,22 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- :cspan:`2`
|
- :cspan:`2`
|
||||||
|
|
||||||
Applications initialize this array with sets of data services the
|
Applications initialize this array with sets of data services the
|
||||||
driver shall look for or insert on the respective scan line.
|
driver shall look for or insert on the respective scan line.
|
||||||
Subject to hardware capabilities drivers return the requested set,
|
Subject to hardware capabilities drivers return the requested set,
|
||||||
a subset, which may be just a single service, or an empty set.
|
a subset, which may be just a single service, or an empty set.
|
||||||
When the hardware cannot handle multiple services on the same line
|
When the hardware cannot handle multiple services on the same line
|
||||||
the driver shall choose one. No assumptions can be made on which
|
the driver shall choose one. No assumptions can be made on which
|
||||||
service the driver chooses.
|
service the driver chooses.
|
||||||
|
|
||||||
Data services are defined in :ref:`vbi-services2`. Array indices
|
Data services are defined in :ref:`vbi-services2`. Array indices
|
||||||
map to ITU-R line numbers (see also :ref:`vbi-525` and
|
map to ITU-R line numbers (see also :ref:`vbi-525` and
|
||||||
:ref:`vbi-625`) as follows:
|
:ref:`vbi-625`) as follows:
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Element
|
- Element
|
||||||
|
|
||||||
- 525 line systems
|
- 525 line systems
|
||||||
@ -165,8 +165,8 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- ``service_lines``\ [0][1]
|
- ``service_lines``\ [0][1]
|
||||||
|
|
||||||
- 1
|
- 1
|
||||||
@ -175,8 +175,8 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- ``service_lines``\ [0][23]
|
- ``service_lines``\ [0][23]
|
||||||
|
|
||||||
- 23
|
- 23
|
||||||
@ -185,8 +185,8 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- ``service_lines``\ [1][1]
|
- ``service_lines``\ [1][1]
|
||||||
|
|
||||||
- 264
|
- 264
|
||||||
@ -195,8 +195,8 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- ``service_lines``\ [1][23]
|
- ``service_lines``\ [1][23]
|
||||||
|
|
||||||
- 286
|
- 286
|
||||||
@ -205,15 +205,15 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- :cspan:`2` Drivers must set ``service_lines`` [0][0] and
|
- :cspan:`2` Drivers must set ``service_lines`` [0][0] and
|
||||||
``service_lines``\ [1][0] to zero. The
|
``service_lines``\ [1][0] to zero. The
|
||||||
``V4L2_VBI_ITU_525_F1_START``, ``V4L2_VBI_ITU_525_F2_START``,
|
``V4L2_VBI_ITU_525_F1_START``, ``V4L2_VBI_ITU_525_F2_START``,
|
||||||
``V4L2_VBI_ITU_625_F1_START`` and ``V4L2_VBI_ITU_625_F2_START``
|
``V4L2_VBI_ITU_625_F1_START`` and ``V4L2_VBI_ITU_625_F2_START``
|
||||||
defines give the start line numbers for each field for each 525 or
|
defines give the start line numbers for each field for each 525 or
|
||||||
625 line format as a convenience. Don't forget that ITU line
|
625 line format as a convenience. Don't forget that ITU line
|
||||||
numbering starts at 1, not 0.
|
numbering starts at 1, not 0.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -222,14 +222,14 @@ which may return ``EBUSY`` can be the
|
|||||||
- ``io_size``
|
- ``io_size``
|
||||||
|
|
||||||
- :cspan:`2` Maximum number of bytes passed by one
|
- :cspan:`2` Maximum number of bytes passed by one
|
||||||
:ref:`read() <func-read>` or :ref:`write() <func-write>` call,
|
:ref:`read() <func-read>` or :ref:`write() <func-write>` call,
|
||||||
and the buffer size in bytes for the
|
and the buffer size in bytes for the
|
||||||
:ref:`VIDIOC_QBUF` and
|
:ref:`VIDIOC_QBUF` and
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field
|
||||||
to the size of struct
|
to the size of struct
|
||||||
:ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the
|
:ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the
|
||||||
number of non-zero elements in the returned ``service_lines``
|
number of non-zero elements in the returned ``service_lines``
|
||||||
array (that is the number of lines potentially carrying data).
|
array (that is the number of lines potentially carrying data).
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ which may return ``EBUSY`` can be the
|
|||||||
- ``reserved``\ [2]
|
- ``reserved``\ [2]
|
||||||
|
|
||||||
- :cspan:`2` This array is reserved for future extensions.
|
- :cspan:`2` This array is reserved for future extensions.
|
||||||
Applications and drivers must set it to zero.
|
Applications and drivers must set it to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ which may return ``EBUSY`` can be the
|
|||||||
- PAL/SECAM line 7-22, 320-335 (second field 7-22)
|
- PAL/SECAM line 7-22, 320-335 (second field 7-22)
|
||||||
|
|
||||||
- Last 42 of the 45 byte Teletext packet, that is without clock
|
- Last 42 of the 45 byte Teletext packet, that is without clock
|
||||||
run-in and framing code, lsb first transmitted.
|
run-in and framing code, lsb first transmitted.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -286,7 +286,7 @@ which may return ``EBUSY`` can be the
|
|||||||
- PAL line 16
|
- PAL line 16
|
||||||
|
|
||||||
- Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb
|
- Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb
|
||||||
first transmitted.
|
first transmitted.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ which may return ``EBUSY`` can be the
|
|||||||
- NTSC line 21, 284 (second field 21)
|
- NTSC line 21, 284 (second field 21)
|
||||||
|
|
||||||
- Two bytes in transmission order, including parity bit, lsb first
|
- Two bytes in transmission order, including parity bit, lsb first
|
||||||
transmitted.
|
transmitted.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -311,13 +311,13 @@ which may return ``EBUSY`` can be the
|
|||||||
|
|
||||||
- PAL/SECAM line 23
|
- PAL/SECAM line 23
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
Byte 0 1
|
Byte 0 1
|
||||||
msb lsb msb lsb
|
msb lsb msb lsb
|
||||||
Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
|
Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -375,12 +375,12 @@ of one video frame. The ``id`` of unused
|
|||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
- A flag from :ref:`vbi-services` identifying the type of data in
|
- A flag from :ref:`vbi-services` identifying the type of data in
|
||||||
this packet. Only a single bit must be set. When the ``id`` of a
|
this packet. Only a single bit must be set. When the ``id`` of a
|
||||||
captured packet is zero, the packet is empty and the contents of
|
captured packet is zero, the packet is empty and the contents of
|
||||||
other fields are undefined. Applications shall ignore empty
|
other fields are undefined. Applications shall ignore empty
|
||||||
packets. When the ``id`` of a packet for output is zero the
|
packets. When the ``id`` of a packet for output is zero the
|
||||||
contents of the ``data`` field are undefined and the driver must
|
contents of the ``data`` field are undefined and the driver must
|
||||||
no longer insert data on the requested ``field`` and ``line``.
|
no longer insert data on the requested ``field`` and ``line``.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -389,8 +389,8 @@ of one video frame. The ``id`` of unused
|
|||||||
- ``field``
|
- ``field``
|
||||||
|
|
||||||
- The video field number this data has been captured from, or shall
|
- The video field number this data has been captured from, or shall
|
||||||
be inserted at. ``0`` for the first field, ``1`` for the second
|
be inserted at. ``0`` for the first field, ``1`` for the second
|
||||||
field.
|
field.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -399,11 +399,11 @@ of one video frame. The ``id`` of unused
|
|||||||
- ``line``
|
- ``line``
|
||||||
|
|
||||||
- The field (as opposed to frame) line number this data has been
|
- The field (as opposed to frame) line number this data has been
|
||||||
captured from, or shall be inserted at. See :ref:`vbi-525` and
|
captured from, or shall be inserted at. See :ref:`vbi-525` and
|
||||||
:ref:`vbi-625` for valid values. Sliced VBI capture devices can
|
:ref:`vbi-625` for valid values. Sliced VBI capture devices can
|
||||||
set the line number of all packets to ``0`` if the hardware cannot
|
set the line number of all packets to ``0`` if the hardware cannot
|
||||||
reliably identify scan lines. The field number must always be
|
reliably identify scan lines. The field number must always be
|
||||||
valid.
|
valid.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -412,7 +412,7 @@ of one video frame. The ``id`` of unused
|
|||||||
- ``reserved``
|
- ``reserved``
|
||||||
|
|
||||||
- This field is reserved for future extensions. Applications and
|
- This field is reserved for future extensions. Applications and
|
||||||
drivers must set it to zero.
|
drivers must set it to zero.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -421,9 +421,9 @@ of one video frame. The ``id`` of unused
|
|||||||
- ``data``\ [48]
|
- ``data``\ [48]
|
||||||
|
|
||||||
- The packet payload. See :ref:`vbi-services` for the contents and
|
- The packet payload. See :ref:`vbi-services` for the contents and
|
||||||
number of bytes passed for each data type. The contents of padding
|
number of bytes passed for each data type. The contents of padding
|
||||||
bytes at the end of this array are undefined, drivers and
|
bytes at the end of this array are undefined, drivers and
|
||||||
applications shall ignore them.
|
applications shall ignore them.
|
||||||
|
|
||||||
|
|
||||||
Packets are always passed in ascending line number order, without
|
Packets are always passed in ascending line number order, without
|
||||||
@ -556,11 +556,11 @@ number).
|
|||||||
|
|
||||||
- ``magic``\ [4]
|
- ``magic``\ [4]
|
||||||
|
|
||||||
-
|
-
|
||||||
- A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that
|
- A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that
|
||||||
indicates this is a valid sliced VBI data payload and also
|
indicates this is a valid sliced VBI data payload and also
|
||||||
indicates which member of the anonymous union, ``itv0`` or
|
indicates which member of the anonymous union, ``itv0`` or
|
||||||
``ITV0``, to use for the payload data.
|
``ITV0``, to use for the payload data.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -570,27 +570,27 @@ number).
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_mpeg_vbi_itv0 <v4l2-mpeg-vbi-itv0>`
|
- struct :ref:`v4l2_mpeg_vbi_itv0 <v4l2-mpeg-vbi-itv0>`
|
||||||
|
|
||||||
- ``itv0``
|
- ``itv0``
|
||||||
|
|
||||||
- The primary form of the sliced VBI data payload that contains
|
- The primary form of the sliced VBI data payload that contains
|
||||||
anywhere from 1 to 35 lines of sliced VBI data. Line masks are
|
anywhere from 1 to 35 lines of sliced VBI data. Line masks are
|
||||||
provided in this form of the payload indicating which VBI lines
|
provided in this form of the payload indicating which VBI lines
|
||||||
are provided.
|
are provided.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>`
|
- struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>`
|
||||||
|
|
||||||
- ``ITV0``
|
- ``ITV0``
|
||||||
|
|
||||||
- An alternate form of the sliced VBI data payload used when 36
|
- An alternate form of the sliced VBI data payload used when 36
|
||||||
lines of sliced VBI data are present. No line masks are provided
|
lines of sliced VBI data are present. No line masks are provided
|
||||||
in this form of the payload; all valid line mask bits are
|
in this form of the payload; all valid line mask bits are
|
||||||
implcitly set.
|
implcitly set.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -617,8 +617,8 @@ number).
|
|||||||
- "itv0"
|
- "itv0"
|
||||||
|
|
||||||
- Indicates the ``itv0`` member of the union in struct
|
- Indicates the ``itv0`` member of the union in struct
|
||||||
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
|
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
|
||||||
valid.
|
valid.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -627,8 +627,8 @@ number).
|
|||||||
- "ITV0"
|
- "ITV0"
|
||||||
|
|
||||||
- Indicates the ``ITV0`` member of the union in struct
|
- Indicates the ``ITV0`` member of the union in struct
|
||||||
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
|
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
|
||||||
valid and that 36 lines of sliced VBI data are present.
|
valid and that 36 lines of sliced VBI data are present.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -647,42 +647,42 @@ number).
|
|||||||
- ``linemask``\ [2]
|
- ``linemask``\ [2]
|
||||||
|
|
||||||
- Bitmasks indicating the VBI service lines present. These
|
- Bitmasks indicating the VBI service lines present. These
|
||||||
``linemask`` values are stored in little endian byte order in the
|
``linemask`` values are stored in little endian byte order in the
|
||||||
MPEG stream. Some reference ``linemask`` bit positions with their
|
MPEG stream. Some reference ``linemask`` bit positions with their
|
||||||
corresponding VBI line number and video field are given below.
|
corresponding VBI line number and video field are given below.
|
||||||
b\ :sub:`0` indicates the least significant bit of a ``linemask``
|
b\ :sub:`0` indicates the least significant bit of a ``linemask``
|
||||||
value:
|
value:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
linemask[0] b0: line 6 first field
|
linemask[0] b0: line 6 first field
|
||||||
linemask[0] b17: line 23 first field
|
linemask[0] b17: line 23 first field
|
||||||
linemask[0] b18: line 6 second field
|
linemask[0] b18: line 6 second field
|
||||||
linemask[0] b31: line 19 second field
|
linemask[0] b31: line 19 second field
|
||||||
linemask[1] b0: line 20 second field
|
linemask[1] b0: line 20 second field
|
||||||
linemask[1] b3: line 23 second field
|
linemask[1] b3: line 23 second field
|
||||||
linemask[1] b4-b31: unused and set to 0
|
linemask[1] b4-b31: unused and set to 0
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- struct
|
- struct
|
||||||
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>`
|
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>`
|
||||||
|
|
||||||
- ``line``\ [35]
|
- ``line``\ [35]
|
||||||
|
|
||||||
- This is a variable length array that holds from 1 to 35 lines of
|
- This is a variable length array that holds from 1 to 35 lines of
|
||||||
sliced VBI data. The sliced VBI data lines present correspond to
|
sliced VBI data. The sliced VBI data lines present correspond to
|
||||||
the bits set in the ``linemask`` array, starting from b\ :sub:`0`
|
the bits set in the ``linemask`` array, starting from b\ :sub:`0`
|
||||||
of ``linemask``\ [0] up through b\ :sub:`31` of ``linemask``\ [0],
|
of ``linemask``\ [0] up through b\ :sub:`31` of ``linemask``\ [0],
|
||||||
and from b\ :sub:`0` of ``linemask``\ [1] up through b\ :sub:`3` of
|
and from b\ :sub:`0` of ``linemask``\ [1] up through b\ :sub:`3` of
|
||||||
``linemask``\ [1]. ``line``\ [0] corresponds to the first bit
|
``linemask``\ [1]. ``line``\ [0] corresponds to the first bit
|
||||||
found set in the ``linemask`` array, ``line``\ [1] corresponds to
|
found set in the ``linemask`` array, ``line``\ [1] corresponds to
|
||||||
the second bit found set in the ``linemask`` array, etc. If no
|
the second bit found set in the ``linemask`` array, etc. If no
|
||||||
``linemask`` array bits are set, then ``line``\ [0] may contain
|
``linemask`` array bits are set, then ``line``\ [0] may contain
|
||||||
one line of unspecified data that should be ignored by
|
one line of unspecified data that should be ignored by
|
||||||
applications.
|
applications.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -697,14 +697,14 @@ number).
|
|||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
- struct
|
- struct
|
||||||
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>`
|
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>`
|
||||||
|
|
||||||
- ``line``\ [36]
|
- ``line``\ [36]
|
||||||
|
|
||||||
- A fixed length array of 36 lines of sliced VBI data. ``line``\ [0]
|
- A fixed length array of 36 lines of sliced VBI data. ``line``\ [0]
|
||||||
through ``line``\ [17] correspond to lines 6 through 23 of the
|
through ``line``\ [17] correspond to lines 6 through 23 of the
|
||||||
first field. ``line``\ [18] through ``line``\ [35] corresponds to
|
first field. ``line``\ [18] through ``line``\ [35] corresponds to
|
||||||
lines 6 through 23 of the second field.
|
lines 6 through 23 of the second field.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -723,8 +723,8 @@ number).
|
|||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
- A line identifier value from
|
- A line identifier value from
|
||||||
:ref:`ITV0-Line-Identifier-Constants` that indicates the type of
|
:ref:`ITV0-Line-Identifier-Constants` that indicates the type of
|
||||||
sliced VBI data stored on this line.
|
sliced VBI data stored on this line.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -759,7 +759,7 @@ number).
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
||||||
description of the line payload.
|
description of the line payload.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -768,7 +768,7 @@ number).
|
|||||||
- 4
|
- 4
|
||||||
|
|
||||||
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
||||||
description of the line payload.
|
description of the line payload.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -777,7 +777,7 @@ number).
|
|||||||
- 5
|
- 5
|
||||||
|
|
||||||
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
||||||
description of the line payload.
|
description of the line payload.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -786,7 +786,7 @@ number).
|
|||||||
- 7
|
- 7
|
||||||
|
|
||||||
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
|
||||||
description of the line payload.
|
description of the line payload.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ list entity names and pad numbers).
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- Sensor/0 format
|
- Sensor/0 format
|
||||||
|
|
||||||
- Frontend/0 format
|
- Frontend/0 format
|
||||||
|
@ -53,7 +53,7 @@ using driver module options. The major device number remains 81.
|
|||||||
- Video capture and overlay
|
- Video capture and overlay
|
||||||
|
|
||||||
- ``/dev/video`` and ``/dev/bttv0``\ [1]_, ``/dev/video0`` to
|
- ``/dev/video`` and ``/dev/bttv0``\ [1]_, ``/dev/video0`` to
|
||||||
``/dev/video63``
|
``/dev/video63``
|
||||||
|
|
||||||
- 0-63
|
- 0-63
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ introduction.
|
|||||||
- struct :c:type:`struct video_capability` ``type``
|
- struct :c:type:`struct video_capability` ``type``
|
||||||
|
|
||||||
- struct :ref:`v4l2_capability <v4l2-capability>`
|
- struct :ref:`v4l2_capability <v4l2-capability>`
|
||||||
``capabilities`` flags
|
``capabilities`` flags
|
||||||
|
|
||||||
- Purpose
|
- Purpose
|
||||||
|
|
||||||
@ -148,31 +148,31 @@ introduction.
|
|||||||
- ``VID_TYPE_CHROMAKEY``
|
- ``VID_TYPE_CHROMAKEY``
|
||||||
|
|
||||||
- ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct
|
- ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct
|
||||||
:ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
:ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
||||||
|
|
||||||
- Whether chromakey overlay is supported. For more information on
|
- Whether chromakey overlay is supported. For more information on
|
||||||
overlay see :ref:`overlay`.
|
overlay see :ref:`overlay`.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``VID_TYPE_CLIPPING``
|
- ``VID_TYPE_CLIPPING``
|
||||||
|
|
||||||
- ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
|
- ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
|
||||||
``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of
|
``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of
|
||||||
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
||||||
|
|
||||||
- Whether clipping the overlaid image is supported, see
|
- Whether clipping the overlaid image is supported, see
|
||||||
:ref:`overlay`.
|
:ref:`overlay`.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``VID_TYPE_FRAMERAM``
|
- ``VID_TYPE_FRAMERAM``
|
||||||
|
|
||||||
- ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability``
|
- ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability``
|
||||||
of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
|
||||||
|
|
||||||
- Whether overlay overwrites frame buffer memory, see
|
- Whether overlay overwrites frame buffer memory, see
|
||||||
:ref:`overlay`.
|
:ref:`overlay`.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -181,11 +181,11 @@ introduction.
|
|||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- This flag indicates if the hardware can scale images. The V4L2 API
|
- This flag indicates if the hardware can scale images. The V4L2 API
|
||||||
implies the scale factor by setting the cropping dimensions and
|
implies the scale factor by setting the cropping dimensions and
|
||||||
image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and
|
image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and
|
||||||
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The
|
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The
|
||||||
driver returns the closest sizes possible. For more information on
|
driver returns the closest sizes possible. For more information on
|
||||||
cropping and scaling see :ref:`crop`.
|
cropping and scaling see :ref:`crop`.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -194,9 +194,9 @@ introduction.
|
|||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- Applications can enumerate the supported image formats with the
|
- Applications can enumerate the supported image formats with the
|
||||||
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
|
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
|
||||||
the device supports grey scale capturing only. For more
|
the device supports grey scale capturing only. For more
|
||||||
information on image formats see :ref:`pixfmt`.
|
information on image formats see :ref:`pixfmt`.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -205,10 +205,10 @@ introduction.
|
|||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>`
|
- Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>`
|
||||||
ioctl to determine if the device supports capturing a subsection
|
ioctl to determine if the device supports capturing a subsection
|
||||||
of the full picture ("cropping" in V4L2). If not, the ioctl
|
of the full picture ("cropping" in V4L2). If not, the ioctl
|
||||||
returns the ``EINVAL`` error code. For more information on cropping
|
returns the ``EINVAL`` error code. For more information on cropping
|
||||||
and scaling see :ref:`crop`.
|
and scaling see :ref:`crop`.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
@ -217,8 +217,8 @@ introduction.
|
|||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- Applications can enumerate the supported image formats with the
|
- Applications can enumerate the supported image formats with the
|
||||||
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
|
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
|
||||||
the device supports MPEG streams.
|
the device supports MPEG streams.
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
@ -759,59 +759,59 @@ differences.
|
|||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- The image format must be selected before buffers are allocated,
|
- The image format must be selected before buffers are allocated,
|
||||||
with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no
|
with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no
|
||||||
format is selected the driver may use the last, possibly by
|
format is selected the driver may use the last, possibly by
|
||||||
another application requested format.
|
another application requested format.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- Applications cannot change the number of buffers. The it is built
|
- Applications cannot change the number of buffers. The it is built
|
||||||
into the driver, unless it has a module option to change the
|
into the driver, unless it has a module option to change the
|
||||||
number when the driver module is loaded.
|
number when the driver module is loaded.
|
||||||
|
|
||||||
- The :ref:`VIDIOC_REQBUFS` ioctl allocates the
|
- The :ref:`VIDIOC_REQBUFS` ioctl allocates the
|
||||||
desired number of buffers, this is a required step in the
|
desired number of buffers, this is a required step in the
|
||||||
initialization sequence.
|
initialization sequence.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- Drivers map all buffers as one contiguous range of memory. The
|
- Drivers map all buffers as one contiguous range of memory. The
|
||||||
``VIDIOCGMBUF`` ioctl is available to query the number of buffers,
|
``VIDIOCGMBUF`` ioctl is available to query the number of buffers,
|
||||||
the offset of each buffer from the start of the virtual file, and
|
the offset of each buffer from the start of the virtual file, and
|
||||||
the overall amount of memory used, which can be used as arguments
|
the overall amount of memory used, which can be used as arguments
|
||||||
for the :ref:`mmap() <func-mmap>` function.
|
for the :ref:`mmap() <func-mmap>` function.
|
||||||
|
|
||||||
- Buffers are individually mapped. The offset and size of each
|
- Buffers are individually mapped. The offset and size of each
|
||||||
buffer can be determined with the
|
buffer can be determined with the
|
||||||
:ref:`VIDIOC_QUERYBUF` ioctl.
|
:ref:`VIDIOC_QUERYBUF` ioctl.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It
|
- The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It
|
||||||
also determines the image format for this buffer. The ioctl
|
also determines the image format for this buffer. The ioctl
|
||||||
returns immediately, eventually with an ``EAGAIN`` error code if no
|
returns immediately, eventually with an ``EAGAIN`` error code if no
|
||||||
video signal had been detected. When the driver supports more than
|
video signal had been detected. When the driver supports more than
|
||||||
one buffer applications can call the ioctl multiple times and thus
|
one buffer applications can call the ioctl multiple times and thus
|
||||||
have multiple outstanding capture requests.
|
have multiple outstanding capture requests.
|
||||||
|
|
||||||
The ``VIDIOCSYNC`` ioctl suspends execution until a particular
|
The ``VIDIOCSYNC`` ioctl suspends execution until a particular
|
||||||
buffer has been filled.
|
buffer has been filled.
|
||||||
|
|
||||||
- Drivers maintain an incoming and outgoing queue.
|
- Drivers maintain an incoming and outgoing queue.
|
||||||
:ref:`VIDIOC_QBUF` enqueues any empty buffer into
|
:ref:`VIDIOC_QBUF` enqueues any empty buffer into
|
||||||
the incoming queue. Filled buffers are dequeued from the outgoing
|
the incoming queue. Filled buffers are dequeued from the outgoing
|
||||||
queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait
|
queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait
|
||||||
until filled buffers become available this function,
|
until filled buffers become available this function,
|
||||||
:ref:`select() <func-select>` or :ref:`poll() <func-poll>` can
|
:ref:`select() <func-select>` or :ref:`poll() <func-poll>` can
|
||||||
be used. The :ref:`VIDIOC_STREAMON` ioctl
|
be used. The :ref:`VIDIOC_STREAMON` ioctl
|
||||||
must be called once after enqueuing one or more buffers to start
|
must be called once after enqueuing one or more buffers to start
|
||||||
capturing. Its counterpart
|
capturing. Its counterpart
|
||||||
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and
|
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and
|
||||||
dequeues all buffers from both queues. Applications can query the
|
dequeues all buffers from both queues. Applications can query the
|
||||||
signal status, if known, with the
|
signal status, if known, with the
|
||||||
:ref:`VIDIOC_ENUMINPUT` ioctl.
|
:ref:`VIDIOC_ENUMINPUT` ioctl.
|
||||||
|
|
||||||
|
|
||||||
For a more in-depth discussion of memory mapping and examples, see
|
For a more in-depth discussion of memory mapping and examples, see
|
||||||
@ -845,7 +845,7 @@ with the following parameters:
|
|||||||
- sampling_rate
|
- sampling_rate
|
||||||
|
|
||||||
- 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL
|
- 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL
|
||||||
and SECAM (625-line standards)
|
and SECAM (625-line standards)
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -864,7 +864,7 @@ with the following parameters:
|
|||||||
- sample_format
|
- sample_format
|
||||||
|
|
||||||
- V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness
|
- V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness
|
||||||
integer) contain a frame counter.
|
integer) contain a frame counter.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
|
@ -47,12 +47,12 @@ driver must be switched into DMABUF I/O mode by calling the
|
|||||||
reqbuf.count = 1;
|
reqbuf.count = 1;
|
||||||
|
|
||||||
if (ioctl(fd, VIDIOC_REQBUFS, &reqbuf) == -1) {
|
if (ioctl(fd, VIDIOC_REQBUFS, &reqbuf) == -1) {
|
||||||
if (errno == EINVAL)
|
if (errno == EINVAL)
|
||||||
printf("Video capturing or DMABUF streaming is not supported\\n");
|
printf("Video capturing or DMABUF streaming is not supported\\n");
|
||||||
else
|
else
|
||||||
perror("VIDIOC_REQBUFS");
|
perror("VIDIOC_REQBUFS");
|
||||||
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
The buffer (plane) file descriptor is passed on the fly with the
|
The buffer (plane) file descriptor is passed on the fly with the
|
||||||
@ -66,20 +66,20 @@ a different DMABUF descriptor at each ``VIDIOC_QBUF`` call.
|
|||||||
|
|
||||||
int buffer_queue(int v4lfd, int index, int dmafd)
|
int buffer_queue(int v4lfd, int index, int dmafd)
|
||||||
{
|
{
|
||||||
struct v4l2_buffer buf;
|
struct v4l2_buffer buf;
|
||||||
|
|
||||||
memset(&buf, 0, sizeof buf);
|
memset(&buf, 0, sizeof buf);
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
buf.memory = V4L2_MEMORY_DMABUF;
|
buf.memory = V4L2_MEMORY_DMABUF;
|
||||||
buf.index = index;
|
buf.index = index;
|
||||||
buf.m.fd = dmafd;
|
buf.m.fd = dmafd;
|
||||||
|
|
||||||
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
|
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
|
||||||
perror("VIDIOC_QBUF");
|
perror("VIDIOC_QBUF");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -87,28 +87,28 @@ a different DMABUF descriptor at each ``VIDIOC_QBUF`` call.
|
|||||||
|
|
||||||
int buffer_queue_mp(int v4lfd, int index, int dmafd[], int n_planes)
|
int buffer_queue_mp(int v4lfd, int index, int dmafd[], int n_planes)
|
||||||
{
|
{
|
||||||
struct v4l2_buffer buf;
|
struct v4l2_buffer buf;
|
||||||
struct v4l2_plane planes[VIDEO_MAX_PLANES];
|
struct v4l2_plane planes[VIDEO_MAX_PLANES];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset(&buf, 0, sizeof buf);
|
memset(&buf, 0, sizeof buf);
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
|
||||||
buf.memory = V4L2_MEMORY_DMABUF;
|
buf.memory = V4L2_MEMORY_DMABUF;
|
||||||
buf.index = index;
|
buf.index = index;
|
||||||
buf.m.planes = planes;
|
buf.m.planes = planes;
|
||||||
buf.length = n_planes;
|
buf.length = n_planes;
|
||||||
|
|
||||||
memset(&planes, 0, sizeof planes);
|
memset(&planes, 0, sizeof planes);
|
||||||
|
|
||||||
for (i = 0; i < n_planes; ++i)
|
for (i = 0; i < n_planes; ++i)
|
||||||
buf.m.planes[i].m.fd = dmafd[i];
|
buf.m.planes[i].m.fd = dmafd[i];
|
||||||
|
|
||||||
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
|
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
|
||||||
perror("VIDIOC_QBUF");
|
perror("VIDIOC_QBUF");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Captured or displayed buffers are dequeued with the
|
Captured or displayed buffers are dequeued with the
|
||||||
|
@ -113,8 +113,8 @@ The recommended way to enumerate over the extended controls is by using
|
|||||||
|
|
||||||
qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
while (0 == ioctl (fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
while (0 == ioctl (fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
||||||
/* ... */
|
/* ... */
|
||||||
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
}
|
}
|
||||||
|
|
||||||
The initial control ID is set to 0 ORed with the
|
The initial control ID is set to 0 ORed with the
|
||||||
@ -132,10 +132,10 @@ control class is found:
|
|||||||
|
|
||||||
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
|
||||||
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
|
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
|
||||||
break;
|
break;
|
||||||
/* ... */
|
/* ... */
|
||||||
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
|
||||||
}
|
}
|
||||||
|
|
||||||
The 32-bit ``qctrl.id`` value is subdivided into three bit ranges: the
|
The 32-bit ``qctrl.id`` value is subdivided into three bit ranges: the
|
||||||
@ -302,8 +302,8 @@ Codec Control IDs
|
|||||||
- ``V4L2_MPEG_STREAM_VBI_FMT_IVTV``
|
- ``V4L2_MPEG_STREAM_VBI_FMT_IVTV``
|
||||||
|
|
||||||
- VBI in private packets, IVTV format (documented in the kernel
|
- VBI in private packets, IVTV format (documented in the kernel
|
||||||
sources in the file
|
sources in the file
|
||||||
``Documentation/video4linux/cx2341x/README.vbi``)
|
``Documentation/video4linux/cx2341x/README.vbi``)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1650,7 +1650,7 @@ Codec Control IDs
|
|||||||
|
|
||||||
- ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY``
|
- ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY``
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1929,7 +1929,7 @@ Codec Control IDs
|
|||||||
- ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME``
|
- ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME``
|
||||||
|
|
||||||
- The stream header is returned together with the first encoded
|
- The stream header is returned together with the first encoded
|
||||||
frame.
|
frame.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2035,14 +2035,14 @@ Codec Control IDs
|
|||||||
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES``
|
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES``
|
||||||
|
|
||||||
- Slices are interleaved one after other with macroblocks in run
|
- Slices are interleaved one after other with macroblocks in run
|
||||||
length order.
|
length order.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES``
|
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES``
|
||||||
|
|
||||||
- Scatters the macroblocks based on a mathematical function known to
|
- Scatters the macroblocks based on a mathematical function known to
|
||||||
both encoder and decoder.
|
both encoder and decoder.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -2340,14 +2340,14 @@ MFC 5.1 Control IDs
|
|||||||
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT``
|
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT``
|
||||||
|
|
||||||
- Frame skip mode enabled and buffer limit is set by the chosen
|
- Frame skip mode enabled and buffer limit is set by the chosen
|
||||||
level and is defined by the standard.
|
level and is defined by the standard.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT``
|
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT``
|
||||||
|
|
||||||
- Frame skip mode enabled and buffer limit is set by the VBV
|
- Frame skip mode enabled and buffer limit is set by the VBV
|
||||||
(MPEG1/2/4) or CPB (H264) buffer size control.
|
(MPEG1/2/4) or CPB (H264) buffer size control.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2690,15 +2690,15 @@ VPX Control IDs
|
|||||||
- ``V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME``
|
- ``V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME``
|
||||||
|
|
||||||
- Two frames will be searched among the last encoded frame, the
|
- Two frames will be searched among the last encoded frame, the
|
||||||
golden frame and the alternate reference (altref) frame. The
|
golden frame and the alternate reference (altref) frame. The
|
||||||
encoder implementation will decide which two are chosen.
|
encoder implementation will decide which two are chosen.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME``
|
- ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME``
|
||||||
|
|
||||||
- The last encoded frame, the golden frame and the altref frame will
|
- The last encoded frame, the golden frame and the altref frame will
|
||||||
be searched.
|
be searched.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2736,15 +2736,15 @@ VPX Control IDs
|
|||||||
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV``
|
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV``
|
||||||
|
|
||||||
- Use the (n-2)th frame as a golden frame, current frame index being
|
- Use the (n-2)th frame as a golden frame, current frame index being
|
||||||
'n'.
|
'n'.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD``
|
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD``
|
||||||
|
|
||||||
- Use the previous specific frame indicated by
|
- Use the previous specific frame indicated by
|
||||||
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a
|
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a
|
||||||
golden frame.
|
golden frame.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2867,14 +2867,14 @@ Camera Control IDs
|
|||||||
- ``V4L2_EXPOSURE_METERING_AVERAGE``
|
- ``V4L2_EXPOSURE_METERING_AVERAGE``
|
||||||
|
|
||||||
- Use the light information coming from the entire frame and average
|
- Use the light information coming from the entire frame and average
|
||||||
giving no weighting to any particular portion of the metered area.
|
giving no weighting to any particular portion of the metered area.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_EXPOSURE_METERING_CENTER_WEIGHTED``
|
- ``V4L2_EXPOSURE_METERING_CENTER_WEIGHTED``
|
||||||
|
|
||||||
- Average the light information coming from the entire frame giving
|
- Average the light information coming from the entire frame giving
|
||||||
priority to the center of the metered area.
|
priority to the center of the metered area.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -2887,9 +2887,9 @@ Camera Control IDs
|
|||||||
- ``V4L2_EXPOSURE_METERING_MATRIX``
|
- ``V4L2_EXPOSURE_METERING_MATRIX``
|
||||||
|
|
||||||
- A multi-zone metering. The light intensity is measured in several
|
- A multi-zone metering. The light intensity is measured in several
|
||||||
points of the frame and the results are combined. The algorithm of
|
points of the frame and the results are combined. The algorithm of
|
||||||
the zones selection and their significance in calculating the
|
the zones selection and their significance in calculating the
|
||||||
final value is device dependent.
|
final value is device dependent.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -2993,7 +2993,7 @@ Camera Control IDs
|
|||||||
- ``V4L2_AUTO_FOCUS_STATUS_FAILED``
|
- ``V4L2_AUTO_FOCUS_STATUS_FAILED``
|
||||||
|
|
||||||
- Automatic focus has failed, the driver will not transition from
|
- Automatic focus has failed, the driver will not transition from
|
||||||
this state until another action is performed by an application.
|
this state until another action is performed by an application.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3020,14 +3020,14 @@ Camera Control IDs
|
|||||||
- ``V4L2_AUTO_FOCUS_RANGE_NORMAL``
|
- ``V4L2_AUTO_FOCUS_RANGE_NORMAL``
|
||||||
|
|
||||||
- Normal distance range, limited for best automatic focus
|
- Normal distance range, limited for best automatic focus
|
||||||
performance.
|
performance.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_AUTO_FOCUS_RANGE_MACRO``
|
- ``V4L2_AUTO_FOCUS_RANGE_MACRO``
|
||||||
|
|
||||||
- Macro (close-up) auto focus. The camera will use its minimum
|
- Macro (close-up) auto focus. The camera will use its minimum
|
||||||
possible distance for auto focus.
|
possible distance for auto focus.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -3114,59 +3114,59 @@ Camera Control IDs
|
|||||||
- ``V4L2_WHITE_BALANCE_INCANDESCENT``
|
- ``V4L2_WHITE_BALANCE_INCANDESCENT``
|
||||||
|
|
||||||
- White balance setting for incandescent (tungsten) lighting. It
|
- White balance setting for incandescent (tungsten) lighting. It
|
||||||
generally cools down the colors and corresponds approximately to
|
generally cools down the colors and corresponds approximately to
|
||||||
2500...3500 K color temperature range.
|
2500...3500 K color temperature range.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_FLUORESCENT``
|
- ``V4L2_WHITE_BALANCE_FLUORESCENT``
|
||||||
|
|
||||||
- White balance preset for fluorescent lighting. It corresponds
|
- White balance preset for fluorescent lighting. It corresponds
|
||||||
approximately to 4000...5000 K color temperature.
|
approximately to 4000...5000 K color temperature.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_FLUORESCENT_H``
|
- ``V4L2_WHITE_BALANCE_FLUORESCENT_H``
|
||||||
|
|
||||||
- With this setting the camera will compensate for fluorescent H
|
- With this setting the camera will compensate for fluorescent H
|
||||||
lighting.
|
lighting.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_HORIZON``
|
- ``V4L2_WHITE_BALANCE_HORIZON``
|
||||||
|
|
||||||
- White balance setting for horizon daylight. It corresponds
|
- White balance setting for horizon daylight. It corresponds
|
||||||
approximately to 5000 K color temperature.
|
approximately to 5000 K color temperature.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_DAYLIGHT``
|
- ``V4L2_WHITE_BALANCE_DAYLIGHT``
|
||||||
|
|
||||||
- White balance preset for daylight (with clear sky). It corresponds
|
- White balance preset for daylight (with clear sky). It corresponds
|
||||||
approximately to 5000...6500 K color temperature.
|
approximately to 5000...6500 K color temperature.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_FLASH``
|
- ``V4L2_WHITE_BALANCE_FLASH``
|
||||||
|
|
||||||
- With this setting the camera will compensate for the flash light.
|
- With this setting the camera will compensate for the flash light.
|
||||||
It slightly warms up the colors and corresponds roughly to
|
It slightly warms up the colors and corresponds roughly to
|
||||||
5000...5500 K color temperature.
|
5000...5500 K color temperature.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_CLOUDY``
|
- ``V4L2_WHITE_BALANCE_CLOUDY``
|
||||||
|
|
||||||
- White balance preset for moderately overcast sky. This option
|
- White balance preset for moderately overcast sky. This option
|
||||||
corresponds approximately to 6500...8000 K color temperature
|
corresponds approximately to 6500...8000 K color temperature
|
||||||
range.
|
range.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
- ``V4L2_WHITE_BALANCE_SHADE``
|
- ``V4L2_WHITE_BALANCE_SHADE``
|
||||||
|
|
||||||
- White balance preset for shade or heavily overcast sky. It
|
- White balance preset for shade or heavily overcast sky. It
|
||||||
corresponds approximately to 9000...10000 K color temperature.
|
corresponds approximately to 9000...10000 K color temperature.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3256,115 +3256,115 @@ Camera Control IDs
|
|||||||
- ``V4L2_SCENE_MODE_BACKLIGHT``
|
- ``V4L2_SCENE_MODE_BACKLIGHT``
|
||||||
|
|
||||||
- Backlight. Compensates for dark shadows when light is coming from
|
- Backlight. Compensates for dark shadows when light is coming from
|
||||||
behind a subject, also by automatically turning on the flash.
|
behind a subject, also by automatically turning on the flash.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_BEACH_SNOW``
|
- ``V4L2_SCENE_MODE_BEACH_SNOW``
|
||||||
|
|
||||||
- Beach and snow. This mode compensates for all-white or bright
|
- Beach and snow. This mode compensates for all-white or bright
|
||||||
scenes, which tend to look gray and low contrast, when camera's
|
scenes, which tend to look gray and low contrast, when camera's
|
||||||
automatic exposure is based on an average scene brightness. To
|
automatic exposure is based on an average scene brightness. To
|
||||||
compensate, this mode automatically slightly overexposes the
|
compensate, this mode automatically slightly overexposes the
|
||||||
frames. The white balance may also be adjusted to compensate for
|
frames. The white balance may also be adjusted to compensate for
|
||||||
the fact that reflected snow looks bluish rather than white.
|
the fact that reflected snow looks bluish rather than white.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_CANDLELIGHT``
|
- ``V4L2_SCENE_MODE_CANDLELIGHT``
|
||||||
|
|
||||||
- Candle light. The camera generally raises the ISO sensitivity and
|
- Candle light. The camera generally raises the ISO sensitivity and
|
||||||
lowers the shutter speed. This mode compensates for relatively
|
lowers the shutter speed. This mode compensates for relatively
|
||||||
close subject in the scene. The flash is disabled in order to
|
close subject in the scene. The flash is disabled in order to
|
||||||
preserve the ambiance of the light.
|
preserve the ambiance of the light.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_DAWN_DUSK``
|
- ``V4L2_SCENE_MODE_DAWN_DUSK``
|
||||||
|
|
||||||
- Dawn and dusk. Preserves the colors seen in low natural light
|
- Dawn and dusk. Preserves the colors seen in low natural light
|
||||||
before dusk and after down. The camera may turn off the flash, and
|
before dusk and after down. The camera may turn off the flash, and
|
||||||
automatically focus at infinity. It will usually boost saturation
|
automatically focus at infinity. It will usually boost saturation
|
||||||
and lower the shutter speed.
|
and lower the shutter speed.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_FALL_COLORS``
|
- ``V4L2_SCENE_MODE_FALL_COLORS``
|
||||||
|
|
||||||
- Fall colors. Increases saturation and adjusts white balance for
|
- Fall colors. Increases saturation and adjusts white balance for
|
||||||
color enhancement. Pictures of autumn leaves get saturated reds
|
color enhancement. Pictures of autumn leaves get saturated reds
|
||||||
and yellows.
|
and yellows.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_FIREWORKS``
|
- ``V4L2_SCENE_MODE_FIREWORKS``
|
||||||
|
|
||||||
- Fireworks. Long exposure times are used to capture the expanding
|
- Fireworks. Long exposure times are used to capture the expanding
|
||||||
burst of light from a firework. The camera may invoke image
|
burst of light from a firework. The camera may invoke image
|
||||||
stabilization.
|
stabilization.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_LANDSCAPE``
|
- ``V4L2_SCENE_MODE_LANDSCAPE``
|
||||||
|
|
||||||
- Landscape. The camera may choose a small aperture to provide deep
|
- Landscape. The camera may choose a small aperture to provide deep
|
||||||
depth of field and long exposure duration to help capture detail
|
depth of field and long exposure duration to help capture detail
|
||||||
in dim light conditions. The focus is fixed at infinity. Suitable
|
in dim light conditions. The focus is fixed at infinity. Suitable
|
||||||
for distant and wide scenery.
|
for distant and wide scenery.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_NIGHT``
|
- ``V4L2_SCENE_MODE_NIGHT``
|
||||||
|
|
||||||
- Night, also known as Night Landscape. Designed for low light
|
- Night, also known as Night Landscape. Designed for low light
|
||||||
conditions, it preserves detail in the dark areas without blowing
|
conditions, it preserves detail in the dark areas without blowing
|
||||||
out bright objects. The camera generally sets itself to a
|
out bright objects. The camera generally sets itself to a
|
||||||
medium-to-high ISO sensitivity, with a relatively long exposure
|
medium-to-high ISO sensitivity, with a relatively long exposure
|
||||||
time, and turns flash off. As such, there will be increased image
|
time, and turns flash off. As such, there will be increased image
|
||||||
noise and the possibility of blurred image.
|
noise and the possibility of blurred image.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_PARTY_INDOOR``
|
- ``V4L2_SCENE_MODE_PARTY_INDOOR``
|
||||||
|
|
||||||
- Party and indoor. Designed to capture indoor scenes that are lit
|
- Party and indoor. Designed to capture indoor scenes that are lit
|
||||||
by indoor background lighting as well as the flash. The camera
|
by indoor background lighting as well as the flash. The camera
|
||||||
usually increases ISO sensitivity, and adjusts exposure for the
|
usually increases ISO sensitivity, and adjusts exposure for the
|
||||||
low light conditions.
|
low light conditions.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_PORTRAIT``
|
- ``V4L2_SCENE_MODE_PORTRAIT``
|
||||||
|
|
||||||
- Portrait. The camera adjusts the aperture so that the depth of
|
- Portrait. The camera adjusts the aperture so that the depth of
|
||||||
field is reduced, which helps to isolate the subject against a
|
field is reduced, which helps to isolate the subject against a
|
||||||
smooth background. Most cameras recognize the presence of faces in
|
smooth background. Most cameras recognize the presence of faces in
|
||||||
the scene and focus on them. The color hue is adjusted to enhance
|
the scene and focus on them. The color hue is adjusted to enhance
|
||||||
skin tones. The intensity of the flash is often reduced.
|
skin tones. The intensity of the flash is often reduced.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_SPORTS``
|
- ``V4L2_SCENE_MODE_SPORTS``
|
||||||
|
|
||||||
- Sports. Significantly increases ISO and uses a fast shutter speed
|
- Sports. Significantly increases ISO and uses a fast shutter speed
|
||||||
to freeze motion of rapidly-moving subjects. Increased image noise
|
to freeze motion of rapidly-moving subjects. Increased image noise
|
||||||
may be seen in this mode.
|
may be seen in this mode.
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_SUNSET``
|
- ``V4L2_SCENE_MODE_SUNSET``
|
||||||
|
|
||||||
- Sunset. Preserves deep hues seen in sunsets and sunrises. It bumps
|
- Sunset. Preserves deep hues seen in sunsets and sunrises. It bumps
|
||||||
up the saturation.
|
up the saturation.
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
- ``V4L2_SCENE_MODE_TEXT``
|
- ``V4L2_SCENE_MODE_TEXT``
|
||||||
|
|
||||||
- Text. It applies extra contrast and sharpness, it is typically a
|
- Text. It applies extra contrast and sharpness, it is typically a
|
||||||
black-and-white mode optimized for readability. Automatic focus
|
black-and-white mode optimized for readability. Automatic focus
|
||||||
may be switched to close-up mode and this setting may also involve
|
may be switched to close-up mode and this setting may also involve
|
||||||
some lens-distortion correction.
|
some lens-distortion correction.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3715,15 +3715,15 @@ Flash Control IDs
|
|||||||
- ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
|
- ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
|
||||||
|
|
||||||
- The flash strobe is triggered by using the
|
- The flash strobe is triggered by using the
|
||||||
V4L2_CID_FLASH_STROBE control.
|
V4L2_CID_FLASH_STROBE control.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``
|
- ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``
|
||||||
|
|
||||||
- The flash strobe is triggered by an external source. Typically
|
- The flash strobe is triggered by an external source. Typically
|
||||||
this is a sensor, which makes it possible to synchronises the
|
this is a sensor, which makes it possible to synchronises the
|
||||||
flash strobe start to exposure start.
|
flash strobe start to exposure start.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -3782,15 +3782,15 @@ Flash Control IDs
|
|||||||
- ``V4L2_FLASH_FAULT_OVER_VOLTAGE``
|
- ``V4L2_FLASH_FAULT_OVER_VOLTAGE``
|
||||||
|
|
||||||
- Flash controller voltage to the flash LED has exceeded the limit
|
- Flash controller voltage to the flash LED has exceeded the limit
|
||||||
specific to the flash controller.
|
specific to the flash controller.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_FLASH_FAULT_TIMEOUT``
|
- ``V4L2_FLASH_FAULT_TIMEOUT``
|
||||||
|
|
||||||
- The flash strobe was still on when the timeout set by the user ---
|
- The flash strobe was still on when the timeout set by the user ---
|
||||||
V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
|
V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
|
||||||
controllers may set this in all such conditions.
|
controllers may set this in all such conditions.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -3803,36 +3803,36 @@ Flash Control IDs
|
|||||||
- ``V4L2_FLASH_FAULT_SHORT_CIRCUIT``
|
- ``V4L2_FLASH_FAULT_SHORT_CIRCUIT``
|
||||||
|
|
||||||
- The short circuit protection of the flash controller has been
|
- The short circuit protection of the flash controller has been
|
||||||
triggered.
|
triggered.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_FLASH_FAULT_OVER_CURRENT``
|
- ``V4L2_FLASH_FAULT_OVER_CURRENT``
|
||||||
|
|
||||||
- Current in the LED power supply has exceeded the limit specific to
|
- Current in the LED power supply has exceeded the limit specific to
|
||||||
the flash controller.
|
the flash controller.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``V4L2_FLASH_FAULT_INDICATOR``
|
- ``V4L2_FLASH_FAULT_INDICATOR``
|
||||||
|
|
||||||
- The flash controller has detected a short or open circuit
|
- The flash controller has detected a short or open circuit
|
||||||
condition on the indicator LED.
|
condition on the indicator LED.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``V4L2_FLASH_FAULT_UNDER_VOLTAGE``
|
- ``V4L2_FLASH_FAULT_UNDER_VOLTAGE``
|
||||||
|
|
||||||
- Flash controller voltage to the flash LED has been below the
|
- Flash controller voltage to the flash LED has been below the
|
||||||
minimum limit specific to the flash controller.
|
minimum limit specific to the flash controller.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``V4L2_FLASH_FAULT_INPUT_VOLTAGE``
|
- ``V4L2_FLASH_FAULT_INPUT_VOLTAGE``
|
||||||
|
|
||||||
- The input voltage of the flash controller is below the limit under
|
- The input voltage of the flash controller is below the limit under
|
||||||
which strobing the flash at full current will not be possible.The
|
which strobing the flash at full current will not be possible.The
|
||||||
condition persists until this flag is no longer set.
|
condition persists until this flag is no longer set.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -4193,15 +4193,15 @@ Digital Video Control IDs
|
|||||||
- ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS``
|
- ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS``
|
||||||
|
|
||||||
- Graphics content. Pixel data should be passed unfiltered and
|
- Graphics content. Pixel data should be passed unfiltered and
|
||||||
without analog reconstruction.
|
without analog reconstruction.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_DV_IT_CONTENT_TYPE_PHOTO``
|
- ``V4L2_DV_IT_CONTENT_TYPE_PHOTO``
|
||||||
|
|
||||||
- Photo content. The content is derived from digital still pictures.
|
- Photo content. The content is derived from digital still pictures.
|
||||||
The content should be passed through with minimal scaling and
|
The content should be passed through with minimal scaling and
|
||||||
picture enhancements.
|
picture enhancements.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -4220,7 +4220,7 @@ Digital Video Control IDs
|
|||||||
- ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC``
|
- ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC``
|
||||||
|
|
||||||
- No IT Content information is available and the ITC bit in the AVI
|
- No IT Content information is available and the ITC bit in the AVI
|
||||||
InfoFrame is set to 0.
|
InfoFrame is set to 0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -4399,19 +4399,19 @@ Detect Control IDs
|
|||||||
- ``V4L2_DETECT_MD_MODE_THRESHOLD_GRID``
|
- ``V4L2_DETECT_MD_MODE_THRESHOLD_GRID``
|
||||||
|
|
||||||
- The image is divided into a grid, each cell with its own motion
|
- The image is divided into a grid, each cell with its own motion
|
||||||
detection threshold. These thresholds are set through the
|
detection threshold. These thresholds are set through the
|
||||||
``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control.
|
``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_DETECT_MD_MODE_REGION_GRID``
|
- ``V4L2_DETECT_MD_MODE_REGION_GRID``
|
||||||
|
|
||||||
- The image is divided into a grid, each cell with its own region
|
- The image is divided into a grid, each cell with its own region
|
||||||
value that specifies which per-region motion detection thresholds
|
value that specifies which per-region motion detection thresholds
|
||||||
should be used. Each region has its own thresholds. How these
|
should be used. Each region has its own thresholds. How these
|
||||||
per-region thresholds are set up is driver-specific. The region
|
per-region thresholds are set up is driver-specific. The region
|
||||||
values for the grid are set through the
|
values for the grid are set through the
|
||||||
``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control.
|
``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,16 +67,16 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Applications request this field order when any one of the
|
- Applications request this field order when any one of the
|
||||||
``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or
|
``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or
|
||||||
``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose
|
``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose
|
||||||
depending on hardware capabilities or e. g. the requested image
|
depending on hardware capabilities or e. g. the requested image
|
||||||
size, and return the actual field order. Drivers must never return
|
size, and return the actual field order. Drivers must never return
|
||||||
``V4L2_FIELD_ANY``. If multiple field orders are possible the
|
``V4L2_FIELD_ANY``. If multiple field orders are possible the
|
||||||
driver must choose one of the possible field orders during
|
driver must choose one of the possible field orders during
|
||||||
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
|
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
|
||||||
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct
|
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be
|
:ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be
|
||||||
``V4L2_FIELD_ANY``.
|
``V4L2_FIELD_ANY``.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -85,8 +85,8 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Images are in progressive format, not interlaced. The driver may
|
- Images are in progressive format, not interlaced. The driver may
|
||||||
also indicate this order when it cannot distinguish between
|
also indicate this order when it cannot distinguish between
|
||||||
``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``.
|
``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -103,9 +103,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 3
|
- 3
|
||||||
|
|
||||||
- Images consist of the bottom (aka even) field only. Applications
|
- Images consist of the bottom (aka even) field only. Applications
|
||||||
may wish to prevent a device from capturing interlaced images
|
may wish to prevent a device from capturing interlaced images
|
||||||
because they will have "comb" or "feathering" artefacts around
|
because they will have "comb" or "feathering" artefacts around
|
||||||
moving objects.
|
moving objects.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -114,10 +114,10 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 4
|
- 4
|
||||||
|
|
||||||
- Images contain both fields, interleaved line by line. The temporal
|
- Images contain both fields, interleaved line by line. The temporal
|
||||||
order of the fields (whether the top or bottom field is first
|
order of the fields (whether the top or bottom field is first
|
||||||
transmitted) depends on the current video standard. M/NTSC
|
transmitted) depends on the current video standard. M/NTSC
|
||||||
transmits the bottom field first, all other standards the top
|
transmits the bottom field first, all other standards the top
|
||||||
field first.
|
field first.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -126,9 +126,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 5
|
- 5
|
||||||
|
|
||||||
- Images contain both fields, the top field lines are stored first
|
- Images contain both fields, the top field lines are stored first
|
||||||
in memory, immediately followed by the bottom field lines. Fields
|
in memory, immediately followed by the bottom field lines. Fields
|
||||||
are always stored in temporal order, the older one first in
|
are always stored in temporal order, the older one first in
|
||||||
memory. Image sizes refer to the frame, not fields.
|
memory. Image sizes refer to the frame, not fields.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -137,9 +137,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 6
|
- 6
|
||||||
|
|
||||||
- Images contain both fields, the bottom field lines are stored
|
- Images contain both fields, the bottom field lines are stored
|
||||||
first in memory, immediately followed by the top field lines.
|
first in memory, immediately followed by the top field lines.
|
||||||
Fields are always stored in temporal order, the older one first in
|
Fields are always stored in temporal order, the older one first in
|
||||||
memory. Image sizes refer to the frame, not fields.
|
memory. Image sizes refer to the frame, not fields.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -148,18 +148,18 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 7
|
- 7
|
||||||
|
|
||||||
- The two fields of a frame are passed in separate buffers, in
|
- The two fields of a frame are passed in separate buffers, in
|
||||||
temporal order, i. e. the older one first. To indicate the field
|
temporal order, i. e. the older one first. To indicate the field
|
||||||
parity (whether the current field is a top or bottom field) the
|
parity (whether the current field is a top or bottom field) the
|
||||||
driver or application, depending on data direction, must set
|
driver or application, depending on data direction, must set
|
||||||
struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to
|
struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to
|
||||||
``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive
|
``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive
|
||||||
fields pair to build a frame. If fields are successive, without
|
fields pair to build a frame. If fields are successive, without
|
||||||
any dropped fields between them (fields can drop individually),
|
any dropped fields between them (fields can drop individually),
|
||||||
can be determined from the struct
|
can be determined from the struct
|
||||||
:ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This
|
:ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This
|
||||||
format cannot be selected when using the read/write I/O method
|
format cannot be selected when using the read/write I/O method
|
||||||
since there is no way to communicate if a field was a top or
|
since there is no way to communicate if a field was a top or
|
||||||
bottom field.
|
bottom field.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -168,7 +168,7 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 8
|
- 8
|
||||||
|
|
||||||
- Images contain both fields, interleaved line by line, top field
|
- Images contain both fields, interleaved line by line, top field
|
||||||
first. The top field is transmitted first.
|
first. The top field is transmitted first.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -177,7 +177,7 @@ should have the value ``V4L2_FIELD_ANY`` (0).
|
|||||||
- 9
|
- 9
|
||||||
|
|
||||||
- Images contain both fields, interleaved line by line, top field
|
- Images contain both fields, interleaved line by line, top field
|
||||||
first. The bottom field is transmitted first.
|
first. The bottom field is transmitted first.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -444,93 +444,93 @@ This unnamed version was finally merged into Linux 2.5.46.
|
|||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
.. flat-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
- Old defines
|
- Old defines
|
||||||
|
|
||||||
- enum :ref:`v4l2_buf_type <v4l2-buf-type>`
|
- enum :ref:`v4l2_buf_type <v4l2-buf-type>`
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_CAPTURE``
|
- ``V4L2_BUF_TYPE_CAPTURE``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VIDEO_CAPTURE``
|
- ``V4L2_BUF_TYPE_VIDEO_CAPTURE``
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_CODECIN``
|
- ``V4L2_BUF_TYPE_CODECIN``
|
||||||
|
|
||||||
- Omitted for now
|
- Omitted for now
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_CODECOUT``
|
- ``V4L2_BUF_TYPE_CODECOUT``
|
||||||
|
|
||||||
- Omitted for now
|
- Omitted for now
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_EFFECTSIN``
|
- ``V4L2_BUF_TYPE_EFFECTSIN``
|
||||||
|
|
||||||
- Omitted for now
|
- Omitted for now
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_EFFECTSIN2``
|
- ``V4L2_BUF_TYPE_EFFECTSIN2``
|
||||||
|
|
||||||
- Omitted for now
|
- Omitted for now
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_EFFECTSOUT``
|
- ``V4L2_BUF_TYPE_EFFECTSOUT``
|
||||||
|
|
||||||
- Omitted for now
|
- Omitted for now
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VIDEOOUT``
|
- ``V4L2_BUF_TYPE_VIDEOOUT``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
|
- ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VIDEO_OVERLAY``
|
- ``V4L2_BUF_TYPE_VIDEO_OVERLAY``
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VBI_CAPTURE``
|
- ``V4L2_BUF_TYPE_VBI_CAPTURE``
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_VBI_OUTPUT``
|
- ``V4L2_BUF_TYPE_VBI_OUTPUT``
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE``
|
- ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE``
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``
|
- ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_PRIVATE_BASE``
|
- ``V4L2_BUF_TYPE_PRIVATE_BASE``
|
||||||
|
|
||||||
- ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated)
|
- ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated)
|
||||||
|
|
||||||
|
|
||||||
10. In struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` a enum
|
10. In struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` a enum
|
||||||
@ -561,57 +561,57 @@ This unnamed version was finally merged into Linux 2.5.46.
|
|||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
.. flat-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
- Old flag
|
- Old flag
|
||||||
|
|
||||||
- enum :ref:`v4l2_field <v4l2-field>`
|
- enum :ref:`v4l2_field <v4l2-field>`
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_FMT_FLAG_NOT_INTERLACED``
|
- ``V4L2_FMT_FLAG_NOT_INTERLACED``
|
||||||
|
|
||||||
- ?
|
- ?
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_FMT_FLAG_INTERLACED`` = ``V4L2_FMT_FLAG_COMBINED``
|
- ``V4L2_FMT_FLAG_INTERLACED`` = ``V4L2_FMT_FLAG_COMBINED``
|
||||||
|
|
||||||
- ``V4L2_FIELD_INTERLACED``
|
- ``V4L2_FIELD_INTERLACED``
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L2_FMT_FLAG_ODDFIELD``
|
- ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L2_FMT_FLAG_ODDFIELD``
|
||||||
|
|
||||||
- ``V4L2_FIELD_TOP``
|
- ``V4L2_FIELD_TOP``
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L2_FMT_FLAG_EVENFIELD``
|
- ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L2_FMT_FLAG_EVENFIELD``
|
||||||
|
|
||||||
- ``V4L2_FIELD_BOTTOM``
|
- ``V4L2_FIELD_BOTTOM``
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_FIELD_SEQ_TB``
|
- ``V4L2_FIELD_SEQ_TB``
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_FIELD_SEQ_BT``
|
- ``V4L2_FIELD_SEQ_BT``
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
- ``-``
|
- ``-``
|
||||||
|
|
||||||
- ``V4L2_FIELD_ALTERNATE``
|
- ``V4L2_FIELD_ALTERNATE``
|
||||||
|
|
||||||
|
|
||||||
The color space flags were replaced by a enum
|
The color space flags were replaced by a enum
|
||||||
@ -771,43 +771,43 @@ V4L2 2003-11-05
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
- Symbol
|
- Symbol
|
||||||
|
|
||||||
- In this document prior to revision 0.5
|
- In this document prior to revision 0.5
|
||||||
|
|
||||||
- Corrected
|
- Corrected
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_RGB24``
|
- ``V4L2_PIX_FMT_RGB24``
|
||||||
|
|
||||||
- B, G, R
|
- B, G, R
|
||||||
|
|
||||||
- R, G, B
|
- R, G, B
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGR24``
|
- ``V4L2_PIX_FMT_BGR24``
|
||||||
|
|
||||||
- R, G, B
|
- R, G, B
|
||||||
|
|
||||||
- B, G, R
|
- B, G, R
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_RGB32``
|
- ``V4L2_PIX_FMT_RGB32``
|
||||||
|
|
||||||
- B, G, R, X
|
- B, G, R, X
|
||||||
|
|
||||||
- R, G, B, X
|
- R, G, B, X
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_BGR32``
|
- ``V4L2_PIX_FMT_BGR32``
|
||||||
|
|
||||||
- R, G, B, X
|
- R, G, B, X
|
||||||
|
|
||||||
- B, G, R, X
|
- B, G, R, X
|
||||||
|
|
||||||
|
|
||||||
The ``V4L2_PIX_FMT_BGR24`` example was always correct.
|
The ``V4L2_PIX_FMT_BGR24`` example was always correct.
|
||||||
@ -1411,7 +1411,7 @@ lines:
|
|||||||
::
|
::
|
||||||
|
|
||||||
Section "Module"
|
Section "Module"
|
||||||
Load "v4l"
|
Load "v4l"
|
||||||
EndSection
|
EndSection
|
||||||
|
|
||||||
As of XFree86 4.2 this driver still supports only V4L ioctls, however it
|
As of XFree86 4.2 this driver still supports only V4L ioctls, however it
|
||||||
|
@ -28,20 +28,20 @@ Single-planar format structure
|
|||||||
- ``height``
|
- ``height``
|
||||||
|
|
||||||
- Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``,
|
- Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``,
|
||||||
``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
|
``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
|
||||||
refers to the number of lines in the field, otherwise it refers to
|
refers to the number of lines in the field, otherwise it refers to
|
||||||
the number of lines in the frame (which is twice the field height
|
the number of lines in the frame (which is twice the field height
|
||||||
for interlaced formats).
|
for interlaced formats).
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- :cspan:`2` Applications set these fields to request an image
|
- :cspan:`2` Applications set these fields to request an image
|
||||||
size, drivers return the closest possible values. In case of
|
size, drivers return the closest possible values. In case of
|
||||||
planar formats the ``width`` and ``height`` applies to the largest
|
planar formats the ``width`` and ``height`` applies to the largest
|
||||||
plane. To avoid ambiguities drivers must return values rounded up
|
plane. To avoid ambiguities drivers must return values rounded up
|
||||||
to a multiple of the scale factor of any smaller planes. For
|
to a multiple of the scale factor of any smaller planes. For
|
||||||
example when the image format is YUV 4:2:0, ``width`` and
|
example when the image format is YUV 4:2:0, ``width`` and
|
||||||
``height`` must be multiples of two.
|
``height`` must be multiples of two.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -50,11 +50,11 @@ Single-planar format structure
|
|||||||
- ``pixelformat``
|
- ``pixelformat``
|
||||||
|
|
||||||
- The pixel format or type of compression, set by the application.
|
- The pixel format or type of compression, set by the application.
|
||||||
This is a little endian
|
This is a little endian
|
||||||
:ref:`four character code <v4l2-fourcc>`. V4L2 defines standard
|
:ref:`four character code <v4l2-fourcc>`. V4L2 defines standard
|
||||||
RGB formats in :ref:`rgb-formats`, YUV formats in
|
RGB formats in :ref:`rgb-formats`, YUV formats in
|
||||||
:ref:`yuv-formats`, and reserved codes in
|
:ref:`yuv-formats`, and reserved codes in
|
||||||
:ref:`reserved-formats`
|
:ref:`reserved-formats`
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -63,10 +63,10 @@ Single-planar format structure
|
|||||||
- ``field``
|
- ``field``
|
||||||
|
|
||||||
- Video images are typically interlaced. Applications can request to
|
- Video images are typically interlaced. Applications can request to
|
||||||
capture or output only the top or bottom field, or both fields
|
capture or output only the top or bottom field, or both fields
|
||||||
interlaced or sequentially stored in one buffer or alternating in
|
interlaced or sequentially stored in one buffer or alternating in
|
||||||
separate buffers. Drivers return the actual field order selected.
|
separate buffers. Drivers return the actual field order selected.
|
||||||
For more details on fields see :ref:`field-order`.
|
For more details on fields see :ref:`field-order`.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -75,35 +75,35 @@ Single-planar format structure
|
|||||||
- ``bytesperline``
|
- ``bytesperline``
|
||||||
|
|
||||||
- Distance in bytes between the leftmost pixels in two adjacent
|
- Distance in bytes between the leftmost pixels in two adjacent
|
||||||
lines.
|
lines.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
- :cspan:`2`
|
- :cspan:`2`
|
||||||
|
|
||||||
Both applications and drivers can set this field to request
|
Both applications and drivers can set this field to request
|
||||||
padding bytes at the end of each line. Drivers however may ignore
|
padding bytes at the end of each line. Drivers however may ignore
|
||||||
the value requested by the application, returning ``width`` times
|
the value requested by the application, returning ``width`` times
|
||||||
bytes per pixel or a larger value required by the hardware. That
|
bytes per pixel or a larger value required by the hardware. That
|
||||||
implies applications can just set this field to zero to get a
|
implies applications can just set this field to zero to get a
|
||||||
reasonable default.
|
reasonable default.
|
||||||
|
|
||||||
Video hardware may access padding bytes, therefore they must
|
Video hardware may access padding bytes, therefore they must
|
||||||
reside in accessible memory. Consider cases where padding bytes
|
reside in accessible memory. Consider cases where padding bytes
|
||||||
after the last line of an image cross a system page boundary.
|
after the last line of an image cross a system page boundary.
|
||||||
Input devices may write padding bytes, the value is undefined.
|
Input devices may write padding bytes, the value is undefined.
|
||||||
Output devices ignore the contents of padding bytes.
|
Output devices ignore the contents of padding bytes.
|
||||||
|
|
||||||
When the image format is planar the ``bytesperline`` value applies
|
When the image format is planar the ``bytesperline`` value applies
|
||||||
to the first plane and is divided by the same factor as the
|
to the first plane and is divided by the same factor as the
|
||||||
``width`` field for the other planes. For example the Cb and Cr
|
``width`` field for the other planes. For example the Cb and Cr
|
||||||
planes of a YUV 4:2:0 image have half as many padding bytes
|
planes of a YUV 4:2:0 image have half as many padding bytes
|
||||||
following each line as the Y plane. To avoid ambiguities drivers
|
following each line as the Y plane. To avoid ambiguities drivers
|
||||||
must return a ``bytesperline`` value rounded up to a multiple of
|
must return a ``bytesperline`` value rounded up to a multiple of
|
||||||
the scale factor.
|
the scale factor.
|
||||||
|
|
||||||
For compressed formats the ``bytesperline`` value makes no sense.
|
For compressed formats the ``bytesperline`` value makes no sense.
|
||||||
Applications and drivers must set this to 0 in that case.
|
Applications and drivers must set this to 0 in that case.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -112,9 +112,9 @@ Single-planar format structure
|
|||||||
- ``sizeimage``
|
- ``sizeimage``
|
||||||
|
|
||||||
- Size in bytes of the buffer to hold a complete image, set by the
|
- Size in bytes of the buffer to hold a complete image, set by the
|
||||||
driver. Usually this is ``bytesperline`` times ``height``. When
|
driver. Usually this is ``bytesperline`` times ``height``. When
|
||||||
the image consists of variable length compressed data this is the
|
the image consists of variable length compressed data this is the
|
||||||
maximum number of bytes required to hold an image.
|
maximum number of bytes required to hold an image.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -123,8 +123,8 @@ Single-planar format structure
|
|||||||
- ``colorspace``
|
- ``colorspace``
|
||||||
|
|
||||||
- This information supplements the ``pixelformat`` and must be set
|
- This information supplements the ``pixelformat`` and must be set
|
||||||
by the driver for capture streams and by the application for
|
by the driver for capture streams and by the application for
|
||||||
output streams, see :ref:`colorspaces`.
|
output streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -133,29 +133,29 @@ Single-planar format structure
|
|||||||
- ``priv``
|
- ``priv``
|
||||||
|
|
||||||
- This field indicates whether the remaining fields of the
|
- This field indicates whether the remaining fields of the
|
||||||
:ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the
|
:ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the
|
||||||
extended fields, are valid. When set to
|
extended fields, are valid. When set to
|
||||||
``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields
|
``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields
|
||||||
have been correctly initialized. When set to any other value it
|
have been correctly initialized. When set to any other value it
|
||||||
indicates that the extended fields contain undefined values.
|
indicates that the extended fields contain undefined values.
|
||||||
|
|
||||||
Applications that wish to use the pixel format extended fields
|
Applications that wish to use the pixel format extended fields
|
||||||
must first ensure that the feature is supported by querying the
|
must first ensure that the feature is supported by querying the
|
||||||
device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>`
|
device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>`
|
||||||
capability. If the capability isn't set the pixel format extended
|
capability. If the capability isn't set the pixel format extended
|
||||||
fields are not supported and using the extended fields will lead
|
fields are not supported and using the extended fields will lead
|
||||||
to undefined results.
|
to undefined results.
|
||||||
|
|
||||||
To use the extended fields, applications must set the ``priv``
|
To use the extended fields, applications must set the ``priv``
|
||||||
field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended
|
field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended
|
||||||
fields and zero the unused bytes of the
|
fields and zero the unused bytes of the
|
||||||
:ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field.
|
:ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field.
|
||||||
|
|
||||||
When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC``
|
When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC``
|
||||||
drivers must act as if all the extended fields were set to zero.
|
drivers must act as if all the extended fields were set to zero.
|
||||||
On return drivers must set the ``priv`` field to
|
On return drivers must set the ``priv`` field to
|
||||||
``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to
|
``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to
|
||||||
applicable values.
|
applicable values.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -172,8 +172,8 @@ Single-planar format structure
|
|||||||
- ``ycbcr_enc``
|
- ``ycbcr_enc``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
@ -182,8 +182,8 @@ Single-planar format structure
|
|||||||
- ``quantization``
|
- ``quantization``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 14
|
- .. row 14
|
||||||
|
|
||||||
@ -192,5 +192,5 @@ Single-planar format structure
|
|||||||
- ``xfer_func``
|
- ``xfer_func``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
@ -35,7 +35,7 @@ describing all planes of that format.
|
|||||||
- ``bytesperline``
|
- ``bytesperline``
|
||||||
|
|
||||||
- Distance in bytes between the leftmost pixels in two adjacent
|
- Distance in bytes between the leftmost pixels in two adjacent
|
||||||
lines. See struct :ref:`v4l2_pix_format <v4l2-pix-format>`.
|
lines. See struct :ref:`v4l2_pix_format <v4l2-pix-format>`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ describing all planes of that format.
|
|||||||
- ``reserved[6]``
|
- ``reserved[6]``
|
||||||
|
|
||||||
- Reserved for future extensions. Should be zeroed by drivers and
|
- Reserved for future extensions. Should be zeroed by drivers and
|
||||||
applications.
|
applications.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ describing all planes of that format.
|
|||||||
- ``width``
|
- ``width``
|
||||||
|
|
||||||
- Image width in pixels. See struct
|
- Image width in pixels. See struct
|
||||||
:ref:`v4l2_pix_format <v4l2-pix-format>`.
|
:ref:`v4l2_pix_format <v4l2-pix-format>`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ describing all planes of that format.
|
|||||||
- ``height``
|
- ``height``
|
||||||
|
|
||||||
- Image height in pixels. See struct
|
- Image height in pixels. See struct
|
||||||
:ref:`v4l2_pix_format <v4l2-pix-format>`.
|
:ref:`v4l2_pix_format <v4l2-pix-format>`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ describing all planes of that format.
|
|||||||
- ``pixelformat``
|
- ``pixelformat``
|
||||||
|
|
||||||
- The pixel format. Both single- and multi-planar four character
|
- The pixel format. Both single- and multi-planar four character
|
||||||
codes can be used.
|
codes can be used.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -106,8 +106,8 @@ describing all planes of that format.
|
|||||||
- ``plane_fmt[VIDEO_MAX_PLANES]``
|
- ``plane_fmt[VIDEO_MAX_PLANES]``
|
||||||
|
|
||||||
- An array of structures describing format of each plane this pixel
|
- An array of structures describing format of each plane this pixel
|
||||||
format consists of. The number of valid entries in this array has
|
format consists of. The number of valid entries in this array has
|
||||||
to be put in the ``num_planes`` field.
|
to be put in the ``num_planes`` field.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ describing all planes of that format.
|
|||||||
- ``num_planes``
|
- ``num_planes``
|
||||||
|
|
||||||
- Number of planes (i.e. separate memory buffers) for this format
|
- Number of planes (i.e. separate memory buffers) for this format
|
||||||
and the number of valid entries in the ``plane_fmt`` array.
|
and the number of valid entries in the ``plane_fmt`` array.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -133,8 +133,8 @@ describing all planes of that format.
|
|||||||
- ``ycbcr_enc``
|
- ``ycbcr_enc``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -143,8 +143,8 @@ describing all planes of that format.
|
|||||||
- ``quantization``
|
- ``quantization``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -153,8 +153,8 @@ describing all planes of that format.
|
|||||||
- ``xfer_func``
|
- ``xfer_func``
|
||||||
|
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
@ -163,4 +163,4 @@ describing all planes of that format.
|
|||||||
- ``reserved[7]``
|
- ``reserved[7]``
|
||||||
|
|
||||||
- Reserved for future extensions. Should be zeroed by drivers and
|
- Reserved for future extensions. Should be zeroed by drivers and
|
||||||
applications.
|
applications.
|
||||||
|
@ -40,7 +40,7 @@ R'G'B' quantization.
|
|||||||
- ``V4L2_COLORSPACE_DEFAULT``
|
- ``V4L2_COLORSPACE_DEFAULT``
|
||||||
|
|
||||||
- The default colorspace. This can be used by applications to let
|
- The default colorspace. This can be used by applications to let
|
||||||
the driver fill in the colorspace.
|
the driver fill in the colorspace.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -107,10 +107,10 @@ R'G'B' quantization.
|
|||||||
- ``V4L2_COLORSPACE_RAW``
|
- ``V4L2_COLORSPACE_RAW``
|
||||||
|
|
||||||
- The raw colorspace. This is used for raw image capture where the
|
- The raw colorspace. This is used for raw image capture where the
|
||||||
image is minimally processed and is using the internal colorspace
|
image is minimally processed and is using the internal colorspace
|
||||||
of the device. The software that processes an image using this
|
of the device. The software that processes an image using this
|
||||||
'colorspace' will have to know the internals of the capture
|
'colorspace' will have to know the internals of the capture
|
||||||
device.
|
device.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -258,23 +258,23 @@ R'G'B' quantization.
|
|||||||
- ``V4L2_QUANTIZATION_DEFAULT``
|
- ``V4L2_QUANTIZATION_DEFAULT``
|
||||||
|
|
||||||
- Use the default quantization encoding as defined by the
|
- Use the default quantization encoding as defined by the
|
||||||
colorspace. This is always full range for R'G'B' (except for the
|
colorspace. This is always full range for R'G'B' (except for the
|
||||||
BT.2020 colorspace) and usually limited range for Y'CbCr.
|
BT.2020 colorspace) and usually limited range for Y'CbCr.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- ``V4L2_QUANTIZATION_FULL_RANGE``
|
- ``V4L2_QUANTIZATION_FULL_RANGE``
|
||||||
|
|
||||||
- Use the full range quantization encoding. I.e. the range [0…1] is
|
- Use the full range quantization encoding. I.e. the range [0…1] is
|
||||||
mapped to [0…255] (with possible clipping to [1…254] to avoid the
|
mapped to [0…255] (with possible clipping to [1…254] to avoid the
|
||||||
0x00 and 0xff values). Cb and Cr are mapped from [-0.5…0.5] to
|
0x00 and 0xff values). Cb and Cr are mapped from [-0.5…0.5] to
|
||||||
[0…255] (with possible clipping to [1…254] to avoid the 0x00 and
|
[0…255] (with possible clipping to [1…254] to avoid the 0x00 and
|
||||||
0xff values).
|
0xff values).
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- ``V4L2_QUANTIZATION_LIM_RANGE``
|
- ``V4L2_QUANTIZATION_LIM_RANGE``
|
||||||
|
|
||||||
- Use the limited range quantization encoding. I.e. the range [0…1]
|
- Use the limited range quantization encoding. I.e. the range [0…1]
|
||||||
is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to
|
is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to
|
||||||
[16…240].
|
[16…240].
|
||||||
|
@ -28,7 +28,7 @@ Compressed Formats
|
|||||||
- 'JPEG'
|
- 'JPEG'
|
||||||
|
|
||||||
- TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`,
|
- TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`,
|
||||||
:ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`.
|
:ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-MPEG`:
|
- .. _`V4L2-PIX-FMT-MPEG`:
|
||||||
|
|
||||||
@ -37,8 +37,8 @@ Compressed Formats
|
|||||||
- 'MPEG'
|
- 'MPEG'
|
||||||
|
|
||||||
- MPEG multiplexed stream. The actual format is determined by
|
- MPEG multiplexed stream. The actual format is determined by
|
||||||
extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see
|
extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see
|
||||||
:ref:`mpeg-control-id`.
|
:ref:`mpeg-control-id`.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-H264`:
|
- .. _`V4L2-PIX-FMT-H264`:
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@ the palette, this must be done with ioctls of the Linux framebuffer API.
|
|||||||
|
|
||||||
- Code
|
- Code
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 0
|
- :cspan:`7` Byte 0
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Bit
|
- Bit
|
||||||
|
|
||||||
- 7
|
- 7
|
||||||
@ -55,7 +55,7 @@ the palette, this must be done with ioctls of the Linux framebuffer API.
|
|||||||
|
|
||||||
- 'PAL8'
|
- 'PAL8'
|
||||||
|
|
||||||
-
|
-
|
||||||
- i\ :sub:`7`
|
- i\ :sub:`7`
|
||||||
|
|
||||||
- i\ :sub:`6`
|
- i\ :sub:`6`
|
||||||
|
@ -123,15 +123,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -140,25 +140,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -166,17 +166,17 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -184,25 +184,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -210,10 +210,10 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -124,15 +124,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -141,69 +141,69 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
-
|
-
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
-
|
-
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -211,10 +211,10 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -101,7 +101,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -139,15 +139,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -156,25 +156,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -182,17 +182,17 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -200,26 +200,26 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -227,10 +227,10 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -149,15 +149,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -166,25 +166,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -192,29 +192,29 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -222,25 +222,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -248,22 +248,22 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
@ -94,7 +94,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -156,15 +156,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -173,25 +173,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -199,29 +199,29 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -229,25 +229,25 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -255,22 +255,22 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
@ -33,7 +33,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- Code
|
- Code
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 0 in memory
|
- :cspan:`7` Byte 0 in memory
|
||||||
|
|
||||||
- :cspan:`7` Byte 1
|
- :cspan:`7` Byte 1
|
||||||
@ -44,8 +44,8 @@ next to each other in memory.
|
|||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Bit
|
- Bit
|
||||||
|
|
||||||
- 7
|
- 7
|
||||||
@ -64,7 +64,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -81,7 +81,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -98,7 +98,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -121,7 +121,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'RGB1'
|
- 'RGB1'
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
|
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
@ -144,7 +144,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'AR12'
|
- 'AR12'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
@ -161,7 +161,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`3`
|
- a\ :sub:`3`
|
||||||
|
|
||||||
- a\ :sub:`2`
|
- a\ :sub:`2`
|
||||||
@ -184,7 +184,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'XR12'
|
- 'XR12'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
@ -201,7 +201,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- -
|
- -
|
||||||
@ -224,7 +224,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'AR15'
|
- 'AR15'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -241,7 +241,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a
|
- a
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -264,7 +264,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'XR15'
|
- 'XR15'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -281,7 +281,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -304,7 +304,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'RGBP'
|
- 'RGBP'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -321,7 +321,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
|
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
@ -344,7 +344,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'AR15' | (1 << 31)
|
- 'AR15' | (1 << 31)
|
||||||
|
|
||||||
-
|
-
|
||||||
- a
|
- a
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -361,7 +361,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -384,7 +384,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'XR15' | (1 << 31)
|
- 'XR15' | (1 << 31)
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -401,7 +401,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -424,7 +424,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'RGBR'
|
- 'RGBR'
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
|
|
||||||
- r\ :sub:`3`
|
- r\ :sub:`3`
|
||||||
@ -441,7 +441,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -464,7 +464,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'BGR3'
|
- 'BGR3'
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -481,7 +481,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -498,7 +498,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -521,7 +521,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'RGB3'
|
- 'RGB3'
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -538,7 +538,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -555,7 +555,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -578,7 +578,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'BGRH'
|
- 'BGRH'
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`5`
|
- b\ :sub:`5`
|
||||||
|
|
||||||
- b\ :sub:`4`
|
- b\ :sub:`4`
|
||||||
@ -595,7 +595,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`4`
|
- g\ :sub:`4`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
@ -612,7 +612,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`2`
|
- r\ :sub:`2`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`1`
|
- r\ :sub:`1`
|
||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
@ -629,7 +629,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- -
|
- -
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- -
|
- -
|
||||||
@ -652,7 +652,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'AR24'
|
- 'AR24'
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -669,7 +669,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -686,7 +686,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -703,7 +703,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`7`
|
- a\ :sub:`7`
|
||||||
|
|
||||||
- a\ :sub:`6`
|
- a\ :sub:`6`
|
||||||
@ -726,7 +726,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'XR24'
|
- 'XR24'
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -743,7 +743,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -760,7 +760,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -777,7 +777,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- -
|
- -
|
||||||
@ -800,7 +800,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'BA24'
|
- 'BA24'
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`7`
|
- a\ :sub:`7`
|
||||||
|
|
||||||
- a\ :sub:`6`
|
- a\ :sub:`6`
|
||||||
@ -817,7 +817,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- a\ :sub:`0`
|
- a\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -834,7 +834,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -851,7 +851,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -874,7 +874,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- 'BX24'
|
- 'BX24'
|
||||||
|
|
||||||
-
|
-
|
||||||
- -
|
- -
|
||||||
|
|
||||||
- -
|
- -
|
||||||
@ -891,7 +891,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- -
|
- -
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -908,7 +908,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -925,7 +925,7 @@ next to each other in memory.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -1112,7 +1112,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- Code
|
- Code
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 0 in memory
|
- :cspan:`7` Byte 0 in memory
|
||||||
|
|
||||||
- :cspan:`7` Byte 1
|
- :cspan:`7` Byte 1
|
||||||
@ -1123,8 +1123,8 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Bit
|
- Bit
|
||||||
|
|
||||||
- 7
|
- 7
|
||||||
@ -1143,7 +1143,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -1160,7 +1160,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -1177,7 +1177,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -1200,7 +1200,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 'R444'
|
- 'R444'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
@ -1217,7 +1217,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`3`
|
- a\ :sub:`3`
|
||||||
|
|
||||||
- a\ :sub:`2`
|
- a\ :sub:`2`
|
||||||
@ -1240,7 +1240,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 'RGBO'
|
- 'RGBO'
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -1257,7 +1257,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a
|
- a
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -1280,7 +1280,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 'RGBQ'
|
- 'RGBQ'
|
||||||
|
|
||||||
-
|
-
|
||||||
- a
|
- a
|
||||||
|
|
||||||
- r\ :sub:`4`
|
- r\ :sub:`4`
|
||||||
@ -1297,7 +1297,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- g\ :sub:`3`
|
- g\ :sub:`3`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`2`
|
- g\ :sub:`2`
|
||||||
|
|
||||||
- g\ :sub:`1`
|
- g\ :sub:`1`
|
||||||
@ -1320,7 +1320,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 'BGR4'
|
- 'BGR4'
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
@ -1337,7 +1337,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- b\ :sub:`0`
|
- b\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -1354,7 +1354,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -1371,7 +1371,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`7`
|
- a\ :sub:`7`
|
||||||
|
|
||||||
- a\ :sub:`6`
|
- a\ :sub:`6`
|
||||||
@ -1394,7 +1394,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- 'RGB4'
|
- 'RGB4'
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`7`
|
- a\ :sub:`7`
|
||||||
|
|
||||||
- a\ :sub:`6`
|
- a\ :sub:`6`
|
||||||
@ -1411,7 +1411,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- a\ :sub:`0`
|
- a\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- r\ :sub:`7`
|
- r\ :sub:`7`
|
||||||
|
|
||||||
- r\ :sub:`6`
|
- r\ :sub:`6`
|
||||||
@ -1428,7 +1428,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- r\ :sub:`0`
|
- r\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- g\ :sub:`7`
|
- g\ :sub:`7`
|
||||||
|
|
||||||
- g\ :sub:`6`
|
- g\ :sub:`6`
|
||||||
@ -1445,7 +1445,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||||||
|
|
||||||
- g\ :sub:`0`
|
- g\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- b\ :sub:`7`
|
- b\ :sub:`7`
|
||||||
|
|
||||||
- b\ :sub:`6`
|
- b\ :sub:`6`
|
||||||
|
@ -30,22 +30,22 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Code
|
- Code
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 0 in memory
|
- :cspan:`7` Byte 0 in memory
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 1
|
- :cspan:`7` Byte 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 2
|
- :cspan:`7` Byte 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- :cspan:`7` Byte 3
|
- :cspan:`7` Byte 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Bit
|
- Bit
|
||||||
|
|
||||||
- 7
|
- 7
|
||||||
@ -64,7 +64,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -81,7 +81,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -98,7 +98,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 7
|
- 7
|
||||||
|
|
||||||
- 6
|
- 6
|
||||||
@ -121,7 +121,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 'Y444'
|
- 'Y444'
|
||||||
|
|
||||||
-
|
-
|
||||||
- Cb\ :sub:`3`
|
- Cb\ :sub:`3`
|
||||||
|
|
||||||
- Cb\ :sub:`2`
|
- Cb\ :sub:`2`
|
||||||
@ -138,7 +138,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Cr\ :sub:`0`
|
- Cr\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`3`
|
- a\ :sub:`3`
|
||||||
|
|
||||||
- a\ :sub:`2`
|
- a\ :sub:`2`
|
||||||
@ -161,7 +161,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 'YUVO'
|
- 'YUVO'
|
||||||
|
|
||||||
-
|
-
|
||||||
- Cb\ :sub:`2`
|
- Cb\ :sub:`2`
|
||||||
|
|
||||||
- Cb\ :sub:`1`
|
- Cb\ :sub:`1`
|
||||||
@ -178,7 +178,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Cr\ :sub:`0`
|
- Cr\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- a
|
- a
|
||||||
|
|
||||||
- Y'\ :sub:`4`
|
- Y'\ :sub:`4`
|
||||||
@ -201,7 +201,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 'YUVP'
|
- 'YUVP'
|
||||||
|
|
||||||
-
|
-
|
||||||
- Cb\ :sub:`2`
|
- Cb\ :sub:`2`
|
||||||
|
|
||||||
- Cb\ :sub:`1`
|
- Cb\ :sub:`1`
|
||||||
@ -218,7 +218,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Cr\ :sub:`0`
|
- Cr\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y'\ :sub:`4`
|
- Y'\ :sub:`4`
|
||||||
|
|
||||||
- Y'\ :sub:`3`
|
- Y'\ :sub:`3`
|
||||||
@ -241,7 +241,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- 'YUV4'
|
- 'YUV4'
|
||||||
|
|
||||||
-
|
-
|
||||||
- a\ :sub:`7`
|
- a\ :sub:`7`
|
||||||
|
|
||||||
- a\ :sub:`6`
|
- a\ :sub:`6`
|
||||||
@ -258,7 +258,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- a\ :sub:`0`
|
- a\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y'\ :sub:`7`
|
- Y'\ :sub:`7`
|
||||||
|
|
||||||
- Y'\ :sub:`6`
|
- Y'\ :sub:`6`
|
||||||
@ -275,7 +275,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Y'\ :sub:`0`
|
- Y'\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- Cb\ :sub:`7`
|
- Cb\ :sub:`7`
|
||||||
|
|
||||||
- Cb\ :sub:`6`
|
- Cb\ :sub:`6`
|
||||||
@ -292,7 +292,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||||||
|
|
||||||
- Cb\ :sub:`0`
|
- Cb\ :sub:`0`
|
||||||
|
|
||||||
-
|
-
|
||||||
- Cr\ :sub:`7`
|
- Cr\ :sub:`7`
|
||||||
|
|
||||||
- Cr\ :sub:`6`
|
- Cr\ :sub:`6`
|
||||||
|
@ -64,10 +64,10 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'HM12'
|
- 'HM12'
|
||||||
|
|
||||||
- YUV 4:2:0 format used by the IVTV driver,
|
- YUV 4:2:0 format used by the IVTV driver,
|
||||||
`http://www.ivtvdriver.org/ <http://www.ivtvdriver.org/>`__
|
`http://www.ivtvdriver.org/ <http://www.ivtvdriver.org/>`__
|
||||||
|
|
||||||
The format is documented in the kernel sources in the file
|
The format is documented in the kernel sources in the file
|
||||||
``Documentation/video4linux/cx2341x/README.hm12``
|
``Documentation/video4linux/cx2341x/README.hm12``
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-CPIA1`:
|
- .. _`V4L2-PIX-FMT-CPIA1`:
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'JPGL'
|
- 'JPGL'
|
||||||
|
|
||||||
- JPEG-Light format (Pegasus Lossless JPEG) used in Divio webcams NW
|
- JPEG-Light format (Pegasus Lossless JPEG) used in Divio webcams NW
|
||||||
80x.
|
80x.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-SPCA501`:
|
- .. _`V4L2-PIX-FMT-SPCA501`:
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'WNVA'
|
- 'WNVA'
|
||||||
|
|
||||||
- Used by the Winnov Videum driver,
|
- Used by the Winnov Videum driver,
|
||||||
`http://www.thedirks.org/winnov/ <http://www.thedirks.org/winnov/>`__
|
`http://www.thedirks.org/winnov/ <http://www.thedirks.org/winnov/>`__
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-TM6000`:
|
- .. _`V4L2-PIX-FMT-TM6000`:
|
||||||
|
|
||||||
@ -263,7 +263,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
|
|
||||||
- Used by xirlink CIT, found at IBM webcams.
|
- Used by xirlink CIT, found at IBM webcams.
|
||||||
|
|
||||||
Uses one line of Y then 1 line of VYUY
|
Uses one line of Y then 1 line of VYUY
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-KONICA420`:
|
- .. _`V4L2-PIX-FMT-KONICA420`:
|
||||||
|
|
||||||
@ -273,7 +273,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
|
|
||||||
- Used by Konica webcams.
|
- Used by Konica webcams.
|
||||||
|
|
||||||
YUV420 planar in blocks of 256 pixels.
|
YUV420 planar in blocks of 256 pixels.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-YYUV`:
|
- .. _`V4L2-PIX-FMT-YYUV`:
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'Y04 '
|
- 'Y04 '
|
||||||
|
|
||||||
- Old 4-bit greyscale format. Only the most significant 4 bits of
|
- Old 4-bit greyscale format. Only the most significant 4 bits of
|
||||||
each byte are used, the other bits are set to 0.
|
each byte are used, the other bits are set to 0.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-Y6`:
|
- .. _`V4L2-PIX-FMT-Y6`:
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'Y06 '
|
- 'Y06 '
|
||||||
|
|
||||||
- Old 6-bit greyscale format. Only the most significant 6 bits of
|
- Old 6-bit greyscale format. Only the most significant 6 bits of
|
||||||
each byte are used, the other bits are set to 0.
|
each byte are used, the other bits are set to 0.
|
||||||
|
|
||||||
- .. _`V4L2-PIX-FMT-S5C-UYVY-JPG`:
|
- .. _`V4L2-PIX-FMT-S5C-UYVY-JPG`:
|
||||||
|
|
||||||
@ -308,34 +308,34 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 'S5CI'
|
- 'S5CI'
|
||||||
|
|
||||||
- Two-planar format used by Samsung S5C73MX cameras. The first plane
|
- Two-planar format used by Samsung S5C73MX cameras. The first plane
|
||||||
contains interleaved JPEG and UYVY image data, followed by meta
|
contains interleaved JPEG and UYVY image data, followed by meta
|
||||||
data in form of an array of offsets to the UYVY data blocks. The
|
data in form of an array of offsets to the UYVY data blocks. The
|
||||||
actual pointer array follows immediately the interleaved JPEG/UYVY
|
actual pointer array follows immediately the interleaved JPEG/UYVY
|
||||||
data, the number of entries in this array equals the height of the
|
data, the number of entries in this array equals the height of the
|
||||||
UYVY image. Each entry is a 4-byte unsigned integer in big endian
|
UYVY image. Each entry is a 4-byte unsigned integer in big endian
|
||||||
order and it's an offset to a single pixel line of the UYVY image.
|
order and it's an offset to a single pixel line of the UYVY image.
|
||||||
The first plane can start either with JPEG or UYVY data chunk. The
|
The first plane can start either with JPEG or UYVY data chunk. The
|
||||||
size of a single UYVY block equals the UYVY image's width
|
size of a single UYVY block equals the UYVY image's width
|
||||||
multiplied by 2. The size of a JPEG chunk depends on the image and
|
multiplied by 2. The size of a JPEG chunk depends on the image and
|
||||||
can vary with each line.
|
can vary with each line.
|
||||||
|
|
||||||
The second plane, at an offset of 4084 bytes, contains a 4-byte
|
The second plane, at an offset of 4084 bytes, contains a 4-byte
|
||||||
offset to the pointer array in the first plane. This offset is
|
offset to the pointer array in the first plane. This offset is
|
||||||
followed by a 4-byte value indicating size of the pointer array.
|
followed by a 4-byte value indicating size of the pointer array.
|
||||||
All numbers in the second plane are also in big endian order.
|
All numbers in the second plane are also in big endian order.
|
||||||
Remaining data in the second plane is undefined. The information
|
Remaining data in the second plane is undefined. The information
|
||||||
in the second plane allows to easily find location of the pointer
|
in the second plane allows to easily find location of the pointer
|
||||||
array, which can be different for each frame. The size of the
|
array, which can be different for each frame. The size of the
|
||||||
pointer array is constant for given UYVY image height.
|
pointer array is constant for given UYVY image height.
|
||||||
|
|
||||||
In order to extract UYVY and JPEG frames an application can
|
In order to extract UYVY and JPEG frames an application can
|
||||||
initially set a data pointer to the start of first plane and then
|
initially set a data pointer to the start of first plane and then
|
||||||
add an offset from the first entry of the pointers table. Such a
|
add an offset from the first entry of the pointers table. Such a
|
||||||
pointer indicates start of an UYVY image pixel line. Whole UYVY
|
pointer indicates start of an UYVY image pixel line. Whole UYVY
|
||||||
line can be copied to a separate buffer. These steps should be
|
line can be copied to a separate buffer. These steps should be
|
||||||
repeated for each line, i.e. the number of entries in the pointer
|
repeated for each line, i.e. the number of entries in the pointer
|
||||||
array. Anything what's in between the UYVY lines is JPEG data and
|
array. Anything what's in between the UYVY lines is JPEG data and
|
||||||
should be concatenated to form the JPEG stream.
|
should be concatenated to form the JPEG stream.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ please make a proposal on the linux-media mailing list.
|
|||||||
- 0x00000001
|
- 0x00000001
|
||||||
|
|
||||||
- The color values are premultiplied by the alpha channel value. For
|
- The color values are premultiplied by the alpha channel value. For
|
||||||
example, if a light blue pixel with 50% transparency was described
|
example, if a light blue pixel with 50% transparency was described
|
||||||
by RGBA values (128, 192, 255, 128), the same pixel described with
|
by RGBA values (128, 192, 255, 128), the same pixel described with
|
||||||
premultiplied colors would be described by RGBA values (64, 96,
|
premultiplied colors would be described by RGBA values (64, 96,
|
||||||
128, 128)
|
128, 128)
|
||||||
|
@ -52,7 +52,7 @@ Each cell is one byte.
|
|||||||
- G\ :sub:`03high`
|
- G\ :sub:`03high`
|
||||||
|
|
||||||
- B\ :sub:`00low`\ (bits 7--6) G\ :sub:`01low`\ (bits 5--4)
|
- B\ :sub:`00low`\ (bits 7--6) G\ :sub:`01low`\ (bits 5--4)
|
||||||
B\ :sub:`02low`\ (bits 3--2) G\ :sub:`03low`\ (bits 1--0)
|
B\ :sub:`02low`\ (bits 3--2) G\ :sub:`03low`\ (bits 1--0)
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Each cell is one byte.
|
|||||||
- R\ :sub:`13high`
|
- R\ :sub:`13high`
|
||||||
|
|
||||||
- G\ :sub:`10low`\ (bits 7--6) R\ :sub:`11low`\ (bits 5--4)
|
- G\ :sub:`10low`\ (bits 7--6) R\ :sub:`11low`\ (bits 5--4)
|
||||||
G\ :sub:`12low`\ (bits 3--2) R\ :sub:`13low`\ (bits 1--0)
|
G\ :sub:`12low`\ (bits 3--2) R\ :sub:`13low`\ (bits 1--0)
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ Each cell is one byte.
|
|||||||
- G\ :sub:`23high`
|
- G\ :sub:`23high`
|
||||||
|
|
||||||
- B\ :sub:`20low`\ (bits 7--6) G\ :sub:`21low`\ (bits 5--4)
|
- B\ :sub:`20low`\ (bits 7--6) G\ :sub:`21low`\ (bits 5--4)
|
||||||
B\ :sub:`22low`\ (bits 3--2) G\ :sub:`23low`\ (bits 1--0)
|
B\ :sub:`22low`\ (bits 3--2) G\ :sub:`23low`\ (bits 1--0)
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -97,4 +97,4 @@ Each cell is one byte.
|
|||||||
- R\ :sub:`33high`
|
- R\ :sub:`33high`
|
||||||
|
|
||||||
- G\ :sub:`30low`\ (bits 7--6) R\ :sub:`31low`\ (bits 5--4)
|
- G\ :sub:`30low`\ (bits 7--6) R\ :sub:`31low`\ (bits 5--4)
|
||||||
G\ :sub:`32low`\ (bits 3--2) R\ :sub:`33low`\ (bits 1--0)
|
G\ :sub:`32low`\ (bits 3--2) R\ :sub:`33low`\ (bits 1--0)
|
||||||
|
@ -121,15 +121,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
@ -119,13 +119,13 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
- 3
|
- 3
|
||||||
|
@ -158,12 +158,12 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
- 3
|
- 3
|
||||||
@ -172,7 +172,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- 5
|
- 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- 6
|
- 6
|
||||||
|
|
||||||
- 7
|
- 7
|
||||||
|
@ -114,16 +114,16 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -132,18 +132,18 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -151,26 +151,26 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -178,18 +178,18 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -197,11 +197,11 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -147,12 +147,12 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
- 3
|
- 3
|
||||||
|
@ -136,16 +136,16 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -154,27 +154,27 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -182,18 +182,18 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -201,27 +201,27 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -229,11 +229,11 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -100,7 +100,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -150,16 +150,16 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -168,27 +168,27 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -196,18 +196,18 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -215,27 +215,27 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- C
|
- C
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -243,11 +243,11 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
@ -99,7 +99,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -135,7 +135,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -181,15 +181,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
@ -164,15 +164,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
@ -93,7 +93,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
- 1
|
- 1
|
||||||
|
@ -124,16 +124,16 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -146,7 +146,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- C
|
- C
|
||||||
@ -163,7 +163,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- C
|
- C
|
||||||
@ -180,7 +180,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- C
|
- C
|
||||||
@ -197,7 +197,7 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
-
|
-
|
||||||
- Y
|
- Y
|
||||||
|
|
||||||
- C
|
- C
|
||||||
|
@ -119,15 +119,15 @@ Each cell is one byte.
|
|||||||
|
|
||||||
- .. row 1
|
- .. row 1
|
||||||
|
|
||||||
-
|
-
|
||||||
- 0
|
- 0
|
||||||
|
|
||||||
-
|
-
|
||||||
- 1
|
- 1
|
||||||
|
|
||||||
- 2
|
- 2
|
||||||
|
|
||||||
-
|
-
|
||||||
- 3
|
- 3
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
@ -12,17 +12,17 @@ Examples
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
:caption: Example 1.15. Resetting the cropping parameters
|
:caption: Example 1.15. Resetting the cropping parameters
|
||||||
|
|
||||||
struct v4l2_selection sel = {
|
struct v4l2_selection sel = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||||
.target = V4L2_SEL_TGT_CROP_DEFAULT,
|
.target = V4L2_SEL_TGT_CROP_DEFAULT,
|
||||||
};
|
};
|
||||||
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
|
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
sel.target = V4L2_SEL_TGT_CROP;
|
sel.target = V4L2_SEL_TGT_CROP;
|
||||||
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
|
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
||||||
Setting a composing area on output of size of *at most* half of limit
|
Setting a composing area on output of size of *at most* half of limit
|
||||||
placed at a center of a display.
|
placed at a center of a display.
|
||||||
@ -31,26 +31,26 @@ placed at a center of a display.
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
:caption: Example 1.16. Simple downscaling
|
:caption: Example 1.16. Simple downscaling
|
||||||
|
|
||||||
struct v4l2_selection sel = {
|
struct v4l2_selection sel = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
||||||
.target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
|
.target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
|
||||||
};
|
};
|
||||||
struct v4l2_rect r;
|
struct v4l2_rect r;
|
||||||
|
|
||||||
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
|
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
/* setting smaller compose rectangle */
|
/* setting smaller compose rectangle */
|
||||||
r.width = sel.r.width / 2;
|
r.width = sel.r.width / 2;
|
||||||
r.height = sel.r.height / 2;
|
r.height = sel.r.height / 2;
|
||||||
r.left = sel.r.width / 4;
|
r.left = sel.r.width / 4;
|
||||||
r.top = sel.r.height / 4;
|
r.top = sel.r.height / 4;
|
||||||
sel.r = r;
|
sel.r = r;
|
||||||
sel.target = V4L2_SEL_TGT_COMPOSE;
|
sel.target = V4L2_SEL_TGT_COMPOSE;
|
||||||
sel.flags = V4L2_SEL_FLAG_LE;
|
sel.flags = V4L2_SEL_FLAG_LE;
|
||||||
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
|
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
||||||
A video output device is assumed; change ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
|
A video output device is assumed; change ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
|
||||||
for other devices
|
for other devices
|
||||||
@ -59,23 +59,23 @@ for other devices
|
|||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
:caption: Example 1.17. Querying for scaling factors
|
:caption: Example 1.17. Querying for scaling factors
|
||||||
|
|
||||||
struct v4l2_selection compose = {
|
struct v4l2_selection compose = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
||||||
.target = V4L2_SEL_TGT_COMPOSE,
|
.target = V4L2_SEL_TGT_COMPOSE,
|
||||||
};
|
};
|
||||||
struct v4l2_selection crop = {
|
struct v4l2_selection crop = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
||||||
.target = V4L2_SEL_TGT_CROP,
|
.target = V4L2_SEL_TGT_CROP,
|
||||||
};
|
};
|
||||||
double hscale, vscale;
|
double hscale, vscale;
|
||||||
|
|
||||||
ret = ioctl(fd, VIDIOC_G_SELECTION, &compose);
|
ret = ioctl(fd, VIDIOC_G_SELECTION, &compose);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
ret = ioctl(fd, VIDIOC_G_SELECTION, &crop);
|
ret = ioctl(fd, VIDIOC_G_SELECTION, &crop);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
|
||||||
/* computing scaling factors */
|
/* computing scaling factors */
|
||||||
hscale = (double)compose.r.width / crop.r.width;
|
hscale = (double)compose.r.width / crop.r.width;
|
||||||
vscale = (double)compose.r.height / crop.r.height;
|
vscale = (double)compose.r.height / crop.r.height;
|
||||||
|
@ -72,32 +72,32 @@ standard ioctls can be used with the given input or output.
|
|||||||
struct v4l2_standard standard;
|
struct v4l2_standard standard;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_STD, &std_id)) {
|
if (-1 == ioctl(fd, VIDIOC_G_STD, &std_id)) {
|
||||||
/* Note when VIDIOC_ENUMSTD always returns ENOTTY this
|
/* Note when VIDIOC_ENUMSTD always returns ENOTTY this
|
||||||
is no video device or it falls under the USB exception,
|
is no video device or it falls under the USB exception,
|
||||||
and VIDIOC_G_STD returning ENOTTY is no error. */
|
and VIDIOC_G_STD returning ENOTTY is no error. */
|
||||||
|
|
||||||
perror("VIDIOC_G_STD");
|
perror("VIDIOC_G_STD");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&standard, 0, sizeof(standard));
|
memset(&standard, 0, sizeof(standard));
|
||||||
standard.index = 0;
|
standard.index = 0;
|
||||||
|
|
||||||
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
|
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
|
||||||
if (standard.id & std_id) {
|
if (standard.id & std_id) {
|
||||||
printf("Current video standard: %s\\n", standard.name);
|
printf("Current video standard: %s\\n", standard.name);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
standard.index++;
|
standard.index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EINVAL indicates the end of the enumeration, which cannot be
|
/* EINVAL indicates the end of the enumeration, which cannot be
|
||||||
empty unless this device falls under the USB exception. */
|
empty unless this device falls under the USB exception. */
|
||||||
|
|
||||||
if (errno == EINVAL || standard.index == 0) {
|
if (errno == EINVAL || standard.index == 0) {
|
||||||
perror("VIDIOC_ENUMSTD");
|
perror("VIDIOC_ENUMSTD");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -110,13 +110,13 @@ standard ioctls can be used with the given input or output.
|
|||||||
memset(&input, 0, sizeof(input));
|
memset(&input, 0, sizeof(input));
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
|
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
|
||||||
perror("VIDIOC_G_INPUT");
|
perror("VIDIOC_G_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
||||||
perror("VIDIOC_ENUM_INPUT");
|
perror("VIDIOC_ENUM_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Current input %s supports:\\n", input.name);
|
printf("Current input %s supports:\\n", input.name);
|
||||||
@ -125,18 +125,18 @@ standard ioctls can be used with the given input or output.
|
|||||||
standard.index = 0;
|
standard.index = 0;
|
||||||
|
|
||||||
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
|
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
|
||||||
if (standard.id & input.std)
|
if (standard.id & input.std)
|
||||||
printf("%s\\n", standard.name);
|
printf("%s\\n", standard.name);
|
||||||
|
|
||||||
standard.index++;
|
standard.index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EINVAL indicates the end of the enumeration, which cannot be
|
/* EINVAL indicates the end of the enumeration, which cannot be
|
||||||
empty unless this device falls under the USB exception. */
|
empty unless this device falls under the USB exception. */
|
||||||
|
|
||||||
if (errno != EINVAL || standard.index == 0) {
|
if (errno != EINVAL || standard.index == 0) {
|
||||||
perror("VIDIOC_ENUMSTD");
|
perror("VIDIOC_ENUMSTD");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -149,18 +149,18 @@ standard ioctls can be used with the given input or output.
|
|||||||
memset(&input, 0, sizeof(input));
|
memset(&input, 0, sizeof(input));
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
|
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
|
||||||
perror("VIDIOC_G_INPUT");
|
perror("VIDIOC_G_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
||||||
perror("VIDIOC_ENUM_INPUT");
|
perror("VIDIOC_ENUM_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 == (input.std & V4L2_STD_PAL_BG)) {
|
if (0 == (input.std & V4L2_STD_PAL_BG)) {
|
||||||
fprintf(stderr, "Oops. B/G PAL is not supported.\\n");
|
fprintf(stderr, "Oops. B/G PAL is not supported.\\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note this is also supposed to work when only B
|
/* Note this is also supposed to work when only B
|
||||||
@ -169,8 +169,8 @@ standard ioctls can be used with the given input or output.
|
|||||||
std_id = V4L2_STD_PAL_BG;
|
std_id = V4L2_STD_PAL_BG;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_S_STD, &std_id)) {
|
if (-1 == ioctl(fd, VIDIOC_S_STD, &std_id)) {
|
||||||
perror("VIDIOC_S_STD");
|
perror("VIDIOC_S_STD");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
.. [1]
|
.. [1]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -76,7 +76,7 @@ started. In the write loop, when the application runs out of free
|
|||||||
buffers it must wait until an empty buffer can be dequeued and reused.
|
buffers it must wait until an empty buffer can be dequeued and reused.
|
||||||
Two methods exist to suspend execution of the application until one or
|
Two methods exist to suspend execution of the application until one or
|
||||||
more buffers can be dequeued. By default :ref:`VIDIOC_DQBUF
|
more buffers can be dequeued. By default :ref:`VIDIOC_DQBUF
|
||||||
<VIDIOC_QBUF>`` blocks when no buffer is in the outgoing queue. When the
|
<VIDIOC_QBUF>` blocks when no buffer is in the outgoing queue. When the
|
||||||
``O_NONBLOCK`` flag was given to the :ref:`open() <func-open>` function,
|
``O_NONBLOCK`` flag was given to the :ref:`open() <func-open>` function,
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` returns immediately with an ``EAGAIN``
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` returns immediately with an ``EAGAIN``
|
||||||
error code when no buffer is available. The :ref:`select()
|
error code when no buffer is available. The :ref:`select()
|
||||||
|
@ -33,10 +33,10 @@ Selection flags
|
|||||||
- (1 << 0)
|
- (1 << 0)
|
||||||
|
|
||||||
- Suggest the driver it should choose greater or equal rectangle (in
|
- Suggest the driver it should choose greater or equal rectangle (in
|
||||||
size) than was requested. Albeit the driver may choose a lesser
|
size) than was requested. Albeit the driver may choose a lesser
|
||||||
size, it will only do so due to hardware limitations. Without this
|
size, it will only do so due to hardware limitations. Without this
|
||||||
flag (and ``V4L2_SEL_FLAG_LE``) the behaviour is to choose the
|
flag (and ``V4L2_SEL_FLAG_LE``) the behaviour is to choose the
|
||||||
closest possible rectangle.
|
closest possible rectangle.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
@ -49,8 +49,8 @@ Selection flags
|
|||||||
- (1 << 1)
|
- (1 << 1)
|
||||||
|
|
||||||
- Suggest the driver it should choose lesser or equal rectangle (in
|
- Suggest the driver it should choose lesser or equal rectangle (in
|
||||||
size) than was requested. Albeit the driver may choose a greater
|
size) than was requested. Albeit the driver may choose a greater
|
||||||
size, it will only do so due to hardware limitations.
|
size, it will only do so due to hardware limitations.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
@ -63,8 +63,8 @@ Selection flags
|
|||||||
- (1 << 2)
|
- (1 << 2)
|
||||||
|
|
||||||
- The configuration must not be propagated to any further processing
|
- The configuration must not be propagated to any further processing
|
||||||
steps. If this flag is not given, the configuration is propagated
|
steps. If this flag is not given, the configuration is propagated
|
||||||
inside the subdevice to all further processing steps.
|
inside the subdevice to all further processing steps.
|
||||||
|
|
||||||
- No
|
- No
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ of the two interfaces they are used.
|
|||||||
- 0x0002
|
- 0x0002
|
||||||
|
|
||||||
- Bounds of the crop rectangle. All valid crop rectangles fit inside
|
- Bounds of the crop rectangle. All valid crop rectangles fit inside
|
||||||
the crop bounds rectangle.
|
the crop bounds rectangle.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
@ -73,12 +73,12 @@ of the two interfaces they are used.
|
|||||||
- 0x0003
|
- 0x0003
|
||||||
|
|
||||||
- The native size of the device, e.g. a sensor's pixel array.
|
- The native size of the device, e.g. a sensor's pixel array.
|
||||||
``left`` and ``top`` fields are zero for this target. Setting the
|
``left`` and ``top`` fields are zero for this target. Setting the
|
||||||
native size will generally only make sense for memory to memory
|
native size will generally only make sense for memory to memory
|
||||||
devices where the software can create a canvas of a given size in
|
devices where the software can create a canvas of a given size in
|
||||||
which for example a video frame can be composed. In that case
|
which for example a video frame can be composed. In that case
|
||||||
V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size of
|
V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size of
|
||||||
that canvas.
|
that canvas.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ of the two interfaces they are used.
|
|||||||
- 0x0102
|
- 0x0102
|
||||||
|
|
||||||
- Bounds of the compose rectangle. All valid compose rectangles fit
|
- Bounds of the compose rectangle. All valid compose rectangles fit
|
||||||
inside the compose bounds rectangle.
|
inside the compose bounds rectangle.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ of the two interfaces they are used.
|
|||||||
- 0x0103
|
- 0x0103
|
||||||
|
|
||||||
- The active area and all padding pixels that are inserted or
|
- The active area and all padding pixels that are inserted or
|
||||||
modified by hardware.
|
modified by hardware.
|
||||||
|
|
||||||
- Yes
|
- Yes
|
||||||
|
|
||||||
|
@ -33,137 +33,137 @@ file: media/v4l/v4l2grab.c
|
|||||||
#define CLEAR(x) memset(&(x), 0, sizeof(x))
|
#define CLEAR(x) memset(&(x), 0, sizeof(x))
|
||||||
|
|
||||||
struct buffer {
|
struct buffer {
|
||||||
void *start;
|
void *start;
|
||||||
size_t length;
|
size_t length;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void xioctl(int fh, int request, void *arg)
|
static void xioctl(int fh, int request, void *arg)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
r = v4l2_ioctl(fh, request, arg);
|
r = v4l2_ioctl(fh, request, arg);
|
||||||
} while (r == -1 && ((errno == EINTR) || (errno == EAGAIN)));
|
} while (r == -1 && ((errno == EINTR) || (errno == EAGAIN)));
|
||||||
|
|
||||||
if (r == -1) {
|
if (r == -1) {
|
||||||
fprintf(stderr, "error %d, %s\\n", errno, strerror(errno));
|
fprintf(stderr, "error %d, %s\\n", errno, strerror(errno));
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
struct v4l2_format fmt;
|
struct v4l2_format fmt;
|
||||||
struct v4l2_buffer buf;
|
struct v4l2_buffer buf;
|
||||||
struct v4l2_requestbuffers req;
|
struct v4l2_requestbuffers req;
|
||||||
enum v4l2_buf_type type;
|
enum v4l2_buf_type type;
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int r, fd = -1;
|
int r, fd = -1;
|
||||||
unsigned int i, n_buffers;
|
unsigned int i, n_buffers;
|
||||||
char *dev_name = "/dev/video0";
|
char *dev_name = "/dev/video0";
|
||||||
char out_name[256];
|
char out_name[256];
|
||||||
FILE *fout;
|
FILE *fout;
|
||||||
struct buffer *buffers;
|
struct buffer *buffers;
|
||||||
|
|
||||||
fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
|
fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
perror("Cannot open device");
|
perror("Cannot open device");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
CLEAR(fmt);
|
CLEAR(fmt);
|
||||||
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
fmt.fmt.pix.width = 640;
|
fmt.fmt.pix.width = 640;
|
||||||
fmt.fmt.pix.height = 480;
|
fmt.fmt.pix.height = 480;
|
||||||
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
|
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
|
||||||
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
|
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
|
||||||
xioctl(fd, VIDIOC_S_FMT, &fmt);
|
xioctl(fd, VIDIOC_S_FMT, &fmt);
|
||||||
if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) {
|
if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) {
|
||||||
printf("Libv4l didn't accept RGB24 format. Can't proceed.\\n");
|
printf("Libv4l didn't accept RGB24 format. Can't proceed.\\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480))
|
if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480))
|
||||||
printf("Warning: driver is sending image at %dx%d\\n",
|
printf("Warning: driver is sending image at %dx%d\\n",
|
||||||
fmt.fmt.pix.width, fmt.fmt.pix.height);
|
fmt.fmt.pix.width, fmt.fmt.pix.height);
|
||||||
|
|
||||||
CLEAR(req);
|
CLEAR(req);
|
||||||
req.count = 2;
|
req.count = 2;
|
||||||
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
req.memory = V4L2_MEMORY_MMAP;
|
req.memory = V4L2_MEMORY_MMAP;
|
||||||
xioctl(fd, VIDIOC_REQBUFS, &req);
|
xioctl(fd, VIDIOC_REQBUFS, &req);
|
||||||
|
|
||||||
buffers = calloc(req.count, sizeof(*buffers));
|
buffers = calloc(req.count, sizeof(*buffers));
|
||||||
for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
|
for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
|
||||||
CLEAR(buf);
|
CLEAR(buf);
|
||||||
|
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
buf.memory = V4L2_MEMORY_MMAP;
|
buf.memory = V4L2_MEMORY_MMAP;
|
||||||
buf.index = n_buffers;
|
buf.index = n_buffers;
|
||||||
|
|
||||||
xioctl(fd, VIDIOC_QUERYBUF, &buf);
|
xioctl(fd, VIDIOC_QUERYBUF, &buf);
|
||||||
|
|
||||||
buffers[n_buffers].length = buf.length;
|
buffers[n_buffers].length = buf.length;
|
||||||
buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,
|
buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,
|
||||||
PROT_READ | PROT_WRITE, MAP_SHARED,
|
PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||||
fd, buf.m.offset);
|
fd, buf.m.offset);
|
||||||
|
|
||||||
if (MAP_FAILED == buffers[n_buffers].start) {
|
if (MAP_FAILED == buffers[n_buffers].start) {
|
||||||
perror("mmap");
|
perror("mmap");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < n_buffers; ++i) {
|
for (i = 0; i < n_buffers; ++i) {
|
||||||
CLEAR(buf);
|
CLEAR(buf);
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
buf.memory = V4L2_MEMORY_MMAP;
|
buf.memory = V4L2_MEMORY_MMAP;
|
||||||
buf.index = i;
|
buf.index = i;
|
||||||
xioctl(fd, VIDIOC_QBUF, &buf);
|
xioctl(fd, VIDIOC_QBUF, &buf);
|
||||||
}
|
}
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
|
|
||||||
xioctl(fd, VIDIOC_STREAMON, &type);
|
xioctl(fd, VIDIOC_STREAMON, &type);
|
||||||
for (i = 0; i < 20; i++) {
|
for (i = 0; i < 20; i++) {
|
||||||
do {
|
do {
|
||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
FD_SET(fd, &fds);
|
FD_SET(fd, &fds);
|
||||||
|
|
||||||
/* Timeout. */
|
/* Timeout. */
|
||||||
tv.tv_sec = 2;
|
tv.tv_sec = 2;
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
|
|
||||||
r = select(fd + 1, &fds, NULL, NULL, &tv);
|
r = select(fd + 1, &fds, NULL, NULL, &tv);
|
||||||
} while ((r == -1 && (errno = EINTR)));
|
} while ((r == -1 && (errno = EINTR)));
|
||||||
if (r == -1) {
|
if (r == -1) {
|
||||||
perror("select");
|
perror("select");
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
CLEAR(buf);
|
CLEAR(buf);
|
||||||
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
buf.memory = V4L2_MEMORY_MMAP;
|
buf.memory = V4L2_MEMORY_MMAP;
|
||||||
xioctl(fd, VIDIOC_DQBUF, &buf);
|
xioctl(fd, VIDIOC_DQBUF, &buf);
|
||||||
|
|
||||||
sprintf(out_name, "out%03d.ppm", i);
|
sprintf(out_name, "out%03d.ppm", i);
|
||||||
fout = fopen(out_name, "w");
|
fout = fopen(out_name, "w");
|
||||||
if (!fout) {
|
if (!fout) {
|
||||||
perror("Cannot open image");
|
perror("Cannot open image");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
fprintf(fout, "P6\\n%d %d 255\\n",
|
fprintf(fout, "P6\\n%d %d 255\\n",
|
||||||
fmt.fmt.pix.width, fmt.fmt.pix.height);
|
fmt.fmt.pix.width, fmt.fmt.pix.height);
|
||||||
fwrite(buffers[buf.index].start, buf.bytesused, 1, fout);
|
fwrite(buffers[buf.index].start, buf.bytesused, 1, fout);
|
||||||
fclose(fout);
|
fclose(fout);
|
||||||
|
|
||||||
xioctl(fd, VIDIOC_QBUF, &buf);
|
xioctl(fd, VIDIOC_QBUF, &buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
xioctl(fd, VIDIOC_STREAMOFF, &type);
|
xioctl(fd, VIDIOC_STREAMOFF, &type);
|
||||||
for (i = 0; i < n_buffers; ++i)
|
for (i = 0; i < n_buffers; ++i)
|
||||||
v4l2_munmap(buffers[i].start, buffers[i].length);
|
v4l2_munmap(buffers[i].start, buffers[i].length);
|
||||||
v4l2_close(fd);
|
v4l2_close(fd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -35,16 +35,16 @@ all the output ioctls when the device has one or more outputs.
|
|||||||
int index;
|
int index;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index)) {
|
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index)) {
|
||||||
perror("VIDIOC_G_INPUT");
|
perror("VIDIOC_G_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&input, 0, sizeof(input));
|
memset(&input, 0, sizeof(input));
|
||||||
input.index = index;
|
input.index = index;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
|
||||||
perror("VIDIOC_ENUMINPUT");
|
perror("VIDIOC_ENUMINPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Current input: %s\\n", input.name);
|
printf("Current input: %s\\n", input.name);
|
||||||
@ -58,6 +58,6 @@ all the output ioctls when the device has one or more outputs.
|
|||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) {
|
if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) {
|
||||||
perror("VIDIOC_S_INPUT");
|
perror("VIDIOC_S_INPUT");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -94,12 +94,12 @@ than the number requested.
|
|||||||
- ``count``
|
- ``count``
|
||||||
|
|
||||||
- The number of buffers requested or granted. If count == 0, then
|
- The number of buffers requested or granted. If count == 0, then
|
||||||
:ref:`VIDIOC_CREATE_BUFS` will set ``index`` to the current number of
|
:ref:`VIDIOC_CREATE_BUFS` will set ``index`` to the current number of
|
||||||
created buffers, and it will check the validity of ``memory`` and
|
created buffers, and it will check the validity of ``memory`` and
|
||||||
``format.type``. If those are invalid -1 is returned and errno is
|
``format.type``. If those are invalid -1 is returned and errno is
|
||||||
set to ``EINVAL`` error code, otherwise :ref:`VIDIOC_CREATE_BUFS` returns
|
set to ``EINVAL`` error code, otherwise :ref:`VIDIOC_CREATE_BUFS` returns
|
||||||
0. It will never set errno to ``EBUSY`` error code in this particular
|
0. It will never set errno to ``EBUSY`` error code in this particular
|
||||||
case.
|
case.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -108,8 +108,8 @@ than the number requested.
|
|||||||
- ``memory``
|
- ``memory``
|
||||||
|
|
||||||
- Applications set this field to ``V4L2_MEMORY_MMAP``,
|
- Applications set this field to ``V4L2_MEMORY_MMAP``,
|
||||||
``V4L2_MEMORY_DMABUF`` or ``V4L2_MEMORY_USERPTR``. See
|
``V4L2_MEMORY_DMABUF`` or ``V4L2_MEMORY_USERPTR``. See
|
||||||
:ref:`v4l2-memory`
|
:ref:`v4l2-memory`
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ than the number requested.
|
|||||||
- ``reserved``\ [8]
|
- ``reserved``\ [8]
|
||||||
|
|
||||||
- A place holder for future extensions. Drivers and applications
|
- A place holder for future extensions. Drivers and applications
|
||||||
must set the array to zero.
|
must set the array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,9 +65,9 @@ overlay devices.
|
|||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
- Type of the data stream, set by the application. Only these types
|
- Type of the data stream, set by the application. Only these types
|
||||||
are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``,
|
are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``,
|
||||||
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` and
|
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` and
|
||||||
``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :ref:`v4l2-buf-type`.
|
``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :ref:`v4l2-buf-type`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -76,11 +76,11 @@ overlay devices.
|
|||||||
- ``bounds``
|
- ``bounds``
|
||||||
|
|
||||||
- Defines the window within capturing or output is possible, this
|
- Defines the window within capturing or output is possible, this
|
||||||
may exclude for example the horizontal and vertical blanking
|
may exclude for example the horizontal and vertical blanking
|
||||||
areas. The cropping rectangle cannot exceed these limits. Width
|
areas. The cropping rectangle cannot exceed these limits. Width
|
||||||
and height are defined in pixels, the driver writer is free to
|
and height are defined in pixels, the driver writer is free to
|
||||||
choose origin and units of the coordinate system in the analog
|
choose origin and units of the coordinate system in the analog
|
||||||
domain.
|
domain.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -89,10 +89,10 @@ overlay devices.
|
|||||||
- ``defrect``
|
- ``defrect``
|
||||||
|
|
||||||
- Default cropping rectangle, it shall cover the "whole picture".
|
- Default cropping rectangle, it shall cover the "whole picture".
|
||||||
Assuming pixel aspect 1/1 this could be for example a 640 × 480
|
Assuming pixel aspect 1/1 this could be for example a 640 × 480
|
||||||
rectangle for NTSC, a 768 × 576 rectangle for PAL and SECAM
|
rectangle for NTSC, a 768 × 576 rectangle for PAL and SECAM
|
||||||
centered over the active picture area. The same co-ordinate system
|
centered over the active picture area. The same co-ordinate system
|
||||||
as for ``bounds`` is used.
|
as for ``bounds`` is used.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -101,12 +101,12 @@ overlay devices.
|
|||||||
- ``pixelaspect``
|
- ``pixelaspect``
|
||||||
|
|
||||||
- This is the pixel aspect (y / x) when no scaling is applied, the
|
- This is the pixel aspect (y / x) when no scaling is applied, the
|
||||||
ratio of the actual sampling frequency and the frequency required
|
ratio of the actual sampling frequency and the frequency required
|
||||||
to get square pixels.
|
to get square pixels.
|
||||||
|
|
||||||
When cropping coordinates refer to square pixels, the driver sets
|
When cropping coordinates refer to square pixels, the driver sets
|
||||||
``pixelaspect`` to 1/1. Other common values are 54/59 for PAL and
|
``pixelaspect`` to 1/1. Other common values are 54/59 for PAL and
|
||||||
SECAM, 11/10 for NTSC sampled according to [:ref:`itu601`].
|
SECAM, 11/10 for NTSC sampled according to [:ref:`itu601`].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ overlay devices.
|
|||||||
- ``left``
|
- ``left``
|
||||||
|
|
||||||
- Horizontal offset of the top, left corner of the rectangle, in
|
- Horizontal offset of the top, left corner of the rectangle, in
|
||||||
pixels.
|
pixels.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ overlay devices.
|
|||||||
- ``top``
|
- ``top``
|
||||||
|
|
||||||
- Vertical offset of the top, left corner of the rectangle, in
|
- Vertical offset of the top, left corner of the rectangle, in
|
||||||
pixels.
|
pixels.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
|
@ -100,23 +100,23 @@ instructions.
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``addr``
|
- ``addr``
|
||||||
|
|
||||||
- Match a chip by this number, interpreted according to the ``type``
|
- Match a chip by this number, interpreted according to the ``type``
|
||||||
field.
|
field.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- char
|
- char
|
||||||
|
|
||||||
- ``name[32]``
|
- ``name[32]``
|
||||||
|
|
||||||
- Match a chip by this name, interpreted according to the ``type``
|
- Match a chip by this name, interpreted according to the ``type``
|
||||||
field. Currently unused.
|
field. Currently unused.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -151,9 +151,9 @@ instructions.
|
|||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Set by the driver. If ``V4L2_CHIP_FL_READABLE`` is set, then the
|
- Set by the driver. If ``V4L2_CHIP_FL_READABLE`` is set, then the
|
||||||
driver supports reading registers from the device. If
|
driver supports reading registers from the device. If
|
||||||
``V4L2_CHIP_FL_WRITABLE`` is set, then it supports writing
|
``V4L2_CHIP_FL_WRITABLE`` is set, then it supports writing
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ instructions.
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Match the nth chip on the card, zero for the bridge chip. Does not
|
- Match the nth chip on the card, zero for the bridge chip. Does not
|
||||||
match sub-devices.
|
match sub-devices.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
|
@ -109,23 +109,23 @@ instructions.
|
|||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``addr``
|
- ``addr``
|
||||||
|
|
||||||
- Match a chip by this number, interpreted according to the ``type``
|
- Match a chip by this number, interpreted according to the ``type``
|
||||||
field.
|
field.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- char
|
- char
|
||||||
|
|
||||||
- ``name[32]``
|
- ``name[32]``
|
||||||
|
|
||||||
- Match a chip by this name, interpreted according to the ``type``
|
- Match a chip by this name, interpreted according to the ``type``
|
||||||
field. Currently unused.
|
field. Currently unused.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ instructions.
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Match the nth chip on the card, zero for the bridge chip. Does not
|
- Match the nth chip on the card, zero for the bridge chip. Does not
|
||||||
match sub-devices.
|
match sub-devices.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
|
@ -69,8 +69,8 @@ introduced in Linux 3.3.
|
|||||||
|
|
||||||
- ``cmd``
|
- ``cmd``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- The decoder command, see :ref:`decoder-cmds`.
|
- The decoder command, see :ref:`decoder-cmds`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -79,10 +79,10 @@ introduced in Linux 3.3.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Flags to go with the command. If no flags are defined for this
|
- Flags to go with the command. If no flags are defined for this
|
||||||
command, drivers and applications must set this field to zero.
|
command, drivers and applications must set this field to zero.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -90,97 +90,97 @@ introduced in Linux 3.3.
|
|||||||
|
|
||||||
- (anonymous)
|
- (anonymous)
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct
|
- struct
|
||||||
|
|
||||||
- ``start``
|
- ``start``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Structure containing additional data for the
|
- Structure containing additional data for the
|
||||||
``V4L2_DEC_CMD_START`` command.
|
``V4L2_DEC_CMD_START`` command.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __s32
|
- __s32
|
||||||
|
|
||||||
- ``speed``
|
- ``speed``
|
||||||
|
|
||||||
- Playback speed and direction. The playback speed is defined as
|
- Playback speed and direction. The playback speed is defined as
|
||||||
``speed``/1000 of the normal speed. So 1000 is normal playback.
|
``speed``/1000 of the normal speed. So 1000 is normal playback.
|
||||||
Negative numbers denote reverse playback, so -1000 does reverse
|
Negative numbers denote reverse playback, so -1000 does reverse
|
||||||
playback at normal speed. Speeds -1, 0 and 1 have special
|
playback at normal speed. Speeds -1, 0 and 1 have special
|
||||||
meanings: speed 0 is shorthand for 1000 (normal playback). A speed
|
meanings: speed 0 is shorthand for 1000 (normal playback). A speed
|
||||||
of 1 steps just one frame forward, a speed of -1 steps just one
|
of 1 steps just one frame forward, a speed of -1 steps just one
|
||||||
frame back.
|
frame back.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``format``
|
- ``format``
|
||||||
|
|
||||||
- Format restrictions. This field is set by the driver, not the
|
- Format restrictions. This field is set by the driver, not the
|
||||||
application. Possible values are ``V4L2_DEC_START_FMT_NONE`` if
|
application. Possible values are ``V4L2_DEC_START_FMT_NONE`` if
|
||||||
there are no format restrictions or ``V4L2_DEC_START_FMT_GOP`` if
|
there are no format restrictions or ``V4L2_DEC_START_FMT_GOP`` if
|
||||||
the decoder operates on full GOPs (*Group Of Pictures*). This is
|
the decoder operates on full GOPs (*Group Of Pictures*). This is
|
||||||
usually the case for reverse playback: the decoder needs full
|
usually the case for reverse playback: the decoder needs full
|
||||||
GOPs, which it can then play in reverse order. So to implement
|
GOPs, which it can then play in reverse order. So to implement
|
||||||
reverse playback the application must feed the decoder the last
|
reverse playback the application must feed the decoder the last
|
||||||
GOP in the video file, then the GOP before that, etc. etc.
|
GOP in the video file, then the GOP before that, etc. etc.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct
|
- struct
|
||||||
|
|
||||||
- ``stop``
|
- ``stop``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Structure containing additional data for the ``V4L2_DEC_CMD_STOP``
|
- Structure containing additional data for the ``V4L2_DEC_CMD_STOP``
|
||||||
command.
|
command.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __u64
|
- __u64
|
||||||
|
|
||||||
- ``pts``
|
- ``pts``
|
||||||
|
|
||||||
- Stop playback at this ``pts`` or immediately if the playback is
|
- Stop playback at this ``pts`` or immediately if the playback is
|
||||||
already past that timestamp. Leave to 0 if you want to stop after
|
already past that timestamp. Leave to 0 if you want to stop after
|
||||||
the last frame was decoded.
|
the last frame was decoded.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct
|
- struct
|
||||||
|
|
||||||
- ``raw``
|
- ``raw``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``data``\ [16]
|
- ``data``\ [16]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -199,12 +199,12 @@ introduced in Linux 3.3.
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Start the decoder. When the decoder is already running or paused,
|
- Start the decoder. When the decoder is already running or paused,
|
||||||
this command will just change the playback speed. That means that
|
this command will just change the playback speed. That means that
|
||||||
calling ``V4L2_DEC_CMD_START`` when the decoder was paused will
|
calling ``V4L2_DEC_CMD_START`` when the decoder was paused will
|
||||||
*not* resume the decoder. You have to explicitly call
|
*not* resume the decoder. You have to explicitly call
|
||||||
``V4L2_DEC_CMD_RESUME`` for that. This command has one flag:
|
``V4L2_DEC_CMD_RESUME`` for that. This command has one flag:
|
||||||
``V4L2_DEC_CMD_START_MUTE_AUDIO``. If set, then audio will be
|
``V4L2_DEC_CMD_START_MUTE_AUDIO``. If set, then audio will be
|
||||||
muted when playing back at a non-standard speed.
|
muted when playing back at a non-standard speed.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -213,23 +213,23 @@ introduced in Linux 3.3.
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Stop the decoder. When the decoder is already stopped, this
|
- Stop the decoder. When the decoder is already stopped, this
|
||||||
command does nothing. This command has two flags: if
|
command does nothing. This command has two flags: if
|
||||||
``V4L2_DEC_CMD_STOP_TO_BLACK`` is set, then the decoder will set
|
``V4L2_DEC_CMD_STOP_TO_BLACK`` is set, then the decoder will set
|
||||||
the picture to black after it stopped decoding. Otherwise the last
|
the picture to black after it stopped decoding. Otherwise the last
|
||||||
image will repeat. mem2mem decoders will stop producing new frames
|
image will repeat. mem2mem decoders will stop producing new frames
|
||||||
altogether. They will send a ``V4L2_EVENT_EOS`` event when the
|
altogether. They will send a ``V4L2_EVENT_EOS`` event when the
|
||||||
last frame has been decoded and all frames are ready to be
|
last frame has been decoded and all frames are ready to be
|
||||||
dequeued and will set the ``V4L2_BUF_FLAG_LAST`` buffer flag on
|
dequeued and will set the ``V4L2_BUF_FLAG_LAST`` buffer flag on
|
||||||
the last buffer of the capture queue to indicate there will be no
|
the last buffer of the capture queue to indicate there will be no
|
||||||
new buffers produced to dequeue. This buffer may be empty,
|
new buffers produced to dequeue. This buffer may be empty,
|
||||||
indicated by the driver setting the ``bytesused`` field to 0. Once
|
indicated by the driver setting the ``bytesused`` field to 0. Once
|
||||||
the ``V4L2_BUF_FLAG_LAST`` flag was set, the
|
the ``V4L2_BUF_FLAG_LAST`` flag was set, the
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
||||||
but return an ``EPIPE`` error code. If
|
but return an ``EPIPE`` error code. If
|
||||||
``V4L2_DEC_CMD_STOP_IMMEDIATELY`` is set, then the decoder stops
|
``V4L2_DEC_CMD_STOP_IMMEDIATELY`` is set, then the decoder stops
|
||||||
immediately (ignoring the ``pts`` value), otherwise it will keep
|
immediately (ignoring the ``pts`` value), otherwise it will keep
|
||||||
decoding until timestamp >= pts or until the last of the pending
|
decoding until timestamp >= pts or until the last of the pending
|
||||||
data from its internal buffers was decoded.
|
data from its internal buffers was decoded.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -238,10 +238,10 @@ introduced in Linux 3.3.
|
|||||||
- 2
|
- 2
|
||||||
|
|
||||||
- Pause the decoder. When the decoder has not been started yet, the
|
- Pause the decoder. When the decoder has not been started yet, the
|
||||||
driver will return an ``EPERM`` error code. When the decoder is
|
driver will return an ``EPERM`` error code. When the decoder is
|
||||||
already paused, this command does nothing. This command has one
|
already paused, this command does nothing. This command has one
|
||||||
flag: if ``V4L2_DEC_CMD_PAUSE_TO_BLACK`` is set, then set the
|
flag: if ``V4L2_DEC_CMD_PAUSE_TO_BLACK`` is set, then set the
|
||||||
decoder output to black when paused.
|
decoder output to black when paused.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -250,9 +250,9 @@ introduced in Linux 3.3.
|
|||||||
- 3
|
- 3
|
||||||
|
|
||||||
- Resume decoding after a PAUSE command. When the decoder has not
|
- Resume decoding after a PAUSE command. When the decoder has not
|
||||||
been started yet, the driver will return an ``EPERM`` error code. When
|
been started yet, the driver will return an ``EPERM`` error code. When
|
||||||
the decoder is already running, this command does nothing. No
|
the decoder is already running, this command does nothing. No
|
||||||
flags are defined for this command.
|
flags are defined for this command.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ call.
|
|||||||
|
|
||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Type of the event, see :ref:`event-type`.
|
- Type of the event, see :ref:`event-type`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
@ -61,12 +61,12 @@ call.
|
|||||||
|
|
||||||
- ``u``
|
- ``u``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_event_vsync <v4l2-event-vsync>`
|
- struct :ref:`v4l2_event_vsync <v4l2-event-vsync>`
|
||||||
|
|
||||||
- ``vsync``
|
- ``vsync``
|
||||||
@ -75,7 +75,7 @@ call.
|
|||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>`
|
- struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>`
|
||||||
|
|
||||||
- ``ctrl``
|
- ``ctrl``
|
||||||
@ -84,7 +84,7 @@ call.
|
|||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
|
- struct :ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
|
||||||
|
|
||||||
- ``frame_sync``
|
- ``frame_sync``
|
||||||
@ -93,7 +93,7 @@ call.
|
|||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
|
- struct :ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
|
||||||
|
|
||||||
- ``motion_det``
|
- ``motion_det``
|
||||||
@ -102,7 +102,7 @@ call.
|
|||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_event_src_change <v4l2-event-src-change>`
|
- struct :ref:`v4l2_event_src_change <v4l2-event-src-change>`
|
||||||
|
|
||||||
- ``src_change``
|
- ``src_change``
|
||||||
@ -111,13 +111,13 @@ call.
|
|||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u8
|
- __u8
|
||||||
|
|
||||||
- ``data``\ [64]
|
- ``data``\ [64]
|
||||||
|
|
||||||
- Event data. Defined by the event type. The union should be used to
|
- Event data. Defined by the event type. The union should be used to
|
||||||
define easily accessible type for events.
|
define easily accessible type for events.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ call.
|
|||||||
|
|
||||||
- ``pending``
|
- ``pending``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Number of pending events excluding this one.
|
- Number of pending events excluding this one.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
@ -134,10 +134,10 @@ call.
|
|||||||
|
|
||||||
- ``sequence``
|
- ``sequence``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Event sequence number. The sequence number is incremented for
|
- Event sequence number. The sequence number is incremented for
|
||||||
every subscribed event that takes place. If sequence numbers are
|
every subscribed event that takes place. If sequence numbers are
|
||||||
not contiguous it means that events have been lost.
|
not contiguous it means that events have been lost.
|
||||||
|
|
||||||
- .. row 11
|
- .. row 11
|
||||||
|
|
||||||
@ -145,10 +145,10 @@ call.
|
|||||||
|
|
||||||
- ``timestamp``
|
- ``timestamp``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Event timestamp. The timestamp has been taken from the
|
- Event timestamp. The timestamp has been taken from the
|
||||||
``CLOCK_MONOTONIC`` clock. To access the same clock outside V4L2,
|
``CLOCK_MONOTONIC`` clock. To access the same clock outside V4L2,
|
||||||
use :c:func:`clock_gettime(2)`.
|
use :c:func:`clock_gettime(2)`.
|
||||||
|
|
||||||
- .. row 12
|
- .. row 12
|
||||||
|
|
||||||
@ -156,10 +156,10 @@ call.
|
|||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The ID associated with the event source. If the event does not
|
- The ID associated with the event source. If the event does not
|
||||||
have an associated ID (this depends on the event type), then this
|
have an associated ID (this depends on the event type), then this
|
||||||
is 0.
|
is 0.
|
||||||
|
|
||||||
- .. row 13
|
- .. row 13
|
||||||
|
|
||||||
@ -167,9 +167,9 @@ call.
|
|||||||
|
|
||||||
- ``reserved``\ [8]
|
- ``reserved``\ [8]
|
||||||
|
|
||||||
-
|
-
|
||||||
- Reserved for future extensions. Drivers must set the array to
|
- Reserved for future extensions. Drivers must set the array to
|
||||||
zero.
|
zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ call.
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- All events. V4L2_EVENT_ALL is valid only for
|
- All events. V4L2_EVENT_ALL is valid only for
|
||||||
VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
|
VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -197,8 +197,8 @@ call.
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- This event is triggered on the vertical sync. This event has a
|
- This event is triggered on the vertical sync. This event has a
|
||||||
struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` associated
|
struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` associated
|
||||||
with it.
|
with it.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -207,8 +207,8 @@ call.
|
|||||||
- 2
|
- 2
|
||||||
|
|
||||||
- This event is triggered when the end of a stream is reached. This
|
- This event is triggered when the end of a stream is reached. This
|
||||||
is typically used with MPEG decoders to report to the application
|
is typically used with MPEG decoders to report to the application
|
||||||
when the last of the MPEG stream has been decoded.
|
when the last of the MPEG stream has been decoded.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -217,28 +217,28 @@ call.
|
|||||||
- 3
|
- 3
|
||||||
|
|
||||||
- This event requires that the ``id`` matches the control ID from
|
- This event requires that the ``id`` matches the control ID from
|
||||||
which you want to receive events. This event is triggered if the
|
which you want to receive events. This event is triggered if the
|
||||||
control's value changes, if a button control is pressed or if the
|
control's value changes, if a button control is pressed or if the
|
||||||
control's flags change. This event has a struct
|
control's flags change. This event has a struct
|
||||||
:ref:`v4l2_event_ctrl <v4l2-event-ctrl>` associated with it.
|
:ref:`v4l2_event_ctrl <v4l2-event-ctrl>` associated with it.
|
||||||
This struct contains much of the same information as struct
|
This struct contains much of the same information as struct
|
||||||
:ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct
|
:ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct
|
||||||
:ref:`v4l2_control <v4l2-control>`.
|
:ref:`v4l2_control <v4l2-control>`.
|
||||||
|
|
||||||
If the event is generated due to a call to
|
If the event is generated due to a call to
|
||||||
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or
|
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or
|
||||||
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, then the
|
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, then the
|
||||||
event will *not* be sent to the file handle that called the ioctl
|
event will *not* be sent to the file handle that called the ioctl
|
||||||
function. This prevents nasty feedback loops. If you *do* want to
|
function. This prevents nasty feedback loops. If you *do* want to
|
||||||
get the event, then set the ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK``
|
get the event, then set the ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK``
|
||||||
flag.
|
flag.
|
||||||
|
|
||||||
This event type will ensure that no information is lost when more
|
This event type will ensure that no information is lost when more
|
||||||
events are raised than there is room internally. In that case the
|
events are raised than there is room internally. In that case the
|
||||||
struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>` of the
|
struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>` of the
|
||||||
second-oldest event is kept, but the ``changes`` field of the
|
second-oldest event is kept, but the ``changes`` field of the
|
||||||
second-oldest event is ORed with the ``changes`` field of the
|
second-oldest event is ORed with the ``changes`` field of the
|
||||||
oldest event.
|
oldest event.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
@ -247,16 +247,16 @@ call.
|
|||||||
- 4
|
- 4
|
||||||
|
|
||||||
- Triggered immediately when the reception of a frame has begun.
|
- Triggered immediately when the reception of a frame has begun.
|
||||||
This event has a struct
|
This event has a struct
|
||||||
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
|
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
|
||||||
associated with it.
|
associated with it.
|
||||||
|
|
||||||
If the hardware needs to be stopped in the case of a buffer
|
If the hardware needs to be stopped in the case of a buffer
|
||||||
underrun it might not be able to generate this event. In such
|
underrun it might not be able to generate this event. In such
|
||||||
cases the ``frame_sequence`` field in struct
|
cases the ``frame_sequence`` field in struct
|
||||||
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` will not
|
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` will not
|
||||||
be incremented. This causes two consecutive frame sequence numbers
|
be incremented. This causes two consecutive frame sequence numbers
|
||||||
to have n times frame interval in between them.
|
to have n times frame interval in between them.
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
@ -265,19 +265,19 @@ call.
|
|||||||
- 5
|
- 5
|
||||||
|
|
||||||
- This event is triggered when a source parameter change is detected
|
- This event is triggered when a source parameter change is detected
|
||||||
during runtime by the video device. It can be a runtime resolution
|
during runtime by the video device. It can be a runtime resolution
|
||||||
change triggered by a video decoder or the format change happening
|
change triggered by a video decoder or the format change happening
|
||||||
on an input connector. This event requires that the ``id`` matches
|
on an input connector. This event requires that the ``id`` matches
|
||||||
the input index (when used with a video device node) or the pad
|
the input index (when used with a video device node) or the pad
|
||||||
index (when used with a subdevice node) from which you want to
|
index (when used with a subdevice node) from which you want to
|
||||||
receive events.
|
receive events.
|
||||||
|
|
||||||
This event has a struct
|
This event has a struct
|
||||||
:ref:`v4l2_event_src_change <v4l2-event-src-change>`
|
:ref:`v4l2_event_src_change <v4l2-event-src-change>`
|
||||||
associated with it. The ``changes`` bitfield denotes what has
|
associated with it. The ``changes`` bitfield denotes what has
|
||||||
changed for the subscribed pad. If multiple events occurred before
|
changed for the subscribed pad. If multiple events occurred before
|
||||||
application could dequeue them, then the changes will have the
|
application could dequeue them, then the changes will have the
|
||||||
ORed value of all the events generated.
|
ORed value of all the events generated.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
@ -286,9 +286,9 @@ call.
|
|||||||
- 6
|
- 6
|
||||||
|
|
||||||
- Triggered whenever the motion detection state for one or more of
|
- Triggered whenever the motion detection state for one or more of
|
||||||
the regions changes. This event has a struct
|
the regions changes. This event has a struct
|
||||||
:ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
|
:ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
|
||||||
associated with it.
|
associated with it.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -332,9 +332,9 @@ call.
|
|||||||
|
|
||||||
- ``changes``
|
- ``changes``
|
||||||
|
|
||||||
-
|
-
|
||||||
- A bitmask that tells what has changed. See
|
- A bitmask that tells what has changed. See
|
||||||
:ref:`ctrl-changes-flags`.
|
:ref:`ctrl-changes-flags`.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -342,32 +342,32 @@ call.
|
|||||||
|
|
||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The type of the control. See enum
|
- The type of the control. See enum
|
||||||
:ref:`v4l2_ctrl_type <v4l2-ctrl-type>`.
|
:ref:`v4l2_ctrl_type <v4l2-ctrl-type>`.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
- union (anonymous)
|
- union (anonymous)
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
-
|
-
|
||||||
- __s32
|
- __s32
|
||||||
|
|
||||||
- ``value``
|
- ``value``
|
||||||
|
|
||||||
- The 32-bit value of the control for 32-bit control types. This is
|
- The 32-bit value of the control for 32-bit control types. This is
|
||||||
0 for string controls since the value of a string cannot be passed
|
0 for string controls since the value of a string cannot be passed
|
||||||
using :ref:`VIDIOC_DQEVENT`.
|
using :ref:`VIDIOC_DQEVENT`.
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- __s64
|
- __s64
|
||||||
|
|
||||||
- ``value64``
|
- ``value64``
|
||||||
@ -380,7 +380,7 @@ call.
|
|||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The control flags. See :ref:`control-flags`.
|
- The control flags. See :ref:`control-flags`.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
@ -389,9 +389,9 @@ call.
|
|||||||
|
|
||||||
- ``minimum``
|
- ``minimum``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The minimum value of the control. See struct
|
- The minimum value of the control. See struct
|
||||||
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -399,9 +399,9 @@ call.
|
|||||||
|
|
||||||
- ``maximum``
|
- ``maximum``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The maximum value of the control. See struct
|
- The maximum value of the control. See struct
|
||||||
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -409,9 +409,9 @@ call.
|
|||||||
|
|
||||||
- ``step``
|
- ``step``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The step value of the control. See struct
|
- The step value of the control. See struct
|
||||||
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
||||||
|
|
||||||
- .. row 10
|
- .. row 10
|
||||||
|
|
||||||
@ -419,9 +419,9 @@ call.
|
|||||||
|
|
||||||
- ``default_value``
|
- ``default_value``
|
||||||
|
|
||||||
-
|
-
|
||||||
- The default value value of the control. See struct
|
- The default value value of the control. See struct
|
||||||
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -458,7 +458,7 @@ call.
|
|||||||
- ``changes``
|
- ``changes``
|
||||||
|
|
||||||
- A bitmask that tells what has changed. See
|
- A bitmask that tells what has changed. See
|
||||||
:ref:`src-changes-flags`.
|
:ref:`src-changes-flags`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -477,9 +477,9 @@ call.
|
|||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Currently only one flag is available: if
|
- Currently only one flag is available: if
|
||||||
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is set, then the
|
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is set, then the
|
||||||
``frame_sequence`` field is valid, otherwise that field should be
|
``frame_sequence`` field is valid, otherwise that field should be
|
||||||
ignored.
|
ignored.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -488,7 +488,7 @@ call.
|
|||||||
- ``frame_sequence``
|
- ``frame_sequence``
|
||||||
|
|
||||||
- The sequence number of the frame being received. Only valid if the
|
- The sequence number of the frame being received. Only valid if the
|
||||||
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` flag was set.
|
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` flag was set.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -497,11 +497,11 @@ call.
|
|||||||
- ``region_mask``
|
- ``region_mask``
|
||||||
|
|
||||||
- The bitmask of the regions that reported motion. There is at least
|
- The bitmask of the regions that reported motion. There is at least
|
||||||
one region. If this field is 0, then no motion was detected at
|
one region. If this field is 0, then no motion was detected at
|
||||||
all. If there is no ``V4L2_CID_DETECT_MD_REGION_GRID`` control
|
all. If there is no ``V4L2_CID_DETECT_MD_REGION_GRID`` control
|
||||||
(see :ref:`detect-controls`) to assign a different region to
|
(see :ref:`detect-controls`) to assign a different region to
|
||||||
each cell in the motion detection grid, then that all cells are
|
each cell in the motion detection grid, then that all cells are
|
||||||
automatically assigned to the default region 0.
|
automatically assigned to the default region 0.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -520,9 +520,9 @@ call.
|
|||||||
- 0x0001
|
- 0x0001
|
||||||
|
|
||||||
- This control event was triggered because the value of the control
|
- This control event was triggered because the value of the control
|
||||||
changed. Special cases: Volatile controls do no generate this
|
changed. Special cases: Volatile controls do no generate this
|
||||||
event; If a control has the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE``
|
event; If a control has the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE``
|
||||||
flag set, then this event is sent as well, regardless its value.
|
flag set, then this event is sent as well, regardless its value.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -531,7 +531,7 @@ call.
|
|||||||
- 0x0002
|
- 0x0002
|
||||||
|
|
||||||
- This control event was triggered because the control flags
|
- This control event was triggered because the control flags
|
||||||
changed.
|
changed.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -540,7 +540,7 @@ call.
|
|||||||
- 0x0004
|
- 0x0004
|
||||||
|
|
||||||
- This control event was triggered because the minimum, maximum,
|
- This control event was triggered because the minimum, maximum,
|
||||||
step or the default value of the control changed.
|
step or the default value of the control changed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -559,8 +559,8 @@ call.
|
|||||||
- 0x0001
|
- 0x0001
|
||||||
|
|
||||||
- This event gets triggered when a resolution change is detected at
|
- This event gets triggered when a resolution change is detected at
|
||||||
an input. This can come from an input connector or from a video
|
an input. This can come from an input connector or from a video
|
||||||
decoder.
|
decoder.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- ``standards``
|
- ``standards``
|
||||||
|
|
||||||
- The video standard(s) supported by the hardware. See
|
- The video standard(s) supported by the hardware. See
|
||||||
:ref:`dv-bt-standards` for a list of standards.
|
:ref:`dv-bt-standards` for a list of standards.
|
||||||
|
|
||||||
- .. row 8
|
- .. row 8
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- ``capabilities``
|
- ``capabilities``
|
||||||
|
|
||||||
- Several flags giving more information about the capabilities. See
|
- Several flags giving more information about the capabilities. See
|
||||||
:ref:`dv-bt-cap-capabilities` for a description of the flags.
|
:ref:`dv-bt-cap-capabilities` for a description of the flags.
|
||||||
|
|
||||||
- .. row 9
|
- .. row 9
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- ``reserved``\ [16]
|
- ``reserved``\ [16]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers must set the array to
|
- Reserved for future extensions. Drivers must set the array to
|
||||||
zero.
|
zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -157,8 +157,8 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- ``pad``
|
- ``pad``
|
||||||
|
|
||||||
- Pad number as reported by the media controller API. This field is
|
- Pad number as reported by the media controller API. This field is
|
||||||
only used when operating on a subdevice node. When operating on a
|
only used when operating on a subdevice node. When operating on a
|
||||||
video node applications must set this field to zero.
|
video node applications must set this field to zero.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -167,18 +167,18 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- ``reserved``\ [2]
|
- ``reserved``\ [2]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
- union
|
- union
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 5
|
- .. row 5
|
||||||
|
|
||||||
-
|
-
|
||||||
- struct :ref:`v4l2_bt_timings_cap <v4l2-bt-timings-cap>`
|
- struct :ref:`v4l2_bt_timings_cap <v4l2-bt-timings-cap>`
|
||||||
|
|
||||||
- ``bt``
|
- ``bt``
|
||||||
@ -187,12 +187,12 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``raw_data``\ [32]
|
- ``raw_data``\ [32]
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -211,8 +211,8 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -231,14 +231,14 @@ that doesn't support them will return an ``EINVAL`` error code.
|
|||||||
- V4L2_DV_BT_CAP_REDUCED_BLANKING
|
- V4L2_DV_BT_CAP_REDUCED_BLANKING
|
||||||
|
|
||||||
- CVT/GTF specific: the timings can make use of reduced blanking
|
- CVT/GTF specific: the timings can make use of reduced blanking
|
||||||
(CVT) or the 'Secondary GTF' curve (GTF).
|
(CVT) or the 'Secondary GTF' curve (GTF).
|
||||||
|
|
||||||
- .. row 6
|
- .. row 6
|
||||||
|
|
||||||
- V4L2_DV_BT_CAP_CUSTOM
|
- V4L2_DV_BT_CAP_CUSTOM
|
||||||
|
|
||||||
- Can support non-standard timings, i.e. timings not belonging to
|
- Can support non-standard timings, i.e. timings not belonging to
|
||||||
the standards set in the ``standards`` field.
|
the standards set in the ``standards`` field.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,8 +86,8 @@ introduced in Linux 2.6.21.
|
|||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Flags to go with the command, see :ref:`encoder-flags`. If no
|
- Flags to go with the command, see :ref:`encoder-flags`. If no
|
||||||
flags are defined for this command, drivers and applications must
|
flags are defined for this command, drivers and applications must
|
||||||
set this field to zero.
|
set this field to zero.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ introduced in Linux 2.6.21.
|
|||||||
- ``data``\ [8]
|
- ``data``\ [8]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ introduced in Linux 2.6.21.
|
|||||||
- 0
|
- 0
|
||||||
|
|
||||||
- Start the encoder. When the encoder is already running or paused,
|
- Start the encoder. When the encoder is already running or paused,
|
||||||
this command does nothing. No flags are defined for this command.
|
this command does nothing. No flags are defined for this command.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
@ -124,18 +124,18 @@ introduced in Linux 2.6.21.
|
|||||||
- 1
|
- 1
|
||||||
|
|
||||||
- Stop the encoder. When the ``V4L2_ENC_CMD_STOP_AT_GOP_END`` flag
|
- Stop the encoder. When the ``V4L2_ENC_CMD_STOP_AT_GOP_END`` flag
|
||||||
is set, encoding will continue until the end of the current *Group
|
is set, encoding will continue until the end of the current *Group
|
||||||
Of Pictures*, otherwise encoding will stop immediately. When the
|
Of Pictures*, otherwise encoding will stop immediately. When the
|
||||||
encoder is already stopped, this command does nothing. mem2mem
|
encoder is already stopped, this command does nothing. mem2mem
|
||||||
encoders will send a ``V4L2_EVENT_EOS`` event when the last frame
|
encoders will send a ``V4L2_EVENT_EOS`` event when the last frame
|
||||||
has been encoded and all frames are ready to be dequeued and will
|
has been encoded and all frames are ready to be dequeued and will
|
||||||
set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of
|
set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of
|
||||||
the capture queue to indicate there will be no new buffers
|
the capture queue to indicate there will be no new buffers
|
||||||
produced to dequeue. This buffer may be empty, indicated by the
|
produced to dequeue. This buffer may be empty, indicated by the
|
||||||
driver setting the ``bytesused`` field to 0. Once the
|
driver setting the ``bytesused`` field to 0. Once the
|
||||||
``V4L2_BUF_FLAG_LAST`` flag was set, the
|
``V4L2_BUF_FLAG_LAST`` flag was set, the
|
||||||
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
|
||||||
but return an ``EPIPE`` error code.
|
but return an ``EPIPE`` error code.
|
||||||
|
|
||||||
- .. row 3
|
- .. row 3
|
||||||
|
|
||||||
@ -144,9 +144,9 @@ introduced in Linux 2.6.21.
|
|||||||
- 2
|
- 2
|
||||||
|
|
||||||
- Pause the encoder. When the encoder has not been started yet, the
|
- Pause the encoder. When the encoder has not been started yet, the
|
||||||
driver will return an ``EPERM`` error code. When the encoder is
|
driver will return an ``EPERM`` error code. When the encoder is
|
||||||
already paused, this command does nothing. No flags are defined
|
already paused, this command does nothing. No flags are defined
|
||||||
for this command.
|
for this command.
|
||||||
|
|
||||||
- .. row 4
|
- .. row 4
|
||||||
|
|
||||||
@ -155,9 +155,9 @@ introduced in Linux 2.6.21.
|
|||||||
- 3
|
- 3
|
||||||
|
|
||||||
- Resume encoding after a PAUSE command. When the encoder has not
|
- Resume encoding after a PAUSE command. When the encoder has not
|
||||||
been started yet, the driver will return an ``EPERM`` error code. When
|
been started yet, the driver will return an ``EPERM`` error code. When
|
||||||
the encoder is already running, this command does nothing. No
|
the encoder is already running, this command does nothing. No
|
||||||
flags are defined for this command.
|
flags are defined for this command.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ introduced in Linux 2.6.21.
|
|||||||
- 0x0001
|
- 0x0001
|
||||||
|
|
||||||
- Stop encoding at the end of the current *Group Of Pictures*,
|
- Stop encoding at the end of the current *Group Of Pictures*,
|
||||||
rather than immediately.
|
rather than immediately.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user