Re: About driver architecture

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Michael,

> Hi guys,
>   I'm going to write drivers for a new soc which designed for dvb-s set
> top box.
> It will support these features:
> 1. Multi-layer display with alpha blending feature, including
> video(YUV), OSDs(2 same RGB layers), background(with fixed YUV color)
> and still picture(YUV color for still image)
> 2. DVB-S tuner and demod
> 3. HW MPEG2/4 decoder
> 4. HW accelerated JPEG decoder engine.

Interesting device. Which SoC is this?

>
> My targets are:
> 1. Fit all the drivers in proper framework so they can be easily used
> by applications in open source community.
> 2. As flexible as I can to add new software features in the future.
>
> My questions are:
> How many drivers should I implement, and how should I divide all the
> features?
> As far as I know:
> A) a frame buffer driver for 2 OSDs, maybe also the control point for
> whole display module?
> B) video output device for video layer, which will output video program.
> C) drivers for tuner and demo (or just a driver which will export 2
> devices files for each?)
> D) driver for jpeg accelerate interface, or should it be a part of
> MPEG2/4 decoder driver?
> E) driver for MPEG2/4 decoder which will control the behave of H/W
> decoder.
>
> Actually I think all the display functions are relative, some
> functions i listed upper are operating one HW module, for instance:
> OSD and video layer are implemented by display module in H/W level.
> What's the right way to implement these functions in driver level,
> united or separated?
> And, I've read some documents for V4L2, but I still cannot figure out
> where should I implement my driver in the framework.
>
> In a word, I'm totally confused. Can you guys show me the right way or
> just kick me to a existing example with similar features?

The driver that comes closest to this in terms of functionality is the
ivtv driver. That driver supports MPEG2 encoding and decoding, an OSD and
raw YUV input and output.

There are several ways you can design devices like this, but the way ivtv
is designed is that there is one master driver (ivtv) that handles all the
encoding and decoding, and the framebuffer driver that you need for the
OSD is just an 'add-on' module that provides the FB API but internally
talks to the master driver.

The tuner/demod part is usually integrated in the master driver. See the
cx18 driver for example. But it is probably also possible to implement it
as a separate driver in a similar manner as a framebuffer driver.

Generally the key criteria on how to design drivers like this is the
hardware design: for example, if the tuner/demod part is completely
independent from the decoder part, then it is possible to write completely
independent drivers as well, but if they share hardware components (e.g.
the interrupt handling hardware), then you usually have to combine
functions in one driver.

Note that some features that you probably need (such as memory-to-memory
decoding) are not yet implemented in V4L2 (although work is in progress on
this).

Regards,

        Hans

>
>
> Best regards
> Michael Qiu
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux