EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 4명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

Video for Linux Two(v4l2) API Specification
글쓴이: EzDoum 글쓴날: 2008년 09월 02일 오후 09:09
리눅스



V4L2 API Specification (Revision 0.24)
One long HTML page

Video for Linux (v4l) Resources

  • 첨부 파일: v4l2.pdf v4l2.pdf (2 MiB(2,049,217 Bytes))

  • 관련 링크
  • [분류: 리눅스 인쇄용 페이지 본문 email로 보내기 ]

    <  The New and Enhanced DaVinci VPSS Drivers | 무인 항공기 프로젝트  >
    Video for Linux Two(v4l2) API Specification | 답장: 1개 | 본문에 답장
    정렬 :  
    답장 EzDoum 2008년 09월 03일 오전 11:47 [ 이글에 답장 | 본문에 답장 | 책갈피 ]
    Camera driver(V4L2) 에 관한 간략한 설명
    원본 : Camera driver(V4L2) 에 관한 간략한 설명 - MIZI Wiki by 구글캐쉬

    V4L2 프로그램 구조(카메라 드라이버와 관련된)
    - 쓰는 파일오퍼레이션의 종류

    mmap() - VIDIOC_REQBUFS를 통해 할당한 버퍼를 mmap을 이용해 유저 공간에 맵핑해서 사용. 원래 read(), mmap(), user pointer 세 가지 경우가 있으나 일단 지금은 mmap()의 경우만 지원함.
    ioctl()
    poll()

    - ioctl operation의 종류

    1. VIDIOC_QUERYCAP (Query Capability) : 드라이버가 할 수 있는 정도를 유저가 요청
    2. VIDIOC_G_FMT (Get format) : 현재 드라이버에서 사용하는 format을 유저가 요청
    3. VIDIOC_S_FMT (Set format) : 드라이버에서 사용할 format을 유저가 지정
    4. VIDIOC_STREAMON (stream on) : 카메라의 스트림을 켬
    5. VIDIOC_STREAMOFF (stream off) : 카메라의 스트림을 끔
    6. VIDIOC_QUERYBUF (query buffer) : 특정 버퍼 정보 요청. offset값을 얻을때 사용.
    7. VIDIOC_QBUF (queue buffer) : 새로운 프레임을 달라고 드라이버에 요청
    8. VIDIOC_DQBUF (dequeue buffer) : 새로운 프레임을 가지고 감
    9. VIDIOC_REQBUFS (request buffers) : 버퍼를 할당하라고 드라이버에 요구함



    - 흐름

    1.     .camera device를 open
    2.     .VIDIOC_QUERYCAP을 통해 Capture가 가능한지(V4L2_CAP_VIDEO_CAPTURE), 스트리밍 방식인지(V4L2_CAP_STREAMING) 판별
    3.     .VIDIOC_S_FMT를 통해 가지고 올 카메라 데이터의 포맷을 결정(버퍼 타입, 해상도, 컬러스페이스 등, 원래 픽셀 포맷도 결정해야 하나 일단은 이에 대해서는 지원하지 않음)
    4.     .VIDIOC_REQBUFS를 통해 버퍼를 결정(버퍼의 개수, 버퍼 타입, read, mmap, user pointer 방식 선택)
    5.     .VIDIOC_QUERYBUF를 통해, 원하는 버퍼의 인덱스를 넘겨주고 그 버퍼의 오프셋 정보를 가져옴. 이 정보를 이용해 mmap()을 통해 버퍼를 유저공간에 맵핑함. 버퍼에 할당하는 공간만큼 메모리를 할당받아서( calloc(req.count, sizeof(*buffers)) ) 각각의 버퍼에 대해 따로 mmap()을 통해 공간을 할당함. 즉 버퍼가 4개라면 0번 버퍼의 정보를 얻기 위해 VIDIOC_QUERYBUF, 인덱스는 0, ioctl을 실행하고 그 결과 넘어온 버퍼의 offset값에 따라 mmap을 통해 그 버퍼에 대한 공간을 맵핑. 1번, 2번, 3번에 대해서도 똑같은 작업을 반복함. VIDIOC_QUERYBUF와 mmap()이 각각 네 번씩 실행.
    6.     .VIDIOC_QBUF를 통해 프레임을 달라고 요청
    7.     .VIDIOC_STREAMON을 통해 스트림을 켬.
    8.     .polling을 통해 새 프레임이 들어오기를 기다림.
    9.     .새 프레임이 들어오면 DQBUF를 통해 새로 들어온 프레임의 인덱스(!)를 가져옴.
    10.     .가져온 인덱스를 통해 mmap된 메모리 공간에서 이미지 데이터를 가져옴.
    11.     .다시 QBUF를 통해 프레임을 달라고 요청. 이 작업을 반복해서 데이터를 계속적으로 가져감.
    12.     .VIDIOC_STREAMOFF를 통해 스트림을 끔. munmap을 통해 메모리를 해제.
    13.     .camera device를 close


    위 flow를 코드로 확인하려면 v4l2 spec에 함께 포함되어 있는 caputre.c 파일을 참조하시면 됩니다.


    [수정]

    Video for Linux Two(v4l2) API Specification | 답장: 1개 | 본문에 답장
    정렬 :  

    답장 쓰기
    글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

    검색
    Google

    분류
    ·공지 (6)
    ·인터넷 (87)
    ·하드웨어 (260)
    ·C/C++ (65)
    ·어셈블리 (7)
    ·리눅스 (136)
    ·리눅스 커널 (67)
    ·윈도우즈 (25)
    ·데이터베이스 (20)
    ·보안 (16)
    ·.NET (25)
    ·그래픽 (13)
    ·책소개 (42)
    ·호기심 천국 (80)
    ·잡담 (111)
    ·사랑 (3)

    전체 본문수: 963
    전체 답장수: 525


    분류 : 리눅스
    최근글
    최근글
    가장 많이 읽은 글
    ·멀티쓰레드(Pthread) 프로그래밍 (0)
    뜨거운 감자
    ·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)

    EzDoum투표
    이지도움 어때요?
    이게 뭐야. 다시 안올란다. --;
    아이 좋아라~ +_+;
    관심없다.
    먼가는 있는거 같은데 뭐하는 곳이지?
    기타 (자유게시판에 글로 남겨 주세요)
    [ 결과 | 투표 ]

    랜덤 링크
    http://kldp.net


     Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
     Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum