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:
- 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.39. ioctl VIDIOC_G_SELECTION, VIDIOC_S_SELECTION¶
7.39.1. Tên¶
VIDIOC_G_SELECTION - VIDIOC_S_SELECTION - Nhận hoặc đặt một trong các hình chữ nhật lựa chọn
7.39.2. Tóm tắt¶
-
VIDIOC_G_SELECTION¶
ZZ0000ZZ
-
VIDIOC_S_SELECTION¶
ZZ0000ZZ
7.39.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.39.4. Sự miêu tả¶
Các ioctls được sử dụng để truy vấn và định cấu hình các hình chữ nhật lựa chọn.
Để truy vấn cấu trúc tập hợp hình chữ nhật cắt xén (sáng tác)
Trường ZZ0000ZZ ZZ0006ZZ tới
loại bộ đệm tương ứng. Bước tiếp theo là thiết lập
giá trị của cấu trúc ZZ0001ZZ ZZ0007ZZ
trường thành ZZ0008ZZ (ZZ0009ZZ). Hãy tham khảo
vào bảng ZZ0002ZZ hoặc ZZ0003ZZ để
các mục tiêu bổ sung. Các trường ZZ0010ZZ và ZZ0011ZZ của cấu trúc
ZZ0004ZZ bị bỏ qua và chúng phải được
chứa đầy số không. Trình điều khiển lấp đầy phần còn lại của cấu trúc hoặc quay trở lại
Mã lỗi EINVAL nếu sử dụng loại bộ đệm hoặc mục tiêu không chính xác. Nếu
cắt xén (sáng tác) không được hỗ trợ thì hình chữ nhật hoạt động không được hỗ trợ
có thể thay đổi và nó luôn bằng hình chữ nhật giới hạn. Cuối cùng,
struct ZZ0005ZZ ZZ0012ZZ hình chữ nhật được lấp đầy bằng
tọa độ cắt xén (sáng tác) hiện tại. Tọa độ là
được biểu thị bằng đơn vị phụ thuộc vào trình điều khiển. Ngoại lệ duy nhất là hình chữ nhật
đối với hình ảnh ở định dạng thô, tọa độ của nó luôn được thể hiện dưới dạng
pixel.
Để thay đổi hình chữ nhật cắt xén (sáng tác), hãy đặt cấu trúc Trường ZZ0000ZZ ZZ0007ZZ tới loại bộ đệm tương ứng. Bước tiếp theo là thiết lập giá trị của cấu trúc ZZ0001ZZ ZZ0008ZZ thành ZZ0009ZZ (ZZ0010ZZ). Vui lòng tham khảo bảng ZZ0002ZZ hoặc ZZ0003ZZ để biết thêm mục tiêu. Cấu trúc hình chữ nhật ZZ0004ZZ ZZ0011ZZ cần để được đặt thành vùng hoạt động mong muốn. Cấu trúc trường ZZ0005ZZ ZZ0012ZZ bị bỏ qua và phải được điền bằng số không. Người lái xe có thể điều chỉnh tọa độ của hình chữ nhật được yêu cầu. Một ứng dụng có thể đưa ra các ràng buộc để kiểm soát hành vi làm tròn. Cấu trúc ZZ0006ZZ Trường ZZ0013ZZ phải được đặt thành một trong các trường sau:
- ZZ0000ZZ - Người lái xe có thể tự do điều chỉnh kích thước hình chữ nhật và
chọn một hình chữ nhật cắt/soạn càng gần với yêu cầu càng tốt một.
- ZZ0000ZZ - Trình điều khiển không được phép thu nhỏ
hình chữ nhật. Hình chữ nhật ban đầu phải nằm bên trong hình đã điều chỉnh.
- ZZ0000ZZ - Trình điều khiển không được phép phóng to
hình chữ nhật. Hình chữ nhật đã điều chỉnh phải nằm bên trong hình chữ nhật ban đầu.
- ZZ0000ZZ - Người lái xe phải chọn
kích thước giống hệt như trong hình chữ nhật được yêu cầu.
Vui lòng tham khảo ZZ0000ZZ.
Trình điều khiển có thể phải điều chỉnh kích thước được yêu cầu theo phần cứng giới hạn và các phần khác như đường ống, tức là giới hạn được đưa ra bởi cửa sổ chụp/xuất hoặc màn hình TV. Các giá trị gần nhất có thể của độ lệch ngang và dọc và kích thước được chọn theo ưu tiên sau:
Thỏa mãn ràng buộc từ
struct ZZ0000ZZZZ0001ZZ.Điều chỉnh chiều rộng, chiều cao, bên trái và trên cùng theo giới hạn phần cứng và sự sắp xếp.
Giữ tâm của hình chữ nhật đã điều chỉnh càng gần hình chữ nhật càng tốt. bản gốc.
Giữ chiều rộng và chiều cao càng gần với chiều rộng và chiều cao ban đầu càng tốt.
Giữ offset ngang và dọc càng gần với bản gốc càng tốt những cái đó.
Khi thành công, trường struct ZZ0000ZZ ZZ0001ZZ
chứa hình chữ nhật đã điều chỉnh. Khi các thông số không phù hợp
ứng dụng có thể sửa đổi các thông số cắt xén (sáng tác) hoặc hình ảnh và
lặp lại chu trình cho đến khi đạt được các thông số thỏa đáng. Nếu
cờ ràng buộc phải bị vi phạm lúc đó ZZ0002ZZ sẽ được trả về. các
lỗi chỉ ra rằng ZZ0003ZZ thỏa mãn
những hạn chế.
Mục tiêu lựa chọn và cờ được ghi lại trong ZZ0000ZZ.
Size adjustments with constraint flags.¶
Behaviour of rectangle adjustment for different constraint flags.
-
type v4l2_selection¶
__u32 |
|
Type of the buffer (from enum
|
__u32 |
|
Used to select between cropping and composing rectangles. |
__u32 |
|
Flags controlling the selection rectangle adjustments, refer to selection flags. |
struct |
|
The selection rectangle. |
__u32 |
|
Reserved fields for future use. Drivers and applications must zero this array. |
Lưu ý
Unfortunately in the case of multiplanar buffer types
(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE and V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
this API was messed up with regards to how the v4l2_selection type field
should be filled in. Some drivers only accepted the _MPLANE buffer type while
other drivers only accepted a non-multiplanar buffer type (i.e. without the
_MPLANE at the end).
Starting with kernel 4.13 both variations are allowed.
7.39.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
Cho trước loại bộ đệm ZZ0000ZZ hoặc mục tiêu lựa chọn ZZ0001ZZ không phải là được hỗ trợ hoặc đối số ZZ0002ZZ không hợp lệ.
- ERANGE
Không thể điều chỉnh cấu trúc ZZ0000ZZ Hình chữ nhật ZZ0001ZZ để đáp ứng tất cả các ràng buộc được đưa ra trong ZZ0002ZZ lý lẽ.
- ENODATA
Lựa chọn không được hỗ trợ cho đầu vào hoặc đầu ra này.
- EBUSY
Không thể áp dụng thay đổi hình chữ nhật lựa chọn tại khoảnh khắc. Thông thường là do quá trình phát trực tuyến đang diễn ra.