Re: V4L2 Advanced Codec questions

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

 



On Saturday 28 March 2009 18:03:47 Steven Toth wrote:
> Hans Verkuil wrote:
> > On Thursday 26 March 2009 16:59:11 Steven Toth wrote:
> >> Hello!
> >>
> >> I want to open a couple of HVR22xx items up for discussion.
> >>
> >> The HVR-22xx analog encoder is capable of encoded to all kinds of
> >> video and audio codecs in various containers formats.
> >>
> >>  From memory, wm9, mpeg4, mpeg2, divx, AAC, AC3, Windows audio codecs
> >> in asf, ts, ps, avi containers, depending on various firmware license
> >> enablements and configuration options. Maybe more, maybe, I'll draw up
> >> a complete list when I begin to focus on analog.
> >>
> >> Any single encoder on the HVR22xx can produce (if licensed) any of the
> >> formats above. However, due to a lack of CPU horsepower in the RISC
> >> engine, the board is not completely symmetrical when the encoders are
> >> running concurrently. This is the main reason why Hauppauge have
> >> disabled these features in the windows driver.
> >>
> >> It's possible for example to get two concurrent MPEG2 PS streams but
> >> only if the bitrate is limited to 6Mbps, which we also do in the
> >> windows driver.
> >>
> >> Apart from the fact that we (the LinuxTV community) will need to
> >> determine what's possible concurrently, and what isn't, it does raise
> >> interesting issues for the V4L2 API.
> >>
> >> So, how do we expose this advanced codec and hardware encoder
> >> limitation information through v4l2 to the applications?
> >>
> >> Do we, don't we?
> >
> > Hi Steve,
> >
> > If I understand it correctly, then a single analog source can be
> > encoded to multiple formats at the same time, right?
>
> No.
>
> > Or is it that multiple analog sources can each be encoded to some
> > format? Or a combination of both?
>
> Multiple analog sources can produce multiple formats, CPU power
> permitting.

So it is always: 'one source -> one encoder', right? Never 'one source -> 
multiple encoders'?

>
> > Is there a limit to the number of concurrent encoders (except for CPU
> > horsepower)?
>
> Not that I'm aware of, yet.

There must be a limit to the number of sources? Or can this device act as a 
codec as well: you present it with raw video from memory and it compresses 
it to e.g. mpeg?

>
> > Basically, since you can have multiple encoders, you also need multiple
> > videoX nodes, once for each encoder. And I would expect that an
> > application can just setup each encoder. Whenever you start an encoder
> > the driver might either accept it or return -ENOSPC if there aren't
> > enough resources.
>
> This is fine, and expected.
>
> > You have to document the restrictions in a document, but otherwise I
> > don't see any reason why implementing this would cause any problems.
> >
> > Adding new containers and codecs is easy: just add the missing ones to
> > enum v4l2_mpeg_stream_type, v4l2_mpeg_audio_encoding and
> > v4l2_mpeg_video_encoding and add any additional controls that are
> > needed to implement each codec/container.
>
> Ahh, this is the magic information I was looking for.
>
> > In theory you can reduce the number of possible
> > containers/codecs/bitrates in the controls according to the remaining
> > resources. But I think that will be too complicated to do for too
> > little gain, not only in the driver but also in the application.
>
> I think this is going to be the major issue and it will start to reflect
> itself through the API into the application. We'll see, maybe not.

The first step will be to get a single encoder going :-)

At this stage I don't know enough about the capabilities of the hardware to 
tell how important it is to have such info available. I suspect any 
solution to this might well need something like a media controller device 
about which I've written before, which can be used to present such meta 
information.

I'm ever more of the opinion that v4l needs such a top-level device as v4l 
hardware becomes more complex.

Regards,

	Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG
--
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