From: Hans Verkuil <hverkuil@xs4all.nl>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: linux-media@vger.kernel.org, m.szyprowski@samsung.com,
pawel@osciak.com, awalls@md.metrocast.net,
Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [RFCv2 PATCH 7/9] vb2: add thread support
Date: Wed, 04 Dec 2013 18:03:47 +0100 [thread overview]
Message-ID: <529F6073.4080308@xs4all.nl> (raw)
In-Reply-To: <14003669.Z9DbBGJgYq@avalon>
On 12/04/2013 05:33 PM, Laurent Pinchart wrote:
> Hi Hans,
>
> On Wednesday 04 December 2013 08:47:25 Hans Verkuil wrote:
>> On 12/04/2013 02:17 AM, Laurent Pinchart wrote:
>>> On Tuesday 03 December 2013 10:56:07 Hans Verkuil wrote:
>>>> On 11/29/13 19:21, Laurent Pinchart wrote:
>>>>> On Friday 29 November 2013 10:58:42 Hans Verkuil wrote:
>>>>>> From: Hans Verkuil <hans.verkuil@cisco.com>
>>>>>>
>>>>>> In order to implement vb2 DVB or ALSA support you need to be able to
>>>>>> start a kernel thread that queues and dequeues buffers, calling a
>>>>>> callback function for every captured/displayed buffer. This patch adds
>>>>>> support for that.
>>>>>>
>>>>>> It's based on drivers/media/v4l2-core/videobuf-dvb.c, but with all the
>>>>>> DVB specific stuff stripped out, thus making it much more generic.
>>>>>
>>>>> Do you see any use for this outside of videobuf2-dvb ? If not I wonder
>>>>> whether the code shouldn't be moved there. The sync objects framework
>>>>> being developed for KMS will in my opinion cover the other use cases,
>>>>> and
>>>>> I'd like to discourage non-DVB drivers to use vb2 threads in the
>>>>> meantime.
>>>>
>>>> I'm using it for ALSA drivers which, at least in my case, require almost
>>>> identical functionality as that needed by DVB.
>>>
>>> You're using videobuf2 for audio ?
>>
>> For this particular board the audio DMA is just another DMA channel.
>> Handling audio DMA is identical to video DMA. Why reinvent the wheel?
>
> videobuf2 is more about buffer management than DMA management. As the code is
> based around a two-dimensional, possibly multiplanar, buffer it's quite
> hackish to reuse it for audio.
I disagree with that. vb2 has all the right hooks to start/stop DMA and
queue/dequeue buffers. It's used for VBI as well and can just as easily
support meta data. For this particular board there is no difference
between audio and video DMA.
> Doesn't ALSA offer a buffer management library?
Yes it does. But due to the peculiarities of the particular board it wasn't
sufficient. Specifically I must copy the audio data from the alsa buffers to
vb2 buffers since the layout of the data differs.
As mentioned I will also work on a different board where the audio DMA is
much more standard (i.e. the same buffer layout can be used), and I want to
investigate if using vb2 in that case makes sense or not.
>
>> The board I developed this for has somewhat peculiar audio handling (sorry,
>> it's an internal product and I can't go into details), but I'll do the same
>> exercise for another board that I can open source and there audio handling
>> is standard. I want to see if I can use that to develop a videobuf2-alsa.c
>> module that takes care of most of the alsa complexity. I don't know yet how
>> that will work out, I'll have to experiment a bit.
>>
>>>> But regardless of that, I really don't like the way it was done in the
>>>> old videobuf framework, mixing low-level videobuf calls/data structure
>>>> accesses with DVB code. That should be separate.
>>>>
>>>> The vb2 core framework should provide the low-level functionality that is
>>>> needed by the videobuf2-dvb to build on.
>>>
>>> Right, but I want to make sure that drivers will not start using this
>>> directly.
>>
>> What sort of use-cases were you thinking of, other than DVB and ALSA? I
>> don't off-hand see one.
>
> That's the thing, I don't see any valid use case, I just want to make sure we
> won't get crazy use cases implemented with vb2 threads in the future :-)
>
>>> It should be an internal videobuf2 API.
>>
>> I happily add comments to the source and header mentioning that it is for
>> core use only and that for any other uses the mailinglist should be
>> contacted, but I really don't want to mix core vb2 code with DVB code. That
>> should remain separate.
>
> OK, that sounds good with me.
>
> What about moving thread support to videobuf2-thread.c ?
I tried that originally, but in order to do that I had to make a number
of low-level vb2 functions extern instead of static, and that was quite
messy. So I decided against that. It's not that much code (106 lines),
after all.
That said, it might be interesting at some point to split off the fileio
and thread handling into a separate file.
Regards,
Hans
next prev parent reply other threads:[~2013-12-04 17:04 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-29 9:58 [RFCv2 PATCH 0/9] vb2: various cleanups and improvements Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 1/9] vb2: push the mmap semaphore down to __buf_prepare() Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 2/9] vb2: simplify qbuf/prepare_buf by removing callback Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 3/9] vb2: remove the 'fileio = NULL' hack Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 4/9] vb2: retry start_streaming in case of insufficient buffers Hans Verkuil
2013-12-04 13:42 ` Marek Szyprowski
2013-11-29 9:58 ` [RFCv2 PATCH 5/9] vb2: don't set index, don't start streaming for write() Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 6/9] vb2: return ENODATA in start_streaming in case of too few buffers Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 7/9] vb2: add thread support Hans Verkuil
2013-11-29 18:21 ` Laurent Pinchart
2013-12-03 9:56 ` Hans Verkuil
2013-12-04 1:17 ` Laurent Pinchart
2013-12-04 7:47 ` Hans Verkuil
2013-12-04 16:33 ` Laurent Pinchart
2013-12-04 17:03 ` Hans Verkuil [this message]
2013-12-04 20:57 ` Laurent Pinchart
2013-11-29 9:58 ` [RFCv2 PATCH 8/9] vb2: Add videobuf2-dvb support Hans Verkuil
2013-11-29 9:58 ` [RFCv2 PATCH 9/9] vb2: Improve file I/O emulation to handle buffers in any order Hans Verkuil
2013-11-29 18:16 ` [RFCv2 PATCH 1/9] vb2: push the mmap semaphore down to __buf_prepare() Laurent Pinchart
2013-12-03 9:41 ` Hans Verkuil
2013-12-04 1:15 ` Laurent Pinchart
2013-11-29 10:17 ` [RFCv2 PATCH 0/9] vb2: various cleanups and improvements Hans Verkuil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=529F6073.4080308@xs4all.nl \
--to=hverkuil@xs4all.nl \
--cc=awalls@md.metrocast.net \
--cc=hans.verkuil@cisco.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=pawel@osciak.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.