[FFmpeg-devel] [PATCH]opencl: compile kernels separately

Hendrik Leppkes h.leppkes at gmail.com
Wed Oct 30 10:03:49 CET 2013

On Wed, Oct 30, 2013 at 7:32 AM, Reimar Döffinger
<Reimar.Doeffinger at gmx.de> wrote:
> On 30.10.2013, at 04:07, Wei Gao <highgod0401 at gmail.com> wrote:
>> 2013/10/30 Lenny Wang <lenny at multicorewareinc.com>
>>> Attached new patch after 2nd review.
>>> On Tue, Oct 29, 2013 at 3:24 PM, Lenny Wang <lenny at multicorewareinc.com>
>>> wrote:
>>>> Attached new patch has been cleaned up and modified based on previous
>>>> reviewer's comments.  Any comments or questions please just let me
>>>> know.
>>>> On Tue, Oct 29, 2013 at 4:19 AM, Thilo Borgmann <thilo.borgmann at mail.de>
>>> wrote:
>>>>> Am 29.10.13 07:59, schrieb Lenny Wang:
>>>>>> Currently opencl kernels in ffmpeg are compiled altogether at
>>>>>> initialization stage, most of related data structures are maintained
>>> within
>>>>>> the opencl framework of ffmpeg.  This is very cumbersome to use and is
>>> not
>>>>>> efficient.  This patch uses distributed opencl programs/kernels for
>>> each
>>>>>> filter (or potentially any other component that uses opencl), allowing
>>>>>> kernels to be compiled separately at each component's initialization
>>> stage.
>>>>>> Tests have been conducted successfully on mainstream Nvidia/AMD/Intel
>>>>>> platforms with "-vf deshake=opencl=1,unsharp=opencl=1".
>>>>> Your patch contains trailing whitespaces, a lot of unnecessary and
>>> unrelated
>>>>> changes. Please clean it up and resubmit it.
>>>>> -Thilo
>> Hi, I reviewed the patch, and still has some bugs on code styles.
>> I correct all bugs which I have found and make a patch, is it OK for you?
> The stuff you are changing all seems to be public API (has av_ prefix).
> You may only change those in a way that might break any existing code at a major API bump, and usually only after a transition period.
> If you want to use a new API you can add it with new names, but you can't just remove/change the old one.
> Or to put it differently: if you install a previous FFmpeg version and then replace libavutil.so and only that one with a version after this patch and _any_ if the opencl filters break, the change is wrong.

I believe the OpenCL API was considered experimental and as such is
not necessarily required to be API stable yet, until that experimental
tag is revoked.

See the note in libavutil/opencl.h:
* This interface is considered still experimental and its API and ABI may
* change without prior notice.

- Hendrik

More information about the ffmpeg-devel mailing list