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/.
10.1.2. Trình điều khiển cx2341x¶
10.1.2.1. Bộ nhớ ở chip cx2341x¶
Phần này mô tả bản đồ bộ nhớ cx2341x và ghi lại một số đăng ký không gian.
Lưu ý
the memory long words are little-endian (‘intel format’).
Cảnh báo
This information was figured out from searching through the memory and registers, this information may not be correct and is certainly not complete, and was not derived from anything more than searching through the memory space with commands like:
ivtvctl -O min=0x02000000,max=0x020000ff
So take this as is, I’m always searching for more stuff, it’s a large register space :-).
10.1.2.1.1. Bản đồ bộ nhớ¶
Cx2341x hiển thị toàn bộ không gian bộ nhớ 64M của nó cho máy chủ PCI thông qua PCI BAR0 (Đăng ký địa chỉ cơ sở 0). Các địa chỉ ở đây là độ lệch so với địa chỉ được giữ trong BAR0.
0x00000000-0x00ffffff Encoder memory space
0x00000000-0x0003ffff Encode.rom
???-??? MPEG buffer(s)
???-??? Raw video capture buffer(s)
???-??? Raw audio capture buffer(s)
???-??? Display buffers (6 or 9)
0x01000000-0x01ffffff Decoder memory space
0x01000000-0x0103ffff Decode.rom
???-??? MPEG buffers(s)
0x0114b000-0x0115afff Audio.rom (deprecated?)
0x02000000-0x0200ffff Register Space
10.1.2.1.2. Đăng ký¶
Các thanh ghi chiếm không gian 64k bắt đầu từ độ lệch 0x02000000 từ BAR0. Tất cả các thanh ghi này đều rộng 32 bit.
DMA Registers 0x000-0xff:
0x00 - Control:
0=reset/cancel, 1=read, 2=write, 4=stop
0x04 - DMA status:
1=read busy, 2=write busy, 4=read error, 8=write error, 16=link list error
0x08 - pci DMA pointer for read link list
0x0c - pci DMA pointer for write link list
0x10 - read/write DMA enable:
1=read enable, 2=write enable
0x14 - always 0xffffffff, if set any lower instability occurs, 0x00 crashes
0x18 - ??
0x1c - always 0x20 or 32, smaller values slow down DMA transactions
0x20 - always value of 0x780a010a
0x24-0x3c - usually just random values???
0x40 - Interrupt status
0x44 - Write a bit here and shows up in Interrupt status 0x40
0x48 - Interrupt Mask
0x4C - always value of 0xfffdffff,
if changed to 0xffffffff DMA write interrupts break.
0x50 - always 0xffffffff
0x54 - always 0xffffffff (0x4c, 0x50, 0x54 seem like interrupt masks, are
3 processors on chip, Java ones, VPU, SPU, APU, maybe these are the
interrupt masks???).
0x60-0x7C - random values
0x80 - first write linked list reg, for Encoder Memory addr
0x84 - first write linked list reg, for pci memory addr
0x88 - first write linked list reg, for length of buffer in memory addr
(|0x80000000 or this for last link)
0x8c-0xdc - rest of write linked list reg, 8 sets of 3 total, DMA goes here
from linked list addr in reg 0x0c, firmware must push through or
something.
0xe0 - first (and only) read linked list reg, for pci memory addr
0xe4 - first (and only) read linked list reg, for Decoder memory addr
0xe8 - first (and only) read linked list reg, for length of buffer
0xec-0xff - Nothing seems to be in these registers, 0xec-f4 are 0x00000000.
Vị trí bộ nhớ cho Bộ đệm mã hóa 0x700-0x7ff:
Các thanh ghi này hiển thị độ lệch của các vị trí bộ nhớ liên quan đến từng vùng đệm được sử dụng để mã hóa, trước tiên phải dịch chuyển chúng bằng <<1.
0x07F8: Làm mới bộ mã hóa SDRAM
0x07FC: Nạp trước bộ mã hóa SDRAM
Vị trí bộ nhớ cho Bộ đệm giải mã 0x800-0x8ff:
Các thanh ghi này hiển thị độ lệch của các vị trí bộ nhớ liên quan đến từng vùng đệm dùng để giải mã, trước tiên phải dịch chuyển chúng theo <<1.
0x08F8: Làm mới bộ giải mã SDRAM
0x08FC: Nạp trước bộ giải mã SDRAM
Các vị trí bộ nhớ khác:
0x2800: Điều khiển mô-đun hiển thị video
0x2D00: Điều khiển AO (đầu ra âm thanh?)
0x2D24: Xóa byte
0x7000: LSB I2C ghi bit đồng hồ (đảo ngược)
0x7004: LSB I2C ghi bit dữ liệu (đảo ngược)
0x7008: LSB I2C đọc bit đồng hồ
0x700c: LSB I2C đọc bit dữ liệu
0x9008: GPIO lấy trạng thái đầu vào
0x900c: GPIO đặt trạng thái đầu ra
0x9020: Hướng GPIO (Bit7 (GPIO 0..7) - 0:đầu vào, 1:đầu ra)
0x9050: Điều khiển SPU
0x9054: Đặt lại khối CTNH
0x9058: Điều khiển VPU
0xA018: Bit6: ngắt đang chờ xử lý?
0xA064: Lệnh APU
10.1.2.1.3. Đăng ký trạng thái ngắt¶
Định nghĩa các bit trong thanh ghi trạng thái ngắt 0x0040 và mặt nạ ngắt 0x0048. Nếu một bit bị xóa trong mặt nạ thì chúng ta muốn ISR của chúng ta thi hành.
Chụp bắt đầu bộ mã hóa bit 31
Bộ mã hóa bit 30 EOS
Chụp mã hóa bit 29 VBI
Sự kiện đặt lại mô-đun đầu vào video bộ mã hóa bit 28
Bộ mã hóa bit 27 DMA hoàn thành
sự kiện phát hiện thay đổi chế độ âm thanh bộ giải mã bit 24 (thông qua thông báo sự kiện)
bit 22 Yêu cầu dữ liệu bộ giải mã
Bộ giải mã bit 20 DMA hoàn thành
Chèn lại bộ giải mã bit 19 VBI
Bit 18 Bộ giải mã DMA bị lỗi (danh sách liên kết bị lỗi)
10.1.2.2. Thiếu tài liệu¶
Mã hóa bài API(?)
Bộ giải mã API bài(?)
Sự kiện giải mã VTRACE
10.1.2.3. Tải lên chương trình cơ sở cx2341x¶
Tài liệu này mô tả cách tải firmware cx2341x lên thẻ.
10.1.2.3.1. Làm thế nào để tìm thấy¶
Xem các trang web của các dự án khác nhau sử dụng chip này để biết thông tin về cách lấy firmware.
Phần sụn được lưu trữ trong trình điều khiển Windows có thể được phát hiện như sau:
Mỗi hình ảnh phần sụn là 256k byte.
Từ 32 bit đầu tiên của ảnh Encode là 0x0000da7
Từ 32 bit đầu tiên của ảnh Decode là 0x00003a7
Từ 32 bit thứ 2 của cả hai ảnh là 0xaa55bb66
10.1.2.3.2. Làm thế nào để tải¶
Ra lệnh FWapi để dừng bộ mã hóa nếu nó đang chạy. Đợi cho lệnh để hoàn thành.
Ra lệnh FWapi để dừng bộ giải mã nếu nó đang chạy. Đợi cho lệnh để hoàn thành.
Ra lệnh I2C cho bộ số hóa để ngừng phát ra các sự kiện VSYNC.
Ra lệnh FWapi để tạm dừng phần sụn của bộ mã hóa.
Ngủ 10ms.
Ra lệnh FWapi để tạm dừng phần sụn của bộ giải mã.
Ngủ 10ms.
Viết 0x00000000 để đăng ký 0x2800 dừng Module hiển thị video.
Viết 0x00000005 để đăng ký 0x2D00 dừng AO (đầu ra âm thanh?).
Viết 0x00000000 để đăng ký 0xA064 để ping? APU.
Viết 0xFFFFFFFE để đăng ký 0x9058 dừng VPU.
Viết 0xFFFFFFFF đăng ký 0x9054 để reset các khối CTNH.
Viết 0x00000001 để đăng ký 0x9050 dừng SPU.
Ngủ 10ms.
Viết 0x0000001A đăng ký 0x07FC để khởi tạo quá trình nạp trước của Encoding SDRAM.
Viết 0x80000640 để đăng ký 0x07F8 để bắt đầu làm mới Bộ mã hóa SDRAM thành 1us.
Viết 0x0000001A đăng ký 0x08FC để khởi tạo quá trình nạp trước của Bộ giải mã SDRAM.
Viết 0x80000640 để đăng ký 0x08F8 để bắt đầu làm mới Bộ giải mã SDRAM thành 1us.
Ngủ trong 512ms. (khuyến nghị 600ms)
Chuyển hình ảnh chương trình cơ sở của bộ mã hóa sang offset 0 trong không gian bộ nhớ của Bộ mã hóa.
Chuyển hình ảnh phần sụn của bộ giải mã sang offset 0 trong không gian bộ nhớ của Bộ giải mã.
Sử dụng thao tác đọc-sửa-ghi để xóa bit 0 của thanh ghi 0x9050 để kích hoạt lại SPU.
Ngủ 1 giây.
Sử dụng thao tác đọc-sửa-ghi để xóa bit 3 và 0 của thanh ghi 0x9058 để kích hoạt lại VPU.
Ngủ 1 giây.
Đưa ra các lệnh trạng thái API cho cả hai hình ảnh phần sụn để xác minh.
10.1.2.4. Cách gọi firmware API¶
Quy ước gọi ưu tiên được gọi là hộp thư phần sụn. các hộp thư về cơ bản là một mảng có độ dài cố định đóng vai trò là ngăn xếp cuộc gọi.
Hộp thư chương trình cơ sở có thể được định vị bằng cách tìm kiếm bộ nhớ bộ mã hóa và bộ giải mã cho chữ ký 16 byte. Chữ ký đó sẽ nằm trên ranh giới 256 byte.
Chữ ký:
0x78, 0x56, 0x34, 0x12, 0x12, 0x78, 0x56, 0x34,
0x34, 0x12, 0x78, 0x56, 0x56, 0x34, 0x12, 0x78
Phần sụn triển khai 20 hộp thư gồm 20 từ 32 bit. 10 cái đầu tiên là dành riêng cho các cuộc gọi API. 10 cái thứ hai được sử dụng bởi phần sụn cho sự kiện thông báo.
Mục đích hướng bit ==== ========== ================================================= 2 O Firmware đã xử lý lệnh. 1 I Driver đã thiết lập xong thông số. 0 Tôi Trình điều khiển đang sử dụng hộp thư này. ==== ========== =================================================
Lệnh này là một bộ liệt kê 32 bit. Thông tin cụ thể về API có thể được tìm thấy trong này chương.
Giá trị trả về là một bộ liệt kê 32 bit. Hiện tại chỉ có hai giá trị được xác định:
0=thành công
-1=lệnh không xác định.
Có 16 trường tham số/kết quả 32 bit. Trình điều khiển điền vào các trường này với các giá trị cho tất cả các tham số mà cuộc gọi yêu cầu. Trình điều khiển ghi đè các trường này có giá trị kết quả được cuộc gọi trả về.
Giá trị thời gian chờ bảo vệ thẻ khỏi chuỗi trình điều khiển bị treo. Nếu người lái xe không xử lý cuộc gọi đã hoàn thành trong thời gian chờ được chỉ định, phần sụn sẽ thiết lập lại hộp thư đó.
Để thực hiện cuộc gọi API, trình điều khiển lặp lại từng hộp thư để tìm kiếm cái đầu tiên có sẵn (bit 0 đã bị xóa). Trình điều khiển đặt bit đó, điền vào trong bộ liệt kê lệnh, giá trị thời gian chờ và mọi tham số bắt buộc. các trình điều khiển sau đó thiết lập tham số bit sẵn sàng (bit 1). Phần sụn sẽ quét hộp thư cho các lệnh đang chờ xử lý, xử lý chúng, đặt mã kết quả, điền mảng giá trị kết quả với các giá trị trả về của lệnh gọi đó và đặt lệnh gọi bit hoàn chỉnh (bit 2). Khi bit 2 được đặt, trình điều khiển sẽ truy xuất kết quả và xóa tất cả các cờ. Nếu trình điều khiển không thực hiện nhiệm vụ này trong vòng thời gian được đặt trong thanh ghi hết thời gian chờ, phần sụn sẽ đặt lại hộp thư đó.
Thông báo sự kiện được gửi từ phần sụn đến máy chủ. Người chủ trì kể cho chương trình cơ sở mà sự kiện mà nó quan tâm thông qua cuộc gọi API. Cuộc gọi đó cho biết firmware nào sẽ sử dụng hộp thư thông báo. Phần sụn báo hiệu cho máy chủ thông qua một sự gián đoạn. Chỉ có 16 trường Kết quả được sử dụng, Cờ, Lệnh, Trả về các từ giá trị và thời gian chờ không được sử dụng.
10.1.2.5. Phần mềm OSD Mô tả API¶
Lưu ý
this API is part of the decoder firmware, so it’s cx23415 only.
10.1.2.5.1. CX2341X_OSD_GET_FRAMEBUFFER¶
Số đếm: 65/0x41
10.1.2.5.1.1. Sự miêu tả¶
Cơ sở trả về và độ dài của bộ nhớ OSD liền kề.
10.1.2.5.1.2. Kết quả[0]¶
Địa chỉ cơ sở OSD
10.1.2.5.1.3. Kết quả[1]¶
Chiều dài OSD
10.1.2.5.2. CX2341X_OSD_GET_PIXEL_FORMAT¶
Số đếm: 66/0x42
10.1.2.5.2.1. Sự miêu tả¶
Truy vấn định dạng OSD
10.1.2.5.2.2. Kết quả[0]¶
Chỉ số 0=8bit 1=16bit RGB 5:6:5 2=16bit ARGB 1:5:5:5 3=16bit ARGB 1:4:4:4 4=32bit ARGB 8:8:8:8
10.1.2.5.3. CX2341X_OSD_SET_PIXEL_FORMAT¶
Số đếm: 67/0x43
10.1.2.5.3.1. Sự miêu tả¶
Chỉ định định dạng pixel
10.1.2.5.3.2. Thông số[0]¶
Chỉ số 0=8bit
1=16bit RGB 5:6:5
2=16bit ARGB 1:5:5:5
3=16bit ARGB 1:4:4:4
4=32bit ARGB 8:8:8:8
10.1.2.5.4. CX2341X_OSD_GET_STATE¶
Số đếm: 68/0x44
10.1.2.5.4.1. Sự miêu tả¶
Truy vấn trạng thái OSD
10.1.2.5.4.2. Kết quả[0]¶
Bit 0 0=tắt, 1=bật
Kiểm soát alpha 1:2 bit
Định dạng pixel 3:5 pixel
10.1.2.5.5. CX2341X_OSD_SET_STATE¶
Số đếm: 69/0x45
10.1.2.5.5.1. Sự miêu tả¶
Công tắc OSD
10.1.2.5.5.2. Thông số[0]¶
0=tắt, 1=bật
10.1.2.5.6. CX2341X_OSD_GET_OSD_COORDS¶
Số đếm: 70/0x46
10.1.2.5.6.1. Sự miêu tả¶
Truy xuất tọa độ của vùng OSD được trộn với video
10.1.2.5.6.2. Kết quả[0]¶
Địa chỉ bộ đệm OSD
10.1.2.5.6.3. Kết quả[1]¶
Sải bước theo pixel
10.1.2.5.6.4. Kết quả[2]¶
Các dòng trong bộ đệm OSD
10.1.2.5.6.5. Kết quả[3]¶
Độ lệch ngang trong bộ đệm
10.1.2.5.6.6. Kết quả[4]¶
Độ lệch dọc trong bộ đệm
10.1.2.5.7. CX2341X_OSD_SET_OSD_COORDS¶
Số đếm: 71/0x47
10.1.2.5.7.1. Sự miêu tả¶
Gán tọa độ vùng OSD để ghép vào video
10.1.2.5.7.2. Thông số[0]¶
địa chỉ bộ đệm
10.1.2.5.7.3. Thông số[1]¶
bước đệm tính bằng pixel
10.1.2.5.7.4. Thông số[2]¶
dòng trong bộ đệm
10.1.2.5.7.5. Tham số [3]¶
bù ngang
10.1.2.5.7.6. Thông số[4]¶
bù dọc
10.1.2.5.8. CX2341X_OSD_GET_SCREEN_COORDS¶
Số đếm: 72/0x48
10.1.2.5.8.1. Sự miêu tả¶
Truy xuất tọa độ vùng màn hình OSD
10.1.2.5.8.2. Kết quả[0]¶
phần bù ngang trên cùng bên trái
10.1.2.5.8.3. Kết quả[1]¶
phần bù dọc trên cùng bên trái
10.1.2.5.8.4. Kết quả[2]¶
phần bù ngang phía dưới bên phải
10.1.2.5.8.5. Kết quả[3]¶
phần bù dọc phía dưới bên phải
10.1.2.5.9. CX2341X_OSD_SET_SCREEN_COORDS¶
Số đếm: 73/0x49
10.1.2.5.9.1. Sự miêu tả¶
Gán tọa độ vùng màn hình cần ghép với video
10.1.2.5.9.2. Thông số[0]¶
phần bù ngang trên cùng bên trái
10.1.2.5.9.3. Thông số[1]¶
phần bù dọc trên cùng bên trái
10.1.2.5.9.4. Thông số[2]¶
độ lệch ngang phía dưới bên trái
10.1.2.5.9.5. Tham số [3]¶
phần bù dọc phía dưới bên trái
10.1.2.5.10. CX2341X_OSD_GET_GLOBAL_ALPHA¶
Số đếm: 74/0x4A
10.1.2.5.10.1. Sự miêu tả¶
Truy xuất alpha toàn cầu OSD
10.1.2.5.10.2. Kết quả[0]¶
alpha toàn cầu: 0=tắt, 1=bật
10.1.2.5.10.3. Kết quả[1]¶
bit 0:7 alpha toàn cầu
10.1.2.5.11. CX2341X_OSD_SET_GLOBAL_ALPHA¶
Số đếm: 75/0x4B
10.1.2.5.11.1. Sự miêu tả¶
Cập nhật alpha toàn cầu
10.1.2.5.11.2. Thông số[0]¶
alpha toàn cầu: 0=tắt, 1=bật
10.1.2.5.11.3. Thông số[1]¶
alpha toàn cầu (8 bit)
10.1.2.5.11.4. Thông số[2]¶
alpha cục bộ: 0=bật, 1=tắt
10.1.2.5.12. CX2341X_OSD_SET_BLEND_COORDS¶
Số đếm: 78/0x4C
10.1.2.5.12.1. Sự miêu tả¶
Di chuyển điểm bắt đầu của vùng hòa trộn trong vùng đệm hiển thị
10.1.2.5.12.2. Thông số[0]¶
bù ngang trong bộ đệm
10.1.2.5.12.3. Thông số[1]¶
bù dọc trong bộ đệm
10.1.2.5.13. CX2341X_OSD_GET_FLICKER_STATE¶
Số đếm: 79/0x4F
10.1.2.5.13.1. Sự miêu tả¶
Truy xuất trạng thái mô-đun giảm nhấp nháy
10.1.2.5.13.2. Kết quả[0]¶
trạng thái nhấp nháy: 0=tắt, 1=bật
10.1.2.5.14. CX2341X_OSD_SET_FLICKER_STATE¶
Số đếm: 80/0x50
10.1.2.5.14.1. Sự miêu tả¶
Đặt trạng thái mô-đun giảm nhấp nháy
10.1.2.5.14.2. Thông số[0]¶
Trạng thái: 0=tắt, 1=bật
10.1.2.5.15. CX2341X_OSD_BLT_COPY¶
Số đếm: 82/0x52
10.1.2.5.15.1. Sự miêu tả¶
Bản sao BLT
10.1.2.5.15.2. Thông số[0]¶
'0000' zero
'0001' ~destination AND ~source
'0010' ~destination AND source
'0011' ~destination
'0100' destination AND ~source
'0101' ~source
'0110' destination XOR source
'0111' ~destination OR ~source
'1000' ~destination AND ~source
'1001' destination XNOR source
'1010' source
'1011' ~destination OR source
'1100' destination
'1101' destination OR ~source
'1110' destination OR source
'1111' one
10.1.2.5.15.3. Thông số[1]¶
Kết quả pha trộn alpha
‘01’ nguồn_alpha
‘10’ đích_alpha
‘11’ nguồn_alpha*destination_alpha+1 (không nếu cả alpha nguồn và đích đều bằng 0)
10.1.2.5.15.4. Thông số[2]¶
'00' output_pixel = source_pixel
'01' if source_alpha=0:
output_pixel = destination_pixel
if 256 > source_alpha > 1:
output_pixel = ((source_alpha + 1)*source_pixel +
(255 - source_alpha)*destination_pixel)/256
'10' if destination_alpha=0:
output_pixel = source_pixel
if 255 > destination_alpha > 0:
output_pixel = ((255 - destination_alpha)*source_pixel +
(destination_alpha + 1)*destination_pixel)/256
'11' if source_alpha=0:
source_temp = 0
if source_alpha=255:
source_temp = source_pixel*256
if 255 > source_alpha > 0:
source_temp = source_pixel*(source_alpha + 1)
if destination_alpha=0:
destination_temp = 0
if destination_alpha=255:
destination_temp = destination_pixel*256
if 255 > destination_alpha > 0:
destination_temp = destination_pixel*(destination_alpha + 1)
output_pixel = (source_temp + destination_temp)/256
10.1.2.5.15.5. Tham số [3]¶
chiều rộng
10.1.2.5.15.6. Thông số[4]¶
chiều cao
10.1.2.5.15.7. Thông số[5]¶
mặt nạ pixel đích
10.1.2.5.15.8. Tham số [6]¶
địa chỉ bắt đầu hình chữ nhật đích
10.1.2.5.15.9. Thông số [7]¶
bước tiến đích trong dwords
10.1.2.5.15.10. Tham số [8]¶
bước tiến nguồn trong dwords
10.1.2.5.15.11. Thông số[9]¶
địa chỉ bắt đầu hình chữ nhật nguồn
10.1.2.5.16. CX2341X_OSD_BLT_FILL¶
Số đếm: 83/0x53
10.1.2.5.16.1. Sự miêu tả¶
Màu tô BLT
10.1.2.5.16.2. Thông số[0]¶
Tương tự như Param[0] trên API 0x52
10.1.2.5.16.3. Thông số[1]¶
Tương tự như Param[1] trên API 0x52
10.1.2.5.16.4. Thông số[2]¶
Tương tự như Param[2] trên API 0x52
10.1.2.5.16.5. Tham số [3]¶
chiều rộng
10.1.2.5.16.6. Thông số[4]¶
chiều cao
10.1.2.5.16.7. Thông số[5]¶
mặt nạ pixel đích
10.1.2.5.16.8. Tham số [6]¶
địa chỉ bắt đầu hình chữ nhật đích
10.1.2.5.16.9. Thông số [7]¶
bước tiến đích trong dwords
10.1.2.5.16.10. Tham số [8]¶
giá trị tô màu
10.1.2.5.17. CX2341X_OSD_BLT_TEXT¶
Số đếm: 84/0x54
10.1.2.5.17.1. Sự miêu tả¶
BLT cho nguồn văn bản alpha 8 bit
10.1.2.5.17.2. Thông số[0]¶
Tương tự như Param[0] trên API 0x52
10.1.2.5.17.3. Thông số[1]¶
Tương tự như Param[1] trên API 0x52
10.1.2.5.17.4. Thông số[2]¶
Tương tự như Param[2] trên API 0x52
10.1.2.5.17.5. Tham số [3]¶
chiều rộng
10.1.2.5.17.6. Thông số[4]¶
chiều cao
10.1.2.5.17.7. Thông số[5]¶
mặt nạ pixel đích
10.1.2.5.17.8. Tham số [6]¶
địa chỉ bắt đầu hình chữ nhật đích
10.1.2.5.17.9. Thông số [7]¶
bước tiến đích trong dwords
10.1.2.5.17.10. Tham số [8]¶
bước tiến nguồn trong dwords
10.1.2.5.17.11. Thông số[9]¶
địa chỉ bắt đầu hình chữ nhật nguồn
10.1.2.5.17.12. Tham số [10]¶
giá trị tô màu
10.1.2.5.18. CX2341X_OSD_SET_FRAMEBUFFER_WINDOW¶
Số đếm: 86/0x56
10.1.2.5.18.1. Sự miêu tả¶
Định vị cửa sổ đầu ra chính trên màn hình. Tọa độ phải là sao cho toàn bộ cửa sổ vừa khít với màn hình.
10.1.2.5.18.2. Thông số[0]¶
chiều rộng cửa sổ
10.1.2.5.18.3. Thông số[1]¶
chiều cao cửa sổ
10.1.2.5.18.4. Thông số[2]¶
góc trên cùng bên trái của cửa sổ lệch ngang
10.1.2.5.18.5. Tham số [3]¶
góc trên cùng bên trái của cửa sổ offset theo chiều dọc
10.1.2.5.19. CX2341X_OSD_SET_CHROMA_KEY¶
Số đếm: 96/0x60
10.1.2.5.19.1. Sự miêu tả¶
Công tắc phím Chroma và màu sắc
10.1.2.5.19.2. Thông số[0]¶
trạng thái: 0=tắt, 1=bật
10.1.2.5.19.3. Thông số[1]¶
màu sắc
10.1.2.5.20. CX2341X_OSD_GET_ALPHA_CONTENT_INDEX¶
Số đếm: 97/0x61
10.1.2.5.20.1. Sự miêu tả¶
Truy xuất chỉ mục nội dung alpha
10.1.2.5.20.2. Kết quả[0]¶
chỉ mục nội dung alpha, Phạm vi 0:15
10.1.2.5.21. CX2341X_OSD_SET_ALPHA_CONTENT_INDEX¶
Số đếm: 98/0x62
10.1.2.5.21.1. Sự miêu tả¶
Chỉ định chỉ mục nội dung alpha
10.1.2.5.21.2. Thông số[0]¶
chỉ mục nội dung alpha, phạm vi 0:15
10.1.2.6. Mô tả phần mềm mã hóa API¶
10.1.2.6.1. CX2341X_ENC_PING_FW¶
Số đếm: 128/0x80
10.1.2.6.1.1. Sự miêu tả¶
Không làm gì cả. Có thể được sử dụng để kiểm tra xem phần sụn có phản hồi hay không.
10.1.2.6.2. CX2341X_ENC_START_CAPTURE¶
Số đếm: 129/0x81
10.1.2.6.2.1. Sự miêu tả¶
Bắt đầu thu thập dữ liệu video, âm thanh và/hoặc VBI. Tất cả mã hóa các tham số phải được khởi tạo trước lệnh gọi API này. Chụp khung hình liên tục hoặc cho đến khi chụp được một số khung hình xác định trước.
10.1.2.6.2.2. Thông số[0]¶
Loại luồng ghi:
- 0=MPEG
1=Thô
2=Thông qua thô
3=VBI
10.1.2.6.2.3. Thông số[1]¶
Mặt nạ bit:
- Bit 0 khi được đặt, chụp YUV
Bit 1 khi được đặt, ghi lại âm thanh PCM
Bit 2 khi được thiết lập sẽ ghi lại VBI (giống như param[0]=3)
Bit 3 khi được đặt thì đích chụp là bộ giải mã (giống như param[0]=2)
Bit 4 khi được đặt thì đích chụp là máy chủ
Lưu ý
this parameter is only meaningful for RAW capture type.
10.1.2.6.3. CX2341X_ENC_STOP_CAPTURE¶
Số đếm: 130/0x82
10.1.2.6.3.1. Sự miêu tả¶
Kết thúc quá trình chụp đang diễn ra
10.1.2.6.3.2. Thông số[0]¶
0=dừng ở cuối GOP (tạo IRQ)
1=dừng ngay lập tức (không có IRQ)
10.1.2.6.3.3. Thông số[1]¶
Loại luồng cần dừng, xem thông số [0] của API 0x81
10.1.2.6.3.4. Thông số[2]¶
Loại phụ, xem thông số [1] của API 0x81
10.1.2.6.4. CX2341X_ENC_SET_AUDIO_ID¶
Số đếm: 137/0x89
10.1.2.6.4.1. Sự miêu tả¶
Gán ID luồng truyền tải của luồng âm thanh được mã hóa
10.1.2.6.4.2. Thông số[0]¶
ID luồng âm thanh
10.1.2.6.5. CX2341X_ENC_SET_VIDEO_ID¶
Số đếm: 139/0x8B
10.1.2.6.5.1. Sự miêu tả¶
Đặt ID luồng truyền tải video
10.1.2.6.5.2. Thông số[0]¶
ID luồng video
10.1.2.6.6. CX2341X_ENC_SET_PCR_ID¶
Số đếm: 141/0x8D
10.1.2.6.6.1. Sự miêu tả¶
Gán ID luồng truyền tải cho các gói PCR
10.1.2.6.6.2. Thông số[0]¶
ID luồng PCR
10.1.2.6.7. CX2341X_ENC_SET_FRAME_RATE¶
Số đếm: 143/0x8F
10.1.2.6.7.1. Sự miêu tả¶
Đặt khung hình video mỗi giây. Thay đổi xảy ra khi bắt đầu GOP mới.
10.1.2.6.7.2. Thông số[0]¶
0=30 khung hình/giây
1=25 khung hình/giây
10.1.2.6.8. CX2341X_ENC_SET_FRAME_SIZE¶
Số đếm: 145/0x91
10.1.2.6.8.1. Sự miêu tả¶
Chọn độ phân giải mã hóa luồng video.
10.1.2.6.8.2. Thông số[0]¶
Chiều cao trong dòng. Mặc định 480
10.1.2.6.8.3. Thông số[1]¶
Chiều rộng tính bằng pixel. Mặc định 720
10.1.2.6.9. CX2341X_ENC_SET_BIT_RATE¶
Số đếm: 149/0x95
10.1.2.6.9.1. Sự miêu tả¶
Chỉ định tốc độ bit luồng video trung bình.
10.1.2.6.9.2. Thông số[0]¶
0=tốc độ bit thay đổi, 1=tốc độ bit không đổi
10.1.2.6.9.3. Thông số[1]¶
tốc độ bit tính bằng bit trên giây
10.1.2.6.9.4. Thông số[2]¶
tốc độ bit cao nhất tính bằng bit trên giây, chia cho 400
10.1.2.6.9.5. Tham số [3]¶
Tốc độ bit Mux tính bằng số bit trên giây, chia cho 400. Có thể bằng 0 (mặc định).
10.1.2.6.9.6. Thông số[4]¶
Kiểm soát tốc độ Phần đệm VBR
10.1.2.6.9.7. Thông số[5]¶
Bộ đệm VBV được bộ mã hóa sử dụng
Lưu ý
Param[3] and Param[4] seem to be always 0
Param[5] doesn’t seem to be used.
10.1.2.6.10. CX2341X_ENC_SET_GOP_PROPERTIES¶
Số đếm: 151/0x97
10.1.2.6.10.1. Sự miêu tả¶
Thiết lập cấu trúc GOP
10.1.2.6.10.2. Thông số[0]¶
Kích thước GOP (tối đa là 34)
10.1.2.6.10.3. Thông số[1]¶
Số khung B giữa khung I và khung P cộng thêm 1. Ví dụ: IBBPBBPBBPBB --> GOP kích thước: 12, số khung B: 2+1 = 3
Lưu ý
GOP size must be a multiple of (B-frames + 1).
10.1.2.6.11. CX2341X_ENC_SET_ASPECT_RATIO¶
Số đếm: 153/0x99
10.1.2.6.11.1. Sự miêu tả¶
Đặt tỷ lệ khung hình mã hóa. Những thay đổi về tỷ lệ khung hình có hiệu lực khi bắt đầu GOP tiếp theo.
10.1.2.6.11.2. Thông số[0]¶
‘0000’ bị cấm
‘0001’ hình vuông 1:1
‘0010’ 4:3
‘0011’ 16:9
‘0100’ 2.21:1
‘0101’ đến ‘1111’ dành riêng
10.1.2.6.12. CX2341X_ENC_SET_DNR_FILTER_MODE¶
Số đếm: 155/0x9B
10.1.2.6.12.1. Sự miêu tả¶
Chỉ định chế độ vận hành Giảm tiếng ồn động
10.1.2.6.12.2. Thông số[0]¶
Bit0: Bộ lọc không gian, set=auto, clear=manual Bit1: Bộ lọc tạm thời, set=auto, clear=manual
10.1.2.6.12.3. Thông số[1]¶
Bộ lọc trung vị:
0=Đã tắt
1=Nằm ngang
2=Dọc
3=Chân trời/Đỉnh
4=Đường chéo
10.1.2.6.13. CX2341X_ENC_SET_DNR_FILTER_PROPS¶
Số đếm: 157/0x9D
10.1.2.6.13.1. Sự miêu tả¶
Các giá trị bộ lọc Giảm nhiễu động này chỉ có ý nghĩa khi bộ lọc tương ứng được đặt thành “thủ công” (Xem API 0x9B)
10.1.2.6.13.2. Thông số[0]¶
Bộ lọc không gian: mặc định 0, phạm vi 0:15
10.1.2.6.13.3. Thông số[1]¶
Bộ lọc tạm thời: mặc định 0, phạm vi 0:31
10.1.2.6.14. CX2341X_ENC_SET_CORING_LEVELS¶
Số đếm: 159/0x9F
10.1.2.6.14.1. Sự miêu tả¶
Chỉ định các thuộc tính bộ lọc trung bình Giảm tiếng ồn động.
10.1.2.6.14.2. Thông số[0]¶
Ngưỡng trên đó bộ lọc độ sáng trung bình được bật. Mặc định: 0, phạm vi 0:255
10.1.2.6.14.3. Thông số[1]¶
Ngưỡng dưới mức mà bộ lọc độ sáng trung bình được bật. Mặc định: 255, phạm vi 0:255
10.1.2.6.14.4. Thông số[2]¶
Ngưỡng trên đó bộ lọc trung vị sắc độ được bật. Mặc định: 0, phạm vi 0:255
10.1.2.6.14.5. Tham số [3]¶
Ngưỡng dưới mức mà bộ lọc trung vị sắc độ được bật. Mặc định: 255, phạm vi 0:255
10.1.2.6.15. CX2341X_ENC_SET_SPATIAL_FILTER_TYPE¶
Số đếm: 161/0xA1
10.1.2.6.15.1. Sự miêu tả¶
Chỉ định các tham số lọc trước không gian
10.1.2.6.15.2. Thông số[0]¶
Bộ lọc độ sáng
0=Tắt
1=1D Ngang
2=1D Dọc
3=2D H/V Có thể tách rời (mặc định)
4=2D Đối xứng không thể tách rời
10.1.2.6.15.3. Thông số[1]¶
Bộ lọc sắc độ
0=Tắt
1=1D Ngang (mặc định)
10.1.2.6.16. CX2341X_ENC_SET_VBI_LINE¶
Số đếm: 183/0xB7
10.1.2.6.16.1. Sự miêu tả¶
Chọn số dòng VBI.
10.1.2.6.16.2. Thông số[0]¶
Số dòng bit 0:4
Bit 31 0=top_field, 1=bottom_field
Bit 0:31 all set chỉ định “tất cả các dòng”
10.1.2.6.16.3. Thông số[1]¶
Tính năng thông tin dòng VBI: 0=đã tắt, 1=đã bật
10.1.2.6.16.4. Thông số[2]¶
Cắt lát: 0=Không có, 1=Phụ đề chi tiết Hầu như chắc chắn không được thực hiện. Đặt thành 0.
10.1.2.6.16.5. Tham số [3]¶
Các mẫu độ chói trong dòng này. Hầu như chắc chắn không được thực hiện. Đặt thành 0.
10.1.2.6.16.6. Thông số[4]¶
Các mẫu sắc độ trong dòng này Hầu như chắc chắn không được thực hiện. Đặt thành 0.
10.1.2.6.17. CX2341X_ENC_SET_STREAM_TYPE¶
Số đếm: 185/0xB9
10.1.2.6.17.1. Sự miêu tả¶
Chỉ định loại luồng
Lưu ý
Transport stream is not working in recent firmwares. And in older firmwares the timestamps in the TS seem to be unreliable.
10.1.2.6.17.2. Thông số[0]¶
0=Luồng chương trình
1=Luồng truyền tải
Luồng 2=MPEG1
3=PES Luồng A/V
5=PES Luồng video
7=PES Luồng âm thanh
10=DVD luồng
11=VCD luồng
12=SVCD luồng
13=DVD_S1 luồng
14=DVD_S2 luồng
10.1.2.6.18. CX2341X_ENC_SET_OUTPUT_PORT¶
Số đếm: 187/0xBB
10.1.2.6.18.1. Sự miêu tả¶
Chỉ định cổng đầu ra luồng. Thông thường 0 khi dữ liệu được sao chép qua bus PCI (DMA) và 1 khi dữ liệu được truyền sang chip khác (pvrusb và cx88-blackbird).
10.1.2.6.18.2. Thông số[0]¶
0=Bộ nhớ (mặc định)
1=Truyền phát
2=Nối tiếp
10.1.2.6.18.3. Thông số[1]¶
Không xác định, nhưng để giá trị này về 0 có vẻ hiệu quả nhất. Dấu hiệu cho thấy rằng điều này có thể liên quan đến sự hỗ trợ của USB, mặc dù vượt qua bất cứ điều gì ngoại trừ 0 chỉ phá vỡ mọi thứ.
10.1.2.6.19. CX2341X_ENC_SET_AUDIO_PROPERTIES¶
Số đếm: 189/0xBD
10.1.2.6.19.1. Sự miêu tả¶
Đặt thuộc tính luồng âm thanh, có thể được gọi trong khi đang tiến hành mã hóa.
Lưu ý
All bitfields are consistent with ISO11172 documentation except bits 2:3 which ISO docs define as:
‘11’ Layer I
‘10’ Layer II
‘01’ Layer III
‘00’ Undefined
This discrepancy may indicate a possible error in the documentation. Testing indicated that only Layer II is actually working, and that the minimum bitrate should be 192 kbps.
10.1.2.6.19.2. Thông số[0]¶
Mặt nạ bit:
0:1 '00' 44.1Khz
'01' 48Khz
'10' 32Khz
'11' reserved
2:3 '01'=Layer I
'10'=Layer II
4:7 Bitrate:
Index | Layer I | Layer II
------+-------------+------------
'0000' | free format | free format
'0001' | 32 kbit/s | 32 kbit/s
'0010' | 64 kbit/s | 48 kbit/s
'0011' | 96 kbit/s | 56 kbit/s
'0100' | 128 kbit/s | 64 kbit/s
'0101' | 160 kbit/s | 80 kbit/s
'0110' | 192 kbit/s | 96 kbit/s
'0111' | 224 kbit/s | 112 kbit/s
'1000' | 256 kbit/s | 128 kbit/s
'1001' | 288 kbit/s | 160 kbit/s
'1010' | 320 kbit/s | 192 kbit/s
'1011' | 352 kbit/s | 224 kbit/s
'1100' | 384 kbit/s | 256 kbit/s
'1101' | 416 kbit/s | 320 kbit/s
'1110' | 448 kbit/s | 384 kbit/s
.. note::
For Layer II, not all combinations of total bitrate
and mode are allowed. See ISO11172-3 3-Annex B,
Table 3-B.2
8:9 '00'=Stereo
'01'=JointStereo
'10'=Dual
'11'=Mono
.. note::
The cx23415 cannot decode Joint Stereo properly.
10:11 Mode Extension used in joint_stereo mode.
In Layer I and II they indicate which subbands are in
intensity_stereo. All other subbands are coded in stereo.
'00' subbands 4-31 in intensity_stereo, bound==4
'01' subbands 8-31 in intensity_stereo, bound==8
'10' subbands 12-31 in intensity_stereo, bound==12
'11' subbands 16-31 in intensity_stereo, bound==16
12:13 Emphasis:
'00' None
'01' 50/15uS
'10' reserved
'11' CCITT J.17
14 CRC:
'0' off
'1' on
15 Copyright:
'0' off
'1' on
16 Generation:
'0' copy
'1' original
10.1.2.6.20. CX2341X_ENC_HALT_FW¶
Số đếm: 195/0xC3
10.1.2.6.20.1. Sự miêu tả¶
Phần sụn bị tạm dừng và không có cuộc gọi API nào được phục vụ cho đến khi firmware được tải lên lại.
10.1.2.6.21. CX2341X_ENC_GET_VERSION¶
Số đếm: 196/0xC4
10.1.2.6.21.1. Sự miêu tả¶
Trả về phiên bản phần mềm mã hóa.
10.1.2.6.21.2. Kết quả[0]¶
Phiên bản bitmask: - Xây dựng bit 0:15 - Bit 16:23 thứ - Bit 24:31 chính
10.1.2.6.22. CX2341X_ENC_SET_GOP_CLOSURE¶
Số đếm: 197/0xC5
10.1.2.6.22.1. Sự miêu tả¶
Gán thuộc tính đóng/mở GOP.
10.1.2.6.22.2. Thông số[0]¶
0=Mở
1=Đã đóng
10.1.2.6.23. CX2341X_ENC_GET_SEQ_END¶
Số đếm: 198/0xC6
10.1.2.6.23.1. Sự miêu tả¶
Lấy mã kết thúc chuỗi của bộ đệm của bộ mã hóa. Khi bị bắt được bắt đầu, một số ngắt vẫn được tạo ra, ngắt cuối cùng sẽ có Kết quả [0] được đặt thành 1 và Kết quả [1] sẽ chứa kích thước của bộ đệm.
10.1.2.6.23.2. Kết quả[0]¶
Trạng thái truyền (1 nếu là bộ đệm cuối cùng)
10.1.2.6.23.3. Kết quả[1]¶
Nếu Kết quả[0] là 1, thì kết quả này chứa kích thước của bộ đệm cuối cùng, không xác định mặt khác.
10.1.2.6.24. CX2341X_ENC_SET_PGM_INDEX_INFO¶
Số đếm: 199/0xC7
10.1.2.6.24.1. Sự miêu tả¶
Đặt thông tin chỉ mục chương trình. Thông tin được lưu trữ như sau:
struct info {
u32 length; // Length of this frame
u32 offset_low; // Offset in the file of the
u32 offset_high; // start of this frame
u32 mask1; // Bits 0-2 are the type mask:
// 1=I, 2=P, 4=B
// 0=End of Program Index, other fields
// are invalid.
u32 pts; // The PTS of the frame
u32 mask2; // Bit 0 is bit 32 of the pts.
};
u32 table_ptr;
struct info index[400];
table_ptr là địa chỉ bộ nhớ bộ mã hóa trong bảng được Các mục ZZ0000ZZ sẽ được viết.
Lưu ý
This is a ringbuffer, so the table_ptr will wraparound.
10.1.2.6.24.2. Thông số[0]¶
Mặt nạ hình ảnh: - 0=Không thu thập chỉ mục - 1=I đóng khung - 3=khung hình I,P - 7=Khung hình I,P,B
(Dường như bị bỏ qua, nó luôn lập chỉ mục các khung I, P và B)
10.1.2.6.24.3. Thông số[1]¶
Các yếu tố được yêu cầu (tối đa 400)
10.1.2.6.24.4. Kết quả[0]¶
Offset trong bộ nhớ mã hóa ở đầu bảng.
10.1.2.6.24.5. Kết quả[1]¶
Số phần tử được phân bổ tối đa là Param[1]
10.1.2.6.25. CX2341X_ENC_SET_VBI_CONFIG¶
Số đếm: 200/0xC8
10.1.2.6.25.1. Sự miêu tả¶
Định cấu hình cài đặt VBI
10.1.2.6.25.2. Thông số[0]¶
Bản đồ bit:
0 Mode '0' Sliced, '1' Raw
1:3 Insertion:
'000' insert in extension & user data
'001' insert in private packets
'010' separate stream and user data
'111' separate stream and private data
8:15 Stream ID (normally 0xBD)
10.1.2.6.25.3. Thông số[1]¶
Số khung hình trên mỗi ngắt (tối đa 8). Chỉ hợp lệ ở chế độ thô.
10.1.2.6.25.4. Thông số[2]¶
Tổng số khung VBI thô. Chỉ hợp lệ ở chế độ thô.
10.1.2.6.25.5. Tham số [3]¶
Mã bắt đầu
10.1.2.6.25.6. Thông số[4]¶
Mã dừng
10.1.2.6.25.7. Thông số[5]¶
Dòng trên mỗi khung
10.1.2.6.25.8. Tham số [6]¶
Byte trên mỗi dòng
10.1.2.6.25.9. Kết quả[0]¶
Các khung hình được quan sát trên mỗi lần ngắt chỉ ở chế độ thô. Cơn thịnh nộ 1 đến Param[1]
10.1.2.6.25.10. Kết quả[1]¶
Số lượng khung hình được quan sát ở chế độ thô. Phạm vi 1 đến Param[2]
10.1.2.6.25.11. Kết quả[2]¶
Bù bộ nhớ để bắt đầu hoặc dữ liệu VBI thô
10.1.2.6.26. CX2341X_ENC_SET_DMA_BLOCK_SIZE¶
Số đếm: 201/0xC9
10.1.2.6.26.1. Sự miêu tả¶
Đặt kích thước khối truyền DMA
10.1.2.6.26.2. Thông số[0]¶
Kích thước khối truyền DMA tính bằng byte hoặc khung. Khi đơn vị là byte, kích thước khối được hỗ trợ là 2^7, 2^8 và 2^9 byte.
10.1.2.6.26.3. Thông số[1]¶
Đơn vị: 0=byte, 1=khung
10.1.2.6.27. CX2341X_ENC_GET_PREV_DMA_INFO_MB_10¶
Số đếm: 202/0xCA
10.1.2.6.27.1. Sự miêu tả¶
Trả về thông tin về lần chuyển DMA trước đó kết hợp với bit 27 của mặt nạ ngắt. Sử dụng hộp thư 10.
10.1.2.6.27.2. Kết quả[0]¶
Loại luồng
10.1.2.6.27.3. Kết quả[1]¶
Bù đắp địa chỉ
10.1.2.6.27.4. Kết quả[2]¶
Kích thước chuyển tối đa
10.1.2.6.28. CX2341X_ENC_GET_PREV_DMA_INFO_MB_9¶
Số đếm: 203/0xCB
10.1.2.6.28.1. Sự miêu tả¶
Trả về thông tin về lần chuyển DMA trước đó kết hợp với bit 27 hoặc 18 của mặt nạ ngắt. Sử dụng hộp thư 9.
10.1.2.6.28.2. Kết quả[0]¶
Các bit trạng thái: - 0 lần đọc hoàn thành - 1 bài viết đã hoàn thành - Lỗi đọc 2 DMA - 3 lỗi ghi DMA - 4 lỗi mảng Scatter-Gather
10.1.2.6.28.3. Kết quả[1]¶
Loại DMA
10.1.2.6.28.4. Kết quả[2]¶
Bit dấu thời gian trình bày 0..31
10.1.2.6.28.5. Kết quả[3]¶
Dấu thời gian trình bày bit 32
10.1.2.6.29. CX2341X_ENC_SCHED_DMA_TO_HOST¶
Số đếm: 204/0xCC
10.1.2.6.29.1. Sự miêu tả¶
Thiết lập DMA để vận hành máy chủ
10.1.2.6.29.2. Thông số[0]¶
Địa chỉ bộ nhớ của danh sách liên kết
10.1.2.6.29.3. Thông số[1]¶
Độ dài của danh sách liên kết (wtf: đơn vị nào ???)
10.1.2.6.29.4. Thông số[2]¶
Loại DMA (0=MPEG)
10.1.2.6.30. CX2341X_ENC_INITIALIZE_INPUT¶
Số đếm: 205/0xCD
10.1.2.6.30.1. Sự miêu tả¶
Khởi tạo đầu vào video
10.1.2.6.31. CX2341X_ENC_SET_FRAME_DROP_RATE¶
Số đếm: 208/0xD0
10.1.2.6.31.1. Sự miêu tả¶
Đối với mỗi khung hình được chụp, hãy bỏ qua số lượng khung hình được chỉ định.
10.1.2.6.31.2. Thông số[0]¶
Số khung hình cần bỏ qua
10.1.2.6.32. CX2341X_ENC_PAUSE_ENCODER¶
Số đếm: 210/0xD2
10.1.2.6.32.1. Sự miêu tả¶
Trong điều kiện tạm dừng, tất cả các khung hình sẽ bị loại bỏ thay vì được mã hóa.
10.1.2.6.32.2. Thông số[0]¶
0=Tạm dừng mã hóa
1=Tiếp tục mã hóa
10.1.2.6.33. CX2341X_ENC_REFRESH_INPUT¶
Số đếm: 211/0xD3
10.1.2.6.33.1. Sự miêu tả¶
Làm mới đầu vào video
10.1.2.6.34. CX2341X_ENC_SET_COPYRIGHT¶
Số đếm: 212/0xD4
10.1.2.6.34.1. Sự miêu tả¶
Đặt thuộc tính bản quyền luồng
10.1.2.6.34.2. Thông số[0]¶
0=Luồng không có bản quyền
1=Luồng có bản quyền
10.1.2.6.35. CX2341X_ENC_SET_EVENT_NOTIFICATION¶
Số đếm: 213/0xD5
10.1.2.6.35.1. Sự miêu tả¶
Thiết lập chương trình cơ sở để thông báo cho máy chủ về một sự kiện cụ thể. Máy chủ phải vạch mặt bit ngắt.
10.1.2.6.35.2. Thông số[0]¶
Sự kiện (0=làm mới đầu vào bộ mã hóa)
10.1.2.6.35.3. Thông số[1]¶
Thông báo 0=đã tắt 1=đã bật
10.1.2.6.35.4. Thông số[2]¶
Bit ngắt
10.1.2.6.35.5. Tham số [3]¶
Khe cắm hộp thư, -1 nếu không cần hộp thư.
10.1.2.6.36. CX2341X_ENC_SET_NUM_VSYNC_LINES¶
Số đếm: 214/0xD6
10.1.2.6.36.1. Sự miêu tả¶
Tùy thuộc vào bộ giải mã video analog được sử dụng, điều này sẽ ấn định số dòng cho trường 1 và 2.
10.1.2.6.36.2. Thông số[0]¶
Trường 1 số dòng: - 0x00EF cho SAA7114 - 0x00F0 cho SAA7115 - 0x0105 cho Micronas
10.1.2.6.36.3. Thông số[1]¶
Trường 2 số dòng: - 0x00EF cho SAA7114 - 0x00F0 cho SAA7115 - 0x0106 cho Micronas
10.1.2.6.37. CX2341X_ENC_SET_PLACEHOLDER¶
Số đếm: 215/0xD7
10.1.2.6.37.1. Sự miêu tả¶
Cung cấp cơ chế chèn dữ liệu người dùng tùy chỉnh vào luồng MPEG.
10.1.2.6.37.2. Thông số[0]¶
0=tiện ích mở rộng và dữ liệu người dùng
1=gói riêng có ID luồng 0xBD
10.1.2.6.37.3. Thông số[1]¶
Tốc độ chèn dữ liệu, tính bằng đơn vị khung (đối với gói riêng) hoặc GOP (đối với dữ liệu mở rộng và người dùng)
10.1.2.6.37.4. Thông số[2]¶
Số lượng dữ liệu DWORD (bên dưới) cần chèn
10.1.2.6.37.5. Tham số [3]¶
Dữ liệu tùy chỉnh 0
10.1.2.6.37.6. Thông số[4]¶
Dữ liệu tùy chỉnh 1
10.1.2.6.37.7. Thông số[5]¶
Dữ liệu tùy chỉnh 2
10.1.2.6.37.8. Tham số [6]¶
Dữ liệu tùy chỉnh 3
10.1.2.6.37.9. Thông số [7]¶
Dữ liệu tùy chỉnh 4
10.1.2.6.37.10. Tham số [8]¶
Dữ liệu tùy chỉnh 5
10.1.2.6.37.11. Thông số[9]¶
Dữ liệu tùy chỉnh 6
10.1.2.6.37.12. Tham số [10]¶
Dữ liệu tùy chỉnh 7
10.1.2.6.37.13. Tham số [11]¶
Dữ liệu tùy chỉnh 8
10.1.2.6.38. CX2341X_ENC_MUTE_VIDEO¶
Số đếm: 217/0xD9
10.1.2.6.38.1. Sự miêu tả¶
Tắt tiếng video
10.1.2.6.38.2. Thông số[0]¶
Cách sử dụng bit:
0 '0'=video not muted
'1'=video muted, creates frames with the YUV color defined below
1:7 Unused
8:15 V chrominance information
16:23 U chrominance information
24:31 Y luminance information
10.1.2.6.39. CX2341X_ENC_MUTE_AUDIO¶
Enum: 218/0xDA
10.1.2.6.39.1. Sự miêu tả¶
Tắt tiếng âm thanh
10.1.2.6.39.2. Thông số[0]¶
0=âm thanh không bị tắt tiếng
1=âm thanh bị tắt tiếng (tạo ra luồng âm thanh mpeg im lặng)
10.1.2.6.40. CX2341X_ENC_SET_VERT_CROP_LINE¶
Số đếm: 219/0xDB
10.1.2.6.40.1. Sự miêu tả¶
Điều gì đó liên quan đến ‘Đường cắt dọc’
10.1.2.6.40.2. Thông số[0]¶
Nếu saa7114 và chụp VBI thô và 60 Hz thì đặt thành 10001. Khác 0.
10.1.2.6.41. CX2341X_ENC_MISC¶
Số đếm: 220/0xDC
10.1.2.6.41.1. Sự miêu tả¶
Các hành động khác. Không biết 100% những gì nó làm. Nó thực sự là một loại cuộc gọi ioctl. Tham số đầu tiên là số lệnh, tham số thứ hai giá trị.
10.1.2.6.41.2. Thông số[0]¶
Số lệnh:
1=set initial SCR value when starting encoding (works).
2=set quality mode (apparently some test setting).
3=setup advanced VIM protection handling.
Always 1 for the cx23416 and 0 for cx23415.
4=generate DVD compatible PTS timestamps
5=USB flush mode
6=something to do with the quantization matrix
7=set navigation pack insertion for DVD: adds 0xbf (private stream 2)
packets to the MPEG. The size of these packets is 2048 bytes (including
the header of 6 bytes: 0x000001bf + length). The payload is zeroed and
it is up to the application to fill them in. These packets are apparently
inserted every four frames.
8=enable scene change detection (seems to be a failure)
9=set history parameters of the video input module
10=set input field order of VIM
11=set quantization matrix
12=reset audio interface after channel change or input switch (has no argument).
Needed for the cx2584x, not needed for the mspx4xx, but it doesn't seem to
do any harm calling it regardless.
13=set audio volume delay
14=set audio delay
10.1.2.6.41.3. Thông số[1]¶
Giá trị lệnh.
10.1.2.7. Phần mềm giải mã API mô tả¶
Lưu ý
this API is part of the decoder firmware, so it’s cx23415 only.
10.1.2.7.1. CX2341X_DEC_PING_FW¶
Số đếm: 0/0x00
10.1.2.7.1.1. Sự miêu tả¶
Cuộc gọi API này không làm gì cả. Nó có thể được sử dụng để kiểm tra xem phần sụn đang phản hồi.
10.1.2.7.2. CX2341X_DEC_START_PLAYBACK¶
Số đếm: 1/0x01
10.1.2.7.2.1. Sự miêu tả¶
Bắt đầu hoặc tiếp tục phát lại.
10.1.2.7.2.2. Thông số[0]¶
0 dựa trên số khung trong GOP để bắt đầu phát lại.
10.1.2.7.2.3. Thông số[1]¶
Chỉ định số lượng khung âm thanh bị tắt tiếng sẽ phát trước bình thường âm thanh tiếp tục. (Điều này không được triển khai trong phần sụn, để ở mức 0)
10.1.2.7.3. CX2341X_DEC_STOP_PLAYBACK¶
Số đếm: 2/0x02
10.1.2.7.3.1. Sự miêu tả¶
Kết thúc phát lại và xóa tất cả bộ đệm giải mã. Nếu PTS không bằng 0, quá trình phát lại dừng ở PTS được chỉ định.
10.1.2.7.3.2. Thông số[0]¶
Hiển thị 0=khung hình cuối cùng, 1=đen
Lưu ý
this takes effect immediately, so if you want to wait for a PTS, then use ‘0’, otherwise the screen goes to black at once. You can call this later (even if there is no playback) with a 1 value to set the screen to black.
10.1.2.7.3.3. Thông số[1]¶
PTS thấp
10.1.2.7.3.4. Thông số[2]¶
PTS cao
10.1.2.7.4. CX2341X_DEC_SET_PLAYBACK_SPEED¶
Số đếm: 3/0x03
10.1.2.7.4.1. Sự miêu tả¶
Luồng phát lại ở tốc độ khác với bình thường. Có hai chế độ hoạt động:
- Mượt mà: máy chủ truyền toàn bộ luồng và phần sụn không được sử dụng
khung.
Thô: máy chủ loại bỏ các khung dựa trên việc lập chỉ mục theo yêu cầu để đạt được tốc độ mong muốn.
10.1.2.7.4.2. Thông số[0]¶
Bitmap:
0:7 0 normal
1 fast only "1.5 times"
n nX fast, 1/nX slow
30 Framedrop:
'0' during 1.5 times play, every other B frame is dropped
'1' during 1.5 times play, stream is unchanged (bitrate
must not exceed 8mbps)
31 Speed:
'0' slow
'1' fast
Lưu ý
n is limited to 2. Anything higher does not result in faster playback. Instead the host should start dropping frames.
10.1.2.7.4.3. Thông số[1]¶
Hướng: 0=tiến, 1=lùi
Lưu ý
to make reverse playback work you have to write full GOPs in reverse order.
10.1.2.7.4.4. Thông số[2]¶
Picture mask:
1=I frames
3=I, P frames
7=I, P, B frames
10.1.2.7.4.5. Tham số [3]¶
B khung hình trên GOP (chỉ dành cho phát ngược)
Lưu ý
for reverse playback the Picture Mask should be set to I or I, P. Adding B frames to the mask will result in corrupt video. This field has to be set to the correct value in order to keep the timing correct.
10.1.2.7.4.6. Thông số[4]¶
Tắt tiếng âm thanh: 0=tắt, 1=bật
10.1.2.7.4.7. Thông số[5]¶
Hiển thị 0=khung, 1=trường
10.1.2.7.4.8. Tham số [6]¶
Chỉ định số khung âm thanh bị tắt tiếng sẽ phát trước âm thanh bình thường sơ yếu lý lịch. (Không được triển khai trong phần sụn, để ở mức 0)
10.1.2.7.5. CX2341X_DEC_STEP_VIDEO¶
Số đếm: 5/0x05
10.1.2.7.5.1. Sự miêu tả¶
Mỗi lệnh gọi tới API này sẽ chuyển quá trình phát lại sang thiết bị tiếp theo được xác định bên dưới theo hướng phát lại hiện tại.
10.1.2.7.5.2. Thông số[0]¶
0=khung, 1=trường trên cùng, 2=trường dưới cùng
10.1.2.7.6. CX2341X_DEC_SET_DMA_BLOCK_SIZE¶
Số đếm: 8/0x08
10.1.2.7.6.1. Sự miêu tả¶
Đặt kích thước khối truyền DMA. Đối trọng với API 0xC9
10.1.2.7.6.2. Thông số[0]¶
Kích thước khối truyền DMA tính bằng byte. Có thể chỉ định kích thước khác khi ban hành lệnh truyền DMA.
10.1.2.7.7. CX2341X_DEC_GET_XFER_INFO¶
Số đếm: 9/0x09
10.1.2.7.7.1. Sự miêu tả¶
Cuộc gọi API này có thể được sử dụng để phát hiện tình trạng kết thúc luồng.
10.1.2.7.7.2. Kết quả[0]¶
Loại luồng
10.1.2.7.7.3. Kết quả[1]¶
Địa chỉ bù đắp
10.1.2.7.7.4. Kết quả[2]¶
Số byte tối đa cần chuyển
10.1.2.7.7.5. Kết quả[3]¶
Bộ đệm đầy
10.1.2.7.8. CX2341X_DEC_GET_DMA_STATUS¶
Số đếm: 10/0x0A
10.1.2.7.8.1. Sự miêu tả¶
Trạng thái của lần chuyển DMA cuối cùng
10.1.2.7.8.2. Kết quả[0]¶
Bit 1 được đặt có nghĩa là quá trình truyền hoàn tất Bit 2 được đặt có nghĩa là lỗi DMA Đặt bit 3 có nghĩa là lỗi danh sách liên kết
10.1.2.7.8.3. Kết quả[1]¶
Loại DMA: 0=MPEG, 1=OSD, 2=YUV
10.1.2.7.9. CX2341X_DEC_SCHED_DMA_FROM_HOST¶
Số đếm: 11/0x0B
10.1.2.7.9.1. Sự miêu tả¶
Thiết lập DMA từ hoạt động của máy chủ. Đối trọng với API 0xCC
10.1.2.7.9.2. Thông số[0]¶
Địa chỉ bộ nhớ của danh sách liên kết
10.1.2.7.9.3. Thông số[1]¶
Tổng số byte # of cần truyền
10.1.2.7.9.4. Thông số[2]¶
Loại DMA (0=MPEG, 1=OSD, 2=YUV)
10.1.2.7.10. CX2341X_DEC_PAUSE_PLAYBACK¶
Số đếm: 13/0x0D
10.1.2.7.10.1. Sự miêu tả¶
Dừng phát lại ngay lập tức. Ở chế độ này, khi bộ đệm bên trong được đầy, sẽ không có thêm dữ liệu nào được chấp nhận và IRQ yêu cầu dữ liệu sẽ bị hủy đeo mặt nạ.
10.1.2.7.10.2. Thông số[0]¶
Hiển thị: 0=khung hình cuối cùng, 1=đen
10.1.2.7.11. CX2341X_DEC_HALT_FW¶
Số đếm: 14/0x0E
10.1.2.7.11.1. Sự miêu tả¶
Phần sụn bị tạm dừng và không có cuộc gọi API nào được phục vụ cho đến khi firmware được tải lên lại.
10.1.2.7.12. CX2341X_DEC_SET_STANDARD¶
Số đếm: 16/0x10
10.1.2.7.12.1. Sự miêu tả¶
Chọn tiêu chuẩn hiển thị
10.1.2.7.12.2. Thông số[0]¶
0=NTSC, 1=PAL
10.1.2.7.13. CX2341X_DEC_GET_VERSION¶
Số đếm: 17/0x11
10.1.2.7.13.1. Sự miêu tả¶
Trả về thông tin phiên bản phần mềm giải mã
10.1.2.7.13.2. Kết quả[0]¶
- Phiên bản bitmask:
Xây dựng bit 0:15
Bit 16:23 thứ
Bit 24:31 chính
10.1.2.7.14. CX2341X_DEC_SET_STREAM_INPUT¶
Số đếm: 20/0x14
10.1.2.7.14.1. Sự miêu tả¶
Chọn cổng đầu vào luồng giải mã
10.1.2.7.14.2. Thông số[0]¶
0=bộ nhớ (mặc định), 1=phát trực tuyến
10.1.2.7.15. CX2341X_DEC_GET_TIMING_INFO¶
Số đếm: 21/0x15
10.1.2.7.15.1. Sự miêu tả¶
Trả về thông tin thời gian từ khi bắt đầu phát lại
10.1.2.7.15.2. Kết quả[0]¶
Số khung theo thứ tự giải mã
10.1.2.7.15.3. Kết quả[1]¶
Video PTS bit 0:31 theo thứ tự hiển thị
10.1.2.7.15.4. Kết quả[2]¶
Video PTS bit 32 theo thứ tự hiển thị
10.1.2.7.15.5. Kết quả[3]¶
Các bit SCR 0:31 theo thứ tự hiển thị
10.1.2.7.15.6. Kết quả[4]¶
SCR bit 32 theo thứ tự hiển thị
10.1.2.7.16. CX2341X_DEC_SET_AUDIO_MODE¶
Số đếm: 22/0x16
10.1.2.7.16.1. Sự miêu tả¶
Chọn chế độ âm thanh
10.1.2.7.16.2. Thông số[0]¶
- Hành động ở chế độ đơn sắc kép
0=Âm thanh nổi, 1=Trái, 2=Phải, 3=Mono, 4=Hoán đổi, -1=Không thay đổi
10.1.2.7.16.3. Thông số[1]¶
- Hành động ở chế độ âm thanh nổi:
0=Âm thanh nổi, 1=Trái, 2=Phải, 3=Mono, 4=Hoán đổi, -1=Không thay đổi
10.1.2.7.17. CX2341X_DEC_SET_EVENT_NOTIFICATION¶
Số đếm: 23/0x17
10.1.2.7.17.1. Sự miêu tả¶
Thiết lập chương trình cơ sở để thông báo cho máy chủ về một sự kiện cụ thể. Đối trọng với API 0xD5
10.1.2.7.17.2. Thông số[0]¶
- Sự kiện:
0=Thay đổi chế độ âm thanh giữa mono, stereo (chung) và kênh đôi.
3=Bộ giải mã đã bắt đầu
4=Không xác định: tắt 10-15 lần mỗi giây trong khi giải mã.
5=Một số sự kiện đồng bộ: tắt một lần trên mỗi khung hình.
10.1.2.7.17.3. Thông số[1]¶
Thông báo 0=đã tắt, 1=đã bật
10.1.2.7.17.4. Thông số[2]¶
Bit ngắt
10.1.2.7.17.5. Tham số [3]¶
Khe cắm hộp thư, -1 nếu không cần hộp thư.
10.1.2.7.18. CX2341X_DEC_SET_DISPLAY_BUFFERS¶
Số đếm: 24/0x18
10.1.2.7.18.1. Sự miêu tả¶
Số lượng bộ đệm hiển thị. Để giải mã tất cả các khung hình trong chế độ phát lại ngược, bạn phải sử dụng chín bộ đệm.
10.1.2.7.18.2. Thông số[0]¶
0=sáu bộ đệm, 1=chín bộ đệm
10.1.2.7.19. CX2341X_DEC_EXTRACT_VBI¶
Số đếm: 25/0x19
10.1.2.7.19.1. Sự miêu tả¶
Trích xuất dữ liệu VBI
10.1.2.7.19.2. Thông số[0]¶
0=trích xuất từ tiện ích mở rộng và dữ liệu người dùng, 1=trích xuất từ các gói riêng tư
10.1.2.7.19.3. Kết quả[0]¶
Vị trí bàn VBI
10.1.2.7.19.4. Kết quả[1]¶
Kích thước bàn VBI
10.1.2.7.20. CX2341X_DEC_SET_DECODER_SOURCE¶
Số đếm: 26/0x1A
10.1.2.7.20.1. Sự miêu tả¶
Chọn nguồn giải mã. Đảm bảo rằng các tham số được truyền cho điều này API khớp với cài đặt bộ mã hóa.
10.1.2.7.20.2. Thông số[0]¶
Chế độ: 0=MPEG từ máy chủ, 1=YUV từ bộ mã hóa, 2=YUV từ máy chủ
10.1.2.7.20.3. Thông số[1]¶
Chiều rộng hình ảnh YUV
10.1.2.7.20.4. Thông số[2]¶
Chiều cao hình ảnh YUV
10.1.2.7.20.5. Tham số [3]¶
Bitmap: xem Thông số [0] của API 0xBD
10.1.2.7.21. CX2341X_DEC_SET_PREBUFFERING¶
Số đếm: 30/0x1E
10.1.2.7.21.1. Sự miêu tả¶
Bộ đệm trước bộ giải mã, khi được bật lên tới 128KB sẽ được lưu vào bộ đệm cho luồng <8mpbs hoặc 640KB cho luồng>8mbps
10.1.2.7.21.2. Thông số[0]¶
0=tắt, 1=bật
10.1.2.8. PVR350 Bộ giải mã video đăng ký 0x02002800 -> 0x02002B00¶
Tác giả: Ian Armstrong <ian@iarmst.demon.co.uk>
Phiên bản: v0.4
Ngày: 12 tháng 3 năm 2007
Danh sách này đã được thực hiện thông qua thử nghiệm và sai sót. Sẽ có những sai lầm và những thiếu sót. Một số thanh ghi không có tác dụng rõ ràng nên rất khó để nói điều gì họ làm như vậy, trong khi những người khác tương tác với nhau hoặc yêu cầu một mức tải nhất định trình tự. Thiết lập bộ lọc ngang là một ví dụ, với sáu thanh ghi hoạt động đồng loạt và yêu cầu một trình tự tải nhất định để cấu hình chính xác. các bảng màu được lập chỉ mục dễ dàng hơn nhiều để thiết lập chỉ với hai thanh ghi, nhưng một lần nữa nó đòi hỏi một trình tự tải nhất định.
Một số sổ đăng ký rất cầu kỳ về những gì chúng được đặt. Tải ở một giá trị xấu & bộ giải mã sẽ thất bại. Việc tải lại chương trình cơ sở thường sẽ khôi phục nhưng đôi khi việc thiết lập lại được yêu cầu. Đối với các thanh ghi chứa thông tin kích thước, việc đặt chúng thành 0 là nói chung là một ý tưởng tồi. Đối với các thanh ghi điều khiển khác, ví dụ 2878, bạn sẽ chỉ tìm thấy ra những giá trị nào là xấu khi nó bị treo.
--------------------------------------------------------------------------------
2800
bit 0
Decoder enable
0 = disable
1 = enable
--------------------------------------------------------------------------------
2804
bits 0:31
Decoder horizontal Y alias register 1
---------------
2808
bits 0:31
Decoder horizontal Y alias register 2
---------------
280C
bits 0:31
Decoder horizontal Y alias register 3
---------------
2810
bits 0:31
Decoder horizontal Y alias register 4
---------------
2814
bits 0:31
Decoder horizontal Y alias register 5
---------------
2818
bits 0:31
Decoder horizontal Y alias trigger
These six registers control the horizontal aliasing filter for the Y plane.
The first five registers must all be loaded before accessing the trigger
(2818), as this register actually clocks the data through for the first
five.
To correctly program set the filter, this whole procedure must be done 16
times. The actual register contents are copied from a lookup-table in the
firmware which contains 4 different filter settings.
--------------------------------------------------------------------------------
281C
bits 0:31
Decoder horizontal UV alias register 1
---------------
2820
bits 0:31
Decoder horizontal UV alias register 2
---------------
2824
bits 0:31
Decoder horizontal UV alias register 3
---------------
2828
bits 0:31
Decoder horizontal UV alias register 4
---------------
282C
bits 0:31
Decoder horizontal UV alias register 5
---------------
2830
bits 0:31
Decoder horizontal UV alias trigger
These six registers control the horizontal aliasing for the UV plane.
Operation is the same as the Y filter, with 2830 being the trigger
register.
--------------------------------------------------------------------------------
2834
bits 0:15
Decoder Y source width in pixels
bits 16:31
Decoder Y destination width in pixels
---------------
2838
bits 0:15
Decoder UV source width in pixels
bits 16:31
Decoder UV destination width in pixels
NOTE: For both registers, the resulting image must be fully visible on
screen. If the image exceeds the right edge both the source and destination
size must be adjusted to reflect the visible portion. For the source width,
you must take into account the scaling when calculating the new value.
--------------------------------------------------------------------------------
283C
bits 0:31
Decoder Y horizontal scaling
Normally = Reg 2854 >> 2
---------------
2840
bits 0:31
Decoder ?? unknown - horizontal scaling
Usually 0x00080514
---------------
2844
bits 0:31
Decoder UV horizontal scaling
Normally = Reg 2854 >> 2
---------------
2848
bits 0:31
Decoder ?? unknown - horizontal scaling
Usually 0x00100514
---------------
284C
bits 0:31
Decoder ?? unknown - Y plane
Usually 0x00200020
---------------
2850
bits 0:31
Decoder ?? unknown - UV plane
Usually 0x00200020
---------------
2854
bits 0:31
Decoder 'master' value for horizontal scaling
---------------
2858
bits 0:31
Decoder ?? unknown
Usually 0
---------------
285C
bits 0:31
Decoder ?? unknown
Normally = Reg 2854 >> 1
---------------
2860
bits 0:31
Decoder ?? unknown
Usually 0
---------------
2864
bits 0:31
Decoder ?? unknown
Normally = Reg 2854 >> 1
---------------
2868
bits 0:31
Decoder ?? unknown
Usually 0
Most of these registers either control horizontal scaling, or appear linked
to it in some way. Register 2854 contains the 'master' value & the other
registers can be calculated from that one. You must also remember to
correctly set the divider in Reg 2874.
To enlarge:
Reg 2854 = (source_width * 0x00200000) / destination_width
Reg 2874 = No divide
To reduce from full size down to half size:
Reg 2854 = (source_width/2 * 0x00200000) / destination width
Reg 2874 = Divide by 2
To reduce from half size down to quarter size:
Reg 2854 = (source_width/4 * 0x00200000) / destination width
Reg 2874 = Divide by 4
The result is always rounded up.
--------------------------------------------------------------------------------
286C
bits 0:15
Decoder horizontal Y buffer offset
bits 15:31
Decoder horizontal UV buffer offset
Offset into the video image buffer. If the offset is gradually incremented,
the on screen image will move left & wrap around higher up on the right.
--------------------------------------------------------------------------------
2870
bits 0:15
Decoder horizontal Y output offset
bits 16:31
Decoder horizontal UV output offset
Offsets the actual video output. Controls output alignment of the Y & UV
planes. The higher the value, the greater the shift to the left. Use
reg 2890 to move the image right.
--------------------------------------------------------------------------------
2874
bits 0:1
Decoder horizontal Y output size divider
00 = No divide
01 = Divide by 2
10 = Divide by 3
bits 4:5
Decoder horizontal UV output size divider
00 = No divide
01 = Divide by 2
10 = Divide by 3
bit 8
Decoder ?? unknown
0 = Normal
1 = Affects video output levels
bit 16
Decoder ?? unknown
0 = Normal
1 = Disable horizontal filter
--------------------------------------------------------------------------------
2878
bit 0
?? unknown
bit 1
osd on/off
0 = osd off
1 = osd on
bit 2
Decoder + osd video timing
0 = NTSC
1 = PAL
bits 3:4
?? unknown
bit 5
Decoder + osd
Swaps upper & lower fields
--------------------------------------------------------------------------------
287C
bits 0:10
Decoder & osd ?? unknown
Moves entire screen horizontally. Starts at 0x005 with the screen
shifted heavily to the right. Incrementing in steps of 0x004 will
gradually shift the screen to the left.
bits 11:31
?? unknown
Normally contents are 0x00101111 (NTSC) or 0x1010111d (PAL)
--------------------------------------------------------------------------------
2880 -------- ?? unknown
2884 -------- ?? unknown
--------------------------------------------------------------------------------
2888
bit 0
Decoder + osd ?? unknown
0 = Normal
1 = Misaligned fields (Correctable through 289C & 28A4)
bit 4
?? unknown
bit 8
?? unknown
Warning: Bad values will require a firmware reload to recover.
Known to be bad are 0x000,0x011,0x100,0x111
--------------------------------------------------------------------------------
288C
bits 0:15
osd ?? unknown
Appears to affect the osd position stability. The higher the value the
more unstable it becomes. Decoder output remains stable.
bits 16:31
osd ?? unknown
Same as bits 0:15
--------------------------------------------------------------------------------
2890
bits 0:11
Decoder output horizontal offset.
Horizontal offset moves the video image right. A small left shift is
possible, but it's better to use reg 2870 for that due to its greater
range.
NOTE: Video corruption will occur if video window is shifted off the right
edge. To avoid this read the notes for 2834 & 2838.
--------------------------------------------------------------------------------
2894
bits 0:23
Decoder output video surround colour.
Contains the colour (in yuv) used to fill the screen when the video is
running in a window.
--------------------------------------------------------------------------------
2898
bits 0:23
Decoder video window colour
Contains the colour (in yuv) used to fill the video window when the
video is turned off.
bit 24
Decoder video output
0 = Video on
1 = Video off
bit 28
Decoder plane order
0 = Y,UV
1 = UV,Y
bit 29
Decoder second plane byte order
0 = Normal (UV)
1 = Swapped (VU)
In normal usage, the first plane is Y & the second plane is UV. Though the
order of the planes can be swapped, only the byte order of the second plane
can be swapped. This isn't much use for the Y plane, but can be useful for
the UV plane.
--------------------------------------------------------------------------------
289C
bits 0:15
Decoder vertical field offset 1
bits 16:31
Decoder vertical field offset 2
Controls field output vertical alignment. The higher the number, the lower
the image on screen. Known starting values are 0x011E0017 (NTSC) &
0x01500017 (PAL)
--------------------------------------------------------------------------------
28A0
bits 0:15
Decoder & osd width in pixels
bits 16:31
Decoder & osd height in pixels
All output from the decoder & osd are disabled beyond this area. Decoder
output will simply go black outside of this region. If the osd tries to
exceed this area it will become corrupt.
--------------------------------------------------------------------------------
28A4
bits 0:11
osd left shift.
Has a range of 0x770->0x7FF. With the exception of 0, any value outside of
this range corrupts the osd.
--------------------------------------------------------------------------------
28A8
bits 0:15
osd vertical field offset 1
bits 16:31
osd vertical field offset 2
Controls field output vertical alignment. The higher the number, the lower
the image on screen. Known starting values are 0x011E0017 (NTSC) &
0x01500017 (PAL)
--------------------------------------------------------------------------------
28AC -------- ?? unknown
|
V
28BC -------- ?? unknown
--------------------------------------------------------------------------------
28C0
bit 0
Current output field
0 = first field
1 = second field
bits 16:31
Current scanline
The scanline counts from the top line of the first field
through to the last line of the second field.
--------------------------------------------------------------------------------
28C4 -------- ?? unknown
|
V
28F8 -------- ?? unknown
--------------------------------------------------------------------------------
28FC
bit 0
?? unknown
0 = Normal
1 = Breaks decoder & osd output
--------------------------------------------------------------------------------
2900
bits 0:31
Decoder vertical Y alias register 1
---------------
2904
bits 0:31
Decoder vertical Y alias register 2
---------------
2908
bits 0:31
Decoder vertical Y alias trigger
These three registers control the vertical aliasing filter for the Y plane.
Operation is similar to the horizontal Y filter (2804). The only real
difference is that there are only two registers to set before accessing
the trigger register (2908). As for the horizontal filter, the values are
taken from a lookup table in the firmware, and the procedure must be
repeated 16 times to fully program the filter.
--------------------------------------------------------------------------------
290C
bits 0:31
Decoder vertical UV alias register 1
---------------
2910
bits 0:31
Decoder vertical UV alias register 2
---------------
2914
bits 0:31
Decoder vertical UV alias trigger
These three registers control the vertical aliasing filter for the UV
plane. Operation is the same as the Y filter, with 2914 being the trigger.
--------------------------------------------------------------------------------
2918
bits 0:15
Decoder Y source height in pixels
bits 16:31
Decoder Y destination height in pixels
---------------
291C
bits 0:15
Decoder UV source height in pixels divided by 2
bits 16:31
Decoder UV destination height in pixels
NOTE: For both registers, the resulting image must be fully visible on
screen. If the image exceeds the bottom edge both the source and
destination size must be adjusted to reflect the visible portion. For the
source height, you must take into account the scaling when calculating the
new value.
--------------------------------------------------------------------------------
2920
bits 0:31
Decoder Y vertical scaling
Normally = Reg 2930 >> 2
---------------
2924
bits 0:31
Decoder Y vertical scaling
Normally = Reg 2920 + 0x514
---------------
2928
bits 0:31
Decoder UV vertical scaling
When enlarging = Reg 2930 >> 2
When reducing = Reg 2930 >> 3
---------------
292C
bits 0:31
Decoder UV vertical scaling
Normally = Reg 2928 + 0x514
---------------
2930
bits 0:31
Decoder 'master' value for vertical scaling
---------------
2934
bits 0:31
Decoder ?? unknown - Y vertical scaling
---------------
2938
bits 0:31
Decoder Y vertical scaling
Normally = Reg 2930
---------------
293C
bits 0:31
Decoder ?? unknown - Y vertical scaling
---------------
2940
bits 0:31
Decoder UV vertical scaling
When enlarging = Reg 2930 >> 1
When reducing = Reg 2930
---------------
2944
bits 0:31
Decoder ?? unknown - UV vertical scaling
---------------
2948
bits 0:31
Decoder UV vertical scaling
Normally = Reg 2940
---------------
294C
bits 0:31
Decoder ?? unknown - UV vertical scaling
Most of these registers either control vertical scaling, or appear linked
to it in some way. Register 2930 contains the 'master' value & all other
registers can be calculated from that one. You must also remember to
correctly set the divider in Reg 296C
To enlarge:
Reg 2930 = (source_height * 0x00200000) / destination_height
Reg 296C = No divide
To reduce from full size down to half size:
Reg 2930 = (source_height/2 * 0x00200000) / destination height
Reg 296C = Divide by 2
To reduce from half down to quarter.
Reg 2930 = (source_height/4 * 0x00200000) / destination height
Reg 296C = Divide by 4
--------------------------------------------------------------------------------
2950
bits 0:15
Decoder Y line index into display buffer, first field
bits 16:31
Decoder Y vertical line skip, first field
--------------------------------------------------------------------------------
2954
bits 0:15
Decoder Y line index into display buffer, second field
bits 16:31
Decoder Y vertical line skip, second field
--------------------------------------------------------------------------------
2958
bits 0:15
Decoder UV line index into display buffer, first field
bits 16:31
Decoder UV vertical line skip, first field
--------------------------------------------------------------------------------
295C
bits 0:15
Decoder UV line index into display buffer, second field
bits 16:31
Decoder UV vertical line skip, second field
--------------------------------------------------------------------------------
2960
bits 0:15
Decoder destination height minus 1
bits 16:31
Decoder destination height divided by 2
--------------------------------------------------------------------------------
2964
bits 0:15
Decoder Y vertical offset, second field
bits 16:31
Decoder Y vertical offset, first field
These two registers shift the Y plane up. The higher the number, the
greater the shift.
--------------------------------------------------------------------------------
2968
bits 0:15
Decoder UV vertical offset, second field
bits 16:31
Decoder UV vertical offset, first field
These two registers shift the UV plane up. The higher the number, the
greater the shift.
--------------------------------------------------------------------------------
296C
bits 0:1
Decoder vertical Y output size divider
00 = No divide
01 = Divide by 2
10 = Divide by 4
bits 8:9
Decoder vertical UV output size divider
00 = No divide
01 = Divide by 2
10 = Divide by 4
--------------------------------------------------------------------------------
2970
bit 0
Decoder ?? unknown
0 = Normal
1 = Affect video output levels
bit 16
Decoder ?? unknown
0 = Normal
1 = Disable vertical filter
--------------------------------------------------------------------------------
2974 -------- ?? unknown
|
V
29EF -------- ?? unknown
--------------------------------------------------------------------------------
2A00
bits 0:2
osd colour mode
000 = 8 bit indexed
001 = 16 bit (565)
010 = 15 bit (555)
011 = 12 bit (444)
100 = 32 bit (8888)
bits 4:5
osd display bpp
01 = 8 bit
10 = 16 bit
11 = 32 bit
bit 8
osd global alpha
0 = Off
1 = On
bit 9
osd local alpha
0 = Off
1 = On
bit 10
osd colour key
0 = Off
1 = On
bit 11
osd ?? unknown
Must be 1
bit 13
osd colour space
0 = ARGB
1 = AYVU
bits 16:31
osd ?? unknown
Must be 0x001B (some kind of buffer pointer ?)
When the bits-per-pixel is set to 8, the colour mode is ignored and
assumed to be 8 bit indexed. For 16 & 32 bits-per-pixel the colour depth
is honoured, and when using a colour depth that requires fewer bytes than
allocated the extra bytes are used as padding. So for a 32 bpp with 8 bit
index colour, there are 3 padding bytes per pixel. It's also possible to
select 16bpp with a 32 bit colour mode. This results in the pixel width
being doubled, but the color key will not work as expected in this mode.
Colour key is as it suggests. You designate a colour which will become
completely transparent. When using 565, 555 or 444 colour modes, the
colour key is always 16 bits wide. The colour to key on is set in Reg 2A18.
Local alpha works differently depending on the colour mode. For 32bpp & 8
bit indexed, local alpha is a per-pixel 256 step transparency, with 0 being
transparent and 255 being solid. For the 16bpp modes 555 & 444, the unused
bit(s) act as a simple transparency switch, with 0 being solid & 1 being
fully transparent. There is no local alpha support for 16bit 565.
Global alpha is a 256 step transparency that applies to the entire osd,
with 0 being transparent & 255 being solid.
It's possible to combine colour key, local alpha & global alpha.
--------------------------------------------------------------------------------
2A04
bits 0:15
osd x coord for left edge
bits 16:31
osd y coord for top edge
---------------
2A08
bits 0:15
osd x coord for right edge
bits 16:31
osd y coord for bottom edge
For both registers, (0,0) = top left corner of the display area. These
registers do not control the osd size, only where it's positioned & how
much is visible. The visible osd area cannot exceed the right edge of the
display, otherwise the osd will become corrupt. See reg 2A10 for
setting osd width.
--------------------------------------------------------------------------------
2A0C
bits 0:31
osd buffer index
An index into the osd buffer. Slowly incrementing this moves the osd left,
wrapping around onto the right edge
--------------------------------------------------------------------------------
2A10
bits 0:11
osd buffer 32 bit word width
Contains the width of the osd measured in 32 bit words. This means that all
colour modes are restricted to a byte width which is divisible by 4.
--------------------------------------------------------------------------------
2A14
bits 0:15
osd height in pixels
bits 16:32
osd line index into buffer
osd will start displaying from this line.
--------------------------------------------------------------------------------
2A18
bits 0:31
osd colour key
Contains the colour value which will be transparent.
--------------------------------------------------------------------------------
2A1C
bits 0:7
osd global alpha
Contains the global alpha value (equiv ivtvfbctl --alpha XX)
--------------------------------------------------------------------------------
2A20 -------- ?? unknown
|
V
2A2C -------- ?? unknown
--------------------------------------------------------------------------------
2A30
bits 0:7
osd colour to change in indexed palette
---------------
2A34
bits 0:31
osd colour for indexed palette
To set the new palette, first load the index of the colour to change into
2A30, then load the new colour into 2A34. The full palette is 256 colours,
so the index range is 0x00-0xFF
--------------------------------------------------------------------------------
2A38 -------- ?? unknown
2A3C -------- ?? unknown
--------------------------------------------------------------------------------
2A40
bits 0:31
osd ?? unknown
Affects overall brightness, wrapping around to black
--------------------------------------------------------------------------------
2A44
bits 0:31
osd ?? unknown
Green tint
--------------------------------------------------------------------------------
2A48
bits 0:31
osd ?? unknown
Red tint
--------------------------------------------------------------------------------
2A4C
bits 0:31
osd ?? unknown
Affects overall brightness, wrapping around to black
--------------------------------------------------------------------------------
2A50
bits 0:31
osd ?? unknown
Colour shift
--------------------------------------------------------------------------------
2A54
bits 0:31
osd ?? unknown
Colour shift
--------------------------------------------------------------------------------
2A58 -------- ?? unknown
|
V
2AFC -------- ?? unknown
--------------------------------------------------------------------------------
2B00
bit 0
osd filter control
0 = filter off
1 = filter on
bits 1:4
osd ?? unknown
--------------------------------------------------------------------------------
10.1.2.9. Động cơ cx231xx DMA¶
Trang này mô tả các cấu trúc và quy trình được sử dụng bởi cx2341x DMA động cơ.
10.1.2.9.1. Giới thiệu¶
Giao diện cx2341x PCI có khả năng busmaster. Điều này có nghĩa là nó có DMA công cụ truyền tải hiệu quả khối lượng lớn dữ liệu giữa thẻ và thiết bị chính bộ nhớ mà không cần sự trợ giúp từ CPU. Giống như hầu hết phần cứng, nó phải hoạt động trên bộ nhớ vật lý liền kề. Điều này khó có được với số lượng lớn trên các máy bộ nhớ ảo.
Do đó, nó cũng hỗ trợ một kỹ thuật gọi là “phân tán-thu thập”. Thẻ có thể chuyển nhiều bộ đệm trong một thao tác. Thay vì phân bổ một lượng lớn bộ đệm liền kề, trình điều khiển có thể phân bổ một số bộ đệm nhỏ hơn.
Trong thực tế, tôi thấy số tiền chuyển trung bình là khoảng 80K, nhưng số tiền chuyển trên 128K không phải là hiếm, đặc biệt là khi khởi động. Con số 128K là quan trọng, vì đó là khối lớn nhất mà kernel thường có thể phân bổ. Mặc dù vậy, các khối 128K vẫn khó có được, vì vậy người viết trình điều khiển urged to choose a smaller block size and learn the scatter-gather technique.
Hộp thư #10 được dành riêng cho thông tin chuyển DMA.
Lưu ý: phần cứng yêu cầu dữ liệu endian nhỏ (‘định dạng intel’).
10.1.2.9.2. Chảy¶
Phần này mô tả tổng quát thứ tự các sự kiện khi xử lý DMA chuyển khoản. Thông tin chi tiết sau phần này.
Card gây ngắt Encoding.
Trình điều khiển đọc kiểu truyền, offset và kích thước từ Mailbox #10.
Trình điều khiển xây dựng mảng thu thập phân tán từ bộ đệm dma đủ trống để che kích thước.
Trình điều khiển lên lịch chuyển DMA thông qua cuộc gọi ScheduleDMAtoHost API.
Thẻ tăng ngắt DMA Complete.
Trình điều khiển kiểm tra thanh ghi trạng thái DMA xem có lỗi gì không.
Trình điều khiển xử lý hậu kỳ các bộ đệm mới được chuyển.
NOTE! Có thể các ngắt Bộ mã hóa và DMA Complete được nâng lên đồng thời. (Kết thúc cái cuối cùng, bắt đầu cái tiếp theo, v.v.)
10.1.2.9.3. Hộp Thư #10¶
Các trường Cờ, Lệnh, Giá trị trả về và Thời gian chờ bị bỏ qua.
Tên: Hộp thư #10
Kết quả[0]: Loại: 0: MPEG.
Kết quả[1]: Offset: Vị trí tương ứng với không gian bộ nhớ của thẻ.
Kết quả[2]: Size: Chính xác số byte cần truyền.
Suy đoán của tôi là vì StartCapture API có kiểu chụp “RAW” có sẵn, trường loại sẽ có các giá trị khác tương ứng với YUV và dữ liệu PCM.
10.1.2.9.4. Mảng phân tán-thu thập¶
Mảng phân tán là một khối bộ nhớ được phân bổ liên tục cho thẻ biết nguồn và đích của từng khối dữ liệu cần truyền. “Địa chỉ” thẻ được lấy từ phần bù do Hộp thư #10 cung cấp. Máy chủ địa chỉ là vị trí bộ nhớ vật lý của bộ đệm DMA đích.
Mỗi phần tử mảng S-G là một cấu trúc gồm ba từ 32 bit. Từ đầu tiên là địa chỉ nguồn, địa chỉ thứ hai là địa chỉ đích. Cả hai đều đảm nhận toàn bộ 32 bit. 18 bit thấp nhất của từ thứ ba là byte truyền đếm. Bit cao của từ thứ ba là cờ “cuối cùng”. Lá cờ cuối cùng cho biết thẻ để tăng ngắt DMA_DONE. Từ kinh nghiệm cá nhân khó khăn, nếu bạn quên đặt bit này, thẻ vẫn “hoạt động” nhưng luồng sẽ rất có thể bị hỏng.
Số lần chuyển phải là bội số của 256. Do đó, trình điều khiển sẽ cần để theo dõi lượng dữ liệu trong bộ đệm đích hợp lệ và xử lý nó tương ứng.
Phần tử mảng:
Địa chỉ nguồn 32-bit
Địa chỉ đích 32-bit
14-bit dự trữ (bit cao là cờ cuối cùng)
Số byte 18 bit
10.1.2.9.5. Trạng thái chuyển DMA¶
Đăng ký 0x0004 giữ Trạng thái chuyển DMA:
bit 0: đọc xong
bit 1: ghi xong
bit 2: Lỗi đọc DMA
bit 3: Lỗi ghi DMA
bit 4: Lỗi mảng Scatter-Gather