Documentation ¶
Index ¶
- Constants
- Variables
- func CloseDevice(fd uintptr) error
- func GetCurrentVideoInputIndex(fd uintptr) (int32, error)
- func IsPixYUVEncoded(pixFmt FourCCType) bool
- func MapMemoryBuffers(dev StreamingDevice) ([][]byte, error)
- func OpenDevice(path string, flags int, mode uint32) (uintptr, error)
- func SetControlValue(fd uintptr, id CtrlID, val CtrlValue) error
- func SetCropRect(fd uintptr, r Rect) error
- func SetExtControlValue(fd uintptr, id CtrlID, val CtrlValue) error
- func SetExtControlValues(fd uintptr, whichCtrl CtrlClass, ctrls []Control) error
- func SetPixFormat(fd uintptr, pixFmt PixFormat) error
- func SetStreamParam(fd uintptr, bufType BufType, param StreamParam) error
- func StreamOff(dev StreamingDevice) error
- func StreamOn(dev StreamingDevice) error
- func UnmapMemoryBuffers(dev StreamingDevice) error
- func WaitForRead(dev Device) <-chan struct{}
- type Area
- type BufFlag
- type BufType
- type Buffer
- type BufferInfo
- type Capability
- func (c Capability) GetCapabilities() uint32
- func (c Capability) GetDeviceCapDescriptions() []CapabilityDesc
- func (c Capability) GetDriverCapDescriptions() []CapabilityDesc
- func (c Capability) GetVersionInfo() VersionInfo
- func (c Capability) IsDeviceCapabilitiesProvided() bool
- func (c Capability) IsReadWriteSupported() bool
- func (c Capability) IsStreamingSupported() bool
- func (c Capability) IsVideoCaptureMultiplanarSupported() bool
- func (c Capability) IsVideoCaptureSupported() bool
- func (c Capability) IsVideoOutputMultiplanerSupported() bool
- func (c Capability) IsVideoOutputOverlaySupported() bool
- func (c Capability) IsVideoOutputSupported() bool
- func (c Capability) IsVideoOverlaySupported() bool
- func (c Capability) String() string
- type CapabilityDesc
- type CaptureParam
- type ColorFX
- type ColorspaceType
- type Control
- func GetControl(fd uintptr, id CtrlID) (Control, error)
- func GetExtControl(fd uintptr, id CtrlID) (Control, error)
- func QueryAllControls(fd uintptr) (result []Control, err error)
- func QueryAllExtControls(fd uintptr) (result []Control, err error)
- func QueryControlInfo(fd uintptr, id CtrlID) (Control, error)
- func QueryExtControlInfo(fd uintptr, id CtrlID) (Control, error)
- type ControlFWHTParams
- type ControlH264DecodeParams
- type ControlH264PPS
- type ControlH264PredictionWeights
- type ControlH264SPS
- type ControlH264ScalingMatrix
- type ControlH264SliceParams
- type ControlMPEG2Picture
- type ControlMPEG2Quantization
- type ControlMPEG2Sequence
- type ControlMenuItem
- type ControlVP8Frame
- type CropCapability
- type CtrlClass
- type CtrlID
- type CtrlType
- type CtrlValue
- type Device
- type FieldType
- type FmtDescFlag
- type FormatDescription
- type FourCCType
- type Fract
- type FrameInterval
- type FrameIntervalEnum
- type FrameIntervalType
- type FrameSize
- type FrameSizeDiscrete
- type FrameSizeEnum
- type FrameSizeType
- type H264DPBEntry
- type H264Reference
- type H264WeightFators
- type HSVEncodingType
- type IOType
- type InputInfo
- func (i InputInfo) GetAudioset() uint32
- func (i InputInfo) GetCapabilities() uint32
- func (i InputInfo) GetIndex() uint32
- func (i InputInfo) GetInputType() InputType
- func (i InputInfo) GetName() string
- func (i InputInfo) GetStandardId() StandardId
- func (i InputInfo) GetStatus() uint32
- func (i InputInfo) GetTuner() uint32
- type InputStatus
- type InputType
- type MPEGStreamType
- type MPEGVideoAspect
- type MPEGVideoBitrateMode
- type MPEGVideoEncoding
- type MediaDeviceInfo
- type OutputParam
- type PixFormat
- type Plane
- type PlaneInfo
- type PowerlineFrequency
- type QuantizationType
- type Rect
- type RequestBuffers
- type StandardId
- type StreamParam
- type StreamParamFlag
- type StreamingDevice
- type Timecode
- type TimecodeFlag
- type TimecodeType
- type VP8Entropy
- type VP8EntropyCoderState
- type VP8LoopFilter
- type VP8Quantization
- type VP8Segment
- type VersionInfo
- type XferFunctionType
- type YCbCrEncodingType
Constants ¶
const ( CapVideoCapture uint32 = C.V4L2_CAP_VIDEO_CAPTURE CapVideoOutput uint32 = C.V4L2_CAP_VIDEO_OUTPUT CapVideoOverlay uint32 = C.V4L2_CAP_VIDEO_OVERLAY CapVBICapture uint32 = C.V4L2_CAP_VBI_CAPTURE CapVBIOutput uint32 = C.V4L2_CAP_VBI_OUTPUT CapSlicedVBICapture uint32 = C.V4L2_CAP_SLICED_VBI_CAPTURE CapSlicedVBIOutput uint32 = C.V4L2_CAP_SLICED_VBI_OUTPUT CapRDSCapture uint32 = C.V4L2_CAP_RDS_CAPTURE CapVideoOutputOverlay uint32 = C.V4L2_CAP_VIDEO_OUTPUT_OVERLAY CapHWFrequencySeek uint32 = C.V4L2_CAP_HW_FREQ_SEEK CapRDSOutput uint32 = C.V4L2_CAP_RDS_OUTPUT CapVideoCaptureMPlane uint32 = C.V4L2_CAP_VIDEO_CAPTURE_MPLANE CapVideoOutputMPlane uint32 = C.V4L2_CAP_VIDEO_OUTPUT_MPLANE CapVideoMem2MemMPlane uint32 = C.V4L2_CAP_VIDEO_M2M_MPLANE CapVideoMem2Mem uint32 = C.V4L2_CAP_VIDEO_M2M CapTuner uint32 = C.V4L2_CAP_TUNER CapAudio uint32 = C.V4L2_CAP_AUDIO CapRadio uint32 = C.V4L2_CAP_RADIO CapModulator uint32 = C.V4L2_CAP_MODULATOR CapSDRCapture uint32 = C.V4L2_CAP_SDR_CAPTURE CapExtendedPixFormat uint32 = C.V4L2_CAP_EXT_PIX_FORMAT CapSDROutput uint32 = C.V4L2_CAP_SDR_OUTPUT CapMetadataCapture uint32 = C.V4L2_CAP_META_CAPTURE CapReadWrite uint32 = C.V4L2_CAP_READWRITE CapAsyncIO uint32 = C.V4L2_CAP_ASYNCIO CapStreaming uint32 = C.V4L2_CAP_STREAMING CapMetadataOutput uint32 = C.V4L2_CAP_META_OUTPUT CapTouch uint32 = C.V4L2_CAP_TOUCH CapIOMediaController uint32 = C.V4L2_CAP_IO_MC CapDeviceCapabilities uint32 = C.V4L2_CAP_DEVICE_CAPS )
const ( MPEGVideoBitrateModeVBR = C.V4L2_MPEG_VIDEO_BITRATE_MODE_VBR MPEGVideoBitrateModeCBR = C.V4L2_MPEG_VIDEO_BITRATE_MODE_CBR MPEGVideoBitrateModeCQ = C.V4L2_MPEG_VIDEO_BITRATE_MODE_CQ )
const ( CtrlCodecClass CtrlID = C.V4L2_CID_CODEC_CLASS CtrlMPEGStreamType MPEGStreamType = C.V4L2_CID_MPEG_STREAM_TYPE CtrlMPEGStreamPIDPMT CtrlID = C.V4L2_CID_MPEG_STREAM_PID_PMT CtrlMPEGStreamPIDAudio CtrlID = C.V4L2_CID_MPEG_STREAM_PID_AUDIO CtrlMPEGStreamPIDVideo CtrlID = C.V4L2_CID_MPEG_STREAM_PID_VIDEO CtrlMPEGStreamPIDPCR CtrlID = C.V4L2_CID_MPEG_STREAM_PID_PCR CtrlMPEGStreamPIDPESAudio CtrlID = C.V4L2_CID_MPEG_STREAM_PES_ID_AUDIO CtrlMPEGStreamPESVideo CtrlID = C.V4L2_CID_MPEG_STREAM_PES_ID_VIDEO CtrlMEPGStreamVBIFormat CtrlID = C.V4L2_CID_MPEG_STREAM_VBI_FMT CtrlMPEGVideoEncoding MPEGVideoEncoding = C.V4L2_CID_MPEG_VIDEO_ENCODING CtrlMPEGVideoAspect MPEGVideoAspect = C.V4L2_CID_MPEG_VIDEO_ASPECT CtrlMPEGVideoBFrames CtrlID = C.V4L2_CID_MPEG_VIDEO_B_FRAMES CtrlMPEGVideoGOPSize CtrlID = C.V4L2_CID_MPEG_VIDEO_GOP_SIZE CtrlMPEGVideoGOPClosure CtrlID = C.V4L2_CID_MPEG_VIDEO_GOP_CLOSURE CtrlMPEGVideoPulldown CtrlID = C.V4L2_CID_MPEG_VIDEO_PULLDOWN CtrlMPEGVideoBitrateMode MPEGVideoBitrateMode = C.V4L2_CID_MPEG_VIDEO_BITRATE_MODE CtrlMPEGVideoBitrate CtrlID = C.V4L2_CID_MPEG_VIDEO_BITRATE CtrlMPEGVideoBitratePeak CtrlID = C.V4L2_CID_MPEG_VIDEO_BITRATE_PEAK CtrlMPEGVideoTemporalDecimation CtrlID = C.V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION CtrlMPEGVideoMute CtrlID = C.V4L2_CID_MPEG_VIDEO_MUTE CtrlMPEGVideoMutYUV CtrlID = C.V4L2_CID_MPEG_VIDEO_MUTE_YUV CtrlMPEGVideoDecoderSliceInterface CtrlID = C.V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE CtrlMPEGVideoDecoderMPEG4DeblockFilter CtrlID = C.V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER CtrlMPEGVideoCyclicIntraRefreshMB CtrlID = C.V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB CtrlMPEGVideoFrameRCEnable CtrlID = C.V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE CtrlMPEGVideoHeaderMode CtrlID = C.V4L2_CID_MPEG_VIDEO_HEADER_MODE CtrlMPEGVideoMaxRefPic CtrlID = C.V4L2_CID_MPEG_VIDEO_MAX_REF_PIC CtrlMPEGVideoMBRCEnable CtrlID = C.V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE CtrlMPEGVideoMultiSliceMaxBytes CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES CtrlMPEGVideoMultiSliceMaxMB CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB CtrlMPEGVideoMultiSliceMode CtrlID = C.V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE )
Codec control values See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-codec.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L228
const ( H264NumDPBEntries uint32 = 16 // C.V4L2_H264_NUM_DPB_ENTRIES H264RefListLength uint32 = 32 // C.V4L2_H264_REF_LIST_LEN )
TODO - Need to figure out how to import the proper header files for H264 support
const ( VP8CoefficientProbabilityCount uint32 = 11 // C.V4L2_VP8_COEFF_PROB_CNT VP8MVProbabilityCount uint32 = 19 // C.V4L2_VP8_MV_PROB_CNT )
const (
CtrlImgProcClass = C.V4L2_CID_IMAGE_PROC_CLASS
)
Image process controls See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-process.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1144
Variables ¶
var ( ErrorSystem = errors.New("system error") ErrorBadArgument = errors.New("bad argument error") ErrorTemporary = errors.New("temporary error") ErrorTimeout = errors.New("timeout error") ErrorUnsupported = errors.New("unsupported error") ErrorUnsupportedFeature = errors.New("feature unsupported error") ErrorInterrupted = errors.New("interrupted") )
var ( Capabilities = []CapabilityDesc{ {Cap: CapVideoCapture, Desc: "video capture (single-planar)"}, {Cap: CapVideoOutput, Desc: "video output (single-planar)"}, {Cap: CapVideoOverlay, Desc: "video overlay"}, {Cap: CapVBICapture, Desc: "raw VBI capture"}, {Cap: CapVBIOutput, Desc: "raw VBI output"}, {Cap: CapSlicedVBICapture, Desc: "sliced VBI capture"}, {Cap: CapSlicedVBIOutput, Desc: "sliced VBI output"}, {Cap: CapRDSCapture, Desc: "RDS capture"}, {Cap: CapVideoOutputOverlay, Desc: "video output overlay"}, {Cap: CapHWFrequencySeek, Desc: "hardware frequency seeking"}, {Cap: CapRDSOutput, Desc: "RDS output"}, {Cap: CapVideoCaptureMPlane, Desc: "video capture (multi-planar)"}, {Cap: CapVideoOutputMPlane, Desc: "video output (multi-planar)"}, {Cap: CapVideoMem2MemMPlane, Desc: "memory-to-memory video (multi-planar)"}, {Cap: CapVideoMem2Mem, Desc: "memory-to-memory video (single-planar)"}, {Cap: CapTuner, Desc: "video tuner"}, {Cap: CapAudio, Desc: "audio inputs or outputs"}, {Cap: CapRadio, Desc: "radio receiver"}, {Cap: CapModulator, Desc: "radio frequency modulator"}, {Cap: CapSDRCapture, Desc: "SDR capture"}, {Cap: CapExtendedPixFormat, Desc: "extended pixel format"}, {Cap: CapSDROutput, Desc: "SDR output"}, {Cap: CapMetadataCapture, Desc: "metadata capture"}, {Cap: CapReadWrite, Desc: "read/write IO"}, {Cap: CapAsyncIO, Desc: "asynchronous IO"}, {Cap: CapStreaming, Desc: "streaming IO"}, {Cap: CapMetadataOutput, Desc: "metadata output"}, {Cap: CapTouch, Desc: "touch capability"}, {Cap: CapIOMediaController, Desc: "IO media controller"}, {Cap: CapDeviceCapabilities, Desc: "device capabilities"}, } )
var Colorspaces = map[ColorspaceType]string{ ColorspaceDefault: "Default", ColorspaceREC709: "Rec. 709", Colorspace470SystemBG: "470 System BG", ColorspaceJPEG: "JPEG", ColorspaceSRGB: "sRGB", ColorspaceOPRGB: "opRGB", ColorspaceBT2020: "BT.2020", ColorspaceRaw: "Raw", ColorspaceDCIP3: "DCI-P3", }
Colorspaces is a map of colorspace to its respective description
var ( // CtrlClasses is a slice of all Control classes CtrlClasses = []CtrlClass{ CtrlClassUser, CtrlClassCodec, CtrlClassCamera, CtrlClassFlash, CtrlClassJPEG, CtrlClassImageSource, CtrlClassDigitalVideo, CtrlClassDetection, CtrlClassCodecStateless, CtrlClassColorimitry, } )
var Fields = map[FieldType]string{ FieldAny: "any", FieldNone: "none", FieldTop: "top", FieldBottom: "bottom", FieldInterlaced: "interlaced", FieldSequentialTopBottom: "sequential top-bottom", FieldSequentialBottomTop: "Sequential botton-top", FieldAlternate: "alternating", FieldInterlacedTopBottom: "interlaced top-bottom", FieldInterlacedBottomTop: "interlaced bottom-top", }
Fields is a map of FieldType description
var FormatDescriptionFlags = map[FmtDescFlag]string{ FmtDescFlagCompressed: "Compressed", FmtDescFlagEmulated: "Emulated", FmtDescFlagContinuousBytestream: "Continuous bytestream", FmtDescFlagDynResolution: "Dynamic resolution", FmtDescFlagEncodedCaptureFrameInterval: "Encoded capture frame interval", FmtDescFlagConfigColorspace: "Colorspace update supported", FmtDescFlagConfigXferFunc: "Transfer func update supported", FmtDescFlagConfigYcbcrEnc: "YCbCr/HSV update supported", FmtDescFlagConfigQuantization: "Quantization update supported", }
var InputStatuses = map[InputStatus]string{ 0: "ok", InputStatusNoPower: "no power", InputStatusNoSignal: "no signal", InputStatusNoColor: "no color", }
var PixelFormats = map[FourCCType]string{ PixelFmtRGB24: "24-bit RGB 8-8-8", PixelFmtGrey: "8-bit Greyscale", PixelFmtYUYV: "YUYV 4:2:2", PixelFmtMJPEG: "Motion-JPEG", PixelFmtJPEG: "JFIF JPEG", PixelFmtMPEG: "MPEG-1/2/4", PixelFmtH264: "H.264", PixelFmtMPEG4: "MPEG-4 Part 2 ES", }
PixelFormats provides a map of FourCCType encoding description
var Quantizations = map[QuantizationType]string{ QuantizationDefault: "Default", QuantizationFullRange: "Full range", QuantizationLimitedRange: "Limited range", }
var XferFunctions = map[XferFunctionType]string{ XferFuncDefault: "Default", XferFunc709: "Rec. 709", XferFuncSRGB: "sRGB", XferFuncOpRGB: "opRGB", XferFuncSMPTE240M: "SMPTE 240M", XferFuncNone: "None", XferFuncDCIP3: "DCI-P3", XferFuncSMPTE2084: "SMPTE 2084", }
var YCbCrEncodings = map[YCbCrEncodingType]string{ YCbCrEncodingDefault: "Default", YCbCrEncoding601: "ITU-R 601", YCbCrEncoding709: "Rec. 709", YCbCrEncodingXV601: "xvYCC 601", YCbCrEncodingXV709: "xvYCC 709", YCbCrEncodingBT2020: "BT.2020", YCbCrEncodingBT2020ConstLum: "BT.2020 constant luminance", HSVEncoding180: "HSV 0-179", HSVEncoding256: "HSV 0-255", }
Functions ¶
func GetCurrentVideoInputIndex ¶
GetCurrentVideoInputIndex returns the currently selected video input index See https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-input.html
func IsPixYUVEncoded ¶
func IsPixYUVEncoded(pixFmt FourCCType) bool
IsPixYUVEncoded returns true if the pixel format is a chrome+luminance YUV format
func MapMemoryBuffers ¶
func MapMemoryBuffers(dev StreamingDevice) ([][]byte, error)
MapMemoryBuffers creates mapped memory buffers for specified buffer count of device.
func OpenDevice ¶
OpenDevice offers a simpler file-open operation than the Go API's os.OpenFile (the Go API's operation causes some drivers to return busy). It also applies file validation prior to opening the device.
func SetControlValue ¶
SetControlValue sets the value for a user control with the specified id. This function applies range check based on the values supported by the control. See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1740
func SetCropRect ¶
SetCropRect sets the cropping dimension for specified device See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-g-crop.html#ioctl-vidioc-g-crop-vidioc-s-crop
func SetExtControlValue ¶
SetExtControlValue saves the value for an extended control with the specified id. See https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/extended-controls.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1745
func SetExtControlValues ¶
SetExtControlValues implements code to save one or more extended controls at once using the v4l2_ext_controls structure. https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/extended-controls.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1774
func SetPixFormat ¶
SetPixFormat sets the pixel format information for the specified driver See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-g-fmt.html#ioctl-vidioc-g-fmt-vidioc-s-fmt-vidioc-try-fmt
func SetStreamParam ¶
func SetStreamParam(fd uintptr, bufType BufType, param StreamParam) error
func StreamOff ¶
func StreamOff(dev StreamingDevice) error
StreamOff requests streaming to be turned off for capture (or output) that uses memory map, user ptr, or DMA buffers. https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-streamon.html
func StreamOn ¶
func StreamOn(dev StreamingDevice) error
StreamOn requests streaming to be turned on for capture (or output) that uses memory map, user ptr, or DMA buffers. https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-streamon.html
func UnmapMemoryBuffers ¶
func UnmapMemoryBuffers(dev StreamingDevice) error
UnmapMemoryBuffers unmaps all mapped memory buffer for device
func WaitForRead ¶
func WaitForRead(dev Device) <-chan struct{}
WaitForRead returns a channel that can be used to be notified when a device's is ready to be read.
Types ¶
type Area ¶
Area (v4l2_area) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L424
type BufFlag ¶
type BufFlag = uint32
const ( BufFlagMapped BufFlag = C.V4L2_BUF_FLAG_MAPPED BufFlagQueued BufFlag = C.V4L2_BUF_FLAG_QUEUED BufFlagDone BufFlag = C.V4L2_BUF_FLAG_DONE BufFlagKeyFrame BufFlag = C.V4L2_BUF_FLAG_KEYFRAME BufFlagPFrame BufFlag = C.V4L2_BUF_FLAG_PFRAME BufFlagBFrame BufFlag = C.V4L2_BUF_FLAG_BFRAME BufFlagError BufFlag = C.V4L2_BUF_FLAG_ERROR BufFlagInRequest BufFlag = C.V4L2_BUF_FLAG_IN_REQUEST BufFlagTimeCode BufFlag = C.V4L2_BUF_FLAG_TIMECODE BufFlagM2MHoldCaptureBuf BufFlag = C.V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF BufFlagPrepared BufFlag = C.V4L2_BUF_FLAG_PREPARED BufFlagNoCacheInvalidate BufFlag = C.V4L2_BUF_FLAG_NO_CACHE_INVALIDATE BufFlagNoCacheClean BufFlag = C.V4L2_BUF_FLAG_NO_CACHE_CLEAN BufFlagTimestampMask BufFlag = C.V4L2_BUF_FLAG_TIMESTAMP_MASK BufFlagTimestampUnknown BufFlag = C.V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN BufFlagTimestampMonotonic BufFlag = C.V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC BufFlagTimestampCopy BufFlag = C.V4L2_BUF_FLAG_TIMESTAMP_COPY BufFlagTimestampSourceMask BufFlag = C.V4L2_BUF_FLAG_TSTAMP_SRC_MASK BufFlagTimestampSourceEOF BufFlag = C.V4L2_BUF_FLAG_TSTAMP_SRC_EOF BufFlagTimestampSourceSOE BufFlag = C.V4L2_BUF_FLAG_TSTAMP_SRC_SOE BufFlagLast BufFlag = C.V4L2_BUF_FLAG_LAST BufFlagRequestFD BufFlag = C.V4L2_BUF_FLAG_REQUEST_FD )
type BufType ¶
type BufType = uint32
BufType (v4l2_buf_type) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html?highlight=v4l2_buf_type#c.V4L.v4l2_buf_type https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L141
const ( BufTypeVideoCapture BufType = C.V4L2_BUF_TYPE_VIDEO_CAPTURE BufTypeVideoOutput BufType = C.V4L2_BUF_TYPE_VIDEO_OUTPUT BufTypeOverlay BufType = C.V4L2_BUF_TYPE_VIDEO_OVERLAY )
type Buffer ¶
type Buffer struct { Index uint32 Type uint32 BytesUsed uint32 Flags uint32 Field uint32 Timestamp sys.Timeval Timecode Timecode Sequence uint32 Memory uint32 Info BufferInfo // union m Length uint32 Reserved2 uint32 RequestFD int32 }
Buffer (v4l2_buffer) is used to send buffers info between application and driver after streaming IO has been initialized. https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html#c.V4L.v4l2_buffer https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1037
func DequeueBuffer ¶
DequeueBuffer dequeues a buffer in the device driver, marking it as consumed by the application, when using either memory map, user pointer, or DMA buffers. Buffer is returned with additional information about the dequeued buffer. https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-qbuf.html#vidioc-qbuf
func GetBuffer ¶
func GetBuffer(dev StreamingDevice, index uint32) (Buffer, error)
GetBuffer retrieves buffer info for allocated buffers at provided index. This call should take place after buffers are allocated with RequestBuffers (for mmap for instance).
func QueueBuffer ¶
QueueBuffer enqueues a buffer in the device driver (as empty for capturing, or filled for video output) when using either memory map, user pointer, or DMA buffers. Buffer is returned with additional information about the queued buffer. https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-qbuf.html#vidioc-qbuf
type BufferInfo ¶
BufferInfo represents Union of several values in type Buffer that are used to service the stream depending on the type of streaming selected (MMap, User pointer, planar, file descriptor for DMA)
type Capability ¶
type Capability struct { // Driver name of the driver module Driver string // Card name of the device card Card string // BusInfo is the name of the device bus BusInfo string // Version is the kernel version Version uint32 // Capabilities returns all exported capabilities for the physical device (opened or not) Capabilities uint32 // DeviceCapabilities is the capability for this particular (opened) device or node DeviceCapabilities uint32 }
Capability represents capabilities retrieved for the device (see v4l2_capability). Use attached methods on this type to access capabilities. https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L440 https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-querycap.html#c.V4L.v4l2_capability
func GetCapability ¶
func GetCapability(fd uintptr) (Capability, error)
GetCapability retrieves capability info for device
func (Capability) GetCapabilities ¶
func (c Capability) GetCapabilities() uint32
GetCapabilities returns device capabilities if supported
func (Capability) GetDeviceCapDescriptions ¶
func (c Capability) GetDeviceCapDescriptions() []CapabilityDesc
GetDeviceCapDescriptions return textual descriptions of device capabilities
func (Capability) GetDriverCapDescriptions ¶
func (c Capability) GetDriverCapDescriptions() []CapabilityDesc
GetDriverCapDescriptions return textual descriptions of driver capabilities
func (Capability) GetVersionInfo ¶
func (c Capability) GetVersionInfo() VersionInfo
func (Capability) IsDeviceCapabilitiesProvided ¶
func (c Capability) IsDeviceCapabilitiesProvided() bool
IsDeviceCapabilitiesProvided returns true if the device returns device-specific capabilities (via CapDeviceCapabilities) See notes on VL42_CAP_DEVICE_CAPS: https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-querycap.html?highlight=v4l2_cap_device_caps
func (Capability) IsReadWriteSupported ¶
func (c Capability) IsReadWriteSupported() bool
IsReadWriteSupported returns caps & CapReadWrite
func (Capability) IsStreamingSupported ¶
func (c Capability) IsStreamingSupported() bool
IsStreamingSupported returns caps & CapStreaming
func (Capability) IsVideoCaptureMultiplanarSupported ¶
func (c Capability) IsVideoCaptureMultiplanarSupported() bool
IsVideoCaptureMultiplanarSupported returns caps & CapVideoCaptureMPlane
func (Capability) IsVideoCaptureSupported ¶
func (c Capability) IsVideoCaptureSupported() bool
IsVideoCaptureSupported returns caps & CapVideoCapture
func (Capability) IsVideoOutputMultiplanerSupported ¶
func (c Capability) IsVideoOutputMultiplanerSupported() bool
IsVideoOutputMultiplanerSupported returns caps & CapVideoOutputMPlane
func (Capability) IsVideoOutputOverlaySupported ¶
func (c Capability) IsVideoOutputOverlaySupported() bool
IsVideoOutputOverlaySupported returns caps & CapVideoOutputOverlay
func (Capability) IsVideoOutputSupported ¶
func (c Capability) IsVideoOutputSupported() bool
IsVideoOutputSupported returns caps & CapVideoOutput
func (Capability) IsVideoOverlaySupported ¶
func (c Capability) IsVideoOverlaySupported() bool
IsVideoOverlaySupported returns caps & CapVideoOverlay
func (Capability) String ¶
func (c Capability) String() string
String returns a string value representing driver information
type CapabilityDesc ¶
type CaptureParam ¶
type CaptureParam struct { Capability StreamParamFlag CaptureMode StreamParamFlag TimePerFrame Fract ExtendedMode uint32 ReadBuffers uint32 // contains filtered or unexported fields }
CaptureParam (v4l2_captureparm) https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-parm.html#c.V4L.v4l2_captureparm See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1205
type ColorFX ¶
type ColorFX = uint32
ColorFX control enums See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L114
const ( ColorFXNone ColorFX = C.V4L2_COLORFX_NONE ColorFXBlackWhite ColorFX = C.V4L2_COLORFX_BW ColorFXSepia ColorFX = C.V4L2_COLORFX_SEPIA ColorFXNegative ColorFX = C.V4L2_COLORFX_NEGATIVE ColorFXEmboss ColorFX = C.V4L2_COLORFX_EMBOSS ColorFXSketch ColorFX = C.V4L2_COLORFX_SKETCH ColorFXSkyBlue ColorFX = C.V4L2_COLORFX_SKY_BLUE ColorFXGrassGreen ColorFX = C.V4L2_COLORFX_GRASS_GREEN ColorFXSkinWhiten ColorFX = C.V4L2_COLORFX_SKIN_WHITEN ColorFXVivid ColorFX = C.V4L2_COLORFX_VIVID ColorFXAqua ColorFX = C.V4L2_COLORFX_AQUA ColorFXArtFreeze ColorFX = C.V4L2_COLORFX_ART_FREEZE ColorFXSilhouette ColorFX = C.V4L2_COLORFX_SILHOUETTE ColorFXSolarization ColorFX = C.V4L2_COLORFX_SOLARIZATION ColorFXAntique ColorFX = C.V4L2_COLORFX_ANTIQUE ColorFXSetCBCR ColorFX = C.V4L2_COLORFX_SET_CBCR ColorFXSetRGB ColorFX = C.V4L2_COLORFX_SET_RGB )
type ColorspaceType ¶
type ColorspaceType = uint32
ColorspaceType See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L195
const ( ColorspaceDefault ColorspaceType = C.V4L2_COLORSPACE_DEFAULT ColorspaceSMPTE170M ColorspaceType = C.V4L2_COLORSPACE_SMPTE170M ColorspaceSMPTE240M ColorspaceType = C.V4L2_COLORSPACE_SMPTE240M ColorspaceREC709 ColorspaceType = C.V4L2_COLORSPACE_REC709 ColorspaceBT878 ColorspaceType = C.V4L2_COLORSPACE_BT878 //(absolete) Colorspace470SystemM ColorspaceType = C.V4L2_COLORSPACE_470_SYSTEM_M //(absolete) Colorspace470SystemBG ColorspaceType = C.V4L2_COLORSPACE_470_SYSTEM_BG ColorspaceJPEG ColorspaceType = C.V4L2_COLORSPACE_JPEG ColorspaceSRGB ColorspaceType = C.V4L2_COLORSPACE_SRGB ColorspaceOPRGB ColorspaceType = C.V4L2_COLORSPACE_OPRGB ColorspaceBT2020 ColorspaceType = C.V4L2_COLORSPACE_BT2020 ColorspaceRaw ColorspaceType = C.V4L2_COLORSPACE_RAW ColorspaceDCIP3 ColorspaceType = C.V4L2_COLORSPACE_DCI_P3 )
type Control ¶
type Control struct { Type CtrlType ID CtrlID Value CtrlValue Name string Minimum int32 Maximum int32 Step int32 Default int32 // contains filtered or unexported fields }
Control (v4l2_control)
This type is used to query/set/get user-specific controls. For more information about user controls, see https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html.
Also, see the followings:
- https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1725
- https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-g-ctrl.html
func GetControl ¶
GetControl retrieves the value and information for the user control with the specified id. See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html
func GetExtControl ¶
GetExtControl retrieves information (query) and current value for the specified control. See https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/extended-controls.html
func QueryAllControls ¶
QueryAllControls loop through all available user controls and returns information for all controls without their current values (use GetControlValue to get current values). See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html
func QueryAllExtControls ¶
QueryAllExtControls loop through all available ext controls and query the information for all controls without their current values (use GetExtControlValue to get current values).
func QueryControlInfo ¶
QueryControlInfo queries information about the specified control without the current value.
func QueryExtControlInfo ¶
QueryExtControlInfo queries information about the specified ext control without its current value.
func (Control) GetMenuItems ¶
func (c Control) GetMenuItems() (result []ControlMenuItem, err error)
GetMenuItems returns control menu items if the associated control is a menu.
type ControlFWHTParams ¶
type ControlFWHTParams struct { BackwardRefTimestamp uint64 Version uint32 Width uint32 Height uint32 Flags uint32 }
ControlFWHTParams (v4l2_ctrl_fwht_params) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1659
type ControlH264DecodeParams ¶
type ControlH264DecodeParams struct { DPB [H264NumDPBEntries]H264DPBEntry NalRefIDC uint16 FrameNum uint16 TopFieldOrderCnt int32 BottomFieldOrderCnt int32 IDRPicID uint16 PicOrderCntLSB uint16 DeltaPicOrderCntBottom int32 DeltaPicOrderCnt0 int32 DeltaPicOrderCnt1 int32 DecRefPicMarkingBitSize uint32 PicOrderCntBitSize uint32 SliceGroupChangeCycle uint32 Flags uint32 // contains filtered or unexported fields }
ControlH264DecodeParams (v4l2_ctrl_h264_decode_params) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1581
type ControlH264PPS ¶
type ControlH264PPS struct { PicParameterSetID uint8 SeqParameterSetID uint8 NumSliceGroupsMinus1 uint8 NumRefIndexL0DefaultActiveMinus1 uint8 NumRefIndexL1DefaultActiveMinus1 uint8 WeightedBipredIDC uint8 PicInitQPMinus26 int8 PicInitQSMinus26 int8 ChromaQPIndexOffset int8 SecondChromaQPIndexOffset int8 Flags uint16 }
ControlH264PPS (v4l2_ctrl_h264_pps) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1364
type ControlH264PredictionWeights ¶
type ControlH264PredictionWeights struct { LumaLog2WeightDenom uint16 ChromaLog2WeightDenom uint16 WeightFactors [2]H264WeightFators }
ControlH264PredictionWeights (4l2_ctrl_h264_pred_weights) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1426
type ControlH264SPS ¶
type ControlH264SPS struct { ProfileIDC uint8 ConstraintSetFlags uint8 LevelIDC uint8 SequenceParameterSetID uint8 ChromaFormatIDC uint8 BitDepthLumaMinus8 uint8 BitDepthChromaMinus8 uint8 Log2MaxFrameNumMinus4 uint8 PicOrderCntType uint8 Log2MaxPicOrderCntLsbMinus4 uint8 MaxNumRefFrames uint8 NumRefFramesInPicOrderCntCycle uint8 OffsetForRefFrame [255]int32 OffsetForNonRefPic int32 OffsetForTopToBottomField int32 PicWidthInMbsMinus1 uint16 PicHeightInMapUnitsMinus1 uint16 Falgs uint32 }
ControlH264SPS (v4l2_ctrl_h264_sps) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1308
type ControlH264ScalingMatrix ¶
ControlH264ScalingMatrix (v4l2_ctrl_h264_scaling_matrix) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1396
type ControlH264SliceParams ¶
type ControlH264SliceParams struct { HeaderBitSize uint32 FirstMBInSlice uint32 SliceType uint8 ColorPlaneID uint8 RedundantPicCnt uint8 CabacInitIDC uint8 SliceQPDelta int8 SliceQSDelta int8 DisableDeblockingFilterIDC uint8 SliceAlphaC0OffsetDiv2 int8 SliceBetaOffsetDiv2 int8 NumRefIdxL0ActiveMinus1 uint8 NumRefIdxL1ActiveMinus1 uint8 RefPicList0 [H264RefListLength]H264Reference RefPicList1 [H264RefListLength]H264Reference Flags uint32 // contains filtered or unexported fields }
ControlH264SliceParams (v4l2_ctrl_h264_slice_params) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1499
type ControlMPEG2Picture ¶
type ControlMPEG2Picture struct { BackwardRefTimestamp uint64 ForwardRefTimestamp uint64 Flags uint32 FCode [2][2]uint8 PictureCodingType uint8 PictureStructure uint8 IntraDCPrecision uint8 // contains filtered or unexported fields }
ControlMPEG2Picture (v4l2_ctrl_mpeg2_picture) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1939
type ControlMPEG2Quantization ¶
type ControlMPEG2Quantization struct { IntraQuantizerMatrix [64]uint8 NonIntraQuantizerMatrix [64]uint8 ChromaIntraQuantizerMatrix [64]uint8 ChromaNonIntraQuantizerMatrix [64]uint8 }
ControlMPEG2Quantization (v4l2_ctrl_mpeg2_quantisation) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1972
type ControlMPEG2Sequence ¶
type ControlMPEG2Sequence struct { HorizontalSize uint16 VerticalSize uint16 VBVBufferSize uint32 ProfileAndLevelIndication uint16 ChromaFormat uint8 Flags uint8 }
ControlMPEG2Sequence (v4l2_ctrl_mpeg2_sequence) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1892
type ControlMenuItem ¶
type ControlVP8Frame ¶
type ControlVP8Frame struct { Segment VP8Segment LoopFilter VP8LoopFilter Quantization VP8Quantization Entropy VP8Entropy EntropyCoderState VP8EntropyCoderState Width uint16 Height uint16 HorizontalScale uint8 VerticalScale uint8 Version uint8 ProbSkipFalse uint8 PropIntra uint8 PropLast uint8 ProbGF uint8 NumDCTParts uint8 FirstPartSize uint32 FirstPartHeader uint32 DCTPartSize uint32 LastFrameTimestamp uint64 GoldenFrameTimestamp uint64 AltFrameTimestamp uint64 Flags uint64 }
ControlVP8Frame (v4l2_ctrl_vp8_frame) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1836
type CropCapability ¶
type CropCapability struct { StreamType uint32 Bounds Rect DefaultRect Rect PixelAspect Fract // contains filtered or unexported fields }
CropCapability (v4l2_cropcap) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-cropcap.html#c.v4l2_cropcap https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1221
func GetCropCapability ¶
func GetCropCapability(fd uintptr, bufType BufType) (CropCapability, error)
GetCropCapability retrieves cropping info for specified device See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-cropcap.html#ioctl-vidioc-cropcap
func (CropCapability) String ¶
func (c CropCapability) String() string
type CtrlClass ¶
type CtrlClass = uint32
CtrlClass See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L56
const ( CtrlClassUser CtrlClass = C.V4L2_CTRL_CLASS_USER CtrlClassCodec CtrlClass = C.V4L2_CTRL_CLASS_CODEC CtrlClassCamera CtrlClass = C.V4L2_CTRL_CLASS_CAMERA CtrlClassFlash CtrlClass = C.V4L2_CTRL_CLASS_FLASH CtrlClassJPEG CtrlClass = C.V4L2_CTRL_CLASS_JPEG CtrlClassImageSource CtrlClass = C.V4L2_CTRL_CLASS_IMAGE_SOURCE CtrlClassImageProcessing CtrlClass = C.V4L2_CTRL_CLASS_IMAGE_PROC CtrlClassDigitalVideo CtrlClass = C.V4L2_CTRL_CLASS_DV CtrlClassDetection CtrlClass = C.V4L2_CTRL_CLASS_DETECT CtrlClassCodecStateless CtrlClass = C.V4L2_CTRL_CLASS_CODEC_STATELESS CtrlClassColorimitry CtrlClass = C.V4L2_CTRL_CLASS_COLORIMETRY )
type CtrlID ¶
type CtrlID = uint32
CtrlID type for control values
const ( CtrlBrightness CtrlID = C.V4L2_CID_BRIGHTNESS CtrlContrast CtrlID = C.V4L2_CID_CONTRAST CtrlSaturation CtrlID = C.V4L2_CID_SATURATION CtrlHue CtrlID = C.V4L2_CID_HUE CtrlAutoWhiteBalance CtrlID = C.V4L2_CID_AUTO_WHITE_BALANCE CtrlDoWhiteBalance CtrlID = C.V4L2_CID_DO_WHITE_BALANCE CtrlRedBalance CtrlID = C.V4L2_CID_RED_BALANCE CtrlBlueBalance CtrlID = C.V4L2_CID_BLUE_BALANCE CtrlGamma CtrlID = C.V4L2_CID_GAMMA CtrlExposure CtrlID = C.V4L2_CID_EXPOSURE CtrlAutogain CtrlID = C.V4L2_CID_AUTOGAIN CtrlGain CtrlID = C.V4L2_CID_GAIN CtrlHFlip CtrlID = C.V4L2_CID_HFLIP CtrlVFlip CtrlID = C.V4L2_CID_VFLIP CtrlPowerlineFrequency CtrlID = C.V4L2_CID_POWER_LINE_FREQUENCY CtrlHueAuto CtrlID = C.V4L2_CID_HUE_AUTO CtrlWhiteBalanceTemperature CtrlID = C.V4L2_CID_WHITE_BALANCE_TEMPERATURE CtrlSharpness CtrlID = C.V4L2_CID_SHARPNESS CtrlBacklightCompensation CtrlID = C.V4L2_CID_BACKLIGHT_COMPENSATION CtrlChromaAutomaticGain CtrlID = C.V4L2_CID_CHROMA_AGC CtrlColorKiller CtrlID = C.V4L2_CID_COLOR_KILLER CtrlColorFX CtrlID = C.V4L2_CID_COLORFX CtrlColorFXCBCR CtrlID = C.V4L2_CID_COLORFX_CBCR CtrlColorFXRGB CtrlID = C.V4L2_CID_COLORFX_RGB CtrlAutoBrightness CtrlID = C.V4L2_CID_AUTOBRIGHTNESS CtrlRotate CtrlID = C.V4L2_CID_ROTATE CtrlBackgroundColor CtrlID = C.V4L2_CID_BG_COLOR CtrlMinimumCaptureBuffers CtrlID = C.V4L2_CID_MIN_BUFFERS_FOR_CAPTURE CtrlMinimumOutputBuffers CtrlID = C.V4L2_CID_MIN_BUFFERS_FOR_OUTPUT CtrlAlphaComponent CtrlID = C.V4L2_CID_ALPHA_COMPONENT )
User Controls IDs (CIDs) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L74 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html#control-id
const ( CtrlCameraClass CtrlID = C.V4L2_CID_CAMERA_CLASS CtrlCameraExposureAuto CtrlID = C.V4L2_CID_EXPOSURE_AUTO CtrlCameraExposureAbsolute CtrlID = C.V4L2_CID_EXPOSURE_ABSOLUTE CtrlCameraExposureAutoPriority CtrlID = C.V4L2_CID_EXPOSURE_AUTO_PRIORITY CtrlCameraPanRelative CtrlID = C.V4L2_CID_PAN_RELATIVE CtrlCameraTiltRelative CtrlID = C.V4L2_CID_TILT_RELATIVE CtrlCameraPanReset CtrlID = C.V4L2_CID_PAN_RESET CtrlCameraTiltReset CtrlID = C.V4L2_CID_TILT_RESET CtrlCameraPanAbsolute CtrlID = C.V4L2_CID_PAN_ABSOLUTE CtrlCameraTiltAbsolute CtrlID = C.V4L2_CID_TILT_ABSOLUTE CtrlCameraFocusAbsolute CtrlID = C.V4L2_CID_FOCUS_ABSOLUTE CtrlCameraFocusRelative CtrlID = C.V4L2_CID_FOCUS_RELATIVE CtrlCameraFocusAuto CtrlID = C.V4L2_CID_FOCUS_AUTO CtrlCameraZoomAbsolute CtrlID = C.V4L2_CID_ZOOM_ABSOLUTE CtrlCameraZoomRelative CtrlID = C.V4L2_CID_ZOOM_RELATIVE CtrlCameraZoomContinuous CtrlID = C.V4L2_CID_ZOOM_CONTINUOUS CtrlCameraPrivacy CtrlID = C.V4L2_CID_PRIVACY CtrlCameraIrisAbsolute CtrlID = C.V4L2_CID_IRIS_ABSOLUTE CtrlCameraIrisRelative CtrlID = C.V4L2_CID_IRIS_RELATIVE CtrlCameraAutoExposureBias CtrlID = C.V4L2_CID_AUTO_EXPOSURE_BIAS CtrlCameraAutoNPresetWhiteBalance CtrlID = C.V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE CtrlCameraWideDynamicRange CtrlID = C.V4L2_CID_WIDE_DYNAMIC_RANGE CtrlCameraImageStabilization CtrlID = C.V4L2_CID_IMAGE_STABILIZATION CtrlCameraIsoSensitivity CtrlID = C.V4L2_CID_ISO_SENSITIVITY CtrlCameraIsoSensitivityAuto CtrlID = C.V4L2_CID_ISO_SENSITIVITY_AUTO CtrlCameraExposureMetering CtrlID = C.V4L2_CID_EXPOSURE_METERING CtrlCameraSceneMode CtrlID = C.V4L2_CID_SCENE_MODE CtrlCamera3ALock CtrlID = C.V4L2_CID_3A_LOCK CtrlCameraAutoFocusStart CtrlID = C.V4L2_CID_AUTO_FOCUS_START CtrlCameraAutoFocusStop CtrlID = C.V4L2_CID_AUTO_FOCUS_STOP CtrlCameraAutoFocusStatus CtrlID = C.V4L2_CID_AUTO_FOCUS_STATUS CtrlCameraAutoFocusRange CtrlID = C.V4L2_CID_AUTO_FOCUS_RANGE CtrlCameraPanSpeed CtrlID = C.V4L2_CID_PAN_SPEED CtrlCameraTiltSpeed CtrlID = C.V4L2_CID_TILT_SPEED CtrlCameraCameraOrientation CtrlID = C.V4L2_CID_CAMERA_ORIENTATION CtrlCameraCameraSensorRotation CtrlID = C.V4L2_CID_CAMERA_SENSOR_ROTATION )
Camera control values https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-camera.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L897
const ( CtrlFlashClass CtrlID = C.V4L2_CID_FLASH_CLASS CtrlFlashLEDMode CtrlID = C.V4L2_CID_FLASH_LED_MODE )
Flash control values https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-flash.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1060
const ( CtrlJPEGClass CtrlID = C.V4L2_CID_JPEG_CLASS CtrlJPEGChromaSampling CtrlID = C.V4L2_CID_JPEG_CHROMA_SUBSAMPLING )
JPEG control values See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-jpeg.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1104
const ( CtrlImgSrcClass CtrlID = C.V4L2_CID_IMAGE_SOURCE_CLASS CtrlImgSrcVerticalBlank CtrlID = C.V4L2_CID_VBLANK )
Image source controls See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1127 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
type CtrlType ¶
type CtrlType uint32
CtrlType constants See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1799 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-queryctrl.html?highlight=v4l2_ctrl_type#c.V4L.v4l2_ctrl_type
const ( CtrlTypeInt CtrlType = C.V4L2_CTRL_TYPE_INTEGER CtrlTypeBool CtrlType = C.V4L2_CTRL_TYPE_BOOLEAN CtrlTypeMenu CtrlType = C.V4L2_CTRL_TYPE_MENU CtrlTypeButton CtrlType = C.V4L2_CTRL_TYPE_BUTTON CtrlTypeInt64 CtrlType = C.V4L2_CTRL_TYPE_INTEGER64 CtrlTypeClass CtrlType = C.V4L2_CTRL_TYPE_CTRL_CLASS CtrlTypeString CtrlType = C.V4L2_CTRL_TYPE_STRING CtrlTypeBitMask CtrlType = C.V4L2_CTRL_TYPE_BITMASK CtrlTypeIntegerMenu CtrlType = C.V4L2_CTRL_TYPE_INTEGER_MENU CtrlTypeCompoundTypes CtrlType = C.V4L2_CTRL_COMPOUND_TYPES CtrlTypeU8 CtrlType = C.V4L2_CTRL_TYPE_U8 CtrlTypeU16 CtrlType = C.V4L2_CTRL_TYPE_U16 CtrlTypeU32 CtrlType = C.V4L2_CTRL_TYPE_U32 CtrlTypeArear CtrlType = C.V4L2_CTRL_TYPE_AREA CtrlTypeHDR10CLLInfo CtrlType = C.V4L2_CTRL_TYPE_HDR10_CLL_INFO CtrlTypeHDRMasteringDisplay CtrlType = C.V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY CtrlTypeH264SPS CtrlType = C.V4L2_CTRL_TYPE_H264_SPS CtrlTypeH264PPS CtrlType = C.V4L2_CTRL_TYPE_H264_PPS CtrlTypeH264ScalingMatrix CtrlType = C.V4L2_CTRL_TYPE_H264_SCALING_MATRIX CtrlTypeH264SliceParams CtrlType = C.V4L2_CTRL_TYPE_H264_SLICE_PARAMS CtrlTypeH264DecodeParams CtrlType = C.V4L2_CTRL_TYPE_H264_DECODE_PARAMS CtrlTypeFWHTParams CtrlType = C.V4L2_CTRL_TYPE_FWHT_PARAMS CtrlTypeVP8Frame CtrlType = C.V4L2_CTRL_TYPE_VP8_FRAME CtrlTypeMPEG2Quantization CtrlType = C.V4L2_CTRL_TYPE_MPEG2_QUANTISATION CtrlTypeMPEG2Sequence CtrlType = C.V4L2_CTRL_TYPE_MPEG2_SEQUENCE CtrlTypeMPEG2Picture CtrlType = C.V4L2_CTRL_TYPE_MPEG2_PICTURE CtrlTypeVP9CompressedHDR CtrlType = C.V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR CtrlTypeVP9Frame CtrlType = C.V4L2_CTRL_TYPE_VP9_FRAME )
type CtrlValue ¶
type CtrlValue = int32
CtrlValue represents the value for a user control. See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1740
func GetControlValue ¶
GetControlValue retrieves the value for a user control with the specified id. See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1740
func GetExtControlValue ¶
GetExtControlValue retrieves the value for an extended control with the specified id. See https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/extended-controls.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1745
type Device ¶
type Device interface { Name() string Fd() uintptr Capability() Capability MemIOType() IOType GetOutput() <-chan []byte SetInput(<-chan []byte) Close() error }
Device is the base interface for a v4l2 device
type FieldType ¶
type FieldType = uint32
FieldType (v4l2_field) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/field-order.html?highlight=v4l2_field#c.v4l2_field https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L88
const ( FieldAny FieldType = C.V4L2_FIELD_ANY FieldNone FieldType = C.V4L2_FIELD_NONE FieldTop FieldType = C.V4L2_FIELD_TOP FieldBottom FieldType = C.V4L2_FIELD_BOTTOM FieldInterlaced FieldType = C.V4L2_FIELD_INTERLACED FieldSequentialTopBottom FieldType = C.V4L2_FIELD_SEQ_TB FieldSequentialBottomTop FieldType = C.V4L2_FIELD_SEQ_BT FieldAlternate FieldType = C.V4L2_FIELD_ALTERNATE FieldInterlacedTopBottom FieldType = C.V4L2_FIELD_INTERLACED_TB FieldInterlacedBottomTop FieldType = C.V4L2_FIELD_INTERLACED_BT )
type FmtDescFlag ¶
type FmtDescFlag = uint32
FmtDescFlag image format description flags https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L794 https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-fmt.html#fmtdesc-flags
const ( FmtDescFlagCompressed FmtDescFlag = C.V4L2_FMT_FLAG_COMPRESSED FmtDescFlagEmulated FmtDescFlag = C.V4L2_FMT_FLAG_EMULATED FmtDescFlagContinuousBytestream FmtDescFlag = C.V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM FmtDescFlagDynResolution FmtDescFlag = C.V4L2_FMT_FLAG_DYN_RESOLUTION FmtDescFlagEncodedCaptureFrameInterval FmtDescFlag = C.V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL FmtDescFlagConfigColorspace FmtDescFlag = C.V4L2_FMT_FLAG_CSC_COLORSPACE FmtDescFlagConfigXferFunc FmtDescFlag = C.V4L2_FMT_FLAG_CSC_XFER_FUNC FmtDescFlagConfigYcbcrEnc FmtDescFlag = C.V4L2_FMT_FLAG_CSC_YCBCR_ENC FmtDescFlagConfigHsvEnc FmtDescFlag = C.V4L2_FMT_FLAG_CSC_HSV_ENC FmtDescFlagConfigQuantization FmtDescFlag = C.V4L2_FMT_FLAG_CSC_QUANTIZATION )
type FormatDescription ¶
type FormatDescription struct { // Index returns the format number Index uint32 // StreamType type for the buffer (see v4l2_buf_type) StreamType BufType // Flags is the image description flags (see FmtDescFlag) Flags FmtDescFlag // Description is a string value for the format description Description string // PixelFormat stores the four character encoding for the format PixelFormat FourCCType // MBusCode is the media bus code for drivers that advertise v4l2_cap_io_mc MBusCode uint32 }
FormatDescription (v4l2_fmtdesc) provides access to the device format description https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L784 https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-fmt.html
func GetAllFormatDescriptions ¶
func GetAllFormatDescriptions(fd uintptr) (result []FormatDescription, err error)
GetAllFormatDescriptions attempts to retrieve all device format descriptions by iterating from 0 up to an index that returns an error. At that point, the function will return the collected descriptions and the error. So if len(result) > 0, then error could be ignored.
func GetFormatDescription ¶
func GetFormatDescription(fd uintptr, index uint32) (FormatDescription, error)
GetFormatDescription returns a device format description at index
func GetFormatDescriptionByEncoding ¶
func GetFormatDescriptionByEncoding(fd uintptr, enc FourCCType) (FormatDescription, error)
GetFormatDescriptionByEncoding returns a FormatDescription that matches the specified encoded pixel format
func (FormatDescription) String ¶
func (d FormatDescription) String() string
type FourCCType ¶
type FourCCType = uint32
FourCCType represents the four character encoding value
var ( PixelFmtRGB24 FourCCType = C.V4L2_PIX_FMT_RGB24 PixelFmtGrey FourCCType = C.V4L2_PIX_FMT_GREY PixelFmtYUYV FourCCType = C.V4L2_PIX_FMT_YUYV PixelFmtYYUV FourCCType = C.V4L2_PIX_FMT_YYUV PixelFmtYVYU FourCCType = C.V4L2_PIX_FMT_YVYU PixelFmtUYVY FourCCType = C.V4L2_PIX_FMT_UYVY PixelFmtVYUY FourCCType = C.V4L2_PIX_FMT_VYUY PixelFmtMJPEG FourCCType = C.V4L2_PIX_FMT_MJPEG PixelFmtJPEG FourCCType = C.V4L2_PIX_FMT_JPEG PixelFmtMPEG FourCCType = C.V4L2_PIX_FMT_MPEG PixelFmtH264 FourCCType = C.V4L2_PIX_FMT_H264 PixelFmtMPEG4 FourCCType = C.V4L2_PIX_FMT_MPEG4 )
Some Predefined pixel format definitions https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/pixfmt.html https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L518
type Fract ¶
Fract (v4l2_fract) https://www.kernel.org/doc/html/v4.14/media/uapi/v4l/vidioc-enumstd.html#c.v4l2_fract https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L419
type FrameInterval ¶
FrameInterval stores all frame interval values regardless of its type. This type maps to v4l2_frmival_stepwise. See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L851 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-frameintervals.html
type FrameIntervalEnum ¶
type FrameIntervalEnum struct { Index uint32 PixelFormat FourCCType Width uint32 Height uint32 Type FrameIntervalType Interval FrameInterval }
FrameIntervalEnum is used to store v4l2_frmivalenum values. See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L857 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-frameintervals.html
func GetFormatFrameInterval ¶
func GetFormatFrameInterval(fd uintptr, index uint32, encoding FourCCType, width, height uint32) (FrameIntervalEnum, error)
GetFormatFrameInterval returns a supported device frame interval for a specified encoding at index and format
type FrameIntervalType ¶
type FrameIntervalType = uint32
FrameIntervalType (v4l2_frmivaltypes) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L845
const ( FrameIntervalTypeDiscrete FrameIntervalType = C.V4L2_FRMIVAL_TYPE_DISCRETE FrameIntervalTypeContinuous FrameIntervalType = C.V4L2_FRMIVAL_TYPE_CONTINUOUS FrameIntervalTypeStepwise FrameIntervalType = C.V4L2_FRMIVAL_TYPE_STEPWISE )
type FrameSize ¶
type FrameSize struct { MinWidth uint32 // Minimum frame width [pixel] MaxWidth uint32 // Maximum frame width [pixel] StepWidth uint32 // Frame width step size [pixel] MinHeight uint32 // Minimum frame height [pixel] MaxHeight uint32 // Maximum frame height [pixel] StepHeight uint32 // Frame height step size [pixel] }
FrameSize stores all possible frame size information regardless of its type. It is mapped to v4l2_frmsize_stepwise. See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L820 See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-framesizes.html
type FrameSizeDiscrete ¶
FrameSizeDiscrete (v4l2_frmsize_discrete) https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L815
type FrameSizeEnum ¶
type FrameSizeEnum struct { Index uint32 Type FrameSizeType PixelFormat FourCCType Size FrameSize }
FrameSizeEnum uses v4l2_frmsizeenum to get supported frame size for the driver based for the pixel format. Use FrameSizeType to determine which sizes the driver support. https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L829 https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-enum-framesizes.html
func GetAllFormatFrameSizes ¶
func GetAllFormatFrameSizes(fd uintptr) (result []FrameSizeEnum, err error)
GetAllFormatFrameSizes returns all supported frame sizes for all supported formats. It iterates from format at index 0 until it encounters and error and then stops. For each supported format, it retrieves all supported frame sizes.
func GetFormatFrameSize ¶
func GetFormatFrameSize(fd uintptr, index uint32, encoding FourCCType) (FrameSizeEnum, error)
GetFormatFrameSize returns a supported device frame size for a specified encoding at index
func GetFormatFrameSizes ¶
func GetFormatFrameSizes(fd uintptr, encoding FourCCType) (result []FrameSizeEnum, err error)
GetFormatFrameSizes returns all supported device frame sizes for a specified encoding
type FrameSizeType ¶
type FrameSizeType = uint32
const ( FrameSizeTypeDiscrete FrameSizeType = C.V4L2_FRMSIZE_TYPE_DISCRETE FrameSizeTypeContinuous FrameSizeType = C.V4L2_FRMSIZE_TYPE_CONTINUOUS FrameSizeTypeStepwise FrameSizeType = C.V4L2_FRMSIZE_TYPE_STEPWISE )
type H264DPBEntry ¶
type H264DPBEntry struct { ReferenceTS uint64 PicNum uint32 FrameNum uint16 Fields uint8 TopFieldOrder int32 BottomFieldOrderCnt int32 Flags uint32 // contains filtered or unexported fields }
H264DPBEntry (v4l2_h264_dpb_entry) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1544
type H264Reference ¶
H264Reference (v4l2_h264_reference) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1452
type H264WeightFators ¶
type HSVEncodingType ¶
type HSVEncodingType = YCbCrEncodingType
HSVEncodingType (v4l2_hsv_encoding) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L352
const ( HSVEncoding180 HSVEncodingType = C.V4L2_HSV_ENC_180 HSVEncoding256 HSVEncodingType = C.V4L2_HSV_ENC_256 )
type IOType ¶
type IOType = uint32
IOType (v4l2_memory) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/mmap.html?highlight=v4l2_memory_mmap https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L188
const ( IOTypeMMAP IOType = C.V4L2_MEMORY_MMAP IOTypeUserPtr IOType = C.V4L2_MEMORY_USERPTR IOTypeOverlay IOType = C.V4L2_MEMORY_OVERLAY IOTypeDMABuf IOType = C.V4L2_MEMORY_DMABUF )
type InputInfo ¶
type InputInfo struct {
// contains filtered or unexported fields
}
InputInfo (v4l2_input) https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1649 https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-enuminput.html
func GetAllVideoInputInfo ¶
GetAllVideoInputInfo returns all input information for device by iterating from input index = 0 until an error (EINVL) is returned.
func GetVideoInputInfo ¶
GetVideoInputInfo returns specified input information for video device See https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-enuminput.html
func (InputInfo) GetAudioset ¶
func (InputInfo) GetCapabilities ¶
func (InputInfo) GetInputType ¶
func (InputInfo) GetStandardId ¶
func (i InputInfo) GetStandardId() StandardId
type InputStatus ¶
type InputStatus = uint32
InputStatus See https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-enuminput.html?highlight=v4l2_input#input-status
var ( InputStatusNoPower InputStatus = C.V4L2_IN_ST_NO_POWER InputStatusNoSignal InputStatus = C.V4L2_IN_ST_NO_SIGNAL InputStatusNoColor InputStatus = C.V4L2_IN_ST_NO_COLOR )
type MPEGStreamType ¶
type MPEGStreamType = uint32
MPEGStreamType represents v4l2_mpeg_stream_type See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L237
const ( MPEGStreamTypeMPEG2ProgramStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_PS MPEGStreamTypeMPEG2TransportStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_TS MPEGStreamTypeMPEG1SystemStream MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG1_SS MPEGStreamTypeMPEG2DVD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_DVD MPEGStreamTypeMPEG1VCD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG1_VCD MPEGStreamTypeMPEG2SVCD MPEGStreamType = C.V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD )
type MPEGVideoAspect ¶
type MPEGVideoAspect = uint32
const ( MPEGVideoAspect1x1 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_1x1 MPEGVideoAspect4x3 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_4x3 MPEGVideoAspect16x9 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_16x9 MPEGVideoAspect221x100 MPEGVideoAspect = C.V4L2_MPEG_VIDEO_ASPECT_221x100 )
type MPEGVideoBitrateMode ¶
type MPEGVideoBitrateMode = uint32
type MPEGVideoEncoding ¶
type MPEGVideoEncoding = uint32
const ( MPEGVideoEncodingMPEG1 MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_1 MPEGVideoEncodingMPEG2 MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_2 MPEGVideoEncodingMPEG4AVC MPEGVideoEncoding = C.V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC )
type MediaDeviceInfo ¶
type MediaDeviceInfo struct { Driver string Model string Serial string BusInfo string MediaVersion VersionInfo HardwareRevision uint32 DriverVersion VersionInfo }
MediaDeviceInfo (media_device_info) See https://www.kernel.org/doc/html/latest/userspace-api/media/mediactl/media-ioc-device-info.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/media.h#L29
func GetMediaDeviceInfo ¶
func GetMediaDeviceInfo(fd uintptr) (MediaDeviceInfo, error)
GetMediaDeviceInfo retrieves media information for specified device, if supported.
type OutputParam ¶
type OutputParam struct { Capability StreamParamFlag CaptureMode StreamParamFlag TimePerFrame Fract ExtendedMode uint32 WriteBuffers uint32 // contains filtered or unexported fields }
OutputParam (v4l2_outputparm) https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-parm.html#c.V4L.v4l2_outputparm See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1228
type PixFormat ¶
type PixFormat struct { Width uint32 Height uint32 PixelFormat FourCCType Field FieldType BytesPerLine uint32 SizeImage uint32 Colorspace ColorspaceType Priv uint32 Flags uint32 YcbcrEnc YCbCrEncodingType HSVEnc HSVEncodingType Quantization QuantizationType XferFunc XferFunctionType }
PixFormat contains video image format from v4l2_pix_format. https://www.kernel.org/doc/html/v4.9/media/uapi/v4l/pixfmt-002.html?highlight=v4l2_pix_format https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L496
func GetPixFormat ¶
GetPixFormat retrieves pixel information for the specified driver (via v4l2_format and v4l2_pix_format) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L2331 and https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-g-fmt.html#ioctl-vidioc-g-fmt-vidioc-s-fmt-vidioc-try-fmt
type Plane ¶
Plane (see struct v4l2_plane) represents a plane in a multi-planar buffers https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html#c.V4L.v4l2_plane https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L990
type PlaneInfo ¶
PlaneInfo represents the combination of type of memory stream that can be serviced for the associated plane.
type PowerlineFrequency ¶
type PowerlineFrequency = uint32
PowerlineFrequency control enums See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L100
const ( PowerlineFrequencyDisabled PowerlineFrequency = C.V4L2_CID_POWER_LINE_FREQUENCY_DISABLED PowerlineFrequency50Hz PowerlineFrequency = C.V4L2_CID_POWER_LINE_FREQUENCY_50HZ PowerlineFrequency60Hz PowerlineFrequency = C.V4L2_CID_POWER_LINE_FREQUENCY_60HZ PowerlineFrequencyAuto PowerlineFrequency = C.V4L2_CID_POWER_LINE_FREQUENCY_AUTO )
type QuantizationType ¶
type QuantizationType = uint32
QuantizationType (v4l2_quantization) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/colorspaces-defs.html?highlight=v4l2_quantization#c.V4L.v4l2_quantization https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L372
const ( QuantizationDefault QuantizationType = C.V4L2_QUANTIZATION_DEFAULT QuantizationFullRange QuantizationType = C.V4L2_QUANTIZATION_FULL_RANGE QuantizationLimitedRange QuantizationType = C.V4L2_QUANTIZATION_LIM_RANGE )
func ColorspaceToQuantization ¶
func ColorspaceToQuantization(cs ColorspaceType) QuantizationType
type Rect ¶
Rect (v4l2_rect) https://www.kernel.org/doc/html/v4.14/media/uapi/v4l/dev-overlay.html?highlight=v4l2_rect#c.v4l2_rect https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L412
type RequestBuffers ¶
type RequestBuffers struct { Count uint32 StreamType uint32 Memory uint32 Capabilities uint32 // contains filtered or unexported fields }
RequestBuffers (v4l2_requestbuffers) is used to request buffer allocation initializing streaming for memory mapped, user pointer, or DMA buffer access. https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L949 https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-reqbufs.html?highlight=v4l2_requestbuffers#c.V4L.v4l2_requestbuffers
func InitBuffers ¶
func InitBuffers(dev StreamingDevice) (RequestBuffers, error)
InitBuffers sends buffer allocation request (VIDIOC_REQBUFS) to initialize buffer IO for video capture or video output when using either mem map, user pointer, or DMA buffers. See https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/vidioc-reqbufs.html#vidioc-reqbufs
func ResetBuffers ¶
func ResetBuffers(dev StreamingDevice) (RequestBuffers, error)
ResetBuffers allocates a buffer of size 0 VIDIOC_REQBUFS(0) to free (or orphan) all buffers. Useful when shuttingdown the stream. See https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/vidioc-reqbufs.html
type StandardId ¶
type StandardId = uint64
type StreamParam ¶
type StreamParam struct { Type IOType Capture CaptureParam Output OutputParam }
StreamParam (v4l2_streamparam) https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-parm.html#c.V4L.v4l2_streamparm See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L2362
func GetStreamParam ¶
func GetStreamParam(fd uintptr, bufType BufType) (StreamParam, error)
GetStreamParam returns streaming parameters for the driver (v4l2_streamparm). https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-parm.html See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L2362
type StreamParamFlag ¶
type StreamParamFlag = uint32
StreamParamFlag is for capability and capture mode fields See https://linuxtv.org/downloads/v4l-dvb-apis/userspace-api/v4l/vidioc-g-parm.html#parm-flags See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L1214
const ( StreamParamModeHighQuality StreamParamFlag = C.V4L2_MODE_HIGHQUALITY StreamParamTimePerFrame StreamParamFlag = C.V4L2_CAP_TIMEPERFRAME )
type StreamingDevice ¶
type StreamingDevice interface { Device Buffers() [][]byte BufferType() BufType BufferCount() uint32 Start(context.Context) error Stop() error }
StreamingDevice represents device that supports streaming IO via mapped buffer sharing.
type Timecode ¶
type Timecode struct { Type TimecodeType Flags TimecodeFlag Frames uint8 Seconds uint8 Minutes uint8 Hours uint8 // contains filtered or unexported fields }
Timecode (v4l2_timecode) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html?highlight=v4l2_timecode#c.V4L.v4l2_timecode https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L875
type TimecodeFlag ¶
type TimecodeFlag = uint32
TimecodeFlag https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html?highlight=v4l2_timecode#timecode-flags https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L892
const ( TimecodeFlagDropFrame TimecodeFlag = C.V4L2_TC_FLAG_DROPFRAME TimecodeFlagColorFrame TimecodeFlag = C.V4L2_TC_FLAG_COLORFRAME )
type TimecodeType ¶
type TimecodeType = uint32
TimecodeType https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html?highlight=v4l2_timecode#timecode-type https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L886
const ( TimecodeType24FPS TimecodeType = C.V4L2_TC_TYPE_24FPS TimecodeType25FPS TimecodeType = C.V4L2_TC_TYPE_25FPS TimecodeType30FPS TimecodeType = C.V4L2_TC_TYPE_30FPS TimecodeType50FPS TimecodeType = C.V4L2_TC_TYPE_50FPS TimecodeType60FPS TimecodeType = C.V4L2_TC_TYPE_60FPS )
type VP8Entropy ¶
type VP8Entropy struct { CoefficientProbabilities [4][8][3][VP8CoefficientProbabilityCount]uint8 YModeProbabilities uint8 UVModeProbabilities uint8 MVProbabilities [2][VP8MVProbabilityCount]uint8 // contains filtered or unexported fields }
VP8Entropy (v4l2_vp8_entropy) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1771
type VP8EntropyCoderState ¶
type VP8EntropyCoderState struct { Range uint8 Value uint8 BitCount uint8 // contains filtered or unexported fields }
VP8EntropyCoderState (v4l2_vp8_entropy_coder_state) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1790
type VP8LoopFilter ¶
type VP8LoopFilter struct { ReferenceFrameDelta int8 MBModeDelta int8 SharpnessLevel uint8 Level uint8 Flags uint32 // contains filtered or unexported fields }
VP8LoopFilter (v4l2_vp8_loop_filter) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1719
type VP8Quantization ¶
type VP8Quantization struct { YACQIndex uint8 YDCDelta int8 Y2DCDelta int8 Y2ACDelta int8 UVDCDelta int8 UVACDelta int8 // contains filtered or unexported fields }
VP8Quantization (v4l2_vp8_quantization) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1744
type VP8Segment ¶
type VP8Segment struct { QuantUpdate [4]int8 LoopFilterUpdate [4]int8 SegmentProbabilities [3]uint8 Flags uint32 // contains filtered or unexported fields }
VP8Segment (v4l2_vp8_segment) See https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/v4l2-controls.h#L1692
type VersionInfo ¶
type VersionInfo struct {
// contains filtered or unexported fields
}
func (VersionInfo) Major ¶
func (v VersionInfo) Major() uint32
func (VersionInfo) Minor ¶
func (v VersionInfo) Minor() uint32
func (VersionInfo) Patch ¶
func (v VersionInfo) Patch() uint32
func (VersionInfo) String ¶
func (v VersionInfo) String() string
func (VersionInfo) Value ¶
func (v VersionInfo) Value() uint32
Value returns the raw numeric version value
type XferFunctionType ¶
type XferFunctionType = uint32
XferFunctionType (v4l2_xfer_func) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/colorspaces-defs.html?highlight=v4l2_xfer_func#c.V4L.v4l2_xfer_func https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L259
const ( XferFuncDefault XferFunctionType = C.V4L2_XFER_FUNC_DEFAULT XferFunc709 XferFunctionType = C.V4L2_XFER_FUNC_709 XferFuncSRGB XferFunctionType = C.V4L2_XFER_FUNC_SRGB XferFuncOpRGB XferFunctionType = C.V4L2_XFER_FUNC_OPRGB XferFuncSMPTE240M XferFunctionType = C.V4L2_XFER_FUNC_SMPTE240M XferFuncNone XferFunctionType = C.V4L2_XFER_FUNC_NONE XferFuncDCIP3 XferFunctionType = C.V4L2_XFER_FUNC_DCI_P3 XferFuncSMPTE2084 XferFunctionType = C.V4L2_XFER_FUNC_SMPTE2084 )
func ColorspaceToXferFunc ¶
func ColorspaceToXferFunc(cs ColorspaceType) XferFunctionType
ColorspaceToXferFunc used to get true XferFunc when only colorspace and default XferFuc are known.
type YCbCrEncodingType ¶
type YCbCrEncodingType = uint32
YCbCrEncodingType (v4l2_ycbcr_encoding) https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/colorspaces-defs.html?highlight=v4l2_ycbcr_encoding https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/videodev2.h#L300
const ( YCbCrEncodingDefault YCbCrEncodingType = C.V4L2_YCBCR_ENC_DEFAULT YCbCrEncoding601 YCbCrEncodingType = C.V4L2_YCBCR_ENC_601 YCbCrEncoding709 YCbCrEncodingType = C.V4L2_YCBCR_ENC_709 YCbCrEncodingXV601 YCbCrEncodingType = C.V4L2_YCBCR_ENC_XV601 YCbCrEncodingXV709 YCbCrEncodingType = C.V4L2_YCBCR_ENC_XV709 YCbCrEncodingBT2020 YCbCrEncodingType = C.V4L2_YCBCR_ENC_BT2020 YCbCrEncodingBT2020ConstLum YCbCrEncodingType = C.V4L2_YCBCR_ENC_BT2020_CONST_LUM )
func ColorspaceToYCbCrEnc ¶
func ColorspaceToYCbCrEnc(cs ColorspaceType) YCbCrEncodingType
ColorspaceToYCbCrEnc is used to get the YCbCrEncoding when only a default YCbCr and the colorspace is known
Source Files ¶
- capability.go
- control.go
- control_values.go
- control_values_codecs.go
- crop.go
- dimension.go
- errors.go
- ext_controls.go
- ext_ctrls_fwht.go
- ext_ctrls_h264.go
- ext_ctrls_mpeg2.go
- ext_ctrls_vp8.go
- format.go
- format_desc.go
- format_frameintervals.go
- format_framesizes.go
- media.go
- stream_param.go
- streaming.go
- support.go
- syscalls.go
- timing.go
- types.go
- version.go
- video_info.go