http://linuxplumbersconf.org/2009/

Yep, I'm desperately looking forward to attend that conference. Because I've got plenty of things to discuss especially video4linux.
It depends on my boss approves my business trip. will see.

Before the conference, I need to arrange some documents about the new multimedia H/W driver I'm working on with System LSI division. that would definitely take time ;-(

BTW, let's think in positive way.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Linux Plumbers conference, S5PC1XX, v4l2

You folks reading this article may be v4l2 developers or somebody interested in Linux kernel subsystems.

Here I’m gonna explain some changes made in v4l2 especially about v4l2 subdev, and even more specifically in camera device driver engineer’s point of view.

2.6.29 -> 2.6.30

We have several essential changes and significantly important new operations has been added.

subdev core ops

New

int (*s_config)(struct v4l2_subdev *sd, int irq, void *platform_data);
    - What for? : Some subdev devices need platform data to get initialized themselves.
    - In case of camera devices, this kind of operation is highly mandatory.


int (*load_fw)(struct v4l2_subdev *sd);
    - What for? : To load device firmware and get initialized.
    - Some of camera devices need to load their own firmware to be initialized or some firmware upgrade can be using this operation for special purpose.

int (*g_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
int (*s_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
int (*try_ext_ctrls)(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls);
    - What for? : To make issued atomically with some control operation at once.
    - Not used for camera devices actually (except for omap3 camera interface)

 

subdev video ops

Changed

int (*s_crystal_freq)(struct v4l2_subdev *sd, struct v4l2_crystal_freq *freq);
=> int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags);
    - v4l2_crystal_freq has been deprecated (trivial change)

New

int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std);
    - What for? : to query supported video standards
    - Not used for camera actually


int (*g_input_status)(struct v4l2_subdev *sd, u32 *status);
    - What for? : to get status of subdev used as image input device (enum input is using this)
    - Might be useful for camera interface drivers to get external camera module’s status

int (*enum_fmt)(struct v4l2_subdev *sd, struct v4l2_fmtdesc *fmtdesc);
int (*try_fmt)(struct v4l2_subdev *sd, struct v4l2_format *fmt);
int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum *fsize);
int (*enum_frameintervals)(struct v4l2_subdev *sd, struct v4l2_frmivalenum *fival);
    - For very general purpose. you can figure it out what are those for.

2.6.30 vs v4l-dvb repository in linuxtv

As you know, the leading community of V4L2 is linuxtv.

New features in linuxtv

int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc);
int (*g_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop);
int (*s_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop);
- For crop supporting subdev those might be necessary
- Some of camera devices are supporting crop operation

I tried diff with 2.6.29 and 2.6.30 of Linux kernel and also linuxtv v4l-dvb repository and took a brief look at to the difference been made. If anything wrong with this article, please let me know.
Cheers,

Nate

저작자 표시 비영리 변경 금지
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : v4l2, v4l2 and camera, v4l2 changes, v4l2 subdev

Using Web based IRC in firewalled site

Posted 2009/03/03 15:12 by kdsoo

When we are at work where we cannot make network communication with out world,

we need to work around with blocked network port.

 

Since I was working on video4linux, I need to communicate with other people who is working on the same topic.

 

Here it is list of contact

: http://linuxtv.org/lists.php#dvb

 

and if I need to use IRC, then I should prefer to use web IRC than IRC client.

 

One of web IRC I’ve found is http://www.mibbit.com/ AKA IRC widget.

In case of mine, #v4l channel is the one I need to join.

 

So, I can simply connet directly with following URL

http://embed.mibbit.com/?server=irc.freenode.org&channel=%23v4l

 

I can join #v4l channel in one stop.

 

Cheers

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : irc, v4l2, Web IRC

Hello San Francisco.

Posted 2009/02/13 16:54 by kdsoo
Dongsoo,


I am very pleased to inform you that your presentation, titled:

"Framework for digital camera in Linux"

has been accepted as a session for the upcoming CELF
Embedded Linux Conference, 2009.

The conference is April 6, 7 and 8 in San Francisco,
California.  As a presenter, you do not need to pay
any fee to attend the conference or the social event.
However, please register as a speaker at:
http://events.linuxfoundation.org/component/registrationpro/?func=details&did=6

Details about ELC 2009 are available at:
http://www.embeddedlinuxconference.com/elc_2009/index.html

Please note that this year, we are co-locating with the
Linux Collaboration Summit, which will be held April 8-10
in the same venue.  As an ELC attendee you are invited
to participate in that event as well.  This is normally
an invitation-only event, so this is a unique opportunity
to participate and interact with leading community and industry
Linux developers.

The website for the Collaboration Summit is:
http://events.linuxfoundation.org/events/collaboration-summit

The registration link for the summit is:
http://events.linuxfoundation.org/component/registrationpro/?func=details&did=2

If you plan on participating in the Collaboration Summit,
please register for that event (at no cost) separately.

Some additional notes...

You will be notified of your speaking date and time, and
room assignment, shortly before the conference.  If you
have restrictions on the date or time you can present,
please let me know immediately.

You should pick up your speaker badge and instructions at
the conference registration desk when you arrive at the
conference.

I need a short (1 to 2 paragraph) biography of you, for
the conference program and web site.  Please send me something
as soon as possible - but definitely no later than Feb 25.

If you have any special requests for facilities or session
time, please let me or the forum office <office@celinuxforum.org>
know as soon as possible.

If you have any questions, please don't hesitate to ask.

Thanks very much for your participation in this year's
embedded Linux conference.  I look forward to seeing you
there!
 -- Tim

=============================
Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America
=============================

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'[3] My specialty' 카테고리의 다른 글

Vim with git plugin (git-vim)  (0) 2009/02/24
git pull & patch 간략 정리  (0) 2009/02/18
Hello San Francisco.  (0) 2009/02/13
vi 와 Linux programmer&rsquo;s manual 연동  (0) 2009/02/12
cscope with linux kernel source code  (0) 2009/02/10
Firefox url bar problem on Ubuntu 8.04  (0) 2009/02/02

Tag : Camera, ELC2009, Linux, v4l2

V4L2 개발 관련 정리.

Posted 2009/01/21 11:43 by kdsoo

1. V4L2 community : linuxtv

http://www.linuxtv.org

 

2. V4L2 repository

http://linuxtv.org/hg/v4l-dvb/

GIT 이 아닌 mercurial 을 사용

 

3. Mailing list

- http://vger.kernel.org/vger-lists.html#linux-media : 2009년 1월 2일부로 kernel.org 로 통합

- http://www.redhat.com/mailman/listinfo/video4linux-list : old mailing list

 

4. New API changes work

The way new API changes work is:
1. You should do a proposal at linux-media ML. People will review it and comment.
2. You should also propose the changes for the V4L2 API documentation.


After all guys being happy with your proposal, the API changes will be merged
at the development tree (and later at upstream kernel) together with your driver.

 

5. Documents

- Official V4L2 API doc : http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/

- Latest V4L2 API docs : http://linuxtv.org/hg/~hverkuil/v4l-dvb-spec/file/ffe42a65649f/v4l2-spec/ : Make 가필요

- For driver developer : http://www.linuxtv.org/downloads/video4linux/v4l2dwgNew.html

- V4lL2 articles : http://lwn.net/Articles/203924/

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

'[3] My specialty' 카테고리의 다른 글

cscope with linux kernel source code  (0) 2009/02/10
Firefox url bar problem on Ubuntu 8.04  (0) 2009/02/02
V4L2 개발 관련 정리.  (0) 2009/01/21
Diff tools  (0) 2009/01/16
Evolution can't open Inbox over 2GB size  (0) 2009/01/16
Framework for digital camera in Linux  (0) 2009/01/13

Tag : Camera, Linux, v4l2

Framework for digital camera in Linux

Posted 2009/01/13 16:08 by kdsoo

Proposal for presentation on CELF

 

Hello.

My name is Dongsoo Kim. and may I propose for a presentation about “Framework for digital camera in Linux” ?

 

In these days we practically use devices with camera in general which is based on SoC camera subsystem.

And those camera devices have been definitely improved in functional and performance level.

Let me take a specific case of mobile phone. Many of our mobile phones have camera on them and even dual for 3G handsets.

In case of Linux based smartphones, we have to control camera devices with video4linux APIs and thats what I want to talk about.

We’ve got several video4linux APIs in Linux kernel already but thats not enough. Because they are mostly for USB PC cameras as known as “webcam”.

But as I mentioned above, camera devices have been improved these days and they are running like a real digital camera. They have shutter device, iris, and some devices support object detection and wide dynamic range functionality.

But video4linux APIs in kernel mainline cannot cover all of them because those APIs are just considering cameras of “webcam” level.

So we are defining new video4linux APIs for digital cameras and wanna explain how it works.

Our presentation covers several SoC camera drivers in linux and legacy video4linux APIs and new video4linux APIs for digital camera.

And we also want to talk about camera porting issues.

Thank you.

 

I’m also attaching presentation contents below. You can refer to them.

 

 

 

 

Camera platform (except for USB camera) called SoC based camera subsystem

  • Various ways of preview (Live view) in SoC camera subsystems.
  • SoC camera subsystem in Linux kernel aspect

 

Aggressive development in mobile camera module devices

  • Legacy mobile camera modules are far behind latest ones in functional and performance level
  • Latest mobile camera modules are very close to real cameras
  • Needs of proper V4L2 APIs for real digital cameras

 

V4L2 and digital camera

  • V4L2 and legacy camera modules
  • Dual camera for 3G handset
  • New V4L2 APIs for digital cameras

 

Issues of porting in SoC camera subsystem

  • I2C issues
  • Size negotiation issues
  • color space negotiation issues
  • Lens control issues
  • JPEG data synchronization issues
  • Gstreamer & OpenMax

 

 

See you at San Francisco, CA on April 6th - 8th, 2009

크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Camera, Linux, v4l2

Android & Qualcomm camera interface

Posted 2008/12/27 19:47 by kdsoo
일반적인 리눅스 시스템에서는 카메라는 크게 두가지 카테고리로 분류된다.

첫째는 USB 카메라, 아무래도 리눅스가 피씨 기반이다보니 피씨에서는 카메라 서브시스템이 따로 존재하지 않는지라..(ie. Intel C2D 에는 자체 카메라 인터페이스가 없다)

USB라는 만능 디바이스를 통해 카메라 를 연결해 사용한다.

둘째는 ARM 등을 사용하는 모바일 디바이스에 사용되는 SoC 기반의 카메라 인터페이스.

소위 모바일 CPU들은 작은 면적안에 많은 디바이스들을 컨트롤 할수 있어야 잘팔리기 때문에

Core 이외에 peripheral 들을 SoC로 붙여서 만들어 놓고 있다.

덕분에 다양한 부가 디바이스들을 하드웨어적으로 컨트롤하기 쉽다.

우리가 사용하는 핸드폰/PDA/스마트폰...(whatever) 등에 들어있는 CPU가 주로 ARM계열인데

핸드폰에 사용되는 카메라들은 주로 AP나 모뎀에서 제공하는 SoC 형태의 카메라 인터페이스를 사용한다.

그럼 리눅스에서는 어떻게 구현이 된느가?

첫째 피씨 기반에서는 USB 드라이버를 통해 카메라가 인식 되기 때문에 뭐...어떻게든 되겠지 ㅡ.ㅡ;;;

둘째..모바일  CPU에서는 SoC 형태의 카메라 인터페이스의 드라이버를 통해 카메라 모듈에서 보내는 영상을 받아들이고

요즘은 주로 I2C 버스를 통해 모듈을 컨트롤한다. (불과 몇년전만 해도 DPRAM을 통해서 하기도 했다.)

이 두가지 타입의 플랫폼의 카메라 모두 공통된 API를 통해 user space 에서 카메라를 컨트롤하는데

그게 바로 V4L2(Video for Linux 2)이다.

표준화된 API를 통해 사용자가 카메라 하드웨어에 상관없이 컨트롤할수 있게 드라이버를 구현해준다.

근데 안드로이드를 보니 의외의 부분을 발견했다.

Change 1776: add camera-interface library for dream (Merged) 
http://review.source.android.com/1776

카메라 컨트롤을 위한 라이브러리를 제공한다.

게다가 이런 불평불만들이 돌아다닌다
http://groups.google.com/group/android-developers/browse_thread/thread/927f115aa34f4806

불평불만을 요약해보면 안드로이드 에뮬에서(QEMU) 카메라를 사용하지 못해서 불만이라는 내용과

퀄컴의 외주(?) 엔지니어쯤 되는것 같은 Mark Kahrl 이 일을 제대로 못해 놨는지

이미 출시된 HTC의 G1 디바이스가 프리뷰를 보통 잘 쓰지 않는 YUV411 포맷을 사용해서

사용자들이 임의로 어플을 제작하면 (보통 422 혹은 420 을 많이쓴다)

화면이 깨지는 문제가 발생하는것이다.

poor Mark...

퀄컴이 MSM의 카메라 인터페이스에 대해 레지스터 등을 공개하지 않은 것인지...

msm 커널 트리에서 카메라 인터페이스의 드라이버를 난 아직 못찾고 있다.

그리고 위에 링크를 건 HTC dream  용 카메라 라이브러리는 뭔가

V4L2 가 아닌 자체 인터페이스를 제공한다는건지?

리눅스와 같은 오픈 프로젝트엔 그다지 맞지 않는 것 같다고 느끼는건 나뿐일까?


이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Android, Camera, Qualcomm, v4l2


omap24xxcam 은 v4l2_int_device master 가되며

master 에는 하나의 v4l2_int_device slave가 attach된다.

camif 가 하나인 omap24xx 의 경우 시리얼 인터페이스에서 듀얼 카메라를 이용하기 위해

센서의 enable 핀을 따로두어 센서간 스위칭을 한다.

v4l2 기반으로 시리얼 인터페이스의 듀얼카메라를 구현하기 위해서는 근본적으로

slave device 가 두개로 잡혀야하지만, 그러기 위해선 master도 두개가 잡혀야하는 구조이므로

VIDIOC_S_INPUT IOCTL을 통해 input sensor 를 select 할수 있도록 하여

sensor status 를 global하게 가져가도록 하자.

매 ioctl 마다 sesor status 를 체크하는 루틴을 두어 하나의 센서 드라이버에서

두개의 센서를 컨트롤 할수 있도록 하자.

즉 v4l2_int_device *s 는 변화 없으며, global status struct member 를 통해서

ioctl sub routine 내에서 분기하도록 하자.

omap의 platform_data 도 분기하도록 해주어 (board_XXX_camera.c) initializing 에 문제 없도록 하자.

default sensor를 설정하여 kernel init 시 해당 센서로 i2c driver 및 v4l2_int_device 드라이버가

등록되도록 하자.

시리얼 인터페이스 카메라의 경우 센서의 I2C slave id 가 동일해도 문제가 없는 구조이나

리눅스 의 구조는 그렇지 않다. 주의해서 dev, drv attach 되도록 하자.

아...짜증나





camera init / select input flow

vidioc_s_input 순서
omap24xxcam_open => ioctl_g_ifparm => case VIDIOC_S_INPUT(videodev.c)
=> vidioc_s_input (omap24xxcam)

그러므로 vidioc_s_input 후에 camif 를 reset 하고 카메라를 재시작시키는 등의 과정을 수행
global camera status 를 셋팅하여
다음 ioctl 부터는 스위칭한 센서의 ioctl 코드가 수행되게 한다.

짜증나....



크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Dual camera, OMAP24xx, v4l2

V4L2 camera device register/unregister flow

Posted 2007/10/26 19:35 by kdsoo

kernel 2.6 omap2430 기준으로

CPU camera interface
    omap24xxcam_probe
    video_register_device ( GRABBER type 의 capture device 로 등록 (v4l2 master))
sensor_probe
    i2c_add_driver
    i2c_register_driver
    driver_probe_device (device(i2c버스) 에 driver로 등록)
Video4Linux
sensor v4l2_int_device_register (v4l2 slave)
    v4l2 ioctl 등록

아....짜증나


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Dual camera, OMAP2430, v4l2