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:
Mauro Carvalho Chehab 2016-07-04 16:25:48 -03:00
parent a163ad5ceb
commit 0579e6e3a3
141 changed files with 6030 additions and 6030 deletions

View File

@ -34,52 +34,52 @@ file: audio.h
#include <linux/types.h>
typedef enum {
AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
AUDIO_SOURCE_MEMORY /* Select internal memory 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_stream_source_t;
typedef enum {
AUDIO_STOPPED, /* Device is stopped */
AUDIO_PLAYING, /* Device is currently playing */
AUDIO_PAUSED /* Device is paused */
AUDIO_STOPPED, /* Device is stopped */
AUDIO_PLAYING, /* Device is currently playing */
AUDIO_PAUSED /* Device is paused */
} audio_play_state_t;
typedef enum {
AUDIO_STEREO,
AUDIO_MONO_LEFT,
AUDIO_MONO_RIGHT,
AUDIO_MONO,
AUDIO_STEREO_SWAPPED
AUDIO_STEREO,
AUDIO_MONO_LEFT,
AUDIO_MONO_RIGHT,
AUDIO_MONO,
AUDIO_STEREO_SWAPPED
} audio_channel_select_t;
typedef struct audio_mixer {
unsigned int volume_left;
unsigned int volume_right;
unsigned int volume_left;
unsigned int volume_right;
// what else do we need? bass, pass-through, ...
} audio_mixer_t;
typedef struct audio_status {
int AV_sync_state; /* sync audio and video? */
int mute_state; /* audio is muted */
audio_play_state_t play_state; /* current playback state */
audio_stream_source_t stream_source; /* current stream source */
audio_channel_select_t channel_select; /* currently selected channel */
int bypass_mode; /* pass on audio data to */
audio_mixer_t mixer_state; /* current mixer state */
int AV_sync_state; /* sync audio and video? */
int mute_state; /* audio is muted */
audio_play_state_t play_state; /* current playback state */
audio_stream_source_t stream_source; /* current stream source */
audio_channel_select_t channel_select; /* currently selected channel */
int bypass_mode; /* pass on audio data to */
audio_mixer_t mixer_state; /* current mixer state */
} audio_status_t; /* separate decoder hardware */
typedef
struct audio_karaoke { /* if Vocal1 or Vocal2 are non-zero, they get mixed */
int vocal1; /* into left and right t at 70% each */
int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
int melody; /* mixed into the left channel and */
/* Vocal2 into the right channel at 100% each. */
/* if Melody is non-zero, the melody channel gets mixed*/
int vocal1; /* into left and right t at 70% each */
int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
int melody; /* mixed into the left channel and */
/* Vocal2 into the right channel at 100% each. */
/* if Melody is non-zero, the melody channel gets mixed*/
} audio_karaoke_t; /* into left and right */

View File

@ -34,16 +34,16 @@ file: ca.h
/* slot interface types and 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_LINK 2 /* CI link layer level interface */
#define CA_CI_PHYS 4 /* CI physical layer level interface */
#define CA_DESCR 8 /* built-in descrambler */
#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_READY 2
} ca_slot_info_t;
@ -52,37 +52,37 @@ file: ca.h
/* descrambler types and info */
typedef struct ca_descr_info {
unsigned int num; /* number of available descramblers (keys) */
unsigned int type; /* type of supported scrambling system */
unsigned int num; /* number of available descramblers (keys) */
unsigned int type; /* type of supported scrambling system */
#define CA_ECD 1
#define CA_NDS 2
#define CA_DSS 4
} ca_descr_info_t;
typedef struct ca_caps {
unsigned int slot_num; /* total number of CA card and module slots */
unsigned int slot_type; /* OR of all supported types */
unsigned int descr_num; /* total number of descrambler slots (keys) */
unsigned int descr_type; /* OR of all supported types */
unsigned int slot_num; /* total number of CA card and module slots */
unsigned int slot_type; /* OR of all supported types */
unsigned int descr_num; /* total number of descrambler slots (keys) */
unsigned int descr_type; /* OR of all supported types */
} ca_caps_t;
/* a message to/from a CI-CAM */
typedef struct ca_msg {
unsigned int index;
unsigned int type;
unsigned int length;
unsigned char msg[256];
unsigned int index;
unsigned int type;
unsigned int length;
unsigned char msg[256];
} ca_msg_t;
typedef struct ca_descr {
unsigned int index;
unsigned int parity; /* 0 == even, 1 == odd */
unsigned char cw[8];
unsigned int index;
unsigned int parity; /* 0 == even, 1 == odd */
unsigned char cw[8];
} ca_descr_t;
typedef struct ca_pid {
unsigned int pid;
int index; /* -1 == disable*/
unsigned int pid;
int index; /* -1 == disable*/
} ca_pid_t;
#define CA_RESET _IO('o', 128)

View File

@ -41,51 +41,51 @@ file: dmx.h
enum dmx_output
{
DMX_OUT_DECODER, /* Streaming directly to decoder. */
DMX_OUT_TAP, /* Output going to a memory buffer */
/* (to be retrieved via the read command).*/
DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
/* (to be retrieved by reading from the */
/* logical DVR device). */
DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
DMX_OUT_DECODER, /* Streaming directly to decoder. */
DMX_OUT_TAP, /* Output going to a memory buffer */
/* (to be retrieved via the read command).*/
DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */
/* (to be retrieved by reading from the */
/* logical DVR device). */
DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */
};
typedef enum dmx_output dmx_output_t;
typedef enum dmx_input
{
DMX_IN_FRONTEND, /* Input from a front-end device. */
DMX_IN_DVR /* Input from the logical DVR device. */
DMX_IN_FRONTEND, /* Input from a front-end device. */
DMX_IN_DVR /* Input from the logical DVR device. */
} dmx_input_t;
typedef enum dmx_ts_pes
{
DMX_PES_AUDIO0,
DMX_PES_VIDEO0,
DMX_PES_TELETEXT0,
DMX_PES_SUBTITLE0,
DMX_PES_PCR0,
DMX_PES_AUDIO0,
DMX_PES_VIDEO0,
DMX_PES_TELETEXT0,
DMX_PES_SUBTITLE0,
DMX_PES_PCR0,
DMX_PES_AUDIO1,
DMX_PES_VIDEO1,
DMX_PES_TELETEXT1,
DMX_PES_SUBTITLE1,
DMX_PES_PCR1,
DMX_PES_AUDIO1,
DMX_PES_VIDEO1,
DMX_PES_TELETEXT1,
DMX_PES_SUBTITLE1,
DMX_PES_PCR1,
DMX_PES_AUDIO2,
DMX_PES_VIDEO2,
DMX_PES_TELETEXT2,
DMX_PES_SUBTITLE2,
DMX_PES_PCR2,
DMX_PES_AUDIO2,
DMX_PES_VIDEO2,
DMX_PES_TELETEXT2,
DMX_PES_SUBTITLE2,
DMX_PES_PCR2,
DMX_PES_AUDIO3,
DMX_PES_VIDEO3,
DMX_PES_TELETEXT3,
DMX_PES_SUBTITLE3,
DMX_PES_PCR3,
DMX_PES_AUDIO3,
DMX_PES_VIDEO3,
DMX_PES_TELETEXT3,
DMX_PES_SUBTITLE3,
DMX_PES_PCR3,
DMX_PES_OTHER
DMX_PES_OTHER
} dmx_pes_type_t;
#define DMX_PES_AUDIO DMX_PES_AUDIO0
@ -97,18 +97,18 @@ file: dmx.h
typedef struct dmx_filter
{
__u8 filter[DMX_FILTER_SIZE];
__u8 mask[DMX_FILTER_SIZE];
__u8 mode[DMX_FILTER_SIZE];
__u8 filter[DMX_FILTER_SIZE];
__u8 mask[DMX_FILTER_SIZE];
__u8 mode[DMX_FILTER_SIZE];
} dmx_filter_t;
struct dmx_sct_filter_params
{
__u16 pid;
dmx_filter_t filter;
__u32 timeout;
__u32 flags;
__u16 pid;
dmx_filter_t filter;
__u32 timeout;
__u32 flags;
#define DMX_CHECK_CRC 1
#define DMX_ONESHOT 2
#define DMX_IMMEDIATE_START 4
@ -118,33 +118,33 @@ file: dmx.h
struct dmx_pes_filter_params
{
__u16 pid;
dmx_input_t input;
dmx_output_t output;
dmx_pes_type_t pes_type;
__u32 flags;
__u16 pid;
dmx_input_t input;
dmx_output_t output;
dmx_pes_type_t pes_type;
__u32 flags;
};
typedef struct dmx_caps {
__u32 caps;
int num_decoders;
__u32 caps;
int num_decoders;
} dmx_caps_t;
typedef enum dmx_source {
DMX_SOURCE_FRONT0 = 0,
DMX_SOURCE_FRONT1,
DMX_SOURCE_FRONT2,
DMX_SOURCE_FRONT3,
DMX_SOURCE_DVR0 = 16,
DMX_SOURCE_DVR1,
DMX_SOURCE_DVR2,
DMX_SOURCE_DVR3
DMX_SOURCE_FRONT0 = 0,
DMX_SOURCE_FRONT1,
DMX_SOURCE_FRONT2,
DMX_SOURCE_FRONT3,
DMX_SOURCE_DVR0 = 16,
DMX_SOURCE_DVR1,
DMX_SOURCE_DVR2,
DMX_SOURCE_DVR3
} dmx_source_t;
struct dmx_stc {
unsigned int num; /* input : which STC? 0..N */
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
__u64 stc; /* output: stc in 'base'*90 kHz units */
unsigned int num; /* input : which STC? 0..N */
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
__u64 stc; /* output: stc in 'base'*90 kHz units */
};
#define DMX_START _IO('o', 41)

View File

@ -36,58 +36,58 @@ file: frontend.h
#include <linux/types.h>
enum fe_type {
FE_QPSK,
FE_QAM,
FE_OFDM,
FE_ATSC
FE_QPSK,
FE_QAM,
FE_OFDM,
FE_ATSC
};
enum fe_caps {
FE_IS_STUPID = 0,
FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2,
FE_CAN_FEC_2_3 = 0x4,
FE_CAN_FEC_3_4 = 0x8,
FE_CAN_FEC_4_5 = 0x10,
FE_CAN_FEC_5_6 = 0x20,
FE_CAN_FEC_6_7 = 0x40,
FE_CAN_FEC_7_8 = 0x80,
FE_CAN_FEC_8_9 = 0x100,
FE_CAN_FEC_AUTO = 0x200,
FE_CAN_QPSK = 0x400,
FE_CAN_QAM_16 = 0x800,
FE_CAN_QAM_32 = 0x1000,
FE_CAN_QAM_64 = 0x2000,
FE_CAN_QAM_128 = 0x4000,
FE_CAN_QAM_256 = 0x8000,
FE_CAN_QAM_AUTO = 0x10000,
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
FE_CAN_BANDWIDTH_AUTO = 0x40000,
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
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_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
FE_IS_STUPID = 0,
FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2,
FE_CAN_FEC_2_3 = 0x4,
FE_CAN_FEC_3_4 = 0x8,
FE_CAN_FEC_4_5 = 0x10,
FE_CAN_FEC_5_6 = 0x20,
FE_CAN_FEC_6_7 = 0x40,
FE_CAN_FEC_7_8 = 0x80,
FE_CAN_FEC_8_9 = 0x100,
FE_CAN_FEC_AUTO = 0x200,
FE_CAN_QPSK = 0x400,
FE_CAN_QAM_16 = 0x800,
FE_CAN_QAM_32 = 0x1000,
FE_CAN_QAM_64 = 0x2000,
FE_CAN_QAM_128 = 0x4000,
FE_CAN_QAM_256 = 0x8000,
FE_CAN_QAM_AUTO = 0x10000,
FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
FE_CAN_BANDWIDTH_AUTO = 0x40000,
FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
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_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
};
struct dvb_frontend_info {
char name[128];
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
__u32 frequency_min;
__u32 frequency_max;
__u32 frequency_stepsize;
__u32 frequency_tolerance;
__u32 symbol_rate_min;
__u32 symbol_rate_max;
__u32 symbol_rate_tolerance; /* ppm */
__u32 notifier_delay; /* DEPRECATED */
enum fe_caps caps;
char name[128];
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
__u32 frequency_min;
__u32 frequency_max;
__u32 frequency_stepsize;
__u32 frequency_tolerance;
__u32 symbol_rate_min;
__u32 symbol_rate_max;
__u32 symbol_rate_tolerance; /* ppm */
__u32 notifier_delay; /* DEPRECATED */
enum fe_caps caps;
};
@ -96,30 +96,30 @@ file: frontend.h
* the meaning of this struct...
*/
struct dvb_diseqc_master_cmd {
__u8 msg [6]; /* { framing, address, command, data [3] } */
__u8 msg_len; /* valid values are 3...6 */
__u8 msg [6]; /* { framing, address, command, data [3] } */
__u8 msg_len; /* valid values are 3...6 */
};
struct dvb_diseqc_slave_reply {
__u8 msg [4]; /* { framing, data [3] } */
__u8 msg_len; /* valid values are 0...4, 0 means no msg */
int timeout; /* return from ioctl after timeout ms with */
__u8 msg [4]; /* { framing, data [3] } */
__u8 msg_len; /* valid values are 0...4, 0 means no msg */
int timeout; /* return from ioctl after timeout ms with */
}; /* errorcode when no message was received */
enum fe_sec_voltage {
SEC_VOLTAGE_13,
SEC_VOLTAGE_18,
SEC_VOLTAGE_OFF
SEC_VOLTAGE_13,
SEC_VOLTAGE_18,
SEC_VOLTAGE_OFF
};
enum fe_sec_tone_mode {
SEC_TONE_ON,
SEC_TONE_OFF
SEC_TONE_ON,
SEC_TONE_OFF
};
enum fe_sec_mini_cmd {
SEC_MINI_A,
SEC_MINI_B
SEC_MINI_A,
SEC_MINI_B
};
/**
@ -134,93 +134,93 @@ file: frontend.h
* to reset DiSEqC, tone and parameters
*/
enum fe_status {
FE_HAS_SIGNAL = 0x01,
FE_HAS_CARRIER = 0x02,
FE_HAS_VITERBI = 0x04,
FE_HAS_SYNC = 0x08,
FE_HAS_LOCK = 0x10,
FE_TIMEDOUT = 0x20,
FE_REINIT = 0x40,
FE_HAS_SIGNAL = 0x01,
FE_HAS_CARRIER = 0x02,
FE_HAS_VITERBI = 0x04,
FE_HAS_SYNC = 0x08,
FE_HAS_LOCK = 0x10,
FE_TIMEDOUT = 0x20,
FE_REINIT = 0x40,
};
enum fe_spectral_inversion {
INVERSION_OFF,
INVERSION_ON,
INVERSION_AUTO
INVERSION_OFF,
INVERSION_ON,
INVERSION_AUTO
};
enum fe_code_rate {
FEC_NONE = 0,
FEC_1_2,
FEC_2_3,
FEC_3_4,
FEC_4_5,
FEC_5_6,
FEC_6_7,
FEC_7_8,
FEC_8_9,
FEC_AUTO,
FEC_3_5,
FEC_9_10,
FEC_2_5,
FEC_NONE = 0,
FEC_1_2,
FEC_2_3,
FEC_3_4,
FEC_4_5,
FEC_5_6,
FEC_6_7,
FEC_7_8,
FEC_8_9,
FEC_AUTO,
FEC_3_5,
FEC_9_10,
FEC_2_5,
};
enum fe_modulation {
QPSK,
QAM_16,
QAM_32,
QAM_64,
QAM_128,
QAM_256,
QAM_AUTO,
VSB_8,
VSB_16,
PSK_8,
APSK_16,
APSK_32,
DQPSK,
QAM_4_NR,
QPSK,
QAM_16,
QAM_32,
QAM_64,
QAM_128,
QAM_256,
QAM_AUTO,
VSB_8,
VSB_16,
PSK_8,
APSK_16,
APSK_32,
DQPSK,
QAM_4_NR,
};
enum fe_transmit_mode {
TRANSMISSION_MODE_2K,
TRANSMISSION_MODE_8K,
TRANSMISSION_MODE_AUTO,
TRANSMISSION_MODE_4K,
TRANSMISSION_MODE_1K,
TRANSMISSION_MODE_16K,
TRANSMISSION_MODE_32K,
TRANSMISSION_MODE_C1,
TRANSMISSION_MODE_C3780,
TRANSMISSION_MODE_2K,
TRANSMISSION_MODE_8K,
TRANSMISSION_MODE_AUTO,
TRANSMISSION_MODE_4K,
TRANSMISSION_MODE_1K,
TRANSMISSION_MODE_16K,
TRANSMISSION_MODE_32K,
TRANSMISSION_MODE_C1,
TRANSMISSION_MODE_C3780,
};
enum fe_guard_interval {
GUARD_INTERVAL_1_32,
GUARD_INTERVAL_1_16,
GUARD_INTERVAL_1_8,
GUARD_INTERVAL_1_4,
GUARD_INTERVAL_AUTO,
GUARD_INTERVAL_1_128,
GUARD_INTERVAL_19_128,
GUARD_INTERVAL_19_256,
GUARD_INTERVAL_PN420,
GUARD_INTERVAL_PN595,
GUARD_INTERVAL_PN945,
GUARD_INTERVAL_1_32,
GUARD_INTERVAL_1_16,
GUARD_INTERVAL_1_8,
GUARD_INTERVAL_1_4,
GUARD_INTERVAL_AUTO,
GUARD_INTERVAL_1_128,
GUARD_INTERVAL_19_128,
GUARD_INTERVAL_19_256,
GUARD_INTERVAL_PN420,
GUARD_INTERVAL_PN595,
GUARD_INTERVAL_PN945,
};
enum fe_hierarchy {
HIERARCHY_NONE,
HIERARCHY_1,
HIERARCHY_2,
HIERARCHY_4,
HIERARCHY_AUTO
HIERARCHY_NONE,
HIERARCHY_1,
HIERARCHY_2,
HIERARCHY_4,
HIERARCHY_AUTO
};
enum fe_interleaving {
INTERLEAVING_NONE,
INTERLEAVING_AUTO,
INTERLEAVING_240,
INTERLEAVING_720,
INTERLEAVING_NONE,
INTERLEAVING_AUTO,
INTERLEAVING_240,
INTERLEAVING_720,
};
/* S2API Commands */
@ -317,38 +317,38 @@ file: frontend.h
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
enum fe_pilot {
PILOT_ON,
PILOT_OFF,
PILOT_AUTO,
PILOT_ON,
PILOT_OFF,
PILOT_AUTO,
};
enum fe_rolloff {
ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
ROLLOFF_20,
ROLLOFF_25,
ROLLOFF_AUTO,
ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
ROLLOFF_20,
ROLLOFF_25,
ROLLOFF_AUTO,
};
enum fe_delivery_system {
SYS_UNDEFINED,
SYS_DVBC_ANNEX_A,
SYS_DVBC_ANNEX_B,
SYS_DVBT,
SYS_DSS,
SYS_DVBS,
SYS_DVBS2,
SYS_DVBH,
SYS_ISDBT,
SYS_ISDBS,
SYS_ISDBC,
SYS_ATSC,
SYS_ATSCMH,
SYS_DTMB,
SYS_CMMB,
SYS_DAB,
SYS_DVBT2,
SYS_TURBO,
SYS_DVBC_ANNEX_C,
SYS_UNDEFINED,
SYS_DVBC_ANNEX_A,
SYS_DVBC_ANNEX_B,
SYS_DVBT,
SYS_DSS,
SYS_DVBS,
SYS_DVBS2,
SYS_DVBH,
SYS_ISDBT,
SYS_ISDBS,
SYS_ISDBC,
SYS_ATSC,
SYS_ATSCMH,
SYS_DTMB,
SYS_CMMB,
SYS_DAB,
SYS_DVBT2,
SYS_TURBO,
SYS_DVBC_ANNEX_C,
};
/* backward compatibility */
@ -358,47 +358,47 @@ file: frontend.h
/* ATSC-MH */
enum atscmh_sccc_block_mode {
ATSCMH_SCCC_BLK_SEP = 0,
ATSCMH_SCCC_BLK_COMB = 1,
ATSCMH_SCCC_BLK_RES = 2,
ATSCMH_SCCC_BLK_SEP = 0,
ATSCMH_SCCC_BLK_COMB = 1,
ATSCMH_SCCC_BLK_RES = 2,
};
enum atscmh_sccc_code_mode {
ATSCMH_SCCC_CODE_HLF = 0,
ATSCMH_SCCC_CODE_QTR = 1,
ATSCMH_SCCC_CODE_RES = 2,
ATSCMH_SCCC_CODE_HLF = 0,
ATSCMH_SCCC_CODE_QTR = 1,
ATSCMH_SCCC_CODE_RES = 2,
};
enum atscmh_rs_frame_ensemble {
ATSCMH_RSFRAME_ENS_PRI = 0,
ATSCMH_RSFRAME_ENS_SEC = 1,
ATSCMH_RSFRAME_ENS_PRI = 0,
ATSCMH_RSFRAME_ENS_SEC = 1,
};
enum atscmh_rs_frame_mode {
ATSCMH_RSFRAME_PRI_ONLY = 0,
ATSCMH_RSFRAME_PRI_SEC = 1,
ATSCMH_RSFRAME_RES = 2,
ATSCMH_RSFRAME_PRI_ONLY = 0,
ATSCMH_RSFRAME_PRI_SEC = 1,
ATSCMH_RSFRAME_RES = 2,
};
enum atscmh_rs_code_mode {
ATSCMH_RSCODE_211_187 = 0,
ATSCMH_RSCODE_223_187 = 1,
ATSCMH_RSCODE_235_187 = 2,
ATSCMH_RSCODE_RES = 3,
ATSCMH_RSCODE_211_187 = 0,
ATSCMH_RSCODE_223_187 = 1,
ATSCMH_RSCODE_235_187 = 2,
ATSCMH_RSCODE_RES = 3,
};
#define NO_STREAM_ID_FILTER (~0U)
#define LNA_AUTO (~0U)
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 */
__u32 set:1; /* Either a set or get property */
__u32 buffer:1; /* Does this property use the buffer? */
__u32 reserved:30; /* Align */
/* Flags */
__u32 set:1; /* Either a set or get property */
__u32 buffer:1; /* Does this property use the buffer? */
__u32 reserved:30; /* Align */
};
/**
@ -414,10 +414,10 @@ file: frontend.h
* bit error, block error, lapsed time.
*/
enum fecap_scale_params {
FE_SCALE_NOT_AVAILABLE = 0,
FE_SCALE_DECIBEL,
FE_SCALE_RELATIVE,
FE_SCALE_COUNTER
FE_SCALE_NOT_AVAILABLE = 0,
FE_SCALE_DECIBEL,
FE_SCALE_RELATIVE,
FE_SCALE_COUNTER
};
/**
@ -452,43 +452,43 @@ file: frontend.h
* u.st.len = 4;
*/
struct dtv_stats {
__u8 scale; /* enum fecap_scale_params type */
union {
__u64 uvalue; /* for counters and relative scales */
__s64 svalue; /* for 0.001 dB measures */
};
__u8 scale; /* enum fecap_scale_params type */
union {
__u64 uvalue; /* for counters and relative scales */
__s64 svalue; /* for 0.001 dB measures */
};
} __attribute__ ((packed));
#define MAX_DTV_STATS 4
struct dtv_fe_stats {
__u8 len;
struct dtv_stats stat[MAX_DTV_STATS];
__u8 len;
struct dtv_stats stat[MAX_DTV_STATS];
} __attribute__ ((packed));
struct dtv_property {
__u32 cmd;
__u32 reserved[3];
union {
__u32 data;
struct dtv_fe_stats st;
struct {
__u8 data[32];
__u32 len;
__u32 reserved1[3];
void *reserved2;
} buffer;
} u;
int result;
__u32 cmd;
__u32 reserved[3];
union {
__u32 data;
struct dtv_fe_stats st;
struct {
__u8 data[32];
__u32 len;
__u32 reserved1[3];
void *reserved2;
} buffer;
} u;
int result;
} __attribute__ ((packed));
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
#define DTV_IOCTL_MAX_MSGS 64
struct dtv_properties {
__u32 num;
struct dtv_property *props;
__u32 num;
struct dtv_property *props;
};
#if defined(__DVB_CORE__) || !defined (__KERNEL__)
@ -500,13 +500,13 @@ file: frontend.h
*/
enum fe_bandwidth {
BANDWIDTH_8_MHZ,
BANDWIDTH_7_MHZ,
BANDWIDTH_6_MHZ,
BANDWIDTH_AUTO,
BANDWIDTH_5_MHZ,
BANDWIDTH_10_MHZ,
BANDWIDTH_1_712_MHZ,
BANDWIDTH_8_MHZ,
BANDWIDTH_7_MHZ,
BANDWIDTH_6_MHZ,
BANDWIDTH_AUTO,
BANDWIDTH_5_MHZ,
BANDWIDTH_10_MHZ,
BANDWIDTH_1_712_MHZ,
};
/* This is needed for legacy userspace support */
@ -528,45 +528,45 @@ file: frontend.h
typedef enum fe_delivery_system fe_delivery_system_t;
struct dvb_qpsk_parameters {
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
};
struct dvb_qam_parameters {
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
fe_modulation_t modulation; /* modulation type (see above) */
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
fe_modulation_t modulation; /* modulation type (see above) */
};
struct dvb_vsb_parameters {
fe_modulation_t modulation; /* modulation type (see above) */
fe_modulation_t modulation; /* modulation type (see above) */
};
struct dvb_ofdm_parameters {
fe_bandwidth_t bandwidth;
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_modulation_t constellation; /* modulation type (see above) */
fe_transmit_mode_t transmission_mode;
fe_guard_interval_t guard_interval;
fe_hierarchy_t hierarchy_information;
fe_bandwidth_t bandwidth;
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_modulation_t constellation; /* modulation type (see above) */
fe_transmit_mode_t transmission_mode;
fe_guard_interval_t guard_interval;
fe_hierarchy_t hierarchy_information;
};
struct dvb_frontend_parameters {
__u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
/* intermediate frequency in kHz for DVB-S */
fe_spectral_inversion_t inversion;
union {
struct dvb_qpsk_parameters qpsk; /* DVB-S */
struct dvb_qam_parameters qam; /* DVB-C */
struct dvb_ofdm_parameters ofdm; /* DVB-T */
struct dvb_vsb_parameters vsb; /* ATSC */
} u;
__u32 frequency; /* (absolute) frequency in Hz for DVB-C/DVB-T/ATSC */
/* intermediate frequency in kHz for DVB-S */
fe_spectral_inversion_t inversion;
union {
struct dvb_qpsk_parameters qpsk; /* DVB-S */
struct dvb_qam_parameters qam; /* DVB-C */
struct dvb_ofdm_parameters ofdm; /* DVB-T */
struct dvb_vsb_parameters vsb; /* ATSC */
} u;
};
struct dvb_frontend_event {
fe_status_t status;
struct dvb_frontend_parameters parameters;
fe_status_t status;
struct dvb_frontend_parameters parameters;
};
#endif

View File

@ -50,7 +50,7 @@ Arguments
- .. row 4
-
-
- if any, is to be stored.

View File

@ -38,7 +38,7 @@ Arguments
- int request
- Equals :ref:`FE_SET_FRONTEND` for this
command.
command.
- .. row 3

View File

@ -39,8 +39,8 @@ Arguments
- int request
- Equals
:ref:`FE_READ_SIGNAL_STRENGTH`
for this command.
:ref:`FE_READ_SIGNAL_STRENGTH`
for this command.
- .. row 3

View File

@ -41,8 +41,8 @@ Arguments
- int request
- Equals
:ref:`FE_READ_UNCORRECTED_BLOCKS`
for this command.
:ref:`FE_READ_UNCORRECTED_BLOCKS`
for this command.
- .. row 3

View File

@ -45,7 +45,7 @@ Arguments
- int request
- Equals :ref:`FE_SET_FRONTEND` for this
command.
command.
- .. row 3

View File

@ -23,8 +23,8 @@ from an internal (demux) or external (user write) source.
.. code-block:: c
typedef enum {
AUDIO_SOURCE_DEMUX,
AUDIO_SOURCE_MEMORY
AUDIO_SOURCE_DEMUX,
AUDIO_SOURCE_MEMORY
} audio_stream_source_t;
AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the
@ -45,9 +45,9 @@ representing the state of audio playback.
.. code-block:: c
typedef enum {
AUDIO_STOPPED,
AUDIO_PLAYING,
AUDIO_PAUSED
AUDIO_STOPPED,
AUDIO_PLAYING,
AUDIO_PAUSED
} audio_play_state_t;
@ -63,11 +63,11 @@ the following values.
.. code-block:: c
typedef enum {
AUDIO_STEREO,
AUDIO_MONO_LEFT,
AUDIO_MONO_RIGHT,
AUDIO_MONO,
AUDIO_STEREO_SWAPPED
AUDIO_STEREO,
AUDIO_MONO_LEFT,
AUDIO_MONO_RIGHT,
AUDIO_MONO,
AUDIO_STEREO_SWAPPED
} audio_channel_select_t;
@ -83,13 +83,13 @@ about various states of the playback operation.
.. code-block:: c
typedef struct audio_status {
boolean AV_sync_state;
boolean mute_state;
audio_play_state_t play_state;
audio_stream_source_t stream_source;
audio_channel_select_t channel_select;
boolean bypass_mode;
audio_mixer_t mixer_state;
boolean AV_sync_state;
boolean mute_state;
audio_play_state_t play_state;
audio_stream_source_t stream_source;
audio_channel_select_t channel_select;
boolean bypass_mode;
audio_mixer_t mixer_state;
} audio_status_t;
@ -105,8 +105,8 @@ audio volume.
.. code-block:: c
typedef struct audio_mixer {
unsigned int volume_left;
unsigned int volume_right;
unsigned int volume_left;
unsigned int volume_right;
} audio_mixer_t;
@ -144,9 +144,9 @@ The ioctl AUDIO_SET_KARAOKE uses the following format:
typedef
struct audio_karaoke {
int vocal1;
int vocal2;
int melody;
int vocal1;
int vocal2;
int melody;
} audio_karaoke_t;
If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t

View File

@ -58,22 +58,22 @@ Arguments
- .. row 3
-
-
- O_RDONLY read-only access
- .. row 4
-
-
- O_RDWR read/write access
- .. row 5
-
-
- O_NONBLOCK open in non-blocking mode
- .. row 6
-
-
- (blocking mode is the default)
@ -529,12 +529,12 @@ Arguments
- .. row 4
-
-
- TRUE Audio Mute
- .. row 5
-
-
- FALSE Audio Un-mute
@ -592,12 +592,12 @@ Arguments
- .. row 4
-
-
- TRUE AV-sync ON
- .. row 5
-
-
- FALSE AV-sync OFF
@ -655,16 +655,16 @@ Arguments
- boolean mode
- Enables or disables the decoding of the current Audio stream in
the DVB subsystem.
the DVB subsystem.
- .. row 4
-
-
- TRUE Bypass is disabled
- .. row 5
-
-
- FALSE Bypass is enabled
@ -836,11 +836,11 @@ Arguments
- __u64 \*pts
- 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,
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.
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
decoded frame or the last PTS extracted by the PES parser.
Return Value

View File

@ -16,16 +16,16 @@ ca_slot_info_t
.. code-block:: c
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_LINK 2 /* CI link layer level interface */
#define CA_CI_PHYS 4 /* CI physical layer level interface */
#define CA_DESCR 8 /* built-in descrambler */
#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_READY 2
} ca_slot_info_t;
@ -40,8 +40,8 @@ ca_descr_info_t
.. code-block:: c
typedef struct ca_descr_info {
unsigned int num; /* number of available descramblers (keys) */
unsigned int type; /* type of supported scrambling system */
unsigned int num; /* number of available descramblers (keys) */
unsigned int type; /* type of supported scrambling system */
#define CA_ECD 1
#define CA_NDS 2
#define CA_DSS 4
@ -57,10 +57,10 @@ ca_caps_t
.. code-block:: c
typedef struct ca_caps {
unsigned int slot_num; /* total number of CA card and module slots */
unsigned int slot_type; /* OR of all supported types */
unsigned int descr_num; /* total number of descrambler slots (keys) */
unsigned int descr_type;/* OR of all supported types */
unsigned int slot_num; /* total number of CA card and module slots */
unsigned int slot_type; /* OR of all supported types */
unsigned int descr_num; /* total number of descrambler slots (keys) */
unsigned int descr_type;/* OR of all supported types */
} ca_cap_t;
@ -74,10 +74,10 @@ ca_msg_t
/* a message to/from a CI-CAM */
typedef struct ca_msg {
unsigned int index;
unsigned int type;
unsigned int length;
unsigned char msg[256];
unsigned int index;
unsigned int type;
unsigned int length;
unsigned char msg[256];
} ca_msg_t;
@ -90,9 +90,9 @@ ca_descr_t
.. code-block:: c
typedef struct ca_descr {
unsigned int index;
unsigned int parity;
unsigned char cw[8];
unsigned int index;
unsigned int parity;
unsigned char cw[8];
} ca_descr_t;
@ -105,6 +105,6 @@ ca-pid
.. code-block:: c
typedef struct ca_pid {
unsigned int pid;
int index; /* -1 == disable*/
unsigned int pid;
int index; /* -1 == disable*/
} ca_pid_t;

View File

@ -57,22 +57,22 @@ Arguments
- .. row 3
-
-
- O_RDONLY read-only access
- .. row 4
-
-
- O_RDWR read/write access
- .. row 5
-
-
- O_NONBLOCK open in non-blocking mode
- .. row 6
-
-
- (blocking mode is the default)

View File

@ -61,17 +61,17 @@ Arguments
- .. row 3
-
-
- O_RDWR read/write access
- .. row 4
-
-
- O_NONBLOCK open in non-blocking mode
- .. row 5
-
-
- (blocking mode is the default)
@ -236,33 +236,33 @@ Return Value
- ``ECRC``
- Last section had a CRC error - no data returned. The buffer is
flushed.
flushed.
- .. row 4
- ``EOVERFLOW``
-
-
- .. row 5
-
-
- 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
- ``ETIMEDOUT``
- 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
- ``EFAULT``
- The driver failed to write to the callers buffer due to an invalid
\*buf pointer.
\*buf pointer.
@ -330,18 +330,18 @@ Return Value
- ``EWOULDBLOCK``
- No data was written. This might happen if O_NONBLOCK was
specified and there is no more buffer space available (if
O_NONBLOCK is not specified the function will block until buffer
space is available).
specified and there is no more buffer space available (if
O_NONBLOCK is not specified the function will block until buffer
space is available).
- .. row 2
- ``EBUSY``
- This error code indicates that there are conflicting requests. The
corresponding demux device is setup to receive data from the
front- end. Make sure that these filters are stopped and that the
filters with input set to DMX_IN_DVR are started.
corresponding demux device is setup to receive data from the
front- end. Make sure that these filters are stopped and that the
filters with input set to DMX_IN_DVR are started.
- .. row 3
@ -409,16 +409,16 @@ appropriately. The generic error codes are described at the
- ``EINVAL``
- 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
- ``EBUSY``
- This error code indicates that there are conflicting requests.
There are active filters filtering data from another input source.
Make sure that these filters are stopped before starting this
filter.
There are active filters filtering data from another input source.
Make sure that these filters are stopped before starting this
filter.
@ -597,9 +597,9 @@ appropriately. The generic error codes are described at the
- ``EBUSY``
- This error code indicates that there are conflicting requests.
There are active filters filtering data from another input source.
Make sure that these filters are stopped before starting this
filter.
There are active filters filtering data from another input source.
Make sure that these filters are stopped before starting this
filter.

View File

@ -30,7 +30,7 @@ Output for the demux
- .. _`DMX-OUT-DECODER`:
DMX_OUT_DECODER
DMX_OUT_DECODER
- Streaming directly to decoder.
@ -38,31 +38,31 @@ Output for the demux
- .. _`DMX-OUT-TAP`:
DMX_OUT_TAP
DMX_OUT_TAP
- Output going to a memory buffer (to be retrieved via the read
command). Delivers the stream output to the demux device on which
the ioctl is called.
command). Delivers the stream output to the demux device on which
the ioctl is called.
- .. row 4
- .. _`DMX-OUT-TS-TAP`:
DMX_OUT_TS_TAP
DMX_OUT_TS_TAP
- Output multiplexed into a new TS (to be retrieved by reading from
the logical DVR device). Routes output to the logical DVR device
``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
all filters for which ``DMX_OUT_TS_TAP`` was specified.
the logical DVR device). Routes output to the logical DVR device
``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
all filters for which ``DMX_OUT_TS_TAP`` was specified.
- .. row 5
- .. _`DMX-OUT-TSDEMUX-TAP`:
DMX_OUT_TSDEMUX_TAP
DMX_OUT_TSDEMUX_TAP
- 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
{
DMX_IN_FRONTEND, /* Input from a front-end device. */
DMX_IN_DVR /* Input from the logical DVR device. */
DMX_IN_FRONTEND, /* Input from a front-end device. */
DMX_IN_DVR /* Input from the logical DVR device. */
} dmx_input_t;
@ -91,31 +91,31 @@ dmx_pes_type_t
typedef enum
{
DMX_PES_AUDIO0,
DMX_PES_VIDEO0,
DMX_PES_TELETEXT0,
DMX_PES_SUBTITLE0,
DMX_PES_PCR0,
DMX_PES_AUDIO0,
DMX_PES_VIDEO0,
DMX_PES_TELETEXT0,
DMX_PES_SUBTITLE0,
DMX_PES_PCR0,
DMX_PES_AUDIO1,
DMX_PES_VIDEO1,
DMX_PES_TELETEXT1,
DMX_PES_SUBTITLE1,
DMX_PES_PCR1,
DMX_PES_AUDIO1,
DMX_PES_VIDEO1,
DMX_PES_TELETEXT1,
DMX_PES_SUBTITLE1,
DMX_PES_PCR1,
DMX_PES_AUDIO2,
DMX_PES_VIDEO2,
DMX_PES_TELETEXT2,
DMX_PES_SUBTITLE2,
DMX_PES_PCR2,
DMX_PES_AUDIO2,
DMX_PES_VIDEO2,
DMX_PES_TELETEXT2,
DMX_PES_SUBTITLE2,
DMX_PES_PCR2,
DMX_PES_AUDIO3,
DMX_PES_VIDEO3,
DMX_PES_TELETEXT3,
DMX_PES_SUBTITLE3,
DMX_PES_PCR3,
DMX_PES_AUDIO3,
DMX_PES_VIDEO3,
DMX_PES_TELETEXT3,
DMX_PES_SUBTITLE3,
DMX_PES_PCR3,
DMX_PES_OTHER
DMX_PES_OTHER
} dmx_pes_type_t;
@ -129,9 +129,9 @@ struct dmx_filter
typedef struct dmx_filter
{
__u8 filter[DMX_FILTER_SIZE];
__u8 mask[DMX_FILTER_SIZE];
__u8 mode[DMX_FILTER_SIZE];
__u8 filter[DMX_FILTER_SIZE];
__u8 mask[DMX_FILTER_SIZE];
__u8 mode[DMX_FILTER_SIZE];
} dmx_filter_t;
@ -145,10 +145,10 @@ struct dmx_sct_filter_params
struct dmx_sct_filter_params
{
__u16 pid;
dmx_filter_t filter;
__u32 timeout;
__u32 flags;
__u16 pid;
dmx_filter_t filter;
__u32 timeout;
__u32 flags;
#define DMX_CHECK_CRC 1
#define DMX_ONESHOT 2
#define DMX_IMMEDIATE_START 4
@ -166,11 +166,11 @@ struct dmx_pes_filter_params
struct dmx_pes_filter_params
{
__u16 pid;
dmx_input_t input;
dmx_output_t output;
dmx_pes_type_t pes_type;
__u32 flags;
__u16 pid;
dmx_input_t input;
dmx_output_t output;
dmx_pes_type_t pes_type;
__u32 flags;
};
@ -184,12 +184,12 @@ struct dmx_event
struct dmx_event
{
dmx_event_t event;
time_t timeStamp;
union
{
dmx_scrambling_status_t scrambling;
} u;
dmx_event_t event;
time_t timeStamp;
union
{
dmx_scrambling_status_t scrambling;
} u;
};
@ -202,9 +202,9 @@ struct dmx_stc
.. code-block:: c
struct dmx_stc {
unsigned int num; /* input : which STC? 0..N */
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
__u64 stc; /* output: stc in 'base'*90 kHz units */
unsigned int num; /* input : which STC? 0..N */
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
__u64 stc; /* output: stc in 'base'*90 kHz units */
};
@ -217,8 +217,8 @@ struct dmx_caps
.. code-block:: c
typedef struct dmx_caps {
__u32 caps;
int num_decoders;
__u32 caps;
int num_decoders;
} dmx_caps_t;
@ -231,12 +231,12 @@ enum dmx_source_t
.. code-block:: c
typedef enum {
DMX_SOURCE_FRONT0 = 0,
DMX_SOURCE_FRONT1,
DMX_SOURCE_FRONT2,
DMX_SOURCE_FRONT3,
DMX_SOURCE_DVR0 = 16,
DMX_SOURCE_DVR1,
DMX_SOURCE_DVR2,
DMX_SOURCE_DVR3
DMX_SOURCE_FRONT0 = 0,
DMX_SOURCE_FRONT1,
DMX_SOURCE_FRONT2,
DMX_SOURCE_FRONT3,
DMX_SOURCE_DVR0 = 16,
DMX_SOURCE_DVR1,
DMX_SOURCE_DVR2,
DMX_SOURCE_DVR3
} dmx_source_t;

View File

@ -12,6 +12,6 @@ struct dtv_fe_stats
#define MAX_DTV_STATS 4
struct dtv_fe_stats {
__u8 len;
struct dtv_stats stat[MAX_DTV_STATS];
__u8 len;
struct dtv_stats stat[MAX_DTV_STATS];
} __packed;

View File

@ -10,6 +10,6 @@ struct dtv_properties
.. code-block:: c
struct dtv_properties {
__u32 num;
struct dtv_property *props;
__u32 num;
struct dtv_property *props;
};

View File

@ -12,19 +12,19 @@ struct dtv_property
/* Reserved fields should be set to 0 */
struct dtv_property {
__u32 cmd;
__u32 reserved[3];
union {
__u32 data;
struct dtv_fe_stats st;
struct {
__u8 data[32];
__u32 len;
__u32 reserved1[3];
void *reserved2;
} buffer;
} u;
int result;
__u32 cmd;
__u32 reserved[3];
union {
__u32 data;
struct dtv_fe_stats st;
struct {
__u8 data[32];
__u32 len;
__u32 reserved1[3];
void *reserved2;
} buffer;
} u;
int result;
} __attribute__ ((packed));
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */

View File

@ -10,9 +10,9 @@ struct dtv_stats
.. code-block:: c
struct dtv_stats {
__u8 scale; /* enum fecap_scale_params type */
union {
__u64 uvalue; /* for counters and relative scales */
__s64 svalue; /* for 1/1000 dB measures */
};
__u8 scale; /* enum fecap_scale_params type */
union {
__u64 uvalue; /* for counters and relative scales */
__s64 svalue; /* for 1/1000 dB measures */
};
} __packed;

View File

@ -10,6 +10,6 @@ frontend events
.. code-block:: c
struct dvb_frontend_event {
fe_status_t status;
struct dvb_frontend_parameters parameters;
fe_status_t status;
struct dvb_frontend_parameters parameters;
};

View File

@ -30,15 +30,15 @@ FrontendParameters structure:
.. code-block:: c
struct dvb_frontend_parameters {
uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
/* intermediate frequency in kHz for QPSK */
fe_spectral_inversion_t inversion;
union {
struct dvb_qpsk_parameters qpsk;
struct dvb_qam_parameters qam;
struct dvb_ofdm_parameters ofdm;
struct dvb_vsb_parameters vsb;
} u;
uint32_t frequency; /* (absolute) frequency in Hz for QAM/OFDM */
/* intermediate frequency in kHz for QPSK */
fe_spectral_inversion_t inversion;
union {
struct dvb_qpsk_parameters qpsk;
struct dvb_qam_parameters qam;
struct dvb_ofdm_parameters ofdm;
struct dvb_vsb_parameters vsb;
} u;
};
In the case of QPSK frontends the ``frequency`` field specifies the
@ -61,8 +61,8 @@ structure:
.. code-block:: c
struct dvb_qpsk_parameters {
uint32_t symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
uint32_t symbol_rate; /* symbol rate in Symbols per second */
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
struct dvb_qam_parameters {
uint32_t symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (see above) */
fe_modulation_t modulation; /* modulation type (see above) */
uint32_t symbol_rate; /* symbol rate in Symbols per second */
fe_code_rate_t fec_inner; /* forward error correction (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
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
struct dvb_ofdm_parameters {
fe_bandwidth_t bandwidth;
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_modulation_t constellation; /* modulation type (see above) */
fe_transmit_mode_t transmission_mode;
fe_guard_interval_t guard_interval;
fe_hierarchy_t hierarchy_information;
fe_bandwidth_t bandwidth;
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_modulation_t constellation; /* modulation type (see above) */
fe_transmit_mode_t transmission_mode;
fe_guard_interval_t guard_interval;
fe_hierarchy_t hierarchy_information;
};

View File

@ -59,33 +59,33 @@ The code that would do the above is:
#include <linux/dvb/frontend.h>
static struct dtv_property props[] = {
{ .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
{ .cmd = DTV_FREQUENCY, .u.data = 651000000 },
{ .cmd = DTV_MODULATION, .u.data = QAM_256 },
{ .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
{ .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
{ .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
{ .cmd = DTV_TUNE }
{ .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
{ .cmd = DTV_FREQUENCY, .u.data = 651000000 },
{ .cmd = DTV_MODULATION, .u.data = QAM_256 },
{ .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
{ .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
{ .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
{ .cmd = DTV_TUNE }
};
static struct dtv_properties dtv_prop = {
.num = 6, .props = props
.num = 6, .props = props
};
int main(void)
{
int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
if (!fd) {
perror ("open");
return -1;
}
if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) {
perror("ioctl");
return -1;
}
printf("Frontend set\\n");
return 0;
if (!fd) {
perror ("open");
return -1;
}
if (ioctl(fd, FE_SET_PROPERTY, &dtv_prop) == -1) {
perror("ioctl");
return -1;
}
printf("Frontend set\\n");
return 0;
}
NOTE: While it is possible to directly call the Kernel code like the

View File

@ -48,23 +48,23 @@ tuners, but can easily be adjusted for QAM.
/* routine for checking if we have a signal and other status information*/
int FEReadStatus(int fd, fe_status_t *stat)
{
int ans;
int ans;
if ( (ans = ioctl(fd,FE_READ_STATUS,stat) < 0)){
perror("FE READ STATUS: ");
return -1;
}
if ( (ans = ioctl(fd,FE_READ_STATUS,stat) < 0)){
perror("FE READ STATUS: ");
return -1;
}
if (*stat & FE_HAS_POWER)
printf("FE HAS POWER\\n");
if (*stat & FE_HAS_POWER)
printf("FE HAS POWER\\n");
if (*stat & FE_HAS_SIGNAL)
printf("FE HAS SIGNAL\\n");
if (*stat & FE_HAS_SIGNAL)
printf("FE HAS SIGNAL\\n");
if (*stat & FE_SPECTRUM_INV)
printf("SPEKTRUM INV\\n");
if (*stat & FE_SPECTRUM_INV)
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 */
int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
int diseqc, int pol, int srate, int fec, int lnb_lof1,
int lnb_lof2, int lnb_slof)
int diseqc, int pol, int srate, int fec, int lnb_lof1,
int lnb_lof2, int lnb_slof)
{
struct secCommand scmd;
struct secCmdSequence scmds;
struct dmx_pes_filter_params pesFilterParams;
FrontendParameters frp;
struct pollfd pfd[1];
FrontendEvent event;
int demux1, demux2, demux3, front;
struct secCommand scmd;
struct secCmdSequence scmds;
struct dmx_pes_filter_params pesFilterParams;
FrontendParameters frp;
struct pollfd pfd[1];
FrontendEvent event;
int demux1, demux2, demux3, front;
frequency = (uint32_t) freq;
symbolrate = (uint32_t) srate;
frequency = (uint32_t) freq;
symbolrate = (uint32_t) srate;
if((front = open(FRONT,O_RDWR)) < 0){
perror("FRONTEND DEVICE: ");
return -1;
}
if((front = open(FRONT,O_RDWR)) < 0){
perror("FRONTEND DEVICE: ");
return -1;
}
if((sec = open(SEC,O_RDWR)) < 0){
perror("SEC DEVICE: ");
return -1;
}
if((sec = open(SEC,O_RDWR)) < 0){
perror("SEC DEVICE: ");
return -1;
}
if (demux1 < 0){
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux1 < 0){
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux2 < 0){
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux2 < 0){
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux3 < 0){
if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux3 < 0){
if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (freq < lnb_slof) {
frp.Frequency = (freq - lnb_lof1);
scmds.continuousTone = SEC_TONE_OFF;
} else {
frp.Frequency = (freq - lnb_lof2);
scmds.continuousTone = SEC_TONE_ON;
}
frp.Inversion = INVERSION_AUTO;
if (pol) scmds.voltage = SEC_VOLTAGE_18;
else scmds.voltage = SEC_VOLTAGE_13;
if (freq < lnb_slof) {
frp.Frequency = (freq - lnb_lof1);
scmds.continuousTone = SEC_TONE_OFF;
} else {
frp.Frequency = (freq - lnb_lof2);
scmds.continuousTone = SEC_TONE_ON;
}
frp.Inversion = INVERSION_AUTO;
if (pol) scmds.voltage = SEC_VOLTAGE_18;
else scmds.voltage = SEC_VOLTAGE_13;
scmd.type=0;
scmd.u.diseqc.addr=0x10;
scmd.u.diseqc.cmd=0x38;
scmd.u.diseqc.numParams=1;
scmd.u.diseqc.params[0] = 0xF0 | ((diseqc * 4) & 0x0F) |
(scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
(scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
scmd.type=0;
scmd.u.diseqc.addr=0x10;
scmd.u.diseqc.cmd=0x38;
scmd.u.diseqc.numParams=1;
scmd.u.diseqc.params[0] = 0xF0 | ((diseqc * 4) & 0x0F) |
(scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
(scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
scmds.miniCommand=SEC_MINI_NONE;
scmds.numCommands=1;
scmds.commands=&scmd;
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
perror("SEC SEND: ");
return -1;
}
scmds.miniCommand=SEC_MINI_NONE;
scmds.numCommands=1;
scmds.commands=&scmd;
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
perror("SEC SEND: ");
return -1;
}
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
perror("SEC SEND: ");
return -1;
}
if (ioctl(sec, SEC_SEND_SEQUENCE, &scmds) < 0){
perror("SEC SEND: ");
return -1;
}
frp.u.qpsk.SymbolRate = srate;
frp.u.qpsk.FEC_inner = fec;
frp.u.qpsk.SymbolRate = srate;
frp.u.qpsk.FEC_inner = fec;
if (ioctl(front, FE_SET_FRONTEND, &frp) < 0){
perror("QPSK TUNE: ");
return -1;
}
if (ioctl(front, FE_SET_FRONTEND, &frp) < 0){
perror("QPSK TUNE: ");
return -1;
}
pfd[0].fd = front;
pfd[0].events = POLLIN;
pfd[0].fd = front;
pfd[0].events = POLLIN;
if (poll(pfd,1,3000)){
if (pfd[0].revents & POLLIN){
printf("Getting QPSK event\\n");
if ( ioctl(front, FE_GET_EVENT, &event)
if (poll(pfd,1,3000)){
if (pfd[0].revents & POLLIN){
printf("Getting QPSK event\\n");
if ( ioctl(front, FE_GET_EVENT, &event)
== -EOVERFLOW){
perror("qpsk get event");
return -1;
}
printf("Received ");
switch(event.type){
case FE_UNEXPECTED_EV:
printf("unexpected event\\n");
return -1;
case FE_FAILURE_EV:
printf("failure event\\n");
return -1;
== -EOVERFLOW){
perror("qpsk get event");
return -1;
}
printf("Received ");
switch(event.type){
case FE_UNEXPECTED_EV:
printf("unexpected event\\n");
return -1;
case FE_FAILURE_EV:
printf("failure event\\n");
return -1;
case FE_COMPLETION_EV:
printf("completion event\\n");
}
}
}
case FE_COMPLETION_EV:
printf("completion event\\n");
}
}
}
pesFilterParams.pid = vpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_VIDEO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_vpid");
return -1;
}
pesFilterParams.pid = vpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_VIDEO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_vpid");
return -1;
}
pesFilterParams.pid = apid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_AUDIO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_apid");
return -1;
}
pesFilterParams.pid = apid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_AUDIO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_apid");
return -1;
}
pesFilterParams.pid = tpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_TELETEXT;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux3, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_tpid");
return -1;
}
pesFilterParams.pid = tpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_DECODER;
pesFilterParams.pes_type = DMX_PES_TELETEXT;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux3, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("set_tpid");
return -1;
}
return has_signal(fds);
return has_signal(fds);
}
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)
{
struct dmx_pes_filter_params pesFilterParams;
struct dmx_pes_filter_params pesFilterParams;
if (demux1 < 0){
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux1 < 0){
if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux2 < 0){
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
if (demux2 < 0){
if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
< 0){
perror("DEMUX DEVICE: ");
return -1;
}
}
pesFilterParams.pid = vpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.pes_type = DMX_PES_VIDEO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("DEMUX DEVICE");
return -1;
}
pesFilterParams.pid = apid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.pes_type = DMX_PES_AUDIO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("DEMUX DEVICE");
return -1;
}
return 0;
pesFilterParams.pid = vpid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.pes_type = DMX_PES_VIDEO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux1, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("DEMUX DEVICE");
return -1;
}
pesFilterParams.pid = apid;
pesFilterParams.input = DMX_IN_FRONTEND;
pesFilterParams.output = DMX_OUT_TS_TAP;
pesFilterParams.pes_type = DMX_PES_AUDIO;
pesFilterParams.flags = DMX_IMMEDIATE_START;
if (ioctl(demux2, DMX_SET_PES_FILTER, &pesFilterParams) < 0){
perror("DEMUX DEVICE");
return -1;
}
return 0;
}
/* start recording MAX_LENGTH , assuming the transponder is tuned */
@ -319,62 +319,62 @@ recording.
/* vpid, apid: PIDs of video and audio channels */
int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
{
int i;
int len;
int written;
uint8_t buf[BUFFY];
uint64_t length;
struct pollfd pfd[1];
int dvr, dvr_out;
int i;
int len;
int written;
uint8_t buf[BUFFY];
uint64_t length;
struct pollfd pfd[1];
int dvr, dvr_out;
/* open dvr device */
if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) < 0){
perror("DVR DEVICE");
return -1;
}
/* open dvr device */
if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) < 0){
perror("DVR DEVICE");
return -1;
}
/* switch video and audio demuxes to dvr */
printf ("Switching dvr on\\n");
i = switch_to_record(demux1, demux2, vpid, apid);
printf("finished: ");
/* switch video and audio demuxes to dvr */
printf ("Switching dvr on\\n");
i = switch_to_record(demux1, demux2, vpid, apid);
printf("finished: ");
printf("Recording %2.0f MB of test file in TS format\\n",
MAX_LENGTH/(1024.0*1024.0));
length = 0;
printf("Recording %2.0f MB of test file in TS format\\n",
MAX_LENGTH/(1024.0*1024.0));
length = 0;
/* open output file */
if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
|O_TRUNC, S_IRUSR|S_IWUSR
|S_IRGRP|S_IWGRP|S_IROTH|
S_IWOTH)) < 0){
perror("Can't open file for dvr test");
return -1;
}
/* open output file */
if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
|O_TRUNC, S_IRUSR|S_IWUSR
|S_IRGRP|S_IWGRP|S_IROTH|
S_IWOTH)) < 0){
perror("Can't open file for dvr test");
return -1;
}
pfd[0].fd = dvr;
pfd[0].events = POLLIN;
pfd[0].fd = dvr;
pfd[0].events = POLLIN;
/* poll for dvr data and write to file */
while (length < MAX_LENGTH ) {
if (poll(pfd,1,1)){
if (pfd[0].revents & POLLIN){
len = read(dvr, buf, BUFFY);
if (len < 0){
perror("recording");
return -1;
}
if (len > 0){
written = 0;
while (written < len)
written +=
write (dvr_out,
buf, len);
length += len;
printf("written %2.0f MB\\r",
length/1024./1024.);
}
}
}
}
return 0;
/* poll for dvr data and write to file */
while (length < MAX_LENGTH ) {
if (poll(pfd,1,1)){
if (pfd[0].revents & POLLIN){
len = read(dvr, buf, BUFFY);
if (len < 0){
perror("recording");
return -1;
}
if (len > 0){
written = 0;
while (written < len)
written +=
write (dvr_out,
buf, len);
length += len;
printf("written %2.0f MB\\r",
length/1024./1024.);
}
}
}
}
return 0;
}

View File

@ -24,7 +24,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-AUTO`:
``BANDWIDTH_AUTO``
``BANDWIDTH_AUTO``
- Autodetect bandwidth (if supported)
@ -32,7 +32,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-1-712-MHZ`:
``BANDWIDTH_1_712_MHZ``
``BANDWIDTH_1_712_MHZ``
- 1.712 MHz
@ -40,7 +40,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-5-MHZ`:
``BANDWIDTH_5_MHZ``
``BANDWIDTH_5_MHZ``
- 5 MHz
@ -48,7 +48,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-6-MHZ`:
``BANDWIDTH_6_MHZ``
``BANDWIDTH_6_MHZ``
- 6 MHz
@ -56,7 +56,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-7-MHZ`:
``BANDWIDTH_7_MHZ``
``BANDWIDTH_7_MHZ``
- 7 MHz
@ -64,7 +64,7 @@ Frontend bandwidth
- .. _`BANDWIDTH-8-MHZ`:
``BANDWIDTH_8_MHZ``
``BANDWIDTH_8_MHZ``
- 8 MHz
@ -72,6 +72,6 @@ Frontend bandwidth
- .. _`BANDWIDTH-10-MHZ`:
``BANDWIDTH_10_MHZ``
``BANDWIDTH_10_MHZ``
- 10 MHz

View File

@ -65,7 +65,7 @@ appropriately. The generic error codes are described at the
- msg_len
- Length of the DiSEqC message. Valid values are 0 to 4, where 0
means no msg
means no msg
- .. row 3
@ -74,4 +74,4 @@ appropriately. The generic error codes are described at the
- timeout
- Return from ioctl after timeout ms with errorcode when no message
was received
was received

View File

@ -69,7 +69,7 @@ enum fe_sec_mini_cmd
- .. _`SEC-MINI-A`:
``SEC_MINI_A``
``SEC_MINI_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``
- Sends a mini-DiSEqC 22kHz '1' Data Burst to select satellite-B

View File

@ -71,8 +71,8 @@ appropriately. The generic error codes are described at the
- type
- **DEPRECATED**. DVBv3 type. Should not be used on modern programs,
as a frontend may have more than one type. So, the DVBv5 API
should be used instead to enumerate and select the frontend type.
as a frontend may have more than one type. So, the DVBv5 API
should be used instead to enumerate and select the frontend type.
- .. row 3
@ -177,16 +177,16 @@ supported only on some specific frontend types.
- .. _`FE-IS-STUPID`:
``FE_IS_STUPID``
``FE_IS_STUPID``
- There's something wrong at the frontend, and it can't report its
capabilities
capabilities
- .. row 3
- .. _`FE-CAN-INVERSION-AUTO`:
``FE_CAN_INVERSION_AUTO``
``FE_CAN_INVERSION_AUTO``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- Currently, unused
@ -378,7 +378,7 @@ supported only on some specific frontend types.
- .. _`FE-CAN-MULTISTREAM`:
``FE_CAN_MULTISTREAM``
``FE_CAN_MULTISTREAM``
- 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``
- 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``
- 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``
- 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``
- 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``
- The frontend can stop spurious TS data output

View File

@ -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``
- 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``
- 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``
- The frontend FEC inner coding (Viterbi, LDPC or other inner code)
is stable
is stable
- .. row 5
- .. _`FE-HAS-SYNC`:
``FE_HAS_SYNC``
``FE_HAS_SYNC``
- 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``
- 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``
- 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``
- The frontend was reinitialized, application is recommended to
reset DiSEqC, tone and parameters
reset DiSEqC, tone and parameters

View File

@ -75,7 +75,7 @@ enum fe_sec_tone_mode
- .. _`SEC-TONE-ON`:
``SEC_TONE_ON``
``SEC_TONE_ON``
- 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``
- Don't send a 22kHz tone to the antenna (except if the
FE_DISEQC_* ioctls are called)
FE_DISEQC_* ioctls are called)

View File

@ -26,13 +26,13 @@ fe_type_t type, defined as:
- Description
- :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` equivalent
type
type
- .. row 2
- .. _`FE-QPSK`:
``FE_QPSK``
``FE_QPSK``
- For DVB-S standard
@ -42,7 +42,7 @@ fe_type_t type, defined as:
- .. _`FE-QAM`:
``FE_QAM``
``FE_QAM``
- For DVB-C annex A standard
@ -52,7 +52,7 @@ fe_type_t type, defined as:
- .. _`FE-OFDM`:
``FE_OFDM``
``FE_OFDM``
- For DVB-T standard
@ -62,10 +62,10 @@ fe_type_t type, defined as:
- .. _`FE-ATSC`:
``FE_ATSC``
``FE_ATSC``
- 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)

View File

@ -93,7 +93,7 @@ modulations are supported by a given standard.
- .. _`QPSK`:
``QPSK``
``QPSK``
- QPSK modulation
@ -101,7 +101,7 @@ modulations are supported by a given standard.
- .. _`QAM-16`:
``QAM_16``
``QAM_16``
- 16-QAM modulation
@ -109,7 +109,7 @@ modulations are supported by a given standard.
- .. _`QAM-32`:
``QAM_32``
``QAM_32``
- 32-QAM modulation
@ -117,7 +117,7 @@ modulations are supported by a given standard.
- .. _`QAM-64`:
``QAM_64``
``QAM_64``
- 64-QAM modulation
@ -125,7 +125,7 @@ modulations are supported by a given standard.
- .. _`QAM-128`:
``QAM_128``
``QAM_128``
- 128-QAM modulation
@ -133,7 +133,7 @@ modulations are supported by a given standard.
- .. _`QAM-256`:
``QAM_256``
``QAM_256``
- 256-QAM modulation
@ -141,7 +141,7 @@ modulations are supported by a given standard.
- .. _`QAM-AUTO`:
``QAM_AUTO``
``QAM_AUTO``
- Autodetect QAM modulation
@ -149,7 +149,7 @@ modulations are supported by a given standard.
- .. _`VSB-8`:
``VSB_8``
``VSB_8``
- 8-VSB modulation
@ -157,7 +157,7 @@ modulations are supported by a given standard.
- .. _`VSB-16`:
``VSB_16``
``VSB_16``
- 16-VSB modulation
@ -165,7 +165,7 @@ modulations are supported by a given standard.
- .. _`PSK-8`:
``PSK_8``
``PSK_8``
- 8-PSK modulation
@ -173,7 +173,7 @@ modulations are supported by a given standard.
- .. _`APSK-16`:
``APSK_16``
``APSK_16``
- 16-APSK modulation
@ -181,7 +181,7 @@ modulations are supported by a given standard.
- .. _`APSK-32`:
``APSK_32``
``APSK_32``
- 32-APSK modulation
@ -189,7 +189,7 @@ modulations are supported by a given standard.
- .. _`DQPSK`:
``DQPSK``
``DQPSK``
- DQPSK modulation
@ -197,7 +197,7 @@ modulations are supported by a given standard.
- .. _`QAM-4-NR`:
``QAM_4_NR``
``QAM_4_NR``
- 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``
- 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``
- 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``
- Autodetect spectral band inversion.
@ -339,7 +339,7 @@ enum fe_code_rate: type of the Forward Error Correction.
- .. _`FEC-NONE`:
``FEC_NONE``
``FEC_NONE``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- 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``
- Forward Error Correction Code 3/5
@ -469,7 +469,7 @@ described in the DiSEqC spec.
- .. _`SEC-VOLTAGE-13`:
``SEC_VOLTAGE_13``
``SEC_VOLTAGE_13``
- Set DC voltage level to 13V
@ -477,7 +477,7 @@ described in the DiSEqC spec.
- .. _`SEC-VOLTAGE-18`:
``SEC_VOLTAGE_18``
``SEC_VOLTAGE_18``
- Set DC voltage level to 18V
@ -485,7 +485,7 @@ described in the DiSEqC spec.
- .. _`SEC-VOLTAGE-OFF`:
``SEC_VOLTAGE_OFF``
``SEC_VOLTAGE_OFF``
- Don't send any voltage to the antenna
@ -530,7 +530,7 @@ fe_pilot type
- .. _`PILOT-ON`:
``PILOT_ON``
``PILOT_ON``
- Pilot tones enabled
@ -538,7 +538,7 @@ fe_pilot type
- .. _`PILOT-OFF`:
``PILOT_OFF``
``PILOT_OFF``
- Pilot tones disabled
@ -546,7 +546,7 @@ fe_pilot type
- .. _`PILOT-AUTO`:
``PILOT_AUTO``
``PILOT_AUTO``
- Autodetect pilot tones
@ -583,7 +583,7 @@ fe_rolloff type
- .. _`ROLLOFF-35`:
``ROLLOFF_35``
``ROLLOFF_35``
- Roloff factor: α=35%
@ -591,7 +591,7 @@ fe_rolloff type
- .. _`ROLLOFF-20`:
``ROLLOFF_20``
``ROLLOFF_20``
- Roloff factor: α=20%
@ -599,7 +599,7 @@ fe_rolloff type
- .. _`ROLLOFF-25`:
``ROLLOFF_25``
``ROLLOFF_25``
- Roloff factor: α=25%
@ -607,7 +607,7 @@ fe_rolloff type
- .. _`ROLLOFF-AUTO`:
``ROLLOFF_AUTO``
``ROLLOFF_AUTO``
- Auto-detect the roloff factor.
@ -670,7 +670,7 @@ Possible values:
- .. _`SYS-UNDEFINED`:
``SYS_UNDEFINED``
``SYS_UNDEFINED``
- Undefined standard. Generally, indicates an error
@ -678,7 +678,7 @@ Possible values:
- .. _`SYS-DVBC-ANNEX-A`:
``SYS_DVBC_ANNEX_A``
``SYS_DVBC_ANNEX_A``
- 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``
- 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``
- Cable TV: DVB-C following ITU-T J.83 Annex C spec
@ -702,7 +702,7 @@ Possible values:
- .. _`SYS-ISDBC`:
``SYS_ISDBC``
``SYS_ISDBC``
- Cable TV: ISDB-C (no drivers yet)
@ -710,7 +710,7 @@ Possible values:
- .. _`SYS-DVBT`:
``SYS_DVBT``
``SYS_DVBT``
- Terrestral TV: DVB-T
@ -718,7 +718,7 @@ Possible values:
- .. _`SYS-DVBT2`:
``SYS_DVBT2``
``SYS_DVBT2``
- Terrestral TV: DVB-T2
@ -726,7 +726,7 @@ Possible values:
- .. _`SYS-ISDBT`:
``SYS_ISDBT``
``SYS_ISDBT``
- Terrestral TV: ISDB-T
@ -734,7 +734,7 @@ Possible values:
- .. _`SYS-ATSC`:
``SYS_ATSC``
``SYS_ATSC``
- Terrestral TV: ATSC
@ -742,7 +742,7 @@ Possible values:
- .. _`SYS-ATSCMH`:
``SYS_ATSCMH``
``SYS_ATSCMH``
- Terrestral TV (mobile): ATSC-M/H
@ -750,7 +750,7 @@ Possible values:
- .. _`SYS-DTMB`:
``SYS_DTMB``
``SYS_DTMB``
- Terrestrial TV: DTMB
@ -758,7 +758,7 @@ Possible values:
- .. _`SYS-DVBS`:
``SYS_DVBS``
``SYS_DVBS``
- Satellite TV: DVB-S
@ -766,7 +766,7 @@ Possible values:
- .. _`SYS-DVBS2`:
``SYS_DVBS2``
``SYS_DVBS2``
- Satellite TV: DVB-S2
@ -774,7 +774,7 @@ Possible values:
- .. _`SYS-TURBO`:
``SYS_TURBO``
``SYS_TURBO``
- Satellite TV: DVB-S Turbo
@ -782,7 +782,7 @@ Possible values:
- .. _`SYS-ISDBS`:
``SYS_ISDBS``
``SYS_ISDBS``
- Satellite TV: ISDB-S
@ -790,7 +790,7 @@ Possible values:
- .. _`SYS-DAB`:
``SYS_DAB``
``SYS_DAB``
- Digital audio: DAB (not fully supported)
@ -798,7 +798,7 @@ Possible values:
- .. _`SYS-DSS`:
``SYS_DSS``
``SYS_DSS``
- Satellite TV:"DSS (not fully supported)
@ -806,7 +806,7 @@ Possible values:
- .. _`SYS-CMMB`:
``SYS_CMMB``
``SYS_CMMB``
- Terrestral TV (mobile):CMMB (not fully supported)
@ -814,7 +814,7 @@ Possible values:
- .. _`SYS-DVBH`:
``SYS_DVBH``
``SYS_DVBH``
- 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``
- Single Frame: There is only a primary RS Frame for all Group
Regions.
Regions.
- .. row 3
- .. _`ATSCMH-RSFRAME-PRI-SEC`:
``ATSCMH_RSFRAME_PRI_SEC``
``ATSCMH_RSFRAME_PRI_SEC``
- 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
D.
Group Region A and B and Secondary RS Frame for Group Region C and
D.
@ -1284,7 +1284,7 @@ Possible values are:
- .. _`ATSCMH-RSFRAME-ENS-PRI`:
``ATSCMH_RSFRAME_ENS_PRI``
``ATSCMH_RSFRAME_ENS_PRI``
- Primary Ensemble.
@ -1292,7 +1292,7 @@ Possible values are:
- .. _`ATSCMH-RSFRAME-ENS-SEC`:
``AATSCMH_RSFRAME_PRI_SEC``
``AATSCMH_RSFRAME_PRI_SEC``
- Secondary Ensemble.
@ -1300,7 +1300,7 @@ Possible values are:
- .. _`ATSCMH-RSFRAME-RES`:
``AATSCMH_RSFRAME_RES``
``AATSCMH_RSFRAME_RES``
- Reserved. Shouldn't be used.
@ -1333,7 +1333,7 @@ Possible values are:
- .. _`ATSCMH-RSCODE-211-187`:
``ATSCMH_RSCODE_211_187``
``ATSCMH_RSCODE_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``
- Reed Solomon code (223,187).
@ -1349,7 +1349,7 @@ Possible values are:
- .. _`ATSCMH-RSCODE-235-187`:
``ATSCMH_RSCODE_235_187``
``ATSCMH_RSCODE_235_187``
- Reed Solomon code (235,187).
@ -1357,7 +1357,7 @@ Possible values are:
- .. _`ATSCMH-RSCODE-RES`:
``ATSCMH_RSCODE_RES``
``ATSCMH_RSCODE_RES``
- Reserved. Shouldn't be used.
@ -1401,25 +1401,25 @@ Possible values are:
- .. _`ATSCMH-SCCC-BLK-SEP`:
``ATSCMH_SCCC_BLK_SEP``
``ATSCMH_SCCC_BLK_SEP``
- 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
- .. _`ATSCMH-SCCC-BLK-COMB`:
``ATSCMH_SCCC_BLK_COMB``
``ATSCMH_SCCC_BLK_COMB``
- Combined SCCC: all four Regions shall have the same SCCC outer
code mode.
code mode.
- .. row 4
- .. _`ATSCMH-SCCC-BLK-RES`:
``ATSCMH_SCCC_BLK_RES``
``ATSCMH_SCCC_BLK_RES``
- Reserved. Shouldn't be used.
@ -1452,7 +1452,7 @@ Possible values are:
- .. _`ATSCMH-SCCC-CODE-HLF`:
``ATSCMH_SCCC_CODE_HLF``
``ATSCMH_SCCC_CODE_HLF``
- 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``
- 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``
- to be documented.
@ -1564,7 +1564,7 @@ Modulation guard interval
- .. _`GUARD-INTERVAL-AUTO`:
``GUARD_INTERVAL_AUTO``
``GUARD_INTERVAL_AUTO``
- 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
@ -1580,7 +1580,7 @@ Modulation guard interval
- .. _`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
@ -1596,7 +1596,7 @@ Modulation guard interval
- .. _`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
@ -1612,7 +1612,7 @@ Modulation guard interval
- .. _`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
@ -1628,7 +1628,7 @@ Modulation guard interval
- .. _`GUARD-INTERVAL-PN420`:
``GUARD_INTERVAL_PN420``
``GUARD_INTERVAL_PN420``
- PN length 420 (1/4)
@ -1636,7 +1636,7 @@ Modulation guard interval
- .. _`GUARD-INTERVAL-PN595`:
``GUARD_INTERVAL_PN595``
``GUARD_INTERVAL_PN595``
- PN length 595 (1/6)
@ -1644,7 +1644,7 @@ Modulation guard interval
- .. _`GUARD-INTERVAL-PN945`:
``GUARD_INTERVAL_PN945``
``GUARD_INTERVAL_PN945``
- 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``
- 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
- .. _`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
@ -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
@ -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
@ -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
@ -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
@ -1750,7 +1750,7 @@ enum fe_transmit_mode: Number of carriers per channel
- .. _`TRANSMISSION-MODE-C1`:
``TRANSMISSION_MODE_C1``
``TRANSMISSION_MODE_C1``
- 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``
- Multi Carrier (C=3780) transmission mode (DTMB)
@ -1810,7 +1810,7 @@ Frontend hierarchy
- .. _`HIERARCHY-NONE`:
``HIERARCHY_NONE``
``HIERARCHY_NONE``
- No hierarchy
@ -1818,7 +1818,7 @@ Frontend hierarchy
- .. _`HIERARCHY-AUTO`:
``HIERARCHY_AUTO``
``HIERARCHY_AUTO``
- Autodetect hierarchy (if supported)
@ -1826,7 +1826,7 @@ Frontend hierarchy
- .. _`HIERARCHY-1`:
``HIERARCHY_1``
``HIERARCHY_1``
- Hierarchy 1
@ -1834,7 +1834,7 @@ Frontend hierarchy
- .. _`HIERARCHY-2`:
``HIERARCHY_2``
``HIERARCHY_2``
- Hierarchy 2
@ -1842,7 +1842,7 @@ Frontend hierarchy
- .. _`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``
- No interleaving.
@ -1925,7 +1925,7 @@ Time interleaving to be used. Currently, used only on DTMB.
- .. _`INTERLEAVING-AUTO`:
``INTERLEAVING_AUTO``
``INTERLEAVING_AUTO``
- Auto-detect interleaving.
@ -1933,7 +1933,7 @@ Time interleaving to be used. Currently, used only on DTMB.
- .. _`INTERLEAVING-240`:
``INTERLEAVING_240``
``INTERLEAVING_240``
- 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 of 720 symbols.

View File

@ -158,37 +158,37 @@ partial path like:
.. code-block:: c
#include <linux/dvb/audio.h>
#include <linux/dvb/audio.h>
.. code-block:: c
#include <linux/dvb/ca.h>
#include <linux/dvb/ca.h>
.. code-block:: c
#include <linux/dvb/dmx.h>
#include <linux/dvb/dmx.h>
.. code-block:: c
#include <linux/dvb/frontend.h>
#include <linux/dvb/frontend.h>
.. code-block:: c
#include <linux/dvb/net.h>
#include <linux/dvb/net.h>
.. code-block:: c
#include <linux/dvb/osd.h>
#include <linux/dvb/osd.h>
.. code-block:: c
#include <linux/dvb/video.h>
#include <linux/dvb/video.h>
To enable applications to support different API version, an additional
include file ``linux/dvb/version.h`` exists, which defines the constant

View File

@ -116,8 +116,8 @@ struct dvb_net_if description
- feedtype
- Encapsulation type of the feed. It can be:
``DVB_NET_FEEDTYPE_MPE`` for MPE encoding or
``DVB_NET_FEEDTYPE_ULE`` for ULE encoding.
``DVB_NET_FEEDTYPE_MPE`` for MPE encoding or
``DVB_NET_FEEDTYPE_ULE`` for ULE encoding.

View File

@ -58,22 +58,22 @@ Arguments
- .. row 3
-
-
- O_RDONLY read-only access
- .. row 4
-
-
- O_RDWR read/write access
- .. row 5
-
-
- O_NONBLOCK open in non-blocking mode
- .. row 6
-
-
- (blocking mode is the default)
@ -291,12 +291,12 @@ Arguments
- .. row 4
-
-
- TRUE: Blank screen when stop.
- .. row 5
-
-
- FALSE: Show last decoded frame.
@ -565,7 +565,7 @@ Arguments
- .. row 4
-
-
- FALSE: Show last decoded frame.
@ -677,7 +677,7 @@ Arguments
- __u64 \*pts
- Returns the number of frames displayed since the decoder was
started.
started.
Return Value
@ -735,11 +735,11 @@ Arguments
- __u64 \*pts
- 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,
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.
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
decoded frame or the last PTS extracted by the PES parser.
Return Value
@ -1754,7 +1754,7 @@ Arguments
- video_spu_t \*spu
- SPU decoding (de)activation and subid setting according to section
??.
??.
Return Value

View File

@ -18,9 +18,9 @@ The ``video_format_t`` data type defined by
.. code-block:: c
typedef enum {
VIDEO_FORMAT_4_3, /* Select 4:3 format */
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
VIDEO_FORMAT_221_1 /* 2.21:1 */
VIDEO_FORMAT_4_3, /* Select 4:3 format */
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
VIDEO_FORMAT_221_1 /* 2.21:1 */
} video_format_t;
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
typedef enum {
VIDEO_PAN_SCAN, /* use pan and scan format */
VIDEO_LETTER_BOX, /* use letterbox format */
VIDEO_CENTER_CUT_OUT /* use center cut out format */
VIDEO_PAN_SCAN, /* use pan and scan format */
VIDEO_LETTER_BOX, /* use letterbox format */
VIDEO_CENTER_CUT_OUT /* use center cut out format */
} video_displayformat_t;
as argument.
@ -65,10 +65,10 @@ from an internal (demuxer) or external (user write) source.
.. code-block:: c
typedef enum {
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
comes from the user through the write
system call */
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
comes from the user through the write
system call */
} video_stream_source_t;
VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the
@ -89,9 +89,9 @@ representing the state of video playback.
.. code-block:: c
typedef enum {
VIDEO_STOPPED, /* Video is stopped */
VIDEO_PLAYING, /* Video is currently playing */
VIDEO_FREEZED /* Video is freezed */
VIDEO_STOPPED, /* Video is stopped */
VIDEO_PLAYING, /* Video is currently playing */
VIDEO_FREEZED /* Video is freezed */
} video_play_state_t;
@ -107,27 +107,27 @@ it can be extended safely in the future.
.. code-block:: c
struct video_command {
__u32 cmd;
__u32 flags;
union {
struct {
__u64 pts;
} stop;
__u32 cmd;
__u32 flags;
union {
struct {
__u64 pts;
} stop;
struct {
/* 0 or 1000 specifies normal speed,
1 specifies forward single stepping,
-1 specifies backward single stepping,
>>1: playback at speed/1000 of the normal speed,
<-1: reverse playback at (-speed/1000) of the normal speed. */
__s32 speed;
__u32 format;
} play;
struct {
/* 0 or 1000 specifies normal speed,
1 specifies forward single stepping,
-1 specifies backward single stepping,
>>1: playback at speed/1000 of the normal speed,
<-1: reverse playback at (-speed/1000) of the normal speed. */
__s32 speed;
__u32 format;
} play;
struct {
__u32 data[16];
} raw;
};
struct {
__u32 data[16];
} raw;
};
};
@ -140,9 +140,9 @@ video_size_t
.. code-block:: c
typedef struct {
int w;
int h;
video_format_t aspect_ratio;
int w;
int h;
video_format_t aspect_ratio;
} video_size_t;
@ -158,17 +158,17 @@ VIDEO_GET_EVENT call.
.. code-block:: c
struct video_event {
__s32 type;
__s32 type;
#define VIDEO_EVENT_SIZE_CHANGED 1
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
#define VIDEO_EVENT_DECODER_STOPPED 3
#define VIDEO_EVENT_VSYNC 4
__kernel_time_t timestamp;
union {
video_size_t size;
unsigned int frame_rate; /* in frames per 1000sec */
unsigned char vsync_field; /* unknown/odd/even/progressive */
} u;
__kernel_time_t timestamp;
union {
video_size_t size;
unsigned int frame_rate; /* in frames per 1000sec */
unsigned char vsync_field; /* unknown/odd/even/progressive */
} u;
};
@ -184,11 +184,11 @@ about various states of the playback operation.
.. code-block:: c
struct video_status {
int video_blank; /* blank video on freeze? */
video_play_state_t play_state; /* current state of playback */
video_stream_source_t stream_source; /* current source (demux/memory) */
video_format_t video_format; /* current aspect ratio of stream */
video_displayformat_t display_format;/* selected cropping mode */
int video_blank; /* blank video on freeze? */
video_play_state_t play_state; /* current state of playback */
video_stream_source_t stream_source; /* current source (demux/memory) */
video_format_t video_format; /* current aspect ratio of stream */
video_displayformat_t display_format;/* selected cropping mode */
};
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 */
struct video_still_picture {
char *iFrame; /* pointer to a single iframe in memory */
int32_t size;
char *iFrame; /* pointer to a single iframe in memory */
int32_t size;
};
@ -237,12 +237,12 @@ following bits set according to the hardwares capabilities.
#define VIDEO_CAP_MPEG1 1
#define VIDEO_CAP_MPEG2 2
/* 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
send the stream to the video device) */
(you still have to open the video and the audio device but only
send the stream to the video device) */
#define VIDEO_CAP_SYS 4
#define VIDEO_CAP_PROG 8
/* 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_NAVI 32
#define VIDEO_CAP_CSS 64
@ -260,14 +260,14 @@ output. The following system types can be set:
.. code-block:: c
typedef enum {
VIDEO_SYSTEM_PAL,
VIDEO_SYSTEM_NTSC,
VIDEO_SYSTEM_PALN,
VIDEO_SYSTEM_PALNc,
VIDEO_SYSTEM_PALM,
VIDEO_SYSTEM_NTSC60,
VIDEO_SYSTEM_PAL60,
VIDEO_SYSTEM_PALM60
VIDEO_SYSTEM_PAL,
VIDEO_SYSTEM_NTSC,
VIDEO_SYSTEM_PALN,
VIDEO_SYSTEM_PALNc,
VIDEO_SYSTEM_PALM,
VIDEO_SYSTEM_NTSC60,
VIDEO_SYSTEM_PAL60,
VIDEO_SYSTEM_PALM60
} video_system_t;
@ -284,21 +284,21 @@ information. The call expects the following format for that information:
typedef
struct video_highlight {
boolean active; /* 1=show highlight, 0=hide highlight */
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
/* 3- 0 Background pixel contrast */
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
/* 3- 0 Emphasis pixel-1 contrast */
uint8_t color1; /* 7- 4 Pattern pixel color */
/* 3- 0 Background pixel color */
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
/* 3- 0 Emphasis pixel-1 color */
uint32_t ypos; /* 23-22 auto action mode */
/* 21-12 start y */
/* 9- 0 end y */
uint32_t xpos; /* 23-22 button color number */
/* 21-12 start x */
/* 9- 0 end x */
boolean active; /* 1=show highlight, 0=hide highlight */
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
/* 3- 0 Background pixel contrast */
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
/* 3- 0 Emphasis pixel-1 contrast */
uint8_t color1; /* 7- 4 Pattern pixel color */
/* 3- 0 Background pixel color */
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
/* 3- 0 Emphasis pixel-1 color */
uint32_t ypos; /* 23-22 auto action mode */
/* 21-12 start y */
/* 9- 0 end y */
uint32_t xpos; /* 23-22 button color number */
/* 21-12 start x */
/* 9- 0 end x */
} video_highlight_t;
@ -315,8 +315,8 @@ to the following format:
typedef
struct video_spu {
boolean active;
int stream_id;
boolean active;
int stream_id;
} video_spu_t;
@ -333,8 +333,8 @@ VIDEO_SPU_PALETTE:
typedef
struct video_spu_palette {
int length;
uint8_t *palette;
int length;
uint8_t *palette;
} video_spu_palette_t;
@ -351,8 +351,8 @@ passed to the ioctl VIDEO_GET_NAVI:
typedef
struct video_navi_pack {
int length; /* 0 ... 1024 */
uint8_t data[1024];
int length; /* 0 ... 1024 */
uint8_t data[1024];
} video_navi_pack_t;

View File

@ -19,10 +19,10 @@ Generic Error Codes
- ``EAGAIN`` (aka ``EWOULDBLOCK``)
- 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
device is sleeping and ioctl is performed to query statistics. It
is also returned when the ioctl would need to wait for an event,
but the device was opened in non-blocking mode.
can't perform it. This could happen for example in case where
device is sleeping and ioctl is performed to query statistics. It
is also returned when the ioctl would need to wait for an event,
but the device was opened in non-blocking mode.
- .. row 2
@ -35,26 +35,26 @@ Generic Error Codes
- ``EBUSY``
- The ioctl can't be handled because the device is busy. This is
typically return while device is streaming, and an ioctl tried to
change something that would affect the stream, or would require
the usage of a hardware resource that was already allocated. The
ioctl must not be retried without performing another action to fix
the problem first (typically: stop the stream before retrying).
typically return while device is streaming, and an ioctl tried to
change something that would affect the stream, or would require
the usage of a hardware resource that was already allocated. The
ioctl must not be retried without performing another action to fix
the problem first (typically: stop the stream before retrying).
- .. row 4
- ``EFAULT``
- 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
- ``EINVAL``
- One or more of the ioctl parameters are invalid or out of the
allowed range. This is a widely used error code. See the
individual ioctl requests for specific causes.
allowed range. This is a widely used error code. See the
individual ioctl requests for specific causes.
- .. row 6
@ -73,23 +73,23 @@ Generic Error Codes
- ``ENOTTY``
- The ioctl is not supported by the driver, actually meaning that
the required functionality is not available, or the file
descriptor is not for a media device.
the required functionality is not available, or the file
descriptor is not for a media device.
- .. row 9
- ``ENOSPC``
- On USB devices, the stream ioctl's can return this error, meaning
that this request would overcommit the usb bandwidth reserved for
periodic transfers (up to 80% of the USB bandwidth).
that this request would overcommit the usb bandwidth reserved for
periodic transfers (up to 80% of the USB bandwidth).
- .. row 10
- ``EPERM``
- 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

View File

@ -53,12 +53,12 @@ ioctl never fails.
- ``driver``\ [16]
- Name of the driver implementing the media API as a NUL-terminated
ASCII string. The driver version is stored in the
``driver_version`` field.
ASCII string. The driver version is stored in the
``driver_version`` field.
Driver specific applications can use this information to verify
the driver identity. It is also useful to work around known bugs,
or to identify drivers in error reports.
Driver specific applications can use this information to verify
the driver identity. It is also useful to work around known bugs,
or to identify drivers in error reports.
- .. row 2
@ -67,8 +67,8 @@ ioctl never fails.
- ``model``\ [32]
- Device model name as a NUL-terminated UTF-8 string. The device
version is stored in the ``device_version`` field and is not be
appended to the model name.
version is stored in the ``device_version`` field and is not be
appended to the model name.
- .. row 3
@ -85,8 +85,8 @@ ioctl never fails.
- ``bus_info``\ [32]
- Location of the device in the system as a NUL-terminated ASCII
string. This includes the bus type name (PCI, USB, ...) and a
bus-specific identifier.
string. This includes the bus type name (PCI, USB, ...) and a
bus-specific identifier.
- .. row 5
@ -111,8 +111,8 @@ ioctl never fails.
- ``driver_version``
- Media device driver version, formatted with the
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
this identifies a particular driver.
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
this identifies a particular driver.
- .. row 8
@ -121,7 +121,7 @@ ioctl never fails.
- ``reserved``\ [31]
- 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

View File

@ -60,11 +60,11 @@ id's until they get an error.
- ``id``
-
-
-
-
- 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
the first entity with a larger id.
``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
the first entity with a larger id.
- .. row 2
@ -72,8 +72,8 @@ id's until they get an error.
- ``name``\ [32]
-
-
-
-
- Entity name as an UTF-8 NULL-terminated string.
- .. row 3
@ -82,8 +82,8 @@ id's until they get an error.
- ``type``
-
-
-
-
- Entity type, see :ref:`media-entity-type` for details.
- .. row 4
@ -92,8 +92,8 @@ id's until they get an error.
- ``revision``
-
-
-
-
- Entity revision. Always zero (obsolete)
- .. row 5
@ -102,8 +102,8 @@ id's until they get an error.
- ``flags``
-
-
-
-
- Entity flags, see :ref:`media-entity-flag` for details.
- .. row 6
@ -112,8 +112,8 @@ id's until they get an error.
- ``group_id``
-
-
-
-
- Entity group ID. Always zero (obsolete)
- .. row 7
@ -122,8 +122,8 @@ id's until they get an error.
- ``pads``
-
-
-
-
- Number of pads
- .. row 8
@ -132,10 +132,10 @@ id's until they get an error.
- ``links``
-
-
-
-
- Total number of outbound links. Inbound links are not counted in
this field.
this field.
- .. row 9
@ -143,18 +143,18 @@ id's until they get an error.
- .. row 10
-
-
- struct
- ``dev``
-
-
- Valid for (sub-)devices that create a single device node.
- .. row 11
-
-
-
-
- __u32
- ``major``
@ -163,8 +163,8 @@ id's until they get an error.
- .. row 12
-
-
-
-
- __u32
- ``minor``
@ -173,13 +173,13 @@ id's until they get an error.
- .. row 13
-
-
- __u8
- ``raw``\ [184]
-
-
-
-

View File

@ -78,7 +78,7 @@ returned during the enumeration process.
- \*\ ``pads``
- Pointer to a pads array allocated by the application. Ignored if
NULL.
NULL.
- .. row 3
@ -87,7 +87,7 @@ returned during the enumeration process.
- \*\ ``links``
- Pointer to a links array allocated by the application. Ignored if
NULL.
NULL.

View File

@ -60,11 +60,11 @@ desired arrays with the media graph elements.
- ``topology_version``
-
-
-
-
- Version of the media graph topology. When the graph is created,
this field starts with zero. Every time a graph element is added
or removed, this field is incremented.
this field starts with zero. Every time a graph element is added
or removed, this field is incremented.
- .. row 2
@ -72,8 +72,8 @@ desired arrays with the media graph elements.
- ``num_entities``
-
-
-
-
- Number of entities in the graph
- .. row 3
@ -82,12 +82,12 @@ desired arrays with the media graph elements.
- ``ptr_entities``
-
-
-
-
- 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,
the ioctl won't store the entities. It will just update
``num_entities``
stored, converted to a 64-bits integer. It can be zero. if zero,
the ioctl won't store the entities. It will just update
``num_entities``
- .. row 4
@ -95,8 +95,8 @@ desired arrays with the media graph elements.
- ``num_interfaces``
-
-
-
-
- Number of interfaces in the graph
- .. row 5
@ -105,12 +105,12 @@ desired arrays with the media graph elements.
- ``ptr_interfaces``
-
-
-
-
- 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,
the ioctl won't store the interfaces. It will just update
``num_interfaces``
stored, converted to a 64-bits integer. It can be zero. if zero,
the ioctl won't store the interfaces. It will just update
``num_interfaces``
- .. row 6
@ -118,8 +118,8 @@ desired arrays with the media graph elements.
- ``num_pads``
-
-
-
-
- Total number of pads in the graph
- .. row 7
@ -128,11 +128,11 @@ desired arrays with the media graph elements.
- ``ptr_pads``
-
-
-
-
- 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
won't store the pads. It will just update ``num_pads``
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``
- .. row 8
@ -140,8 +140,8 @@ desired arrays with the media graph elements.
- ``num_links``
-
-
-
-
- Total number of data and interface links in the graph
- .. row 9
@ -150,11 +150,11 @@ desired arrays with the media graph elements.
- ``ptr_links``
-
-
-
-
- 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
won't store the links. It will just update ``num_links``
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``
@ -171,8 +171,8 @@ desired arrays with the media graph elements.
- ``id``
-
-
-
-
- Unique ID for the entity.
- .. row 2
@ -181,8 +181,8 @@ desired arrays with the media graph elements.
- ``name``\ [64]
-
-
-
-
- Entity name as an UTF-8 NULL-terminated string.
- .. row 3
@ -191,8 +191,8 @@ desired arrays with the media graph elements.
- ``function``
-
-
-
-
- Entity main function, see :ref:`media-entity-type` for details.
- .. row 4
@ -202,7 +202,7 @@ desired arrays with the media graph elements.
- ``reserved``\ [12]
- 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``
-
-
-
-
- Unique ID for the interface.
- .. row 2
@ -229,8 +229,8 @@ desired arrays with the media graph elements.
- ``intf_type``
-
-
-
-
- Interface type, see :ref:`media-intf-type` for details.
- .. row 3
@ -239,8 +239,8 @@ desired arrays with the media graph elements.
- ``flags``
-
-
-
-
- Interface flags. Currently unused.
- .. row 4
@ -249,10 +249,10 @@ desired arrays with the media graph elements.
- ``reserved``\ [9]
-
-
-
-
- Reserved for future extensions. Drivers and applications must set
this array to zero.
this array to zero.
- .. row 5
@ -260,10 +260,10 @@ desired arrays with the media graph elements.
- ``devnode``
-
-
-
-
- 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``
-
-
-
-
- Device node major number.
- .. row 2
@ -290,8 +290,8 @@ desired arrays with the media graph elements.
- ``minor``
-
-
-
-
- Device node minor number.
@ -309,8 +309,8 @@ desired arrays with the media graph elements.
- ``id``
-
-
-
-
- Unique ID for the pad.
- .. row 2
@ -319,8 +319,8 @@ desired arrays with the media graph elements.
- ``entity_id``
-
-
-
-
- Unique ID for the entity where this pad belongs.
- .. row 3
@ -329,8 +329,8 @@ desired arrays with the media graph elements.
- ``flags``
-
-
-
-
- Pad flags, see :ref:`media-pad-flag` for more details.
- .. row 4
@ -339,10 +339,10 @@ desired arrays with the media graph elements.
- ``reserved``\ [9]
-
-
-
-
- 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``
-
-
-
-
- Unique ID for the pad.
- .. row 2
@ -369,11 +369,11 @@ desired arrays with the media graph elements.
- ``source_id``
-
-
-
-
- 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
@ -381,11 +381,11 @@ desired arrays with the media graph elements.
- ``sink_id``
-
-
-
-
- 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
@ -393,8 +393,8 @@ desired arrays with the media graph elements.
- ``flags``
-
-
-
-
- Link flags, see :ref:`media-link-flag` for more details.
- .. row 5
@ -403,10 +403,10 @@ desired arrays with the media graph elements.
- ``reserved``\ [5]
-
-
-
-
- Reserved for future extensions. Drivers and applications must set
this array to zero.
this array to zero.

View File

@ -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``
- 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
@ -55,7 +55,7 @@ Types and flags used to represent the media graph elements
- ``MEDIA_ENT_F_TS_DEMUX``
- 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
@ -68,7 +68,7 @@ Types and flags used to represent the media graph elements
- ``MEDIA_ENT_F_DTV_NET_DECAP``
- Digital TV network ULE/MLE desencapsulation entity. Could be
implemented on hardware or in Kernelspace
implemented on hardware or in Kernelspace
- .. row 10
@ -111,42 +111,42 @@ Types and flags used to represent the media graph elements
- ``MEDIA_ENT_F_ATV_DECODER``
- Analog video decoder, the basic function of the video decoder is
to accept analogue video from a wide variety of sources such as
broadcast, DVD players, cameras and video cassette recorders, in
either NTSC, PAL, SECAM or HD format, separating the stream into
its component parts, luminance and chrominance, and output it in
some digital video standard, with appropriate timing signals.
to accept analogue video from a wide variety of sources such as
broadcast, DVD players, cameras and video cassette recorders, in
either NTSC, PAL, SECAM or HD format, separating the stream into
its component parts, luminance and chrominance, and output it in
some digital video standard, with appropriate timing signals.
- .. row 17
- ``MEDIA_ENT_F_TUNER``
- Digital TV, analog TV, radio and/or software radio tuner, with
consists on a PLL tuning stage that converts radio frequency (RF)
signal into an Intermediate Frequency (IF). Modern tuners have
internally IF-PLL decoders for audio and video, but older models
have those stages implemented on separate entities.
consists on a PLL tuning stage that converts radio frequency (RF)
signal into an Intermediate Frequency (IF). Modern tuners have
internally IF-PLL decoders for audio and video, but older models
have those stages implemented on separate entities.
- .. row 18
- ``MEDIA_ENT_F_IF_VID_DECODER``
- 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
old analog tuners, like Philips MK3 designs. They all contain a
tda9887 (or some software compatible similar chip, like tda9885).
Those devices use a different I2C address than the tuner PLL.
the analog TV video signal. This is commonly found on some very
old analog tuners, like Philips MK3 designs. They all contain a
tda9887 (or some software compatible similar chip, like tda9885).
Those devices use a different I2C address than the tuner PLL.
- .. row 19
- ``MEDIA_ENT_F_IF_AUD_DECODER``
- 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
old analog hardware, like Micronas msp3400, Philips tda9840,
tda985x, etc. Those devices use a different I2C address than the
tuner PLL and should be controlled together with the IF-PLL video
decoder.
the analog TV audio signal. This is commonly found on some very
old analog hardware, like Micronas msp3400, Philips tda9840,
tda985x, etc. Those devices use a different I2C address than the
tuner PLL and should be controlled together with the IF-PLL video
decoder.
- .. row 20
@ -180,7 +180,7 @@ Types and flags used to represent the media graph elements
- ``MEDIA_ENT_FL_DEFAULT``
- 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
@ -355,25 +355,25 @@ Types and flags used to represent the media graph elements
- ``MEDIA_PAD_FL_SINK``
- Input pad, relative to the entity. Input pads sink data and are
targets of links.
targets of links.
- .. row 2
- ``MEDIA_PAD_FL_SOURCE``
- Output pad, relative to the entity. Output pads source data and
are origins of links.
are origins of links.
- .. row 3
- ``MEDIA_PAD_FL_MUST_CONNECT``
- 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
able to stream. There could be temporary reasons (e.g. device
configuration dependent) for the pad to need enabled links even
when this flag isn't set; the absence of the flag doesn't imply
there is none.
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
configuration dependent) for the pad to need enabled links even
when this flag isn't set; the absence of the flag doesn't imply
there is none.
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``
- 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
enabled at a time.
two or more links target a sink pad, only one of them can be
enabled at a time.
- .. row 2
- ``MEDIA_LNK_FL_IMMUTABLE``
- The link enabled state can't be modified at runtime. An immutable
link is always enabled.
link is always enabled.
- .. row 3
- ``MEDIA_LNK_FL_DYNAMIC``
- 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
- ``MEDIA_LNK_FL_LINK_TYPE``
- 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
interface and an entity
``MEDIA_LNK_FL_INTERFACE_LINK`` if the link is between an
interface and an entity

View File

@ -288,7 +288,7 @@ the remote via /dev/input/event devices.
- ``KEY_ANGLE``
- Switch video camera angle (on videos with more than one angle
stored)
stored)
- ANGLE / SWAP
@ -739,19 +739,19 @@ at some cheaper IR's. Due to that, it is recommended to:
- .. row 1
- On simpler IR's, without separate channel keys, you need to map UP
as ``KEY_CHANNELUP``
as ``KEY_CHANNELUP``
- .. row 2
- On simpler IR's, without separate channel keys, you need to map
DOWN as ``KEY_CHANNELDOWN``
DOWN as ``KEY_CHANNELDOWN``
- .. row 3
- On simpler IR's, without separate volume keys, you need to map
LEFT as ``KEY_VOLUMEDOWN``
LEFT as ``KEY_VOLUMEDOWN``
- .. row 4
- On simpler IR's, without separate volume keys, you need to map
RIGHT as ``KEY_VOLUMEUP``
RIGHT as ``KEY_VOLUMEUP``

View File

@ -32,145 +32,145 @@ file: media/v4l/keytable.c
void prtcode (int *codes)
{
struct parse_key *p;
struct parse_key *p;
for (p=keynames;p->name!=NULL;p++) {
if (p->value == (unsigned)codes[1]) {
printf("scancode 0x%04x = %s (0x%02x)\\n", codes[0], p->name, codes[1]);
return;
}
}
for (p=keynames;p->name!=NULL;p++) {
if (p->value == (unsigned)codes[1]) {
printf("scancode 0x%04x = %s (0x%02x)\\n", codes[0], p->name, codes[1]);
return;
}
}
if (isprint (codes[1]))
printf("scancode %d = '%c' (0x%02x)\\n", codes[0], codes[1], codes[1]);
else
printf("scancode %d = 0x%02x\\n", codes[0], codes[1]);
if (isprint (codes[1]))
printf("scancode %d = '%c' (0x%02x)\\n", codes[0], codes[1], codes[1]);
else
printf("scancode %d = 0x%02x\\n", codes[0], codes[1]);
}
int parse_code(char *string)
{
struct parse_key *p;
struct parse_key *p;
for (p=keynames;p->name!=NULL;p++) {
if (!strcasecmp(p->name, string)) {
return p->value;
}
}
return -1;
for (p=keynames;p->name!=NULL;p++) {
if (!strcasecmp(p->name, string)) {
return p->value;
}
}
return -1;
}
int main (int argc, char *argv[])
{
int fd;
unsigned int i, j;
int codes[2];
int fd;
unsigned int i, j;
int codes[2];
if (argc<2 || argc>4) {
printf ("usage: %s <device> to get table; or\\n"
" %s <device> <scancode> <keycode>\\n"
" %s <device> <keycode_file>n",*argv,*argv,*argv);
return -1;
}
if (argc<2 || argc>4) {
printf ("usage: %s <device> to get table; or\\n"
" %s <device> <scancode> <keycode>\\n"
" %s <device> <keycode_file>n",*argv,*argv,*argv);
return -1;
}
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("Couldn't open input device");
return(-1);
}
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("Couldn't open input device");
return(-1);
}
if (argc==4) {
int value;
if (argc==4) {
int value;
value=parse_code(argv[3]);
value=parse_code(argv[3]);
if (value==-1) {
value = strtol(argv[3], NULL, 0);
if (errno)
perror("value");
}
if (value==-1) {
value = strtol(argv[3], NULL, 0);
if (errno)
perror("value");
}
codes [0] = (unsigned) strtol(argv[2], NULL, 0);
codes [1] = (unsigned) value;
codes [0] = (unsigned) strtol(argv[2], NULL, 0);
codes [1] = (unsigned) value;
if(ioctl(fd, EVIOCSKEYCODE, codes))
perror ("EVIOCSKEYCODE");
if(ioctl(fd, EVIOCSKEYCODE, codes))
perror ("EVIOCSKEYCODE");
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
return 0;
}
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
return 0;
}
if (argc==3) {
FILE *fin;
int value;
char *scancode, *keycode, s[2048];
if (argc==3) {
FILE *fin;
int value;
char *scancode, *keycode, s[2048];
fin=fopen(argv[2],"r");
if (fin==NULL) {
perror ("opening keycode file");
return -1;
}
fin=fopen(argv[2],"r");
if (fin==NULL) {
perror ("opening keycode file");
return -1;
}
/* Clears old table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
codes[1] = KEY_RESERVED;
ioctl(fd, EVIOCSKEYCODE, codes);
}
}
/* Clears old table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
codes[1] = KEY_RESERVED;
ioctl(fd, EVIOCSKEYCODE, codes);
}
}
while (fgets(s,sizeof(s),fin)) {
scancode=strtok(s,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
if (!strcasecmp(scancode, "scancode")) {
scancode = strtok(NULL,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
}
while (fgets(s,sizeof(s),fin)) {
scancode=strtok(s,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
if (!strcasecmp(scancode, "scancode")) {
scancode = strtok(NULL,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
}
keycode=strtok(NULL,"\\n\\t =:(");
if (!keycode) {
perror ("parsing input file keycode");
return -1;
}
keycode=strtok(NULL,"\\n\\t =:(");
if (!keycode) {
perror ("parsing input file keycode");
return -1;
}
// printf ("parsing %s=%s:", scancode, keycode);
value=parse_code(keycode);
// printf ("\\tvalue=%d\\n",value);
// printf ("parsing %s=%s:", scancode, keycode);
value=parse_code(keycode);
// printf ("\\tvalue=%d\\n",value);
if (value==-1) {
value = strtol(keycode, NULL, 0);
if (errno)
perror("value");
}
if (value==-1) {
value = strtol(keycode, NULL, 0);
if (errno)
perror("value");
}
codes [0] = (unsigned) strtol(scancode, NULL, 0);
codes [1] = (unsigned) value;
codes [0] = (unsigned) strtol(scancode, NULL, 0);
codes [1] = (unsigned) value;
// printf("\\t%04x=%04x\\n",codes[0], codes[1]);
if(ioctl(fd, EVIOCSKEYCODE, codes)) {
fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
perror ("EVIOCSKEYCODE");
}
// printf("\\t%04x=%04x\\n",codes[0], codes[1]);
if(ioctl(fd, EVIOCSKEYCODE, codes)) {
fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
perror ("EVIOCSKEYCODE");
}
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
}
return 0;
}
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
}
return 0;
}
/* Get scancode table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
prtcode(codes);
}
}
return 0;
/* Get scancode table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
prtcode(codes);
}
}
return 0;
}

View File

@ -62,8 +62,8 @@ the :ref:`VIDIOC_QUERYCAP` ioctl.
memset(&audio, 0, sizeof(audio));
if (-1 == ioctl(fd, VIDIOC_G_AUDIO, &audio)) {
perror("VIDIOC_G_AUDIO");
exit(EXIT_FAILURE);
perror("VIDIOC_G_AUDIO");
exit(EXIT_FAILURE);
}
printf("Current input: %s\\n", audio.name);
@ -79,8 +79,8 @@ the :ref:`VIDIOC_QUERYCAP` ioctl.
audio.index = 0;
if (-1 == ioctl(fd, VIDIOC_S_AUDIO, &audio)) {
perror("VIDIOC_S_AUDIO");
exit(EXIT_FAILURE);
perror("VIDIOC_S_AUDIO");
exit(EXIT_FAILURE);
}
.. [1]

View File

@ -48,14 +48,14 @@ buffer.
- ``index``
-
-
- Number of the buffer, set by the application except when calling
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the
driver. This field can range from zero to the number of buffers
allocated with the :ref:`VIDIOC_REQBUFS` ioctl
(struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>`
``count``), plus any buffers allocated with
:ref:`VIDIOC_CREATE_BUFS` minus one.
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the
driver. This field can range from zero to the number of buffers
allocated with the :ref:`VIDIOC_REQBUFS` ioctl
(struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>`
``count``), plus any buffers allocated with
:ref:`VIDIOC_CREATE_BUFS` minus one.
- .. row 2
@ -63,11 +63,11 @@ buffer.
- ``type``
-
-
- Type of the buffer, same as struct
:ref:`v4l2_format <v4l2-format>` ``type`` or struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set
by the application. See :ref:`v4l2-buf-type`
:ref:`v4l2_format <v4l2-format>` ``type`` or struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set
by the application. See :ref:`v4l2-buf-type`
- .. row 3
@ -75,16 +75,16 @@ buffer.
- ``bytesused``
-
-
- 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
compressed variable size data like JPEG images. Drivers must set
this field when ``type`` refers to a capture stream, applications
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
size of the buffer (see the ``length`` field of this struct) by
the driver. For multiplanar formats this field is ignored and the
``planes`` pointer is used instead.
on the negotiated data format and may change with each buffer for
compressed variable size data like JPEG images. Drivers must set
this field when ``type`` refers to a capture stream, applications
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
size of the buffer (see the ``length`` field of this struct) by
the driver. For multiplanar formats this field is ignored and the
``planes`` pointer is used instead.
- .. row 4
@ -92,7 +92,7 @@ buffer.
- ``flags``
-
-
- Flags set by the application or driver, see :ref:`buffer-flags`.
- .. row 5
@ -101,11 +101,11 @@ buffer.
- ``field``
-
-
- Indicates the field order of the image in the buffer, see
:ref:`v4l2-field`. This field is not used when the buffer
contains VBI data. Drivers must set it when ``type`` refers to a
capture stream, applications when it refers to an output stream.
:ref:`v4l2-field`. This field is not used when the buffer
contains VBI data. Drivers must set it when ``type`` refers to a
capture stream, applications when it refers to an output stream.
- .. row 6
@ -113,17 +113,17 @@ buffer.
- ``timestamp``
-
-
- For capture streams this is time when the first data byte was
captured, as returned by the :c:func:`clock_gettime()` function
for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in
:ref:`buffer-flags`. For output streams the driver stores the
time at which the last data byte was actually sent out in the
``timestamp`` field. This permits applications to monitor the
drift between the video and system clock. For output streams that
use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill
in the timestamp which will be copied by the driver to the capture
stream.
captured, as returned by the :c:func:`clock_gettime()` function
for the relevant clock id; see ``V4L2_BUF_FLAG_TIMESTAMP_*`` in
:ref:`buffer-flags`. For output streams the driver stores the
time at which the last data byte was actually sent out in the
``timestamp`` field. This permits applications to monitor the
drift between the video and system clock. For output streams that
use ``V4L2_BUF_FLAG_TIMESTAMP_COPY`` the application has to fill
in the timestamp which will be copied by the driver to the capture
stream.
- .. row 7
@ -131,15 +131,15 @@ buffer.
- ``timecode``
-
-
- When ``type`` is ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` and the
``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this
structure contains a frame timecode. In
:ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
bottom field contain the same timecode. Timecodes are intended to
help video editing and are typically recorded on video tapes, but
also embedded in compressed formats like MPEG. This field is
independent of the ``timestamp`` and ``sequence`` fields.
``V4L2_BUF_FLAG_TIMECODE`` flag is set in ``flags``, this
structure contains a frame timecode. In
:ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
bottom field contain the same timecode. Timecodes are intended to
help video editing and are typically recorded on video tapes, but
also embedded in compressed formats like MPEG. This field is
independent of the ``timestamp`` and ``sequence`` fields.
- .. row 8
@ -147,27 +147,27 @@ buffer.
- ``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
- :cspan:`3`
In :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
bottom field have the same sequence number. The count starts at
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
free buffer space. A repeated frame was displayed again by an
output device because the application did not pass new data in
time.
In :ref:`V4L2_FIELD_ALTERNATE <v4l2-field>` mode the top and
bottom field have the same sequence number. The count starts at
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
free buffer space. A repeated frame was displayed again by an
output device because the application did not pass new data in
time.
Note this may count the frames received e.g. over USB, without
taking into account the frames dropped by the remote hardware due
to limited compression throughput or bus bandwidth. These devices
identify by not enumerating any video standards, see
:ref:`standard`.
Note this may count the frames received e.g. over USB, without
taking into account the frames dropped by the remote hardware due
to limited compression throughput or bus bandwidth. These devices
identify by not enumerating any video standards, see
:ref:`standard`.
- .. row 10
@ -175,9 +175,9 @@ buffer.
- ``memory``
-
-
- 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
@ -187,52 +187,52 @@ buffer.
- .. row 12
-
-
- __u32
- ``offset``
- For the single-planar API and when ``memory`` is
``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the
start of the device memory. The value is returned by the driver
and apart of serving as parameter to the
:ref:`mmap() <func-mmap>` function not useful for applications.
See :ref:`mmap` for details
``V4L2_MEMORY_MMAP`` this is the offset of the buffer from the
start of the device memory. The value is returned by the driver
and apart of serving as parameter to the
:ref:`mmap() <func-mmap>` function not useful for applications.
See :ref:`mmap` for details
- .. row 13
-
-
- unsigned long
- ``userptr``
- For the single-planar API and when ``memory`` is
``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to
unsigned long type) in virtual memory, set by the application. See
:ref:`userp` for details.
``V4L2_MEMORY_USERPTR`` this is a pointer to the buffer (casted to
unsigned long type) in virtual memory, set by the application. See
:ref:`userp` for details.
- .. row 14
-
-
- struct v4l2_plane
- ``*planes``
- When using the multi-planar API, contains a userspace pointer to
an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of
the array should be put in the ``length`` field of this
:ref:`struct v4l2_buffer <v4l2-buffer>` structure.
an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of
the array should be put in the ``length`` field of this
:ref:`struct v4l2_buffer <v4l2-buffer>` structure.
- .. row 15
-
-
- int
- ``fd``
- For the single-plane API and when ``memory`` is
``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with
a DMABUF buffer.
``V4L2_MEMORY_DMABUF`` this is the file descriptor associated with
a DMABUF buffer.
- .. row 16
@ -240,14 +240,14 @@ buffer.
- ``length``
-
-
- 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
:ref:`VIDIOC_REQBUFS` and/or
:ref:`VIDIOC_CREATE_BUFS`. For the
multi-planar API the application sets this to the number of
elements in the ``planes`` array. The driver will fill in the
actual number of valid elements in that array.
single-planar API. This is set by the driver based on the calls to
:ref:`VIDIOC_REQBUFS` and/or
:ref:`VIDIOC_CREATE_BUFS`. For the
multi-planar API the application sets this to the number of
elements in the ``planes`` array. The driver will fill in the
actual number of valid elements in that array.
- .. row 17
@ -255,9 +255,9 @@ buffer.
- ``reserved2``
-
-
- A place holder for future extensions. Drivers and applications
must set this to 0.
must set this to 0.
- .. row 18
@ -265,9 +265,9 @@ buffer.
- ``reserved``
-
-
- 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``
-
-
- The number of bytes occupied by data in the plane (its payload).
Drivers must set this field when ``type`` refers to a capture
stream, applications 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 size of the plane (see the
``length`` field of this struct) by the driver. Note that the
actual image data starts at ``data_offset`` which may not be 0.
Drivers must set this field when ``type`` refers to a capture
stream, applications 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 size of the plane (see the
``length`` field of this struct) by the driver. Note that the
actual image data starts at ``data_offset`` which may not be 0.
- .. row 2
@ -300,11 +300,11 @@ buffer.
- ``length``
-
-
- Size in bytes of the plane (not its payload). This is set by the
driver based on the calls to
:ref:`VIDIOC_REQBUFS` and/or
:ref:`VIDIOC_CREATE_BUFS`.
driver based on the calls to
:ref:`VIDIOC_REQBUFS` and/or
:ref:`VIDIOC_CREATE_BUFS`.
- .. row 3
@ -312,45 +312,45 @@ buffer.
- ``m``
-
-
-
-
- .. row 4
-
-
- __u32
- ``mem_offset``
- When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this
is the value that should be passed to :ref:`mmap() <func-mmap>`,
similar to the ``offset`` field in struct
:ref:`v4l2_buffer <v4l2-buffer>`.
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this
is the value that should be passed to :ref:`mmap() <func-mmap>`,
similar to the ``offset`` field in struct
:ref:`v4l2_buffer <v4l2-buffer>`.
- .. row 5
-
-
- unsigned long
- ``userptr``
- When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``,
this is a userspace pointer to the memory allocated for this plane
by an application.
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``,
this is a userspace pointer to the memory allocated for this plane
by an application.
- .. row 6
-
-
- int
- ``fd``
- When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``,
this is a file descriptor associated with a DMABUF buffer, similar
to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`.
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``,
this is a file descriptor associated with a DMABUF buffer, similar
to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`.
- .. row 7
@ -358,13 +358,13 @@ buffer.
- ``data_offset``
-
-
- Offset in bytes to video data in the plane. Drivers must set this
field when ``type`` refers to a capture stream, applications when
it refers to an output stream. Note that data_offset is included
in ``bytesused``. So the size of the image in the plane is
``bytesused``-``data_offset`` at offset ``data_offset`` from the
start of the plane.
field when ``type`` refers to a capture stream, applications when
it refers to an output stream. Note that data_offset is included
in ``bytesused``. So the size of the image in the plane is
``bytesused``-``data_offset`` at offset ``data_offset`` from the
start of the plane.
- .. row 8
@ -372,9 +372,9 @@ buffer.
- ``reserved[11]``
-
-
- Reserved for future use. Should be zeroed by drivers and
applications.
applications.
@ -393,7 +393,7 @@ buffer.
- 1
- Buffer of a single-planar video capture stream, see
:ref:`capture`.
:ref:`capture`.
- .. row 2
@ -402,7 +402,7 @@ buffer.
- 9
- Buffer of a multi-planar video capture stream, see
:ref:`capture`.
:ref:`capture`.
- .. row 3
@ -411,7 +411,7 @@ buffer.
- 2
- Buffer of a single-planar video output stream, see
:ref:`output`.
:ref:`output`.
- .. row 4
@ -476,7 +476,7 @@ buffer.
- 11
- Buffer for Software Defined Radio (SDR) capture stream, see
:ref:`sdr`.
:ref:`sdr`.
- .. row 12
@ -485,7 +485,7 @@ buffer.
- 12
- Buffer for Software Defined Radio (SDR) output stream, see
:ref:`sdr`.
:ref:`sdr`.
@ -504,12 +504,12 @@ buffer.
- 0x00000001
- The buffer resides in device memory and has been mapped into the
application's address space, see :ref:`mmap` for details.
Drivers set or clear this flag when the
:ref:`VIDIOC_QUERYBUF`,
:ref:`VIDIOC_QBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the
driver.
application's address space, see :ref:`mmap` for details.
Drivers set or clear this flag when the
:ref:`VIDIOC_QUERYBUF`,
:ref:`VIDIOC_QBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Set by the
driver.
- .. row 2
@ -518,13 +518,13 @@ buffer.
- 0x00000002
- Internally drivers maintain two buffer queues, an incoming and
outgoing queue. When this flag is set, the buffer is currently on
the incoming queue. It automatically moves to the outgoing queue
after the buffer has been filled (capture devices) or displayed
(output devices). Drivers set or clear this flag when the
``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling
the ``VIDIOC_QBUF``\ ioctl it is always set and after
``VIDIOC_DQBUF`` always cleared.
outgoing queue. When this flag is set, the buffer is currently on
the incoming queue. It automatically moves to the outgoing queue
after the buffer has been filled (capture devices) or displayed
(output devices). Drivers set or clear this flag when the
``VIDIOC_QUERYBUF`` ioctl is called. After (successful) calling
the ``VIDIOC_QBUF``\ ioctl it is always set and after
``VIDIOC_DQBUF`` always cleared.
- .. row 3
@ -533,14 +533,14 @@ buffer.
- 0x00000004
- When this flag is set, the buffer is currently on the outgoing
queue, ready to be dequeued from the driver. Drivers set or clear
this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After
calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always
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
are mutually exclusive. They can be both cleared however, then the
buffer is in "dequeued" state, in the application domain so to
say.
queue, ready to be dequeued from the driver. Drivers set or clear
this flag when the ``VIDIOC_QUERYBUF`` ioctl is called. After
calling the ``VIDIOC_QBUF`` or ``VIDIOC_DQBUF`` it is always
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
are mutually exclusive. They can be both cleared however, then the
buffer is in "dequeued" state, in the application domain so to
say.
- .. row 4
@ -549,10 +549,10 @@ buffer.
- 0x00000040
- When this flag is set, the buffer has been dequeued successfully,
although the data might have been corrupted. This is recoverable,
streaming may continue as normal and the buffer may be reused
normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is
called.
although the data might have been corrupted. This is recoverable,
streaming may continue as normal and the buffer may be reused
normally. Drivers set this flag when the ``VIDIOC_DQBUF`` ioctl is
called.
- .. row 5
@ -561,11 +561,11 @@ buffer.
- 0x00000008
- Drivers set or clear this flag when calling the ``VIDIOC_DQBUF``
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.
can be decompressed on its own. Also known as an I-frame.
Applications can set this bit when ``type`` refers to an output
stream.
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.
can be decompressed on its own. Also known as an I-frame.
Applications can set this bit when ``type`` refers to an output
stream.
- .. row 6
@ -574,9 +574,9 @@ buffer.
- 0x00000010
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags predicted frames
or fields which contain only differences to a previous key frame.
Applications can set this bit when ``type`` refers to an output
stream.
or fields which contain only differences to a previous key frame.
Applications can set this bit when ``type`` refers to an output
stream.
- .. row 7
@ -585,10 +585,10 @@ buffer.
- 0x00000020
- Similar to ``V4L2_BUF_FLAG_KEYFRAME`` this flags a bi-directional
predicted frame or field which contains only the differences
between the current frame and both the preceding and following key
frames to specify its content. Applications can set this bit when
``type`` refers to an output stream.
predicted frame or field which contains only the differences
between the current frame and both the preceding and following key
frames to specify its content. Applications can set this bit when
``type`` refers to an output stream.
- .. row 8
@ -597,9 +597,9 @@ buffer.
- 0x00000100
- The ``timecode`` field is valid. Drivers set or clear this flag
when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set
this bit and the corresponding ``timecode`` structure when
``type`` refers to an output stream.
when the ``VIDIOC_DQBUF`` ioctl is called. Applications can set
this bit and the corresponding ``timecode`` structure when
``type`` refers to an output stream.
- .. row 9
@ -608,11 +608,11 @@ buffer.
- 0x00000400
- The buffer has been prepared for I/O and can be queued by the
application. Drivers set or clear this flag when the
:ref:`VIDIOC_QUERYBUF`,
:ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`,
:ref:`VIDIOC_QBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called.
application. Drivers set or clear this flag when the
:ref:`VIDIOC_QUERYBUF`,
:ref:`VIDIOC_PREPARE_BUF <VIDIOC_QBUF>`,
:ref:`VIDIOC_QBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called.
- .. row 10
@ -621,10 +621,10 @@ buffer.
- 0x00000800
- Caches do not have to be invalidated for this buffer. Typically
applications shall use this flag if the data captured in the
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
further processing or output.
applications shall use this flag if the data captured in the
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
further processing or output.
- .. row 11
@ -633,9 +633,9 @@ buffer.
- 0x00001000
- Caches do not have to be cleaned for this buffer. Typically
applications shall use this flag for output buffers if the data in
this buffer has not been created by the CPU but by some
DMA-capable unit, in which case caches have not been used.
applications shall use this flag for output buffers if the data in
this buffer has not been created by the CPU but by some
DMA-capable unit, in which case caches have not been used.
- .. row 12
@ -644,14 +644,14 @@ buffer.
- 0x00100000
- Last buffer produced by the hardware. mem2mem codec drivers set
this flag on the capture queue for the last buffer when the
:ref:`VIDIOC_QUERYBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
hardware limitations, the last buffer may be empty. In this case
the driver will set the ``bytesused`` field to 0, regardless of
the format. Any Any subsequent call to the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code.
this flag on the capture queue for the last buffer when the
:ref:`VIDIOC_QUERYBUF` or
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
hardware limitations, the last buffer may be empty. In this case
the driver will set the ``bytesused`` field to 0, regardless of
the format. Any Any subsequent call to the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code.
- .. row 13
@ -660,8 +660,8 @@ buffer.
- 0x0000e000
- Mask for timestamp types below. To test the timestamp type, mask
out bits not belonging to timestamp type by performing a logical
and operation with buffer flags and timestamp mask.
out bits not belonging to timestamp type by performing a logical
and operation with buffer flags and timestamp mask.
- .. row 14
@ -670,12 +670,12 @@ buffer.
- 0x00000000
- Unknown timestamp type. This type is used by drivers before Linux
3.9 and may be either monotonic (see below) or realtime (wall
clock). Monotonic clock has been favoured in embedded systems
whereas most of the drivers use the realtime clock. Either kinds
of timestamps are available in user space via
:c:func:`clock_gettime(2)` using clock IDs ``CLOCK_MONOTONIC``
and ``CLOCK_REALTIME``, respectively.
3.9 and may be either monotonic (see below) or realtime (wall
clock). Monotonic clock has been favoured in embedded systems
whereas most of the drivers use the realtime clock. Either kinds
of timestamps are available in user space via
:c:func:`clock_gettime(2)` using clock IDs ``CLOCK_MONOTONIC``
and ``CLOCK_REALTIME``, respectively.
- .. row 15
@ -684,8 +684,8 @@ buffer.
- 0x00002000
- The buffer timestamp has been taken from the ``CLOCK_MONOTONIC``
clock. To access the same clock outside V4L2, use
:c:func:`clock_gettime(2)`.
clock. To access the same clock outside V4L2, use
:c:func:`clock_gettime(2)`.
- .. row 16
@ -694,7 +694,7 @@ buffer.
- 0x00004000
- 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
@ -703,12 +703,12 @@ buffer.
- 0x00070000
- Mask for timestamp sources below. The timestamp source defines the
point of time the timestamp is taken in relation to the frame.
Logical 'and' operation between the ``flags`` field and
``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the
timestamp source. Applications must set the timestamp source when
``type`` refers to an output stream and
``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set.
point of time the timestamp is taken in relation to the frame.
Logical 'and' operation between the ``flags`` field and
``V4L2_BUF_FLAG_TSTAMP_SRC_MASK`` produces the value of the
timestamp source. Applications must set the timestamp source when
``type`` refers to an output stream and
``V4L2_BUF_FLAG_TIMESTAMP_COPY`` is set.
- .. row 18
@ -717,11 +717,11 @@ buffer.
- 0x00000000
- 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
frame has been transmitted. In practice, software generated
timestamps will typically be read from the clock a small amount of
time after the last pixel has been received or transmitten,
depending on the system and other activity in it.
pixel of the frame has been received or the last pixel of the
frame has been transmitted. In practice, software generated
timestamps will typically be read from the clock a small amount of
time after the last pixel has been received or transmitten,
depending on the system and other activity in it.
- .. row 19
@ -730,8 +730,8 @@ buffer.
- 0x00010000
- Start Of Exposure. The buffer timestamp has been taken when the
exposure of the frame has begun. This is only valid for the
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type.
exposure of the frame has begun. This is only valid for the
``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``
- Frame count, 0 ... 23/24/29/49/59, depending on the type of
timecode.
timecode.
- .. row 4
@ -891,7 +891,7 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
- 4
-
-
- .. row 5
@ -899,7 +899,7 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
- 5
-
-
@ -918,9 +918,9 @@ The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a
- 0x0001
- Indicates "drop frame" semantics for counting frames in 29.97 fps
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
count.
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
count.
- .. row 2

File diff suppressed because it is too large Load Diff

View File

@ -231,7 +231,7 @@ Control IDs
- ``V4L2_COLORFX_EMBOSS``
- 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
@ -274,7 +274,7 @@ Control IDs
- ``V4L2_COLORFX_SOLARIZATION``
- 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
@ -293,7 +293,7 @@ Control IDs
- ``V4L2_COLORFX_SET_CBCR``
- 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)
{
printf(" Menu items:\\n");
printf(" Menu items:\\n");
memset(&querymenu, 0, sizeof(querymenu));
querymenu.id = queryctrl.id;
memset(&querymenu, 0, sizeof(querymenu));
querymenu.id = queryctrl.id;
for (querymenu.index = queryctrl.minimum;
querymenu.index <= queryctrl.maximum;
querymenu.index++) {
if (0 == ioctl(fd, VIDIOC_QUERYMENU, &querymenu)) {
printf(" %s\\n", querymenu.name);
}
}
for (querymenu.index = queryctrl.minimum;
querymenu.index <= queryctrl.maximum;
querymenu.index++) {
if (0 == ioctl(fd, VIDIOC_QUERYMENU, &querymenu)) {
printf(" %s\\n", querymenu.name);
}
}
}
memset(&queryctrl, 0, sizeof(queryctrl));
for (queryctrl.id = V4L2_CID_BASE;
queryctrl.id < V4L2_CID_LASTP1;
queryctrl.id++) {
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
queryctrl.id < V4L2_CID_LASTP1;
queryctrl.id++) {
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
printf("Control %s\\n", queryctrl.name);
printf("Control %s\\n", queryctrl.name);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
} else {
if (errno == EINVAL)
continue;
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
} else {
if (errno == EINVAL)
continue;
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
}
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
}
}
for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
queryctrl.id++) {
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
queryctrl.id++) {
if (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
printf("Control %s\\n", queryctrl.name);
printf("Control %s\\n", queryctrl.name);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
} else {
if (errno == EINVAL)
break;
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
} else {
if (errno == EINVAL)
break;
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
}
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
}
}
@ -445,21 +445,21 @@ more menu type controls.
queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL;
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
break;
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
break;
if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
continue;
printf("Control %s\\n", queryctrl.name);
printf("Control %s\\n", queryctrl.name);
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
enumerate_menu();
queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
}
if (errno != EINVAL) {
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
}
@ -473,42 +473,42 @@ more menu type controls.
queryctrl.id = V4L2_CID_BRIGHTNESS;
if (-1 == ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl)) {
if (errno != EINVAL) {
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
} else {
printf("V4L2_CID_BRIGHTNESS is not supportedn");
}
if (errno != EINVAL) {
perror("VIDIOC_QUERYCTRL");
exit(EXIT_FAILURE);
} else {
printf("V4L2_CID_BRIGHTNESS is not supportedn");
}
} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) {
printf("V4L2_CID_BRIGHTNESS is not supportedn");
printf("V4L2_CID_BRIGHTNESS is not supportedn");
} else {
memset(&control, 0, sizeof (control));
control.id = V4L2_CID_BRIGHTNESS;
control.value = queryctrl.default_value;
memset(&control, 0, sizeof (control));
control.id = V4L2_CID_BRIGHTNESS;
control.value = queryctrl.default_value;
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)) {
perror("VIDIOC_S_CTRL");
exit(EXIT_FAILURE);
}
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)) {
perror("VIDIOC_S_CTRL");
exit(EXIT_FAILURE);
}
}
memset(&control, 0, sizeof(control));
control.id = V4L2_CID_CONTRAST;
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)
&& errno != ERANGE) {
perror("VIDIOC_S_CTRL");
exit(EXIT_FAILURE);
}
if (-1 == ioctl(fd, VIDIOC_S_CTRL, &control)
&& errno != ERANGE) {
perror("VIDIOC_S_CTRL");
exit(EXIT_FAILURE);
}
/* Ignore if V4L2_CID_CONTRAST is unsupported */
} else if (errno != EINVAL) {
perror("VIDIOC_G_CTRL");
exit(EXIT_FAILURE);
perror("VIDIOC_G_CTRL");
exit(EXIT_FAILURE);
}
control.id = V4L2_CID_AUDIO_MUTE;

View File

@ -60,38 +60,38 @@ EBUSY error code until all applications closed the framebuffer device.
int fb_fd;
if (-1 == ioctl(fd, VIDIOC_G_FBUF, &fbuf)) {
perror("VIDIOC_G_FBUF");
exit(EXIT_FAILURE);
perror("VIDIOC_G_FBUF");
exit(EXIT_FAILURE);
}
for (i = 0; i < 30; i++) {
char dev_name[16];
struct fb_fix_screeninfo si;
char dev_name[16];
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);
if (-1 == fb_fd) {
switch (errno) {
case ENOENT: /* no such file */
case ENXIO: /* no driver */
continue;
fb_fd = open(dev_name, O_RDWR);
if (-1 == fb_fd) {
switch (errno) {
case ENOENT: /* no such file */
case ENXIO: /* no driver */
continue;
default:
perror("open");
exit(EXIT_FAILURE);
}
}
default:
perror("open");
exit(EXIT_FAILURE);
}
}
if (0 == ioctl(fb_fd, FBIOGET_FSCREENINFO, &si)) {
if (si.smem_start == (unsigned long)fbuf.base)
break;
} else {
/* Apparently not a framebuffer device. */
}
if (0 == ioctl(fb_fd, FBIOGET_FSCREENINFO, &si)) {
if (si.smem_start == (unsigned long)fbuf.base)
break;
} else {
/* Apparently not a framebuffer device. */
}
close(fb_fd);
fb_fd = -1;
close(fb_fd);
fb_fd = -1;
}
/* fb_fd is the file descriptor of the framebuffer device

View File

@ -123,10 +123,10 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``offset``
- Horizontal offset of the VBI image, relative to the leading edge
of the line synchronization pulse and counted in samples: The
first sample in the VBI image will be located ``offset`` /
``sampling_rate`` seconds following the leading edge. See also
:ref:`vbi-hsync`.
of the line synchronization pulse and counted in samples: The
first sample in the VBI image will be located ``offset`` /
``sampling_rate`` seconds following the leading edge. See also
:ref:`vbi-hsync`.
- .. row 3
@ -134,7 +134,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``samples_per_line``
-
-
- .. row 4
@ -143,13 +143,13 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``sample_format``
- Defines the sample format as in :ref:`pixfmt`, a
four-character-code. [2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
i. e. each sample consists of 8 bits with lower values oriented
towards the black level. Do not assume any other correlation of
values with the signal level. For example, the MSB does not
necessarily indicate if the signal is 'high' or 'low' because 128
may not be the mean value of the signal. Drivers shall not convert
the sample format by software.
four-character-code. [2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
i. e. each sample consists of 8 bits with lower values oriented
towards the black level. Do not assume any other correlation of
values with the signal level. For example, the MSB does not
necessarily indicate if the signal is 'high' or 'low' because 128
may not be the mean value of the signal. Drivers shall not convert
the sample format by software.
- .. row 5
@ -158,16 +158,16 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``start``\ [2]
- This is the scanning system line number associated with the first
line of the VBI image, of the first and the second field
respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid
values. The ``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`` 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 numbering starts at 1, not 0. VBI input
drivers can return start values 0 if the hardware cannot reliable
identify scanning lines, VBI acquisition may not require this
information.
line of the VBI image, of the first and the second field
respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid
values. The ``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`` 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 numbering starts at 1, not 0. VBI input
drivers can return start values 0 if the hardware cannot reliable
identify scanning lines, VBI acquisition may not require this
information.
- .. row 6
@ -176,34 +176,34 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``count``\ [2]
- The number of lines in the first and second field image,
respectively.
respectively.
- .. row 7
- :cspan:`2`
Drivers should be as flexibility as possible. For example, it may
be possible to extend or move the VBI capture window down to the
picture area, implementing a 'full field mode' to capture data
service transmissions embedded in the picture.
Drivers should be as flexibility as possible. For example, it may
be possible to extend or move the VBI capture window down to the
picture area, implementing a 'full field mode' to capture data
service transmissions embedded in the picture.
An application can set the first or second ``count`` value to zero
if no data is required from the respective field; ``count``\ [1]
if the scanning system is progressive, i. e. not interlaced. The
corresponding start value shall be ignored by the application and
driver. Anyway, drivers may not support single field capturing and
return both count values non-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 the scanning system is progressive, i. e. not interlaced. The
corresponding start value shall be ignored by the application and
driver. Anyway, drivers may not support single field capturing and
return both count values non-zero.
Both ``count`` values set to zero, or line numbers outside the
bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a
field image covering lines of two fields, are invalid and shall
not be returned by the driver.
Both ``count`` values set to zero, or line numbers outside the
bounds depicted in :ref:`vbi-525` and :ref:`vbi-625`, or a
field image covering lines of two fields, are invalid and shall
not be returned by the driver.
To initialize the ``start`` and ``count`` fields, applications
must first determine the current video standard selection. The
:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated
for this purpose.
To initialize the ``start`` and ``count`` fields, applications
must first determine the current video standard selection. The
:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated
for this purpose.
- .. row 8
@ -212,7 +212,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``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
@ -221,7 +221,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``reserved``\ [2]
- 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
- This flag indicates hardware which does not properly distinguish
between fields. Normally the VBI image stores the first field
(lower scanning line numbers) first in memory. This may be a top
or bottom field depending on the video standard. When this flag is
set the first or second field may be stored first, however the
fields are still in correct temporal order with the older field
first in memory. [3]_
between fields. Normally the VBI image stores the first field
(lower scanning line numbers) first in memory. This may be a top
or bottom field depending on the video standard. When this flag is
set the first or second field may be stored first, however the
fields are still in correct temporal order with the older field
first in memory. [3]_
- .. row 2
@ -254,18 +254,18 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- 0x0002
- By default the two field images will be passed sequentially; all
lines of the first field followed by all lines of the second field
(compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and
``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
two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). 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
may be necessary when the hardware has been programmed to capture
or output interlaced video images and is unable to separate the
fields for VBI capturing at the same time. For simplicity setting
this flag implies that both ``count`` values are equal and
non-zero.
lines of the first field followed by all lines of the second field
(compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and
``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
two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). 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
may be necessary when the hardware has been programmed to capture
or output interlaced video images and is unable to separate the
fields for VBI capturing at the same time. For simplicity setting
this flag implies that both ``count`` values are equal and
non-zero.

View File

@ -144,21 +144,21 @@ RDS datastructures
- Bits 3-5
- Deprecated. Currently identical to bits 0-2. Do not use these
bits.
bits.
- .. row 3
- Bit 6
- Corrected bit. Indicates that an error was corrected for this data
block.
block.
- .. row 4
- Bit 7
- 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
-
-
- 7
- Mask for bits 0-2 to get the block ID.
@ -183,7 +183,7 @@ RDS datastructures
- V4L2_RDS_BLOCK_A
-
-
- 0
- Block A.
@ -192,7 +192,7 @@ RDS datastructures
- V4L2_RDS_BLOCK_B
-
-
- 1
- Block B.
@ -201,7 +201,7 @@ RDS datastructures
- V4L2_RDS_BLOCK_C
-
-
- 2
- Block C.
@ -210,7 +210,7 @@ RDS datastructures
- V4L2_RDS_BLOCK_D
-
-
- 3
- Block D.
@ -219,7 +219,7 @@ RDS datastructures
- V4L2_RDS_BLOCK_C_ALT
-
-
- 4
- Block C'.

View File

@ -93,9 +93,9 @@ data transfer, set by the driver in order to inform application.
- ``pixelformat``
- The data format or type of compression, set by the application.
This is a little endian
:ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR
formats in :ref:`sdr-formats`.
This is a little endian
:ref:`four character code <v4l2-fourcc>`. V4L2 defines SDR
formats in :ref:`sdr-formats`.
- .. row 2
@ -104,7 +104,7 @@ data transfer, set by the driver in order to inform application.
- ``buffersize``
- Maximum size in bytes required for data. Value is set by the
driver.
driver.
- .. row 3
@ -113,7 +113,7 @@ data transfer, set by the driver in order to inform application.
- ``reserved[24]``
- 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

View File

@ -116,22 +116,22 @@ which may return ``EBUSY`` can be the
- :cspan:`2`
If ``service_set`` is non-zero when passed with
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines``
array will be filled by the driver according to the services
specified in this field. For example, if ``service_set`` is
initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``,
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
field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to
zero, then the values of ``service_lines`` will be used instead.
If ``service_set`` is non-zero when passed with
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines``
array will be filled by the driver according to the services
specified in this field. For example, if ``service_set`` is
initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``,
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
field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to
zero, then the values of ``service_lines`` will be used instead.
On return the driver sets this field to the union of all elements
of the returned ``service_lines`` array. It may contain less
services than requested, perhaps just one, if the hardware cannot
handle more services simultaneously. It may be empty (zero) if
none of the requested services are supported by the hardware.
On return the driver sets this field to the union of all elements
of the returned ``service_lines`` array. It may contain less
services than requested, perhaps just one, if the hardware cannot
handle more services simultaneously. It may be empty (zero) if
none of the requested services are supported by the hardware.
- .. row 2
@ -141,22 +141,22 @@ which may return ``EBUSY`` can be the
- :cspan:`2`
Applications initialize this array with sets of data services the
driver shall look for or insert on the respective scan line.
Subject to hardware capabilities drivers return the requested 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
the driver shall choose one. No assumptions can be made on which
service the driver chooses.
Applications initialize this array with sets of data services the
driver shall look for or insert on the respective scan line.
Subject to hardware capabilities drivers return the requested 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
the driver shall choose one. No assumptions can be made on which
service the driver chooses.
Data services are defined in :ref:`vbi-services2`. Array indices
map to ITU-R line numbers (see also :ref:`vbi-525` and
:ref:`vbi-625`) as follows:
Data services are defined in :ref:`vbi-services2`. Array indices
map to ITU-R line numbers (see also :ref:`vbi-525` and
:ref:`vbi-625`) as follows:
- .. row 3
-
-
-
-
- Element
- 525 line systems
@ -165,8 +165,8 @@ which may return ``EBUSY`` can be the
- .. row 4
-
-
-
-
- ``service_lines``\ [0][1]
- 1
@ -175,8 +175,8 @@ which may return ``EBUSY`` can be the
- .. row 5
-
-
-
-
- ``service_lines``\ [0][23]
- 23
@ -185,8 +185,8 @@ which may return ``EBUSY`` can be the
- .. row 6
-
-
-
-
- ``service_lines``\ [1][1]
- 264
@ -195,8 +195,8 @@ which may return ``EBUSY`` can be the
- .. row 7
-
-
-
-
- ``service_lines``\ [1][23]
- 286
@ -205,15 +205,15 @@ which may return ``EBUSY`` can be the
- .. row 8
-
-
-
-
- :cspan:`2` Drivers must set ``service_lines`` [0][0] and
``service_lines``\ [1][0] to zero. The
``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``
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
numbering starts at 1, not 0.
``service_lines``\ [1][0] to zero. The
``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``
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
numbering starts at 1, not 0.
- .. row 9
@ -222,14 +222,14 @@ which may return ``EBUSY`` can be the
- ``io_size``
- :cspan:`2` Maximum number of bytes passed by one
:ref:`read() <func-read>` or :ref:`write() <func-write>` call,
and the buffer size in bytes for the
:ref:`VIDIOC_QBUF` and
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field
to the size of struct
:ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the
number of non-zero elements in the returned ``service_lines``
array (that is the number of lines potentially carrying data).
:ref:`read() <func-read>` or :ref:`write() <func-write>` call,
and the buffer size in bytes for the
:ref:`VIDIOC_QBUF` and
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field
to the size of struct
:ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the
number of non-zero elements in the returned ``service_lines``
array (that is the number of lines potentially carrying data).
- .. row 10
@ -238,7 +238,7 @@ which may return ``EBUSY`` can be the
- ``reserved``\ [2]
- :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)
- 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
@ -286,7 +286,7 @@ which may return ``EBUSY`` can be the
- PAL line 16
- Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb
first transmitted.
first transmitted.
- .. row 4
@ -299,7 +299,7 @@ which may return ``EBUSY`` can be the
- NTSC line 21, 284 (second field 21)
- Two bytes in transmission order, including parity bit, lsb first
transmitted.
transmitted.
- .. row 5
@ -311,13 +311,13 @@ which may return ``EBUSY`` can be the
- PAL/SECAM line 23
-
-
::
::
Byte 0 1
msb lsb msb lsb
Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
Byte 0 1
msb lsb msb lsb
Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
- .. row 6
@ -375,12 +375,12 @@ of one video frame. The ``id`` of unused
- ``id``
- 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
captured packet is zero, the packet is empty and the contents of
other fields are undefined. Applications shall ignore empty
packets. When the ``id`` of a packet for output is zero the
contents of the ``data`` field are undefined and the driver must
no longer insert data on the requested ``field`` and ``line``.
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
other fields are undefined. Applications shall ignore empty
packets. When the ``id`` of a packet for output is zero the
contents of the ``data`` field are undefined and the driver must
no longer insert data on the requested ``field`` and ``line``.
- .. row 2
@ -389,8 +389,8 @@ of one video frame. The ``id`` of unused
- ``field``
- The video field number this data has been captured from, or shall
be inserted at. ``0`` for the first field, ``1`` for the second
field.
be inserted at. ``0`` for the first field, ``1`` for the second
field.
- .. row 3
@ -399,11 +399,11 @@ of one video frame. The ``id`` of unused
- ``line``
- The field (as opposed to frame) line number this data has been
captured from, or shall be inserted at. See :ref:`vbi-525` and
:ref:`vbi-625` for valid values. Sliced VBI capture devices can
set the line number of all packets to ``0`` if the hardware cannot
reliably identify scan lines. The field number must always be
valid.
captured from, or shall be inserted at. See :ref:`vbi-525` and
:ref:`vbi-625` for valid values. Sliced VBI capture devices can
set the line number of all packets to ``0`` if the hardware cannot
reliably identify scan lines. The field number must always be
valid.
- .. row 4
@ -412,7 +412,7 @@ of one video frame. The ``id`` of unused
- ``reserved``
- This field is reserved for future extensions. Applications and
drivers must set it to zero.
drivers must set it to zero.
- .. row 5
@ -421,9 +421,9 @@ of one video frame. The ``id`` of unused
- ``data``\ [48]
- The packet payload. See :ref:`vbi-services` for the contents and
number of bytes passed for each data type. The contents of padding
bytes at the end of this array are undefined, drivers and
applications shall ignore them.
number of bytes passed for each data type. The contents of padding
bytes at the end of this array are undefined, drivers and
applications shall ignore them.
Packets are always passed in ascending line number order, without
@ -556,11 +556,11 @@ number).
- ``magic``\ [4]
-
-
- A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that
indicates this is a valid sliced VBI data payload and also
indicates which member of the anonymous union, ``itv0`` or
``ITV0``, to use for the payload data.
indicates this is a valid sliced VBI data payload and also
indicates which member of the anonymous union, ``itv0`` or
``ITV0``, to use for the payload data.
- .. row 2
@ -570,27 +570,27 @@ number).
- .. row 3
-
-
- struct :ref:`v4l2_mpeg_vbi_itv0 <v4l2-mpeg-vbi-itv0>`
- ``itv0``
- The primary form of the sliced VBI data payload that contains
anywhere from 1 to 35 lines of sliced VBI data. Line masks are
provided in this form of the payload indicating which VBI lines
are provided.
anywhere from 1 to 35 lines of sliced VBI data. Line masks are
provided in this form of the payload indicating which VBI lines
are provided.
- .. row 4
-
-
- struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>`
- ``ITV0``
- An alternate form of the sliced VBI data payload used when 36
lines of sliced VBI data are present. No line masks are provided
in this form of the payload; all valid line mask bits are
implcitly set.
lines of sliced VBI data are present. No line masks are provided
in this form of the payload; all valid line mask bits are
implcitly set.
@ -617,8 +617,8 @@ number).
- "itv0"
- Indicates the ``itv0`` member of the union in struct
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
valid.
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
valid.
- .. row 3
@ -627,8 +627,8 @@ number).
- "ITV0"
- Indicates the ``ITV0`` member of the union in struct
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
valid and that 36 lines of sliced VBI data are present.
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is
valid and that 36 lines of sliced VBI data are present.
@ -647,42 +647,42 @@ number).
- ``linemask``\ [2]
- Bitmasks indicating the VBI service lines present. These
``linemask`` values are stored in little endian byte order in the
MPEG stream. Some reference ``linemask`` bit positions with their
corresponding VBI line number and video field are given below.
b\ :sub:`0` indicates the least significant bit of a ``linemask``
value:
``linemask`` values are stored in little endian byte order in the
MPEG stream. Some reference ``linemask`` bit positions with their
corresponding VBI line number and video field are given below.
b\ :sub:`0` indicates the least significant bit of a ``linemask``
value:
::
::
linemask[0] b0: line 6 first field
linemask[0] b17: line 23 first field
linemask[0] b18: line 6 second field
linemask[0] b31: line 19 second field
linemask[1] b0: line 20 second field
linemask[1] b3: line 23 second field
linemask[1] b4-b31: unused and set to 0
linemask[0] b0: line 6 first field
linemask[0] b17: line 23 first field
linemask[0] b18: line 6 second field
linemask[0] b31: line 19 second field
linemask[1] b0: line 20 second field
linemask[1] b3: line 23 second field
linemask[1] b4-b31: unused and set to 0
- .. row 2
- 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]
- 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
the bits set in the ``linemask`` array, starting from b\ :sub:`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
``linemask``\ [1]. ``line``\ [0] corresponds to the first bit
found set in the ``linemask`` array, ``line``\ [1] corresponds to
the second bit found set in the ``linemask`` array, etc. If no
``linemask`` array bits are set, then ``line``\ [0] may contain
one line of unspecified data that should be ignored by
applications.
sliced VBI data. The sliced VBI data lines present correspond to
the bits set in the ``linemask`` array, starting from b\ :sub:`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
``linemask``\ [1]. ``line``\ [0] corresponds to the first bit
found set in the ``linemask`` array, ``line``\ [1] corresponds to
the second bit found set in the ``linemask`` array, etc. If no
``linemask`` array bits are set, then ``line``\ [0] may contain
one line of unspecified data that should be ignored by
applications.
@ -697,14 +697,14 @@ number).
- .. row 1
- 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]
- A fixed length array of 36 lines of sliced VBI data. ``line``\ [0]
through ``line``\ [17] correspond to lines 6 through 23 of the
first field. ``line``\ [18] through ``line``\ [35] corresponds to
lines 6 through 23 of the second field.
through ``line``\ [17] correspond to lines 6 through 23 of the
first field. ``line``\ [18] through ``line``\ [35] corresponds to
lines 6 through 23 of the second field.
@ -723,8 +723,8 @@ number).
- ``id``
- A line identifier value from
:ref:`ITV0-Line-Identifier-Constants` that indicates the type of
sliced VBI data stored on this line.
:ref:`ITV0-Line-Identifier-Constants` that indicates the type of
sliced VBI data stored on this line.
- .. row 2
@ -759,7 +759,7 @@ number).
- 1
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
description of the line payload.
description of the line payload.
- .. row 3
@ -768,7 +768,7 @@ number).
- 4
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
description of the line payload.
description of the line payload.
- .. row 4
@ -777,7 +777,7 @@ number).
- 5
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
description of the line payload.
description of the line payload.
- .. row 5
@ -786,7 +786,7 @@ number).
- 7
- Refer to :ref:`Sliced VBI services <vbi-services2>` for a
description of the line payload.
description of the line payload.

View File

@ -211,7 +211,7 @@ list entity names and pad numbers).
- .. row 1
-
-
- Sensor/0 format
- Frontend/0 format

View File

@ -53,7 +53,7 @@ using driver module options. The major device number remains 81.
- Video capture and overlay
- ``/dev/video`` and ``/dev/bttv0``\ [1]_, ``/dev/video0`` to
``/dev/video63``
``/dev/video63``
- 0-63
@ -107,7 +107,7 @@ introduction.
- struct :c:type:`struct video_capability` ``type``
- struct :ref:`v4l2_capability <v4l2-capability>`
``capabilities`` flags
``capabilities`` flags
- Purpose
@ -148,31 +148,31 @@ introduction.
- ``VID_TYPE_CHROMAKEY``
- ``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
overlay see :ref:`overlay`.
overlay see :ref:`overlay`.
- .. row 7
- ``VID_TYPE_CLIPPING``
- ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`
- Whether clipping the overlaid image is supported, see
:ref:`overlay`.
:ref:`overlay`.
- .. row 8
- ``VID_TYPE_FRAMERAM``
- ``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
:ref:`overlay`.
:ref:`overlay`.
- .. row 9
@ -181,11 +181,11 @@ introduction.
- ``-``
- This flag indicates if the hardware can scale images. The V4L2 API
implies the scale factor by setting the cropping dimensions and
image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The
driver returns the closest sizes possible. For more information on
cropping and scaling see :ref:`crop`.
implies the scale factor by setting the cropping dimensions and
image size with the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, respectively. The
driver returns the closest sizes possible. For more information on
cropping and scaling see :ref:`crop`.
- .. row 10
@ -194,9 +194,9 @@ introduction.
- ``-``
- Applications can enumerate the supported image formats with the
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
the device supports grey scale capturing only. For more
information on image formats see :ref:`pixfmt`.
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
the device supports grey scale capturing only. For more
information on image formats see :ref:`pixfmt`.
- .. row 11
@ -205,10 +205,10 @@ introduction.
- ``-``
- Applications can call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>`
ioctl to determine if the device supports capturing a subsection
of the full picture ("cropping" in V4L2). If not, the ioctl
returns the ``EINVAL`` error code. For more information on cropping
and scaling see :ref:`crop`.
ioctl to determine if the device supports capturing a subsection
of the full picture ("cropping" in V4L2). If not, the ioctl
returns the ``EINVAL`` error code. For more information on cropping
and scaling see :ref:`crop`.
- .. row 12
@ -217,8 +217,8 @@ introduction.
- ``-``
- Applications can enumerate the supported image formats with the
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
the device supports MPEG streams.
:ref:`VIDIOC_ENUM_FMT` ioctl to determine if
the device supports MPEG streams.
- .. row 13
@ -759,59 +759,59 @@ differences.
- .. row 2
-
-
- The image format must be selected before buffers are allocated,
with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no
format is selected the driver may use the last, possibly by
another application requested format.
with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When no
format is selected the driver may use the last, possibly by
another application requested format.
- .. row 3
- Applications cannot change the number of buffers. The it is built
into the driver, unless it has a module option to change the
number when the driver module is loaded.
into the driver, unless it has a module option to change the
number when the driver module is loaded.
- The :ref:`VIDIOC_REQBUFS` ioctl allocates the
desired number of buffers, this is a required step in the
initialization sequence.
desired number of buffers, this is a required step in the
initialization sequence.
- .. row 4
- Drivers map all buffers as one contiguous range of memory. The
``VIDIOCGMBUF`` ioctl is available to query the number of buffers,
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
for the :ref:`mmap() <func-mmap>` function.
``VIDIOCGMBUF`` ioctl is available to query the number of buffers,
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
for the :ref:`mmap() <func-mmap>` function.
- Buffers are individually mapped. The offset and size of each
buffer can be determined with the
:ref:`VIDIOC_QUERYBUF` ioctl.
buffer can be determined with the
:ref:`VIDIOC_QUERYBUF` ioctl.
- .. row 5
- The ``VIDIOCMCAPTURE`` ioctl prepares a buffer for capturing. It
also determines the image format for this buffer. The ioctl
returns immediately, eventually with an ``EAGAIN`` error code if no
video signal had been detected. When the driver supports more than
one buffer applications can call the ioctl multiple times and thus
have multiple outstanding capture requests.
also determines the image format for this buffer. The ioctl
returns immediately, eventually with an ``EAGAIN`` error code if no
video signal had been detected. When the driver supports more than
one buffer applications can call the ioctl multiple times and thus
have multiple outstanding capture requests.
The ``VIDIOCSYNC`` ioctl suspends execution until a particular
buffer has been filled.
The ``VIDIOCSYNC`` ioctl suspends execution until a particular
buffer has been filled.
- Drivers maintain an incoming and outgoing queue.
:ref:`VIDIOC_QBUF` enqueues any empty buffer into
the incoming queue. Filled buffers are dequeued from the outgoing
queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait
until filled buffers become available this function,
:ref:`select() <func-select>` or :ref:`poll() <func-poll>` can
be used. The :ref:`VIDIOC_STREAMON` ioctl
must be called once after enqueuing one or more buffers to start
capturing. Its counterpart
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and
dequeues all buffers from both queues. Applications can query the
signal status, if known, with the
:ref:`VIDIOC_ENUMINPUT` ioctl.
:ref:`VIDIOC_QBUF` enqueues any empty buffer into
the incoming queue. Filled buffers are dequeued from the outgoing
queue with the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. To wait
until filled buffers become available this function,
:ref:`select() <func-select>` or :ref:`poll() <func-poll>` can
be used. The :ref:`VIDIOC_STREAMON` ioctl
must be called once after enqueuing one or more buffers to start
capturing. Its counterpart
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` stops capturing and
dequeues all buffers from both queues. Applications can query the
signal status, if known, with the
:ref:`VIDIOC_ENUMINPUT` ioctl.
For a more in-depth discussion of memory mapping and examples, see
@ -845,7 +845,7 @@ with the following parameters:
- sampling_rate
- 28636363 Hz NTSC (or any other 525-line standard); 35468950 Hz PAL
and SECAM (625-line standards)
and SECAM (625-line standards)
- .. row 3
@ -864,7 +864,7 @@ with the following parameters:
- sample_format
- V4L2_PIX_FMT_GREY. The last four bytes (a machine endianness
integer) contain a frame counter.
integer) contain a frame counter.
- .. row 6

View File

@ -47,12 +47,12 @@ driver must be switched into DMABUF I/O mode by calling the
reqbuf.count = 1;
if (ioctl(fd, VIDIOC_REQBUFS, &reqbuf) == -1) {
if (errno == EINVAL)
printf("Video capturing or DMABUF streaming is not supported\\n");
else
perror("VIDIOC_REQBUFS");
if (errno == EINVAL)
printf("Video capturing or DMABUF streaming is not supported\\n");
else
perror("VIDIOC_REQBUFS");
exit(EXIT_FAILURE);
exit(EXIT_FAILURE);
}
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)
{
struct v4l2_buffer buf;
struct v4l2_buffer buf;
memset(&buf, 0, sizeof buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_DMABUF;
buf.index = index;
buf.m.fd = dmafd;
memset(&buf, 0, sizeof buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_DMABUF;
buf.index = index;
buf.m.fd = dmafd;
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
perror("VIDIOC_QBUF");
return -1;
}
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
perror("VIDIOC_QBUF");
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)
{
struct v4l2_buffer buf;
struct v4l2_plane planes[VIDEO_MAX_PLANES];
int i;
struct v4l2_buffer buf;
struct v4l2_plane planes[VIDEO_MAX_PLANES];
int i;
memset(&buf, 0, sizeof buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
buf.memory = V4L2_MEMORY_DMABUF;
buf.index = index;
buf.m.planes = planes;
buf.length = n_planes;
memset(&buf, 0, sizeof buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
buf.memory = V4L2_MEMORY_DMABUF;
buf.index = index;
buf.m.planes = planes;
buf.length = n_planes;
memset(&planes, 0, sizeof planes);
memset(&planes, 0, sizeof planes);
for (i = 0; i < n_planes; ++i)
buf.m.planes[i].m.fd = dmafd[i];
for (i = 0; i < n_planes; ++i)
buf.m.planes[i].m.fd = dmafd[i];
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
perror("VIDIOC_QBUF");
return -1;
}
if (ioctl(v4lfd, VIDIOC_QBUF, &buf) == -1) {
perror("VIDIOC_QBUF");
return -1;
}
return 0;
return 0;
}
Captured or displayed buffers are dequeued with the

View File

@ -113,8 +113,8 @@ The recommended way to enumerate over the extended controls is by using
qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
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
@ -132,10 +132,10 @@ control class is found:
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
break;
/* ... */
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
break;
/* ... */
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
}
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``
- VBI in private packets, IVTV format (documented in the kernel
sources in the file
``Documentation/video4linux/cx2341x/README.vbi``)
sources in the file
``Documentation/video4linux/cx2341x/README.vbi``)
@ -1650,7 +1650,7 @@ Codec Control IDs
- ``V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY``
-
-
@ -1929,7 +1929,7 @@ Codec Control IDs
- ``V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME``
- 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``
- Slices are interleaved one after other with macroblocks in run
length order.
length order.
- .. row 2
- ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES``
- Scatters the macroblocks based on a mathematical function known to
both encoder and decoder.
both encoder and decoder.
- .. row 3
@ -2340,14 +2340,14 @@ MFC 5.1 Control IDs
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT``
- 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
- ``V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT``
- 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``
- Two frames will be searched among the last encoded frame, the
golden frame and the alternate reference (altref) frame. The
encoder implementation will decide which two are chosen.
golden frame and the alternate reference (altref) frame. The
encoder implementation will decide which two are chosen.
- .. row 3
- ``V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME``
- 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``
- Use the (n-2)th frame as a golden frame, current frame index being
'n'.
'n'.
- .. row 2
- ``V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD``
- Use the previous specific frame indicated by
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a
golden frame.
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a
golden frame.
@ -2867,14 +2867,14 @@ Camera Control IDs
- ``V4L2_EXPOSURE_METERING_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
- ``V4L2_EXPOSURE_METERING_CENTER_WEIGHTED``
- 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
@ -2887,9 +2887,9 @@ Camera Control IDs
- ``V4L2_EXPOSURE_METERING_MATRIX``
- A multi-zone metering. The light intensity is measured in several
points of the frame and the results are combined. The algorithm of
the zones selection and their significance in calculating the
final value is device dependent.
points of the frame and the results are combined. The algorithm of
the zones selection and their significance in calculating the
final value is device dependent.
@ -2993,7 +2993,7 @@ Camera Control IDs
- ``V4L2_AUTO_FOCUS_STATUS_FAILED``
- 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``
- Normal distance range, limited for best automatic focus
performance.
performance.
- .. row 3
- ``V4L2_AUTO_FOCUS_RANGE_MACRO``
- Macro (close-up) auto focus. The camera will use its minimum
possible distance for auto focus.
possible distance for auto focus.
- .. row 4
@ -3114,59 +3114,59 @@ Camera Control IDs
- ``V4L2_WHITE_BALANCE_INCANDESCENT``
- White balance setting for incandescent (tungsten) lighting. It
generally cools down the colors and corresponds approximately to
2500...3500 K color temperature range.
generally cools down the colors and corresponds approximately to
2500...3500 K color temperature range.
- .. row 4
- ``V4L2_WHITE_BALANCE_FLUORESCENT``
- White balance preset for fluorescent lighting. It corresponds
approximately to 4000...5000 K color temperature.
approximately to 4000...5000 K color temperature.
- .. row 5
- ``V4L2_WHITE_BALANCE_FLUORESCENT_H``
- With this setting the camera will compensate for fluorescent H
lighting.
lighting.
- .. row 6
- ``V4L2_WHITE_BALANCE_HORIZON``
- White balance setting for horizon daylight. It corresponds
approximately to 5000 K color temperature.
approximately to 5000 K color temperature.
- .. row 7
- ``V4L2_WHITE_BALANCE_DAYLIGHT``
- 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
- ``V4L2_WHITE_BALANCE_FLASH``
- With this setting the camera will compensate for the flash light.
It slightly warms up the colors and corresponds roughly to
5000...5500 K color temperature.
It slightly warms up the colors and corresponds roughly to
5000...5500 K color temperature.
- .. row 9
- ``V4L2_WHITE_BALANCE_CLOUDY``
- White balance preset for moderately overcast sky. This option
corresponds approximately to 6500...8000 K color temperature
range.
corresponds approximately to 6500...8000 K color temperature
range.
- .. row 10
- ``V4L2_WHITE_BALANCE_SHADE``
- 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``
- 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
- ``V4L2_SCENE_MODE_BEACH_SNOW``
- Beach and snow. This mode compensates for all-white or bright
scenes, which tend to look gray and low contrast, when camera's
automatic exposure is based on an average scene brightness. To
compensate, this mode automatically slightly overexposes the
frames. The white balance may also be adjusted to compensate for
the fact that reflected snow looks bluish rather than white.
scenes, which tend to look gray and low contrast, when camera's
automatic exposure is based on an average scene brightness. To
compensate, this mode automatically slightly overexposes the
frames. The white balance may also be adjusted to compensate for
the fact that reflected snow looks bluish rather than white.
- .. row 4
- ``V4L2_SCENE_MODE_CANDLELIGHT``
- Candle light. The camera generally raises the ISO sensitivity and
lowers the shutter speed. This mode compensates for relatively
close subject in the scene. The flash is disabled in order to
preserve the ambiance of the light.
lowers the shutter speed. This mode compensates for relatively
close subject in the scene. The flash is disabled in order to
preserve the ambiance of the light.
- .. row 5
- ``V4L2_SCENE_MODE_DAWN_DUSK``
- Dawn and dusk. Preserves the colors seen in low natural light
before dusk and after down. The camera may turn off the flash, and
automatically focus at infinity. It will usually boost saturation
and lower the shutter speed.
before dusk and after down. The camera may turn off the flash, and
automatically focus at infinity. It will usually boost saturation
and lower the shutter speed.
- .. row 6
- ``V4L2_SCENE_MODE_FALL_COLORS``
- Fall colors. Increases saturation and adjusts white balance for
color enhancement. Pictures of autumn leaves get saturated reds
and yellows.
color enhancement. Pictures of autumn leaves get saturated reds
and yellows.
- .. row 7
- ``V4L2_SCENE_MODE_FIREWORKS``
- Fireworks. Long exposure times are used to capture the expanding
burst of light from a firework. The camera may invoke image
stabilization.
burst of light from a firework. The camera may invoke image
stabilization.
- .. row 8
- ``V4L2_SCENE_MODE_LANDSCAPE``
- Landscape. The camera may choose a small aperture to provide deep
depth of field and long exposure duration to help capture detail
in dim light conditions. The focus is fixed at infinity. Suitable
for distant and wide scenery.
depth of field and long exposure duration to help capture detail
in dim light conditions. The focus is fixed at infinity. Suitable
for distant and wide scenery.
- .. row 9
- ``V4L2_SCENE_MODE_NIGHT``
- Night, also known as Night Landscape. Designed for low light
conditions, it preserves detail in the dark areas without blowing
out bright objects. The camera generally sets itself to a
medium-to-high ISO sensitivity, with a relatively long exposure
time, and turns flash off. As such, there will be increased image
noise and the possibility of blurred image.
conditions, it preserves detail in the dark areas without blowing
out bright objects. The camera generally sets itself to a
medium-to-high ISO sensitivity, with a relatively long exposure
time, and turns flash off. As such, there will be increased image
noise and the possibility of blurred image.
- .. row 10
- ``V4L2_SCENE_MODE_PARTY_INDOOR``
- Party and indoor. Designed to capture indoor scenes that are lit
by indoor background lighting as well as the flash. The camera
usually increases ISO sensitivity, and adjusts exposure for the
low light conditions.
by indoor background lighting as well as the flash. The camera
usually increases ISO sensitivity, and adjusts exposure for the
low light conditions.
- .. row 11
- ``V4L2_SCENE_MODE_PORTRAIT``
- Portrait. The camera adjusts the aperture so that the depth of
field is reduced, which helps to isolate the subject against a
smooth background. Most cameras recognize the presence of faces in
the scene and focus on them. The color hue is adjusted to enhance
skin tones. The intensity of the flash is often reduced.
field is reduced, which helps to isolate the subject against a
smooth background. Most cameras recognize the presence of faces in
the scene and focus on them. The color hue is adjusted to enhance
skin tones. The intensity of the flash is often reduced.
- .. row 12
- ``V4L2_SCENE_MODE_SPORTS``
- Sports. Significantly increases ISO and uses a fast shutter speed
to freeze motion of rapidly-moving subjects. Increased image noise
may be seen in this mode.
to freeze motion of rapidly-moving subjects. Increased image noise
may be seen in this mode.
- .. row 13
- ``V4L2_SCENE_MODE_SUNSET``
- Sunset. Preserves deep hues seen in sunsets and sunrises. It bumps
up the saturation.
up the saturation.
- .. row 14
- ``V4L2_SCENE_MODE_TEXT``
- Text. It applies extra contrast and sharpness, it is typically a
black-and-white mode optimized for readability. Automatic focus
may be switched to close-up mode and this setting may also involve
some lens-distortion correction.
black-and-white mode optimized for readability. Automatic focus
may be switched to close-up mode and this setting may also involve
some lens-distortion correction.
@ -3715,15 +3715,15 @@ Flash Control IDs
- ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
- The flash strobe is triggered by using the
V4L2_CID_FLASH_STROBE control.
V4L2_CID_FLASH_STROBE control.
- .. row 2
- ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``
- The flash strobe is triggered by an external source. Typically
this is a sensor, which makes it possible to synchronises the
flash strobe start to exposure start.
this is a sensor, which makes it possible to synchronises the
flash strobe start to exposure start.
@ -3782,15 +3782,15 @@ Flash Control IDs
- ``V4L2_FLASH_FAULT_OVER_VOLTAGE``
- Flash controller voltage to the flash LED has exceeded the limit
specific to the flash controller.
specific to the flash controller.
- .. row 2
- ``V4L2_FLASH_FAULT_TIMEOUT``
- The flash strobe was still on when the timeout set by the user ---
V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
controllers may set this in all such conditions.
V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
controllers may set this in all such conditions.
- .. row 3
@ -3803,36 +3803,36 @@ Flash Control IDs
- ``V4L2_FLASH_FAULT_SHORT_CIRCUIT``
- The short circuit protection of the flash controller has been
triggered.
triggered.
- .. row 5
- ``V4L2_FLASH_FAULT_OVER_CURRENT``
- Current in the LED power supply has exceeded the limit specific to
the flash controller.
the flash controller.
- .. row 6
- ``V4L2_FLASH_FAULT_INDICATOR``
- The flash controller has detected a short or open circuit
condition on the indicator LED.
condition on the indicator LED.
- .. row 7
- ``V4L2_FLASH_FAULT_UNDER_VOLTAGE``
- 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
- ``V4L2_FLASH_FAULT_INPUT_VOLTAGE``
- The input voltage of the flash controller is below the limit under
which strobing the flash at full current will not be possible.The
condition persists until this flag is no longer set.
which strobing the flash at full current will not be possible.The
condition persists until this flag is no longer set.
- .. row 9
@ -4193,15 +4193,15 @@ Digital Video Control IDs
- ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS``
- Graphics content. Pixel data should be passed unfiltered and
without analog reconstruction.
without analog reconstruction.
- .. row 2
- ``V4L2_DV_IT_CONTENT_TYPE_PHOTO``
- Photo content. The content is derived from digital still pictures.
The content should be passed through with minimal scaling and
picture enhancements.
The content should be passed through with minimal scaling and
picture enhancements.
- .. row 3
@ -4220,7 +4220,7 @@ Digital Video Control IDs
- ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC``
- 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``
- The image is divided into a grid, each cell with its own motion
detection threshold. These thresholds are set through the
``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control.
detection threshold. These thresholds are set through the
``V4L2_CID_DETECT_MD_THRESHOLD_GRID`` matrix control.
- .. row 4
- ``V4L2_DETECT_MD_MODE_REGION_GRID``
- The image is divided into a grid, each cell with its own region
value that specifies which per-region motion detection thresholds
should be used. Each region has its own thresholds. How these
per-region thresholds are set up is driver-specific. The region
values for the grid are set through the
``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control.
value that specifies which per-region motion detection thresholds
should be used. Each region has its own thresholds. How these
per-region thresholds are set up is driver-specific. The region
values for the grid are set through the
``V4L2_CID_DETECT_MD_REGION_GRID`` matrix control.

View File

@ -67,16 +67,16 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 0
- Applications request this field order when any one of the
``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or
``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose
depending on hardware capabilities or e. g. the requested image
size, and return the actual field order. Drivers must never return
``V4L2_FIELD_ANY``. If multiple field orders are possible the
driver must choose one of the possible field orders during
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct
:ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be
``V4L2_FIELD_ANY``.
``V4L2_FIELD_NONE``, ``V4L2_FIELD_TOP``, ``V4L2_FIELD_BOTTOM``, or
``V4L2_FIELD_INTERLACED`` formats is acceptable. Drivers choose
depending on hardware capabilities or e. g. the requested image
size, and return the actual field order. Drivers must never return
``V4L2_FIELD_ANY``. If multiple field orders are possible the
driver must choose one of the possible field orders during
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct
:ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be
``V4L2_FIELD_ANY``.
- .. row 2
@ -85,8 +85,8 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 1
- Images are in progressive format, not interlaced. The driver may
also indicate this order when it cannot distinguish between
``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``.
also indicate this order when it cannot distinguish between
``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM``.
- .. row 3
@ -103,9 +103,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 3
- Images consist of the bottom (aka even) field only. Applications
may wish to prevent a device from capturing interlaced images
because they will have "comb" or "feathering" artefacts around
moving objects.
may wish to prevent a device from capturing interlaced images
because they will have "comb" or "feathering" artefacts around
moving objects.
- .. row 5
@ -114,10 +114,10 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 4
- Images contain both fields, interleaved line by line. The temporal
order of the fields (whether the top or bottom field is first
transmitted) depends on the current video standard. M/NTSC
transmits the bottom field first, all other standards the top
field first.
order of the fields (whether the top or bottom field is first
transmitted) depends on the current video standard. M/NTSC
transmits the bottom field first, all other standards the top
field first.
- .. row 6
@ -126,9 +126,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 5
- Images contain both fields, the top field lines are stored first
in memory, immediately followed by the bottom field lines. Fields
are always stored in temporal order, the older one first in
memory. Image sizes refer to the frame, not fields.
in memory, immediately followed by the bottom field lines. Fields
are always stored in temporal order, the older one first in
memory. Image sizes refer to the frame, not fields.
- .. row 7
@ -137,9 +137,9 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 6
- Images contain both fields, the bottom field lines are stored
first in memory, immediately followed by the top field lines.
Fields are always stored in temporal order, the older one first in
memory. Image sizes refer to the frame, not fields.
first in memory, immediately followed by the top field lines.
Fields are always stored in temporal order, the older one first in
memory. Image sizes refer to the frame, not fields.
- .. row 8
@ -148,18 +148,18 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 7
- The two fields of a frame are passed in separate buffers, in
temporal order, i. e. the older one first. To indicate the field
parity (whether the current field is a top or bottom field) the
driver or application, depending on data direction, must set
struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to
``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive
fields pair to build a frame. If fields are successive, without
any dropped fields between them (fields can drop individually),
can be determined from the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This
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
bottom 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
driver or application, depending on data direction, must set
struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to
``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive
fields pair to build a frame. If fields are successive, without
any dropped fields between them (fields can drop individually),
can be determined from the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This
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
bottom field.
- .. row 9
@ -168,7 +168,7 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 8
- 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
@ -177,7 +177,7 @@ should have the value ``V4L2_FIELD_ANY`` (0).
- 9
- Images contain both fields, interleaved line by line, top field
first. The bottom field is transmitted first.
first. The bottom field is transmitted first.

View File

@ -444,93 +444,93 @@ This unnamed version was finally merged into Linux 2.5.46.
.. flat-table::
:header-rows: 1
:stub-columns: 0
:header-rows: 1
: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
@ -561,57 +561,57 @@ This unnamed version was finally merged into Linux 2.5.46.
.. flat-table::
:header-rows: 1
:stub-columns: 0
:header-rows: 1
: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
@ -771,43 +771,43 @@ V4L2 2003-11-05
- .. row 1
- Symbol
- Symbol
- In this document prior to revision 0.5
- In this document prior to revision 0.5
- Corrected
- Corrected
- .. row 2
- ``V4L2_PIX_FMT_RGB24``
- ``V4L2_PIX_FMT_RGB24``
- B, G, R
- B, G, R
- R, G, B
- R, G, B
- .. row 3
- ``V4L2_PIX_FMT_BGR24``
- ``V4L2_PIX_FMT_BGR24``
- R, G, B
- R, G, B
- B, G, R
- B, G, R
- .. 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
- ``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.
@ -1411,7 +1411,7 @@ lines:
::
Section "Module"
Load "v4l"
Load "v4l"
EndSection
As of XFree86 4.2 this driver still supports only V4L ioctls, however it

View File

@ -28,20 +28,20 @@ Single-planar format structure
- ``height``
- Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``,
``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
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
for interlaced formats).
``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
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
for interlaced formats).
- .. row 3
- :cspan:`2` Applications set these fields to request an image
size, drivers return the closest possible values. In case of
planar formats the ``width`` and ``height`` applies to the largest
plane. To avoid ambiguities drivers must return values rounded up
to a multiple of the scale factor of any smaller planes. For
example when the image format is YUV 4:2:0, ``width`` and
``height`` must be multiples of two.
size, drivers return the closest possible values. In case of
planar formats the ``width`` and ``height`` applies to the largest
plane. To avoid ambiguities drivers must return values rounded up
to a multiple of the scale factor of any smaller planes. For
example when the image format is YUV 4:2:0, ``width`` and
``height`` must be multiples of two.
- .. row 4
@ -50,11 +50,11 @@ Single-planar format structure
- ``pixelformat``
- The pixel format or type of compression, set by the application.
This is a little endian
:ref:`four character code <v4l2-fourcc>`. V4L2 defines standard
RGB formats in :ref:`rgb-formats`, YUV formats in
:ref:`yuv-formats`, and reserved codes in
:ref:`reserved-formats`
This is a little endian
:ref:`four character code <v4l2-fourcc>`. V4L2 defines standard
RGB formats in :ref:`rgb-formats`, YUV formats in
:ref:`yuv-formats`, and reserved codes in
:ref:`reserved-formats`
- .. row 5
@ -63,10 +63,10 @@ Single-planar format structure
- ``field``
- Video images are typically interlaced. Applications can request to
capture or output only the top or bottom field, or both fields
interlaced or sequentially stored in one buffer or alternating in
separate buffers. Drivers return the actual field order selected.
For more details on fields see :ref:`field-order`.
capture or output only the top or bottom field, or both fields
interlaced or sequentially stored in one buffer or alternating in
separate buffers. Drivers return the actual field order selected.
For more details on fields see :ref:`field-order`.
- .. row 6
@ -75,35 +75,35 @@ Single-planar format structure
- ``bytesperline``
- Distance in bytes between the leftmost pixels in two adjacent
lines.
lines.
- .. row 7
- :cspan:`2`
Both applications and drivers can set this field to request
padding bytes at the end of each line. Drivers however may ignore
the value requested by the application, returning ``width`` times
bytes per pixel or a larger value required by the hardware. That
implies applications can just set this field to zero to get a
reasonable default.
Both applications and drivers can set this field to request
padding bytes at the end of each line. Drivers however may ignore
the value requested by the application, returning ``width`` times
bytes per pixel or a larger value required by the hardware. That
implies applications can just set this field to zero to get a
reasonable default.
Video hardware may access padding bytes, therefore they must
reside in accessible memory. Consider cases where padding bytes
after the last line of an image cross a system page boundary.
Input devices may write padding bytes, the value is undefined.
Output devices ignore the contents of padding bytes.
Video hardware may access padding bytes, therefore they must
reside in accessible memory. Consider cases where padding bytes
after the last line of an image cross a system page boundary.
Input devices may write padding bytes, the value is undefined.
Output devices ignore the contents of padding bytes.
When the image format is planar the ``bytesperline`` value applies
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
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
must return a ``bytesperline`` value rounded up to a multiple of
the scale factor.
When the image format is planar the ``bytesperline`` value applies
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
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
must return a ``bytesperline`` value rounded up to a multiple of
the scale factor.
For compressed formats the ``bytesperline`` value makes no sense.
Applications and drivers must set this to 0 in that case.
For compressed formats the ``bytesperline`` value makes no sense.
Applications and drivers must set this to 0 in that case.
- .. row 8
@ -112,9 +112,9 @@ Single-planar format structure
- ``sizeimage``
- Size in bytes of the buffer to hold a complete image, set by the
driver. Usually this is ``bytesperline`` times ``height``. When
the image consists of variable length compressed data this is the
maximum number of bytes required to hold an image.
driver. Usually this is ``bytesperline`` times ``height``. When
the image consists of variable length compressed data this is the
maximum number of bytes required to hold an image.
- .. row 9
@ -123,8 +123,8 @@ Single-planar format structure
- ``colorspace``
- This information supplements the ``pixelformat`` and must be set
by the driver for capture streams and by the application for
output streams, see :ref:`colorspaces`.
by the driver for capture streams and by the application for
output streams, see :ref:`colorspaces`.
- .. row 10
@ -133,29 +133,29 @@ Single-planar format structure
- ``priv``
- This field indicates whether the remaining fields of the
:ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the
extended fields, are valid. When set to
``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields
have been correctly initialized. When set to any other value it
indicates that the extended fields contain undefined values.
:ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the
extended fields, are valid. When set to
``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields
have been correctly initialized. When set to any other value it
indicates that the extended fields contain undefined values.
Applications that wish to use the pixel format extended fields
must first ensure that the feature is supported by querying the
device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>`
capability. If the capability isn't set the pixel format extended
fields are not supported and using the extended fields will lead
to undefined results.
Applications that wish to use the pixel format extended fields
must first ensure that the feature is supported by querying the
device for the :ref:`V4L2_CAP_EXT_PIX_FORMAT <querycap>`
capability. If the capability isn't set the pixel format extended
fields are not supported and using the extended fields will lead
to undefined results.
To use the extended fields, applications must set the ``priv``
field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended
fields and zero the unused bytes of the
:ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field.
To use the extended fields, applications must set the ``priv``
field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended
fields and zero the unused bytes of the
:ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field.
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.
On return drivers must set the ``priv`` field to
``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to
applicable values.
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.
On return drivers must set the ``priv`` field to
``V4L2_PIX_FMT_PRIV_MAGIC`` and all the extended fields to
applicable values.
- .. row 11
@ -172,8 +172,8 @@ Single-planar format structure
- ``ycbcr_enc``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
- .. row 13
@ -182,8 +182,8 @@ Single-planar format structure
- ``quantization``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
- .. row 14
@ -192,5 +192,5 @@ Single-planar format structure
- ``xfer_func``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.

View File

@ -35,7 +35,7 @@ describing all planes of that format.
- ``bytesperline``
- 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
@ -44,7 +44,7 @@ describing all planes of that format.
- ``reserved[6]``
- Reserved for future extensions. Should be zeroed by drivers and
applications.
applications.
@ -63,7 +63,7 @@ describing all planes of that format.
- ``width``
- Image width in pixels. See struct
:ref:`v4l2_pix_format <v4l2-pix-format>`.
:ref:`v4l2_pix_format <v4l2-pix-format>`.
- .. row 2
@ -72,7 +72,7 @@ describing all planes of that format.
- ``height``
- Image height in pixels. See struct
:ref:`v4l2_pix_format <v4l2-pix-format>`.
:ref:`v4l2_pix_format <v4l2-pix-format>`.
- .. row 3
@ -81,7 +81,7 @@ describing all planes of that format.
- ``pixelformat``
- The pixel format. Both single- and multi-planar four character
codes can be used.
codes can be used.
- .. row 4
@ -106,8 +106,8 @@ describing all planes of that format.
- ``plane_fmt[VIDEO_MAX_PLANES]``
- An array of structures describing format of each plane this pixel
format consists of. The number of valid entries in this array has
to be put in the ``num_planes`` field.
format consists of. The number of valid entries in this array has
to be put in the ``num_planes`` field.
- .. row 7
@ -116,7 +116,7 @@ describing all planes of that format.
- ``num_planes``
- 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
@ -133,8 +133,8 @@ describing all planes of that format.
- ``ycbcr_enc``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
- .. row 10
@ -143,8 +143,8 @@ describing all planes of that format.
- ``quantization``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
- .. row 11
@ -153,8 +153,8 @@ describing all planes of that format.
- ``xfer_func``
- This information supplements the ``colorspace`` and must be set by
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
the driver for capture streams and by the application for output
streams, see :ref:`colorspaces`.
- .. row 12
@ -163,4 +163,4 @@ describing all planes of that format.
- ``reserved[7]``
- Reserved for future extensions. Should be zeroed by drivers and
applications.
applications.

View File

@ -40,7 +40,7 @@ R'G'B' quantization.
- ``V4L2_COLORSPACE_DEFAULT``
- 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
@ -107,10 +107,10 @@ R'G'B' quantization.
- ``V4L2_COLORSPACE_RAW``
- The raw colorspace. This is used for raw image capture where the
image is minimally processed and is using the internal colorspace
of the device. The software that processes an image using this
'colorspace' will have to know the internals of the capture
device.
image is minimally processed and is using the internal colorspace
of the device. The software that processes an image using this
'colorspace' will have to know the internals of the capture
device.
@ -258,23 +258,23 @@ R'G'B' quantization.
- ``V4L2_QUANTIZATION_DEFAULT``
- Use the default quantization encoding as defined by the
colorspace. This is always full range for R'G'B' (except for the
BT.2020 colorspace) and usually limited range for Y'CbCr.
colorspace. This is always full range for R'G'B' (except for the
BT.2020 colorspace) and usually limited range for Y'CbCr.
- .. row 3
- ``V4L2_QUANTIZATION_FULL_RANGE``
- 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
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
0xff values).
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
[0…255] (with possible clipping to [1…254] to avoid the 0x00 and
0xff values).
- .. row 4
- ``V4L2_QUANTIZATION_LIM_RANGE``
- 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
[16…240].
is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to
[16…240].

View File

@ -28,7 +28,7 @@ Compressed Formats
- 'JPEG'
- 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`:
@ -37,8 +37,8 @@ Compressed Formats
- 'MPEG'
- MPEG multiplexed stream. The actual format is determined by
extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see
:ref:`mpeg-control-id`.
extended control ``V4L2_CID_MPEG_STREAM_TYPE``, see
:ref:`mpeg-control-id`.
- .. _`V4L2-PIX-FMT-H264`:

View File

@ -24,13 +24,13 @@ the palette, this must be done with ioctls of the Linux framebuffer API.
- Code
-
-
- :cspan:`7` Byte 0
- .. row 2
-
-
-
-
- Bit
- 7
@ -55,7 +55,7 @@ the palette, this must be done with ioctls of the Linux framebuffer API.
- 'PAL8'
-
-
- i\ :sub:`7`
- i\ :sub:`6`

View File

@ -123,15 +123,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2
@ -140,25 +140,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 4
@ -166,17 +166,17 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 5
-
-
- .. row 6
@ -184,25 +184,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 7
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 8
@ -210,10 +210,10 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y

View File

@ -124,15 +124,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2
@ -141,69 +141,69 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 4
- 1
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 5
-
-
- .. row 6
- 2
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 7
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 8
@ -211,10 +211,10 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y

View File

@ -101,7 +101,7 @@ Each cell is one byte.
- .. row 5
-
-
- .. row 6
@ -139,15 +139,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2
@ -156,25 +156,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 4
@ -182,17 +182,17 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 5
-
-
- .. row 6
@ -200,26 +200,26 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 7
-
-
-
-
- C
-
-
-
-
-
-
- C
-
-
- .. row 8
@ -227,10 +227,10 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y

View File

@ -149,15 +149,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2
@ -166,25 +166,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 4
@ -192,29 +192,29 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 5
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 6
-
-
- .. row 7
@ -222,25 +222,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 8
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 9
@ -248,22 +248,22 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 10
-
-
-
-
- C
-
-
-
-
- C
-
-

View File

@ -94,7 +94,7 @@ Each cell is one byte.
- .. row 5
-
-
- .. row 6
@ -156,15 +156,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2
@ -173,25 +173,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 4
@ -199,29 +199,29 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 5
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 6
-
-
- .. row 7
@ -229,25 +229,25 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 8
-
-
-
-
- C
-
-
-
-
- C
-
-
- .. row 9
@ -255,22 +255,22 @@ Each cell is one byte.
- Y
-
-
- Y
- Y
-
-
- Y
- .. row 10
-
-
-
-
- C
-
-
-
-
- C
-
-

View File

@ -33,7 +33,7 @@ next to each other in memory.
- Code
-
-
- :cspan:`7` Byte 0 in memory
- :cspan:`7` Byte 1
@ -44,8 +44,8 @@ next to each other in memory.
- .. row 2
-
-
-
-
- Bit
- 7
@ -64,7 +64,7 @@ next to each other in memory.
- 0
-
-
- 7
- 6
@ -81,7 +81,7 @@ next to each other in memory.
- 0
-
-
- 7
- 6
@ -98,7 +98,7 @@ next to each other in memory.
- 0
-
-
- 7
- 6
@ -121,7 +121,7 @@ next to each other in memory.
- 'RGB1'
-
-
- r\ :sub:`2`
- r\ :sub:`1`
@ -144,7 +144,7 @@ next to each other in memory.
- 'AR12'
-
-
- g\ :sub:`3`
- g\ :sub:`2`
@ -161,7 +161,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- a\ :sub:`3`
- a\ :sub:`2`
@ -184,7 +184,7 @@ next to each other in memory.
- 'XR12'
-
-
- g\ :sub:`3`
- g\ :sub:`2`
@ -201,7 +201,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- -
- -
@ -224,7 +224,7 @@ next to each other in memory.
- 'AR15'
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -241,7 +241,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- a
- r\ :sub:`4`
@ -264,7 +264,7 @@ next to each other in memory.
- 'XR15'
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -281,7 +281,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- -
- r\ :sub:`4`
@ -304,7 +304,7 @@ next to each other in memory.
- 'RGBP'
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -321,7 +321,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- r\ :sub:`4`
- r\ :sub:`3`
@ -344,7 +344,7 @@ next to each other in memory.
- 'AR15' | (1 << 31)
-
-
- a
- r\ :sub:`4`
@ -361,7 +361,7 @@ next to each other in memory.
- g\ :sub:`3`
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -384,7 +384,7 @@ next to each other in memory.
- 'XR15' | (1 << 31)
-
-
- -
- r\ :sub:`4`
@ -401,7 +401,7 @@ next to each other in memory.
- g\ :sub:`3`
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -424,7 +424,7 @@ next to each other in memory.
- 'RGBR'
-
-
- r\ :sub:`4`
- r\ :sub:`3`
@ -441,7 +441,7 @@ next to each other in memory.
- g\ :sub:`3`
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -464,7 +464,7 @@ next to each other in memory.
- 'BGR3'
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -481,7 +481,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -498,7 +498,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -521,7 +521,7 @@ next to each other in memory.
- 'RGB3'
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -538,7 +538,7 @@ next to each other in memory.
- r\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -555,7 +555,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -578,7 +578,7 @@ next to each other in memory.
- 'BGRH'
-
-
- b\ :sub:`5`
- b\ :sub:`4`
@ -595,7 +595,7 @@ next to each other in memory.
- g\ :sub:`4`
-
-
- g\ :sub:`3`
- g\ :sub:`2`
@ -612,7 +612,7 @@ next to each other in memory.
- r\ :sub:`2`
-
-
- r\ :sub:`1`
- r\ :sub:`0`
@ -629,7 +629,7 @@ next to each other in memory.
- -
-
-
- -
- -
@ -652,7 +652,7 @@ next to each other in memory.
- 'AR24'
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -669,7 +669,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -686,7 +686,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -703,7 +703,7 @@ next to each other in memory.
- r\ :sub:`0`
-
-
- a\ :sub:`7`
- a\ :sub:`6`
@ -726,7 +726,7 @@ next to each other in memory.
- 'XR24'
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -743,7 +743,7 @@ next to each other in memory.
- b\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -760,7 +760,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -777,7 +777,7 @@ next to each other in memory.
- r\ :sub:`0`
-
-
- -
- -
@ -800,7 +800,7 @@ next to each other in memory.
- 'BA24'
-
-
- a\ :sub:`7`
- a\ :sub:`6`
@ -817,7 +817,7 @@ next to each other in memory.
- a\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -834,7 +834,7 @@ next to each other in memory.
- r\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -851,7 +851,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -874,7 +874,7 @@ next to each other in memory.
- 'BX24'
-
-
- -
- -
@ -891,7 +891,7 @@ next to each other in memory.
- -
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -908,7 +908,7 @@ next to each other in memory.
- r\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -925,7 +925,7 @@ next to each other in memory.
- g\ :sub:`0`
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -1112,7 +1112,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- Code
-
-
- :cspan:`7` Byte 0 in memory
- :cspan:`7` Byte 1
@ -1123,8 +1123,8 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- .. row 2
-
-
-
-
- Bit
- 7
@ -1143,7 +1143,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 0
-
-
- 7
- 6
@ -1160,7 +1160,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 0
-
-
- 7
- 6
@ -1177,7 +1177,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 0
-
-
- 7
- 6
@ -1200,7 +1200,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 'R444'
-
-
- g\ :sub:`3`
- g\ :sub:`2`
@ -1217,7 +1217,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- b\ :sub:`0`
-
-
- a\ :sub:`3`
- a\ :sub:`2`
@ -1240,7 +1240,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 'RGBO'
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -1257,7 +1257,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- b\ :sub:`0`
-
-
- a
- r\ :sub:`4`
@ -1280,7 +1280,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 'RGBQ'
-
-
- a
- r\ :sub:`4`
@ -1297,7 +1297,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- g\ :sub:`3`
-
-
- g\ :sub:`2`
- g\ :sub:`1`
@ -1320,7 +1320,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 'BGR4'
-
-
- b\ :sub:`7`
- b\ :sub:`6`
@ -1337,7 +1337,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- b\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -1354,7 +1354,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- g\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -1371,7 +1371,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- r\ :sub:`0`
-
-
- a\ :sub:`7`
- a\ :sub:`6`
@ -1394,7 +1394,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- 'RGB4'
-
-
- a\ :sub:`7`
- a\ :sub:`6`
@ -1411,7 +1411,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- a\ :sub:`0`
-
-
- r\ :sub:`7`
- r\ :sub:`6`
@ -1428,7 +1428,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- r\ :sub:`0`
-
-
- g\ :sub:`7`
- g\ :sub:`6`
@ -1445,7 +1445,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
- g\ :sub:`0`
-
-
- b\ :sub:`7`
- b\ :sub:`6`

View File

@ -30,22 +30,22 @@ component of each pixel in one 16 or 32 bit word.
- Code
-
-
- :cspan:`7` Byte 0 in memory
-
-
- :cspan:`7` Byte 1
-
-
- :cspan:`7` Byte 2
-
-
- :cspan:`7` Byte 3
- .. row 2
-
-
-
-
- Bit
- 7
@ -64,7 +64,7 @@ component of each pixel in one 16 or 32 bit word.
- 0
-
-
- 7
- 6
@ -81,7 +81,7 @@ component of each pixel in one 16 or 32 bit word.
- 0
-
-
- 7
- 6
@ -98,7 +98,7 @@ component of each pixel in one 16 or 32 bit word.
- 0
-
-
- 7
- 6
@ -121,7 +121,7 @@ component of each pixel in one 16 or 32 bit word.
- 'Y444'
-
-
- Cb\ :sub:`3`
- Cb\ :sub:`2`
@ -138,7 +138,7 @@ component of each pixel in one 16 or 32 bit word.
- Cr\ :sub:`0`
-
-
- a\ :sub:`3`
- a\ :sub:`2`
@ -161,7 +161,7 @@ component of each pixel in one 16 or 32 bit word.
- 'YUVO'
-
-
- Cb\ :sub:`2`
- Cb\ :sub:`1`
@ -178,7 +178,7 @@ component of each pixel in one 16 or 32 bit word.
- Cr\ :sub:`0`
-
-
- a
- Y'\ :sub:`4`
@ -201,7 +201,7 @@ component of each pixel in one 16 or 32 bit word.
- 'YUVP'
-
-
- Cb\ :sub:`2`
- Cb\ :sub:`1`
@ -218,7 +218,7 @@ component of each pixel in one 16 or 32 bit word.
- Cr\ :sub:`0`
-
-
- Y'\ :sub:`4`
- Y'\ :sub:`3`
@ -241,7 +241,7 @@ component of each pixel in one 16 or 32 bit word.
- 'YUV4'
-
-
- a\ :sub:`7`
- a\ :sub:`6`
@ -258,7 +258,7 @@ component of each pixel in one 16 or 32 bit word.
- a\ :sub:`0`
-
-
- Y'\ :sub:`7`
- Y'\ :sub:`6`
@ -275,7 +275,7 @@ component of each pixel in one 16 or 32 bit word.
- Y'\ :sub:`0`
-
-
- Cb\ :sub:`7`
- Cb\ :sub:`6`
@ -292,7 +292,7 @@ component of each pixel in one 16 or 32 bit word.
- Cb\ :sub:`0`
-
-
- Cr\ :sub:`7`
- Cr\ :sub:`6`

View File

@ -64,10 +64,10 @@ please make a proposal on the linux-media mailing list.
- 'HM12'
- 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
``Documentation/video4linux/cx2341x/README.hm12``
The format is documented in the kernel sources in the file
``Documentation/video4linux/cx2341x/README.hm12``
- .. _`V4L2-PIX-FMT-CPIA1`:
@ -84,7 +84,7 @@ please make a proposal on the linux-media mailing list.
- 'JPGL'
- JPEG-Light format (Pegasus Lossless JPEG) used in Divio webcams NW
80x.
80x.
- .. _`V4L2-PIX-FMT-SPCA501`:
@ -245,7 +245,7 @@ please make a proposal on the linux-media mailing list.
- 'WNVA'
- 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`:
@ -263,7 +263,7 @@ please make a proposal on the linux-media mailing list.
- 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`:
@ -273,7 +273,7 @@ please make a proposal on the linux-media mailing list.
- Used by Konica webcams.
YUV420 planar in blocks of 256 pixels.
YUV420 planar in blocks of 256 pixels.
- .. _`V4L2-PIX-FMT-YYUV`:
@ -290,7 +290,7 @@ please make a proposal on the linux-media mailing list.
- 'Y04 '
- 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`:
@ -299,7 +299,7 @@ please make a proposal on the linux-media mailing list.
- 'Y06 '
- 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`:
@ -308,34 +308,34 @@ please make a proposal on the linux-media mailing list.
- 'S5CI'
- Two-planar format used by Samsung S5C73MX cameras. The first plane
contains interleaved JPEG and UYVY image data, followed by meta
data in form of an array of offsets to the UYVY data blocks. The
actual pointer array follows immediately the interleaved JPEG/UYVY
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
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
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
can vary with each line.
contains interleaved JPEG and UYVY image data, followed by meta
data in form of an array of offsets to the UYVY data blocks. The
actual pointer array follows immediately the interleaved JPEG/UYVY
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
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
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
can vary with each line.
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
followed by a 4-byte value indicating size of the pointer array.
All numbers in the second plane are also in big endian order.
Remaining data in the second plane is undefined. The information
in the second plane allows to easily find location of the pointer
array, which can be different for each frame. The size of the
pointer array is constant for given UYVY image height.
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
followed by a 4-byte value indicating size of the pointer array.
All numbers in the second plane are also in big endian order.
Remaining data in the second plane is undefined. The information
in the second plane allows to easily find location of the pointer
array, which can be different for each frame. The size of the
pointer array is constant for given UYVY image height.
In order to extract UYVY and JPEG frames an application can
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
pointer indicates start of an UYVY image pixel line. Whole UYVY
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
array. Anything what's in between the UYVY lines is JPEG data and
should be concatenated to form the JPEG stream.
In order to extract UYVY and JPEG frames an application can
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
pointer indicates start of an UYVY image pixel line. Whole UYVY
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
array. Anything what's in between the UYVY lines is JPEG data and
should be concatenated to form the JPEG stream.
@ -354,7 +354,7 @@ please make a proposal on the linux-media mailing list.
- 0x00000001
- The color values are premultiplied by the alpha channel value. For
example, if a light blue pixel with 50% transparency was described
by RGBA values (128, 192, 255, 128), the same pixel described with
premultiplied colors would be described by RGBA values (64, 96,
128, 128)
example, if a light blue pixel with 50% transparency was described
by RGBA values (128, 192, 255, 128), the same pixel described with
premultiplied colors would be described by RGBA values (64, 96,
128, 128)

View File

@ -52,7 +52,7 @@ Each cell is one byte.
- G\ :sub:`03high`
- 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
@ -67,7 +67,7 @@ Each cell is one byte.
- R\ :sub:`13high`
- 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
@ -82,7 +82,7 @@ Each cell is one byte.
- G\ :sub:`23high`
- 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
@ -97,4 +97,4 @@ Each cell is one byte.
- R\ :sub:`33high`
- 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)

View File

@ -121,15 +121,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2

View File

@ -119,13 +119,13 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
-
-
- 2
- 3

View File

@ -158,12 +158,12 @@ Each cell is one byte.
- .. row 1
-
-
- 0
- 1
-
-
- 2
- 3
@ -172,7 +172,7 @@ Each cell is one byte.
- 5
-
-
- 6
- 7

View File

@ -114,16 +114,16 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
- .. row 2
@ -132,18 +132,18 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 3
-
-
- .. row 4
@ -151,26 +151,26 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 5
-
-
-
-
-
-
-
-
- C
-
-
-
-
-
-
- .. row 6
@ -178,18 +178,18 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 7
-
-
- .. row 8
@ -197,11 +197,11 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y

View File

@ -147,12 +147,12 @@ Each cell is one byte.
- .. row 1
-
-
- 0
- 1
-
-
- 2
- 3

View File

@ -136,16 +136,16 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
- .. row 2
@ -154,27 +154,27 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
-
-
- C
-
-
- .. row 4
@ -182,18 +182,18 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 5
-
-
- .. row 6
@ -201,27 +201,27 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 7
-
-
-
-
- C
-
-
-
-
-
-
- C
-
-
- .. row 8
@ -229,11 +229,11 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y

View File

@ -100,7 +100,7 @@ Each cell is one byte.
- .. row 5
-
-
- .. row 6
@ -120,7 +120,7 @@ Each cell is one byte.
- .. row 8
-
-
- .. row 9
@ -150,16 +150,16 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
- .. row 2
@ -168,27 +168,27 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 3
-
-
-
-
- C
-
-
-
-
-
-
- C
-
-
- .. row 4
@ -196,18 +196,18 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 5
-
-
- .. row 6
@ -215,27 +215,27 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y
- .. row 7
-
-
-
-
- C
-
-
-
-
-
-
- C
-
-
- .. row 8
@ -243,11 +243,11 @@ Each cell is one byte.
- Y
-
-
- Y
-
-
- Y
-
-
- Y

View File

@ -99,7 +99,7 @@ Each cell is one byte.
- .. row 5
-
-
- .. row 6
@ -135,7 +135,7 @@ Each cell is one byte.
- .. row 10
-
-
- .. row 11
@ -181,15 +181,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2

View File

@ -164,15 +164,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2

View File

@ -93,7 +93,7 @@ Each cell is one byte.
- .. row 5
-
-
- .. row 6
@ -145,7 +145,7 @@ Each cell is one byte.
- .. row 10
-
-
- .. row 11
@ -207,7 +207,7 @@ Each cell is one byte.
- .. row 1
-
-
- 0
- 1

View File

@ -124,16 +124,16 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
- .. row 2
@ -146,7 +146,7 @@ Each cell is one byte.
- Y
-
-
- Y
- C
@ -163,7 +163,7 @@ Each cell is one byte.
- Y
-
-
- Y
- C
@ -180,7 +180,7 @@ Each cell is one byte.
- Y
-
-
- Y
- C
@ -197,7 +197,7 @@ Each cell is one byte.
- Y
-
-
- Y
- C

View File

@ -119,15 +119,15 @@ Each cell is one byte.
- .. row 1
-
-
- 0
-
-
- 1
- 2
-
-
- 3
- .. row 2

View File

@ -12,17 +12,17 @@ Examples
.. code-block:: c
:caption: Example 1.15. Resetting the cropping parameters
struct v4l2_selection sel = {
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
.target = V4L2_SEL_TGT_CROP_DEFAULT,
};
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
if (ret)
exit(-1);
sel.target = V4L2_SEL_TGT_CROP;
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
if (ret)
exit(-1);
struct v4l2_selection sel = {
.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
.target = V4L2_SEL_TGT_CROP_DEFAULT,
};
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
if (ret)
exit(-1);
sel.target = V4L2_SEL_TGT_CROP;
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
if (ret)
exit(-1);
Setting a composing area on output of size of *at most* half of limit
placed at a center of a display.
@ -31,26 +31,26 @@ placed at a center of a display.
.. code-block:: c
:caption: Example 1.16. Simple downscaling
struct v4l2_selection sel = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
};
struct v4l2_rect r;
struct v4l2_selection sel = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
};
struct v4l2_rect r;
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
if (ret)
exit(-1);
/* setting smaller compose rectangle */
r.width = sel.r.width / 2;
r.height = sel.r.height / 2;
r.left = sel.r.width / 4;
r.top = sel.r.height / 4;
sel.r = r;
sel.target = V4L2_SEL_TGT_COMPOSE;
sel.flags = V4L2_SEL_FLAG_LE;
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
if (ret)
exit(-1);
ret = ioctl(fd, VIDIOC_G_SELECTION, &sel);
if (ret)
exit(-1);
/* setting smaller compose rectangle */
r.width = sel.r.width / 2;
r.height = sel.r.height / 2;
r.left = sel.r.width / 4;
r.top = sel.r.height / 4;
sel.r = r;
sel.target = V4L2_SEL_TGT_COMPOSE;
sel.flags = V4L2_SEL_FLAG_LE;
ret = ioctl(fd, VIDIOC_S_SELECTION, &sel);
if (ret)
exit(-1);
A video output device is assumed; change ``V4L2_BUF_TYPE_VIDEO_OUTPUT``
for other devices
@ -59,23 +59,23 @@ for other devices
.. code-block:: c
:caption: Example 1.17. Querying for scaling factors
struct v4l2_selection compose = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_COMPOSE,
};
struct v4l2_selection crop = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_CROP,
};
double hscale, vscale;
struct v4l2_selection compose = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_COMPOSE,
};
struct v4l2_selection crop = {
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
.target = V4L2_SEL_TGT_CROP,
};
double hscale, vscale;
ret = ioctl(fd, VIDIOC_G_SELECTION, &compose);
if (ret)
exit(-1);
ret = ioctl(fd, VIDIOC_G_SELECTION, &crop);
if (ret)
exit(-1);
ret = ioctl(fd, VIDIOC_G_SELECTION, &compose);
if (ret)
exit(-1);
ret = ioctl(fd, VIDIOC_G_SELECTION, &crop);
if (ret)
exit(-1);
/* computing scaling factors */
hscale = (double)compose.r.width / crop.r.width;
vscale = (double)compose.r.height / crop.r.height;
/* computing scaling factors */
hscale = (double)compose.r.width / crop.r.width;
vscale = (double)compose.r.height / crop.r.height;

View File

@ -72,32 +72,32 @@ standard ioctls can be used with the given input or output.
struct v4l2_standard standard;
if (-1 == ioctl(fd, VIDIOC_G_STD, &std_id)) {
/* Note when VIDIOC_ENUMSTD always returns ENOTTY this
is no video device or it falls under the USB exception,
and VIDIOC_G_STD returning ENOTTY is no error. */
/* Note when VIDIOC_ENUMSTD always returns ENOTTY this
is no video device or it falls under the USB exception,
and VIDIOC_G_STD returning ENOTTY is no error. */
perror("VIDIOC_G_STD");
exit(EXIT_FAILURE);
perror("VIDIOC_G_STD");
exit(EXIT_FAILURE);
}
memset(&standard, 0, sizeof(standard));
standard.index = 0;
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
if (standard.id & std_id) {
printf("Current video standard: %s\\n", standard.name);
exit(EXIT_SUCCESS);
}
if (standard.id & std_id) {
printf("Current video standard: %s\\n", standard.name);
exit(EXIT_SUCCESS);
}
standard.index++;
standard.index++;
}
/* EINVAL indicates the end of the enumeration, which cannot be
empty unless this device falls under the USB exception. */
if (errno == EINVAL || standard.index == 0) {
perror("VIDIOC_ENUMSTD");
exit(EXIT_FAILURE);
perror("VIDIOC_ENUMSTD");
exit(EXIT_FAILURE);
}
@ -110,13 +110,13 @@ standard ioctls can be used with the given input or output.
memset(&input, 0, sizeof(input));
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
}
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
perror("VIDIOC_ENUM_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_ENUM_INPUT");
exit(EXIT_FAILURE);
}
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;
while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
if (standard.id & input.std)
printf("%s\\n", standard.name);
if (standard.id & input.std)
printf("%s\\n", standard.name);
standard.index++;
standard.index++;
}
/* EINVAL indicates the end of the enumeration, which cannot be
empty unless this device falls under the USB exception. */
if (errno != EINVAL || standard.index == 0) {
perror("VIDIOC_ENUMSTD");
exit(EXIT_FAILURE);
perror("VIDIOC_ENUMSTD");
exit(EXIT_FAILURE);
}
@ -149,18 +149,18 @@ standard ioctls can be used with the given input or output.
memset(&input, 0, sizeof(input));
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
}
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
perror("VIDIOC_ENUM_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_ENUM_INPUT");
exit(EXIT_FAILURE);
}
if (0 == (input.std & V4L2_STD_PAL_BG)) {
fprintf(stderr, "Oops. B/G PAL is not supported.\\n");
exit(EXIT_FAILURE);
fprintf(stderr, "Oops. B/G PAL is not supported.\\n");
exit(EXIT_FAILURE);
}
/* 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;
if (-1 == ioctl(fd, VIDIOC_S_STD, &std_id)) {
perror("VIDIOC_S_STD");
exit(EXIT_FAILURE);
perror("VIDIOC_S_STD");
exit(EXIT_FAILURE);
}
.. [1]

File diff suppressed because it is too large Load Diff

View File

@ -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.
Two methods exist to suspend execution of the application until one or
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,
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` returns immediately with an ``EAGAIN``
error code when no buffer is available. The :ref:`select()

View File

@ -33,10 +33,10 @@ Selection flags
- (1 << 0)
- Suggest the driver it should choose greater or equal rectangle (in
size) than was requested. Albeit the driver may choose a lesser
size, it will only do so due to hardware limitations. Without this
flag (and ``V4L2_SEL_FLAG_LE``) the behaviour is to choose the
closest possible rectangle.
size) than was requested. Albeit the driver may choose a lesser
size, it will only do so due to hardware limitations. Without this
flag (and ``V4L2_SEL_FLAG_LE``) the behaviour is to choose the
closest possible rectangle.
- Yes
@ -49,8 +49,8 @@ Selection flags
- (1 << 1)
- Suggest the driver it should choose lesser or equal rectangle (in
size) than was requested. Albeit the driver may choose a greater
size, it will only do so due to hardware limitations.
size) than was requested. Albeit the driver may choose a greater
size, it will only do so due to hardware limitations.
- Yes
@ -63,8 +63,8 @@ Selection flags
- (1 << 2)
- The configuration must not be propagated to any further processing
steps. If this flag is not given, the configuration is propagated
inside the subdevice to all further processing steps.
steps. If this flag is not given, the configuration is propagated
inside the subdevice to all further processing steps.
- No

View File

@ -60,7 +60,7 @@ of the two interfaces they are used.
- 0x0002
- Bounds of the crop rectangle. All valid crop rectangles fit inside
the crop bounds rectangle.
the crop bounds rectangle.
- Yes
@ -73,12 +73,12 @@ of the two interfaces they are used.
- 0x0003
- The native size of the device, e.g. a sensor's pixel array.
``left`` and ``top`` fields are zero for this target. Setting the
native size will generally only make sense for memory to memory
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
V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size of
that canvas.
``left`` and ``top`` fields are zero for this target. Setting the
native size will generally only make sense for memory to memory
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
V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size of
that canvas.
- Yes
@ -115,7 +115,7 @@ of the two interfaces they are used.
- 0x0102
- Bounds of the compose rectangle. All valid compose rectangles fit
inside the compose bounds rectangle.
inside the compose bounds rectangle.
- Yes
@ -128,7 +128,7 @@ of the two interfaces they are used.
- 0x0103
- The active area and all padding pixels that are inserted or
modified by hardware.
modified by hardware.
- Yes

View File

@ -33,137 +33,137 @@ file: media/v4l/v4l2grab.c
#define CLEAR(x) memset(&(x), 0, sizeof(x))
struct buffer {
void *start;
size_t length;
void *start;
size_t length;
};
static void xioctl(int fh, int request, void *arg)
{
int r;
int r;
do {
r = v4l2_ioctl(fh, request, arg);
} while (r == -1 && ((errno == EINTR) || (errno == EAGAIN)));
do {
r = v4l2_ioctl(fh, request, arg);
} while (r == -1 && ((errno == EINTR) || (errno == EAGAIN)));
if (r == -1) {
fprintf(stderr, "error %d, %s\\n", errno, strerror(errno));
exit(EXIT_FAILURE);
}
if (r == -1) {
fprintf(stderr, "error %d, %s\\n", errno, strerror(errno));
exit(EXIT_FAILURE);
}
}
int main(int argc, char **argv)
{
struct v4l2_format fmt;
struct v4l2_buffer buf;
struct v4l2_requestbuffers req;
enum v4l2_buf_type type;
fd_set fds;
struct timeval tv;
int r, fd = -1;
unsigned int i, n_buffers;
char *dev_name = "/dev/video0";
char out_name[256];
FILE *fout;
struct buffer *buffers;
struct v4l2_format fmt;
struct v4l2_buffer buf;
struct v4l2_requestbuffers req;
enum v4l2_buf_type type;
fd_set fds;
struct timeval tv;
int r, fd = -1;
unsigned int i, n_buffers;
char *dev_name = "/dev/video0";
char out_name[256];
FILE *fout;
struct buffer *buffers;
fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
if (fd < 0) {
perror("Cannot open device");
exit(EXIT_FAILURE);
}
fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
if (fd < 0) {
perror("Cannot open device");
exit(EXIT_FAILURE);
}
CLEAR(fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 480;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
xioctl(fd, VIDIOC_S_FMT, &fmt);
if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) {
printf("Libv4l didn't accept RGB24 format. Can't proceed.\\n");
exit(EXIT_FAILURE);
}
if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480))
printf("Warning: driver is sending image at %dx%d\\n",
fmt.fmt.pix.width, fmt.fmt.pix.height);
CLEAR(fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 480;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
xioctl(fd, VIDIOC_S_FMT, &fmt);
if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) {
printf("Libv4l didn't accept RGB24 format. Can't proceed.\\n");
exit(EXIT_FAILURE);
}
if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480))
printf("Warning: driver is sending image at %dx%d\\n",
fmt.fmt.pix.width, fmt.fmt.pix.height);
CLEAR(req);
req.count = 2;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
xioctl(fd, VIDIOC_REQBUFS, &req);
CLEAR(req);
req.count = 2;
req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory = V4L2_MEMORY_MMAP;
xioctl(fd, VIDIOC_REQBUFS, &req);
buffers = calloc(req.count, sizeof(*buffers));
for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
CLEAR(buf);
buffers = calloc(req.count, sizeof(*buffers));
for (n_buffers = 0; n_buffers < req.count; ++n_buffers) {
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = n_buffers;
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = n_buffers;
xioctl(fd, VIDIOC_QUERYBUF, &buf);
xioctl(fd, VIDIOC_QUERYBUF, &buf);
buffers[n_buffers].length = buf.length;
buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,
PROT_READ | PROT_WRITE, MAP_SHARED,
fd, buf.m.offset);
buffers[n_buffers].length = buf.length;
buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,
PROT_READ | PROT_WRITE, MAP_SHARED,
fd, buf.m.offset);
if (MAP_FAILED == buffers[n_buffers].start) {
perror("mmap");
exit(EXIT_FAILURE);
}
}
if (MAP_FAILED == buffers[n_buffers].start) {
perror("mmap");
exit(EXIT_FAILURE);
}
}
for (i = 0; i < n_buffers; ++i) {
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;
xioctl(fd, VIDIOC_QBUF, &buf);
}
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
for (i = 0; i < n_buffers; ++i) {
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
buf.index = i;
xioctl(fd, VIDIOC_QBUF, &buf);
}
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
xioctl(fd, VIDIOC_STREAMON, &type);
for (i = 0; i < 20; i++) {
do {
FD_ZERO(&fds);
FD_SET(fd, &fds);
xioctl(fd, VIDIOC_STREAMON, &type);
for (i = 0; i < 20; i++) {
do {
FD_ZERO(&fds);
FD_SET(fd, &fds);
/* Timeout. */
tv.tv_sec = 2;
tv.tv_usec = 0;
/* Timeout. */
tv.tv_sec = 2;
tv.tv_usec = 0;
r = select(fd + 1, &fds, NULL, NULL, &tv);
} while ((r == -1 && (errno = EINTR)));
if (r == -1) {
perror("select");
return errno;
}
r = select(fd + 1, &fds, NULL, NULL, &tv);
} while ((r == -1 && (errno = EINTR)));
if (r == -1) {
perror("select");
return errno;
}
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
xioctl(fd, VIDIOC_DQBUF, &buf);
CLEAR(buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
xioctl(fd, VIDIOC_DQBUF, &buf);
sprintf(out_name, "out%03d.ppm", i);
fout = fopen(out_name, "w");
if (!fout) {
perror("Cannot open image");
exit(EXIT_FAILURE);
}
fprintf(fout, "P6\\n%d %d 255\\n",
fmt.fmt.pix.width, fmt.fmt.pix.height);
fwrite(buffers[buf.index].start, buf.bytesused, 1, fout);
fclose(fout);
sprintf(out_name, "out%03d.ppm", i);
fout = fopen(out_name, "w");
if (!fout) {
perror("Cannot open image");
exit(EXIT_FAILURE);
}
fprintf(fout, "P6\\n%d %d 255\\n",
fmt.fmt.pix.width, fmt.fmt.pix.height);
fwrite(buffers[buf.index].start, buf.bytesused, 1, fout);
fclose(fout);
xioctl(fd, VIDIOC_QBUF, &buf);
}
xioctl(fd, VIDIOC_QBUF, &buf);
}
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
xioctl(fd, VIDIOC_STREAMOFF, &type);
for (i = 0; i < n_buffers; ++i)
v4l2_munmap(buffers[i].start, buffers[i].length);
v4l2_close(fd);
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
xioctl(fd, VIDIOC_STREAMOFF, &type);
for (i = 0; i < n_buffers; ++i)
v4l2_munmap(buffers[i].start, buffers[i].length);
v4l2_close(fd);
return 0;
return 0;
}

View File

@ -35,16 +35,16 @@ all the output ioctls when the device has one or more outputs.
int index;
if (-1 == ioctl(fd, VIDIOC_G_INPUT, &index)) {
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_G_INPUT");
exit(EXIT_FAILURE);
}
memset(&input, 0, sizeof(input));
input.index = index;
if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
perror("VIDIOC_ENUMINPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_ENUMINPUT");
exit(EXIT_FAILURE);
}
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;
if (-1 == ioctl(fd, VIDIOC_S_INPUT, &index)) {
perror("VIDIOC_S_INPUT");
exit(EXIT_FAILURE);
perror("VIDIOC_S_INPUT");
exit(EXIT_FAILURE);
}

View File

@ -94,12 +94,12 @@ than the number requested.
- ``count``
- The number of buffers requested or granted. If count == 0, then
:ref:`VIDIOC_CREATE_BUFS` will set ``index`` to the current number of
created buffers, and it will check the validity of ``memory`` and
``format.type``. If those are invalid -1 is returned and errno is
set to ``EINVAL`` error code, otherwise :ref:`VIDIOC_CREATE_BUFS` returns
0. It will never set errno to ``EBUSY`` error code in this particular
case.
:ref:`VIDIOC_CREATE_BUFS` will set ``index`` to the current number of
created buffers, and it will check the validity of ``memory`` and
``format.type``. If those are invalid -1 is returned and errno is
set to ``EINVAL`` error code, otherwise :ref:`VIDIOC_CREATE_BUFS` returns
0. It will never set errno to ``EBUSY`` error code in this particular
case.
- .. row 3
@ -108,8 +108,8 @@ than the number requested.
- ``memory``
- Applications set this field to ``V4L2_MEMORY_MMAP``,
``V4L2_MEMORY_DMABUF`` or ``V4L2_MEMORY_USERPTR``. See
:ref:`v4l2-memory`
``V4L2_MEMORY_DMABUF`` or ``V4L2_MEMORY_USERPTR``. See
:ref:`v4l2-memory`
- .. row 4
@ -126,7 +126,7 @@ than the number requested.
- ``reserved``\ [8]
- A place holder for future extensions. Drivers and applications
must set the array to zero.
must set the array to zero.

View File

@ -65,9 +65,9 @@ overlay devices.
- ``type``
- Type of the data stream, set by the application. Only these types
are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``,
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` and
``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :ref:`v4l2-buf-type`.
are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``,
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` and
``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :ref:`v4l2-buf-type`.
- .. row 2
@ -76,11 +76,11 @@ overlay devices.
- ``bounds``
- Defines the window within capturing or output is possible, this
may exclude for example the horizontal and vertical blanking
areas. The cropping rectangle cannot exceed these limits. Width
and height are defined in pixels, the driver writer is free to
choose origin and units of the coordinate system in the analog
domain.
may exclude for example the horizontal and vertical blanking
areas. The cropping rectangle cannot exceed these limits. Width
and height are defined in pixels, the driver writer is free to
choose origin and units of the coordinate system in the analog
domain.
- .. row 3
@ -89,10 +89,10 @@ overlay devices.
- ``defrect``
- Default cropping rectangle, it shall cover the "whole picture".
Assuming pixel aspect 1/1 this could be for example a 640 × 480
rectangle for NTSC, a 768 × 576 rectangle for PAL and SECAM
centered over the active picture area. The same co-ordinate system
as for ``bounds`` is used.
Assuming pixel aspect 1/1 this could be for example a 640 × 480
rectangle for NTSC, a 768 × 576 rectangle for PAL and SECAM
centered over the active picture area. The same co-ordinate system
as for ``bounds`` is used.
- .. row 4
@ -101,12 +101,12 @@ overlay devices.
- ``pixelaspect``
- This is the pixel aspect (y / x) when no scaling is applied, the
ratio of the actual sampling frequency and the frequency required
to get square pixels.
ratio of the actual sampling frequency and the frequency required
to get square pixels.
When cropping coordinates refer to square pixels, the driver sets
``pixelaspect`` to 1/1. Other common values are 54/59 for PAL and
SECAM, 11/10 for NTSC sampled according to [:ref:`itu601`].
When cropping coordinates refer to square pixels, the driver sets
``pixelaspect`` to 1/1. Other common values are 54/59 for PAL and
SECAM, 11/10 for NTSC sampled according to [:ref:`itu601`].
@ -125,7 +125,7 @@ overlay devices.
- ``left``
- Horizontal offset of the top, left corner of the rectangle, in
pixels.
pixels.
- .. row 2
@ -134,7 +134,7 @@ overlay devices.
- ``top``
- Vertical offset of the top, left corner of the rectangle, in
pixels.
pixels.
- .. row 3

View File

@ -100,23 +100,23 @@ instructions.
- .. row 3
-
-
- __u32
- ``addr``
- Match a chip by this number, interpreted according to the ``type``
field.
field.
- .. row 4
-
-
- char
- ``name[32]``
- Match a chip by this name, interpreted according to the ``type``
field. Currently unused.
field. Currently unused.
@ -151,9 +151,9 @@ instructions.
- ``flags``
- Set by the driver. If ``V4L2_CHIP_FL_READABLE`` is set, then the
driver supports reading registers from the device. If
``V4L2_CHIP_FL_WRITABLE`` is set, then it supports writing
registers.
driver supports reading registers from the device. If
``V4L2_CHIP_FL_WRITABLE`` is set, then it supports writing
registers.
- .. row 4
@ -180,7 +180,7 @@ instructions.
- 0
- Match the nth chip on the card, zero for the bridge chip. Does not
match sub-devices.
match sub-devices.
- .. row 2

View File

@ -109,23 +109,23 @@ instructions.
- .. row 3
-
-
- __u32
- ``addr``
- Match a chip by this number, interpreted according to the ``type``
field.
field.
- .. row 4
-
-
- char
- ``name[32]``
- Match a chip by this name, interpreted according to the ``type``
field. Currently unused.
field. Currently unused.
@ -185,7 +185,7 @@ instructions.
- 0
- Match the nth chip on the card, zero for the bridge chip. Does not
match sub-devices.
match sub-devices.
- .. row 2

View File

@ -69,8 +69,8 @@ introduced in Linux 3.3.
- ``cmd``
-
-
-
-
- The decoder command, see :ref:`decoder-cmds`.
- .. row 2
@ -79,10 +79,10 @@ introduced in Linux 3.3.
- ``flags``
-
-
-
-
- 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
@ -90,97 +90,97 @@ introduced in Linux 3.3.
- (anonymous)
-
-
-
-
-
-
- .. row 4
-
-
- struct
- ``start``
-
-
- Structure containing additional data for the
``V4L2_DEC_CMD_START`` command.
``V4L2_DEC_CMD_START`` command.
- .. row 5
-
-
-
-
- __s32
- ``speed``
- Playback speed and direction. The playback speed is defined as
``speed``/1000 of the normal speed. So 1000 is normal playback.
Negative numbers denote reverse playback, so -1000 does reverse
playback at normal speed. Speeds -1, 0 and 1 have special
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
frame back.
``speed``/1000 of the normal speed. So 1000 is normal playback.
Negative numbers denote reverse playback, so -1000 does reverse
playback at normal speed. Speeds -1, 0 and 1 have special
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
frame back.
- .. row 6
-
-
-
-
- __u32
- ``format``
- Format restrictions. This field is set by the driver, not the
application. Possible values are ``V4L2_DEC_START_FMT_NONE`` if
there are no format restrictions or ``V4L2_DEC_START_FMT_GOP`` if
the decoder operates on full GOPs (*Group Of Pictures*). This is
usually the case for reverse playback: the decoder needs full
GOPs, which it can then play in reverse order. So to implement
reverse playback the application must feed the decoder the last
GOP in the video file, then the GOP before that, etc. etc.
application. Possible values are ``V4L2_DEC_START_FMT_NONE`` if
there are no format restrictions or ``V4L2_DEC_START_FMT_GOP`` if
the decoder operates on full GOPs (*Group Of Pictures*). This is
usually the case for reverse playback: the decoder needs full
GOPs, which it can then play in reverse order. So to implement
reverse playback the application must feed the decoder the last
GOP in the video file, then the GOP before that, etc. etc.
- .. row 7
-
-
- struct
- ``stop``
-
-
- Structure containing additional data for the ``V4L2_DEC_CMD_STOP``
command.
command.
- .. row 8
-
-
-
-
- __u64
- ``pts``
- Stop playback at this ``pts`` or immediately if the playback is
already past that timestamp. Leave to 0 if you want to stop after
the last frame was decoded.
already past that timestamp. Leave to 0 if you want to stop after
the last frame was decoded.
- .. row 9
-
-
- struct
- ``raw``
-
-
-
-
- .. row 10
-
-
-
-
- __u32
- ``data``\ [16]
- 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
- Start the decoder. When the decoder is already running or paused,
this command will just change the playback speed. That means that
calling ``V4L2_DEC_CMD_START`` when the decoder was paused will
*not* resume the decoder. You have to explicitly call
``V4L2_DEC_CMD_RESUME`` for that. This command has one flag:
``V4L2_DEC_CMD_START_MUTE_AUDIO``. If set, then audio will be
muted when playing back at a non-standard speed.
this command will just change the playback speed. That means that
calling ``V4L2_DEC_CMD_START`` when the decoder was paused will
*not* resume the decoder. You have to explicitly call
``V4L2_DEC_CMD_RESUME`` for that. This command has one flag:
``V4L2_DEC_CMD_START_MUTE_AUDIO``. If set, then audio will be
muted when playing back at a non-standard speed.
- .. row 2
@ -213,23 +213,23 @@ introduced in Linux 3.3.
- 1
- Stop the decoder. When the decoder is already stopped, this
command does nothing. This command has two flags: if
``V4L2_DEC_CMD_STOP_TO_BLACK`` is set, then the decoder will set
the picture to black after it stopped decoding. Otherwise the last
image will repeat. mem2mem decoders will stop producing new frames
altogether. They will send a ``V4L2_EVENT_EOS`` event when the
last frame has been decoded and all frames are ready to be
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
new buffers produced to dequeue. This buffer may be empty,
indicated by the driver setting the ``bytesused`` field to 0. Once
the ``V4L2_BUF_FLAG_LAST`` flag was set, the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code. If
``V4L2_DEC_CMD_STOP_IMMEDIATELY`` is set, then the decoder stops
immediately (ignoring the ``pts`` value), otherwise it will keep
decoding until timestamp >= pts or until the last of the pending
data from its internal buffers was decoded.
command does nothing. This command has two flags: if
``V4L2_DEC_CMD_STOP_TO_BLACK`` is set, then the decoder will set
the picture to black after it stopped decoding. Otherwise the last
image will repeat. mem2mem decoders will stop producing new frames
altogether. They will send a ``V4L2_EVENT_EOS`` event when the
last frame has been decoded and all frames are ready to be
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
new buffers produced to dequeue. This buffer may be empty,
indicated by the driver setting the ``bytesused`` field to 0. Once
the ``V4L2_BUF_FLAG_LAST`` flag was set, the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code. If
``V4L2_DEC_CMD_STOP_IMMEDIATELY`` is set, then the decoder stops
immediately (ignoring the ``pts`` value), otherwise it will keep
decoding until timestamp >= pts or until the last of the pending
data from its internal buffers was decoded.
- .. row 3
@ -238,10 +238,10 @@ introduced in Linux 3.3.
- 2
- Pause the decoder. When the decoder has not been started yet, the
driver will return an ``EPERM`` error code. When the decoder is
already paused, this command does nothing. This command has one
flag: if ``V4L2_DEC_CMD_PAUSE_TO_BLACK`` is set, then set the
decoder output to black when paused.
driver will return an ``EPERM`` error code. When the decoder is
already paused, this command does nothing. This command has one
flag: if ``V4L2_DEC_CMD_PAUSE_TO_BLACK`` is set, then set the
decoder output to black when paused.
- .. row 4
@ -250,9 +250,9 @@ introduced in Linux 3.3.
- 3
- Resume decoding after a PAUSE command. When the decoder has not
been started yet, the driver will return an ``EPERM`` error code. When
the decoder is already running, this command does nothing. No
flags are defined for this command.
been started yet, the driver will return an ``EPERM`` error code. When
the decoder is already running, this command does nothing. No
flags are defined for this command.

View File

@ -52,7 +52,7 @@ call.
- ``type``
-
-
- Type of the event, see :ref:`event-type`.
- .. row 2
@ -61,12 +61,12 @@ call.
- ``u``
-
-
-
-
- .. row 3
-
-
- struct :ref:`v4l2_event_vsync <v4l2-event-vsync>`
- ``vsync``
@ -75,7 +75,7 @@ call.
- .. row 4
-
-
- struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>`
- ``ctrl``
@ -84,7 +84,7 @@ call.
- .. row 5
-
-
- struct :ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
- ``frame_sync``
@ -93,7 +93,7 @@ call.
- .. row 6
-
-
- struct :ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
- ``motion_det``
@ -102,7 +102,7 @@ call.
- .. row 7
-
-
- struct :ref:`v4l2_event_src_change <v4l2-event-src-change>`
- ``src_change``
@ -111,13 +111,13 @@ call.
- .. row 8
-
-
- __u8
- ``data``\ [64]
- 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
@ -125,7 +125,7 @@ call.
- ``pending``
-
-
- Number of pending events excluding this one.
- .. row 10
@ -134,10 +134,10 @@ call.
- ``sequence``
-
-
- Event sequence number. The sequence number is incremented for
every subscribed event that takes place. If sequence numbers are
not contiguous it means that events have been lost.
every subscribed event that takes place. If sequence numbers are
not contiguous it means that events have been lost.
- .. row 11
@ -145,10 +145,10 @@ call.
- ``timestamp``
-
-
- Event timestamp. The timestamp has been taken from the
``CLOCK_MONOTONIC`` clock. To access the same clock outside V4L2,
use :c:func:`clock_gettime(2)`.
``CLOCK_MONOTONIC`` clock. To access the same clock outside V4L2,
use :c:func:`clock_gettime(2)`.
- .. row 12
@ -156,10 +156,10 @@ call.
- ``id``
-
-
- The ID associated with the event source. If the event does not
have an associated ID (this depends on the event type), then this
is 0.
have an associated ID (this depends on the event type), then this
is 0.
- .. row 13
@ -167,9 +167,9 @@ call.
- ``reserved``\ [8]
-
-
- Reserved for future extensions. Drivers must set the array to
zero.
zero.
@ -188,7 +188,7 @@ call.
- 0
- 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
@ -197,8 +197,8 @@ call.
- 1
- This event is triggered on the vertical sync. This event has a
struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` associated
with it.
struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` associated
with it.
- .. row 3
@ -207,8 +207,8 @@ call.
- 2
- This event is triggered when the end of a stream is reached. This
is typically used with MPEG decoders to report to the application
when the last of the MPEG stream has been decoded.
is typically used with MPEG decoders to report to the application
when the last of the MPEG stream has been decoded.
- .. row 4
@ -217,28 +217,28 @@ call.
- 3
- This event requires that the ``id`` matches the control ID from
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 flags change. This event has a struct
:ref:`v4l2_event_ctrl <v4l2-event-ctrl>` associated with it.
This struct contains much of the same information as struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct
:ref:`v4l2_control <v4l2-control>`.
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 flags change. This event has a struct
:ref:`v4l2_event_ctrl <v4l2-event-ctrl>` associated with it.
This struct contains much of the same information as struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct
:ref:`v4l2_control <v4l2-control>`.
If the event is generated due to a call to
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, then the
event will *not* be sent to the file handle that called the ioctl
function. This prevents nasty feedback loops. If you *do* want to
get the event, then set the ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK``
flag.
If the event is generated due to a call to
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, then the
event will *not* be sent to the file handle that called the ioctl
function. This prevents nasty feedback loops. If you *do* want to
get the event, then set the ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK``
flag.
This event type will ensure that no information is lost when more
events are raised than there is room internally. In that case 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 ORed with the ``changes`` field of the
oldest event.
This event type will ensure that no information is lost when more
events are raised than there is room internally. In that case 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 ORed with the ``changes`` field of the
oldest event.
- .. row 5
@ -247,16 +247,16 @@ call.
- 4
- Triggered immediately when the reception of a frame has begun.
This event has a struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
associated with it.
This event has a struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>`
associated with it.
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
cases the ``frame_sequence`` field in struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` will not
be incremented. This causes two consecutive frame sequence numbers
to have n times frame interval in between them.
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
cases the ``frame_sequence`` field in struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` will not
be incremented. This causes two consecutive frame sequence numbers
to have n times frame interval in between them.
- .. row 6
@ -265,19 +265,19 @@ call.
- 5
- This event is triggered when a source parameter change is detected
during runtime by the video device. It can be a runtime resolution
change triggered by a video decoder or the format change happening
on an input connector. This event requires that the ``id`` matches
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
receive events.
during runtime by the video device. It can be a runtime resolution
change triggered by a video decoder or the format change happening
on an input connector. This event requires that the ``id`` matches
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
receive events.
This event has a struct
:ref:`v4l2_event_src_change <v4l2-event-src-change>`
associated with it. The ``changes`` bitfield denotes what has
changed for the subscribed pad. If multiple events occurred before
application could dequeue them, then the changes will have the
ORed value of all the events generated.
This event has a struct
:ref:`v4l2_event_src_change <v4l2-event-src-change>`
associated with it. The ``changes`` bitfield denotes what has
changed for the subscribed pad. If multiple events occurred before
application could dequeue them, then the changes will have the
ORed value of all the events generated.
- .. row 7
@ -286,9 +286,9 @@ call.
- 6
- Triggered whenever the motion detection state for one or more of
the regions changes. This event has a struct
:ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
associated with it.
the regions changes. This event has a struct
:ref:`v4l2_event_motion_det <v4l2-event-motion-det>`
associated with it.
- .. row 8
@ -332,9 +332,9 @@ call.
- ``changes``
-
-
- A bitmask that tells what has changed. See
:ref:`ctrl-changes-flags`.
:ref:`ctrl-changes-flags`.
- .. row 2
@ -342,32 +342,32 @@ call.
- ``type``
-
-
- The type of the control. See enum
:ref:`v4l2_ctrl_type <v4l2-ctrl-type>`.
:ref:`v4l2_ctrl_type <v4l2-ctrl-type>`.
- .. row 3
- union (anonymous)
-
-
-
-
-
-
- .. row 4
-
-
- __s32
- ``value``
- 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
using :ref:`VIDIOC_DQEVENT`.
0 for string controls since the value of a string cannot be passed
using :ref:`VIDIOC_DQEVENT`.
- .. row 5
-
-
- __s64
- ``value64``
@ -380,7 +380,7 @@ call.
- ``flags``
-
-
- The control flags. See :ref:`control-flags`.
- .. row 7
@ -389,9 +389,9 @@ call.
- ``minimum``
-
-
- The minimum value of the control. See struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
- .. row 8
@ -399,9 +399,9 @@ call.
- ``maximum``
-
-
- The maximum value of the control. See struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
- .. row 9
@ -409,9 +409,9 @@ call.
- ``step``
-
-
- The step value of the control. See struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
:ref:`v4l2_queryctrl <v4l2-queryctrl>`.
- .. row 10
@ -419,9 +419,9 @@ call.
- ``default_value``
-
-
- 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``
- A bitmask that tells what has changed. See
:ref:`src-changes-flags`.
:ref:`src-changes-flags`.
@ -477,9 +477,9 @@ call.
- ``flags``
- Currently only one flag is available: if
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is set, then the
``frame_sequence`` field is valid, otherwise that field should be
ignored.
``V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ`` is set, then the
``frame_sequence`` field is valid, otherwise that field should be
ignored.
- .. row 2
@ -488,7 +488,7 @@ call.
- ``frame_sequence``
- 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
@ -497,11 +497,11 @@ call.
- ``region_mask``
- 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
all. If there is no ``V4L2_CID_DETECT_MD_REGION_GRID`` control
(see :ref:`detect-controls`) to assign a different region to
each cell in the motion detection grid, then that all cells are
automatically assigned to the default region 0.
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
(see :ref:`detect-controls`) to assign a different region to
each cell in the motion detection grid, then that all cells are
automatically assigned to the default region 0.
@ -520,9 +520,9 @@ call.
- 0x0001
- This control event was triggered because the value of the control
changed. Special cases: Volatile controls do no generate this
event; If a control has the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE``
flag set, then this event is sent as well, regardless its value.
changed. Special cases: Volatile controls do no generate this
event; If a control has the ``V4L2_CTRL_FLAG_EXECUTE_ON_WRITE``
flag set, then this event is sent as well, regardless its value.
- .. row 2
@ -531,7 +531,7 @@ call.
- 0x0002
- This control event was triggered because the control flags
changed.
changed.
- .. row 3
@ -540,7 +540,7 @@ call.
- 0x0004
- 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
- This event gets triggered when a resolution change is detected at
an input. This can come from an input connector or from a video
decoder.
an input. This can come from an input connector or from a video
decoder.

View File

@ -112,7 +112,7 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``standards``
- 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
@ -121,7 +121,7 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``capabilities``
- 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
@ -130,7 +130,7 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``reserved``\ [16]
- 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 number as reported by the media controller API. This field is
only used when operating on a subdevice node. When operating on a
video node applications must set this field to zero.
only used when operating on a subdevice node. When operating on a
video node applications must set this field to zero.
- .. row 3
@ -167,18 +167,18 @@ that doesn't support them will return an ``EINVAL`` error code.
- ``reserved``\ [2]
- Reserved for future extensions. Drivers and applications must set
the array to zero.
the array to zero.
- .. row 4
- union
-
-
-
-
- .. row 5
-
-
- struct :ref:`v4l2_bt_timings_cap <v4l2-bt-timings-cap>`
- ``bt``
@ -187,12 +187,12 @@ that doesn't support them will return an ``EINVAL`` error code.
- .. row 6
-
-
- __u32
- ``raw_data``\ [32]
-
-
@ -211,8 +211,8 @@ that doesn't support them will return an ``EINVAL`` error code.
- .. row 2
-
-
-
-
- .. row 3
@ -231,14 +231,14 @@ that doesn't support them will return an ``EINVAL`` error code.
- V4L2_DV_BT_CAP_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
- V4L2_DV_BT_CAP_CUSTOM
- 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.

View File

@ -86,8 +86,8 @@ introduced in Linux 2.6.21.
- ``flags``
- Flags to go with the command, see :ref:`encoder-flags`. If no
flags are defined for this command, drivers and applications must
set this field to zero.
flags are defined for this command, drivers and applications must
set this field to zero.
- .. row 3
@ -96,7 +96,7 @@ introduced in Linux 2.6.21.
- ``data``\ [8]
- 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
- 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
@ -124,18 +124,18 @@ introduced in Linux 2.6.21.
- 1
- 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
Of Pictures*, otherwise encoding will stop immediately. When the
encoder is already stopped, this command does nothing. mem2mem
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
set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of
the capture queue to indicate there will be no new buffers
produced to dequeue. This buffer may be empty, indicated by the
driver setting the ``bytesused`` field to 0. Once the
``V4L2_BUF_FLAG_LAST`` flag was set, the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code.
is set, encoding will continue until the end of the current *Group
Of Pictures*, otherwise encoding will stop immediately. When the
encoder is already stopped, this command does nothing. mem2mem
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
set the ``V4L2_BUF_FLAG_LAST`` buffer flag on the last buffer of
the capture queue to indicate there will be no new buffers
produced to dequeue. This buffer may be empty, indicated by the
driver setting the ``bytesused`` field to 0. Once the
``V4L2_BUF_FLAG_LAST`` flag was set, the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code.
- .. row 3
@ -144,9 +144,9 @@ introduced in Linux 2.6.21.
- 2
- Pause the encoder. When the encoder has not been started yet, the
driver will return an ``EPERM`` error code. When the encoder is
already paused, this command does nothing. No flags are defined
for this command.
driver will return an ``EPERM`` error code. When the encoder is
already paused, this command does nothing. No flags are defined
for this command.
- .. row 4
@ -155,9 +155,9 @@ introduced in Linux 2.6.21.
- 3
- Resume encoding after a PAUSE command. When the encoder has not
been started yet, the driver will return an ``EPERM`` error code. When
the encoder is already running, this command does nothing. No
flags are defined for this command.
been started yet, the driver will return an ``EPERM`` error code. When
the encoder is already running, this command does nothing. No
flags are defined for this command.
@ -176,7 +176,7 @@ introduced in Linux 2.6.21.
- 0x0001
- 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