Vietnamese (machine translation)

Lưu ý

Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.

Bản gốc:

ioctl VIDIOC_ENUM_FMT

Người dịch:

Google Translate (machine translation)

Phiên bản gốc:

8541d8f725c6

Cảnh báo

Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.

7.14. ioctl VIDIOC_ENUM_FMT

7.14.1. Tên

VIDIOC_ENUM_FMT - Liệt kê các định dạng hình ảnh

7.14.2. Tóm tắt

VIDIOC_ENUM_FMT

ZZ0000ZZ

7.14.3. Đối số

ZZ0001ZZ

Bộ mô tả tệp được trả về bởi ZZ0000ZZ.

ZZ0001ZZ

Con trỏ tới cấu trúc ZZ0000ZZ.

7.14.4. Sự miêu tả

Để liệt kê các ứng dụng định dạng hình ảnh, hãy khởi tạo ZZ0002ZZ, ZZ0003ZZ và các trường ZZ0004ZZ của cấu trúc ZZ0000ZZ và gọi ZZ0001ZZ ioctl với một con trỏ tới cấu trúc này. Trình điều khiển điền vào phần còn lại của cấu trúc hoặc trả về mã lỗi ZZ0005ZZ. Tất cả các định dạng có thể đếm được bằng cách bắt đầu từ chỉ số 0 và tăng dần theo một cho đến khi ZZ0006ZZ được trả lại. Nếu có, tài xế sẽ quay lại các định dạng theo thứ tự ưu tiên, trong đó các định dạng ưa thích được trả về trước (nghĩa là với giá trị ZZ0007ZZ thấp hơn) các định dạng ít được ưa thích hơn.

Tùy thuộc vào ZZ0001ZZ ZZ0000ZZ, trường ZZ0002ZZ được xử lý khác nhau:

  1. ZZ0000ZZ chưa được đặt (còn được gọi là trình điều khiển ‘tập trung vào nút video’)

Các ứng dụng sẽ khởi tạo trường ZZ0000ZZ về 0 và trình điều khiển

sẽ bỏ qua giá trị của trường.

Trình điều khiển sẽ liệt kê tất cả các định dạng hình ảnh.

Lưu ý

After switching the input or output the list of enumerated image formats may be different.

  1. ZZ0000ZZ được thiết lập (còn được gọi là trình điều khiển ‘MC lấy trung tâm’)

Nếu trường ZZ0000ZZ bằng 0 thì tất cả các định dạng hình ảnh

sẽ được liệt kê.

Nếu trường ZZ0001ZZ được khởi tạo thành giá trị hợp lệ (khác 0)

ZZ0000ZZ, sau đó là trình điều khiển sẽ hạn chế việc liệt kê chỉ các định dạng hình ảnh có thể tạo ra (đối với thiết bị đầu ra video) hoặc được sản xuất từ (đối với thiết bị quay video thiết bị) mã bus phương tiện đó. Nếu ZZ0002ZZ không được hỗ trợ bởi trình điều khiển thì ZZ0003ZZ sẽ được trả lại.

Bất kể giá trị của trường ZZ0000ZZ, hình ảnh được liệt kê

các định dạng sẽ không phụ thuộc vào cấu hình hoạt động của thiết bị video hoặc đường dẫn thiết bị.

type v4l2_fmtdesc
struct v4l2_fmtdesc

__u32

index

Number of the format in the enumeration, set by the application. This is in no way related to the pixelformat field. When the index is ORed with V4L2_FMTDESC_FLAG_ENUM_ALL the driver clears the flag and enumerates all the possible formats, ignoring any limitations from the current configuration. Drivers which do not support this flag always return an EINVAL error code without clearing this flag. Formats enumerated when using V4L2_FMTDESC_FLAG_ENUM_ALL flag shouldn’t be used when calling VIDIOC_ENUM_FRAMESIZES() or VIDIOC_ENUM_FRAMEINTERVALS(). V4L2_FMTDESC_FLAG_ENUM_ALL should only be used by drivers that can return different format list depending on this flag.

__u32

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_CAPTURE_MPLANE, V4L2_BUF_TYPE_VIDEO_OUTPUT, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, V4L2_BUF_TYPE_VIDEO_OVERLAY, V4L2_BUF_TYPE_SDR_CAPTURE, V4L2_BUF_TYPE_SDR_OUTPUT, V4L2_BUF_TYPE_META_CAPTURE and V4L2_BUF_TYPE_META_OUTPUT. See v4l2_buf_type.

__u32

flags

See Image Format Description Flags

__u8

description[32]

Description of the format, a NUL-terminated ASCII string. This information is intended for the user, for example: “YUV 4:2:2”.

__u32

pixelformat

The image format identifier. This is a four character code as computed by the v4l2_fourcc() macro:

#define v4l2_fourcc(a,b,c,d)

(((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))

Several image formats are already defined by this specification in Image Formats.

Chú ý

These codes are not the same as those used in the Windows world.

__u32

mbus_code

Media bus code restricting the enumerated formats, set by the application. Only applicable to drivers that advertise the V4L2_CAP_IO_MC capability, shall be 0 otherwise.

__u32

reserved[3]

Reserved for future extensions. Drivers must set the array to zero.

Image Format Description Flags

V4L2_FMT_FLAG_COMPRESSED

0x0001

This is a compressed format.

V4L2_FMT_FLAG_EMULATED

0x0002

This format is not native to the device but emulated through software (usually libv4l2), where possible try to use a native format instead for better performance.

V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM

0x0004

The hardware decoder for this compressed bytestream format (aka coded format) is capable of parsing a continuous bytestream. Applications do not need to parse the bytestream themselves to find the boundaries between frames/fields.

This flag can only be used in combination with the V4L2_FMT_FLAG_COMPRESSED flag, since this applies to compressed formats only. This flag is valid for stateful decoders only.

V4L2_FMT_FLAG_DYN_RESOLUTION

0x0008

Dynamic resolution switching is supported by the device for this compressed bytestream format (aka coded format). It will notify the user via the event V4L2_EVENT_SOURCE_CHANGE when changes in the video parameters are detected.

This flag can only be used in combination with the V4L2_FMT_FLAG_COMPRESSED flag, since this applies to compressed formats only. This flag is valid for stateful codecs only.

V4L2_FMT_FLAG_ENC_CAP_FRAME_INTERVAL

0x0010

The hardware encoder supports setting the CAPTURE coded frame interval separately from the OUTPUT raw frame interval. Setting the OUTPUT raw frame interval with VIDIOC_S_PARM also sets the CAPTURE coded frame interval to the same value. If this flag is set, then the CAPTURE coded frame interval can be set to a different value afterwards. This is typically used for offline encoding where the OUTPUT raw frame interval is used as a hint for reserving hardware encoder resources and the CAPTURE coded frame interval is the actual frame rate embedded in the encoded video stream.

This flag can only be used in combination with the V4L2_FMT_FLAG_COMPRESSED flag, since this applies to compressed formats only. This flag is valid for stateful encoders only.

V4L2_FMT_FLAG_CSC_COLORSPACE

0x0020

The driver allows the application to try to change the default colorspace. This flag is relevant only for capture devices. The application can ask to configure the colorspace of the capture device when calling the VIDIOC_S_FMT ioctl with V4L2_PIX_FMT_FLAG_SET_CSC set.

V4L2_FMT_FLAG_CSC_XFER_FUNC

0x0040

The driver allows the application to try to change the default transfer function. This flag is relevant only for capture devices. The application can ask to configure the transfer function of the capture device when calling the VIDIOC_S_FMT ioctl with V4L2_PIX_FMT_FLAG_SET_CSC set.

V4L2_FMT_FLAG_CSC_YCBCR_ENC

0x0080

The driver allows the application to try to change the default Y’CbCr encoding. This flag is relevant only for capture devices. The application can ask to configure the Y’CbCr encoding of the capture device when calling the VIDIOC_S_FMT ioctl with V4L2_PIX_FMT_FLAG_SET_CSC set.

V4L2_FMT_FLAG_CSC_HSV_ENC

0x0080

The driver allows the application to try to change the default HSV encoding. This flag is relevant only for capture devices. The application can ask to configure the HSV encoding of the capture device when calling the VIDIOC_S_FMT ioctl with V4L2_PIX_FMT_FLAG_SET_CSC set.

V4L2_FMT_FLAG_CSC_QUANTIZATION

0x0100

The driver allows the application to try to change the default quantization. This flag is relevant only for capture devices. The application can ask to configure the quantization of the capture device when calling the VIDIOC_S_FMT ioctl with V4L2_PIX_FMT_FLAG_SET_CSC set.

V4L2_FMT_FLAG_META_LINE_BASED

0x0200

The metadata format is line-based. In this case the width, height and bytesperline fields of v4l2_meta_format are valid. The buffer consists of height lines, each having width Data Units of data and the offset (in bytes) between the beginning of each two consecutive lines is bytesperline.

V4L2_FMTDESC_FLAG_ENUM_ALL

0x80000000

When the applications ORs index with V4L2_FMTDESC_FLAG_ENUM_ALL flag the driver enumerates all the possible pixel formats without taking care of any already set configuration. Drivers which do not support this flag, always return EINVAL without clearing this flag.

7.14.5. Giá trị trả về

Khi thành công, trả về 0, lỗi -1 và biến ZZ0001ZZ được đặt một cách thích hợp. Các mã lỗi chung được mô tả tại Chương ZZ0000ZZ.

EINVAL

Cấu trúc ZZ0000ZZ ZZ0001ZZ thì không được hỗ trợ hoặc ZZ0002ZZ nằm ngoài giới hạn.

Nếu ZZ0000ZZ được đặt và ZZ0001ZZ được chỉ định

không được hỗ trợ thì cũng trả về mã lỗi này.