Android Camera子系統之Linux C應用開發人員View

來源:互聯網
上載者:User

標籤:android   style   blog   ext   int   strong   

Android Camera HAL通過V4L2介面與核心Camera Driver互動。本文從Linux應用開發人員的角度審視Android Camera子系統。




V4L2應用開發一般流程:

1. 開啟裝置檔案。 int fd=open("/dev/videoX″,O_RDWR);

2.取得裝置的capability,看看裝置具有什麼功能,比如是否具有視頻輸入,或者音頻輸入輸出等。VIDIOC_QUERYCAP,structv4l2_capability

3.選擇視頻輸入,一個視頻裝置可以有多個視頻輸入。VIDIOC_S_INPUT,struct v4l2_input

4.設定視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式包括寬度和高度等。 VIDIOC_S_STD,VIDIOC_S_FMT,structv4l2_std_id,struct v4l2_format 

5. 向驅動申請幀緩衝,一般不超過5個。VIDIOC_REQBUFS,struct v4l2_requestbuffers

6.將申請到的幀緩衝映射到使用者空間,這樣就可以直接操作採集到的幀了,而不必去複製。mmap

7.將申請到的幀緩衝全部入隊列,以便存放採集到的資料.VIDIOC_QBUF,struct v4l2_buffer

8.開始視頻的採集。VIDIOC_STREAMON

9.出隊列以取得已採集資料的幀緩衝,取得原始採集資料。VIDIOC_DQBUF

10.將緩衝重新入隊列尾,這樣可以迴圈採集。VIDIOC_QBUF

11.停止視頻的採集。VIDIOC_STREAMOFF

12.關閉視頻裝置。close(fd);


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.