[FFmpeg-devel] [PATCH] Add HW H.264 and HEVC encoding for AMD GPUs based on AMF SDK

Mark Thompson sw at jkqxz.net
Tue Nov 28 01:38:56 EET 2017


On 27/11/17 23:34, Mironov, Mikhail wrote:
>> -----Original Message-----
>> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf
>> Of Mark Thompson
>> Sent: November 27, 2017 6:25 PM
>> To: ffmpeg-devel at ffmpeg.org
>> Subject: Re: [FFmpeg-devel] [PATCH] Add HW H.264 and HEVC encoding for
>> AMD GPUs based on AMF SDK
>>
>> On 27/11/17 22:35, Mironov, Mikhail wrote:
>>>>> -----Original Message-----
>>>>> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On
>>>>> Behalf Of Mark Thompson
>>>>> Sent: November 27, 2017 3:11 PM
>>>>> To: FFmpeg development discussions and patches <ffmpeg-
>>>>> devel at ffmpeg.org>
>>>>> Subject: [FFmpeg-devel] [PATCH] Add HW H.264 and HEVC encoding for
>>>> AMD
>>>>> GPUs based on AMF SDK
>>>>>
>>>>> From: mmironov <mikhail.mironov at amd.com>
>>>>>
>>>>> Requires AMF headers for at least version 1.4.2 (older versions do
>>>>> not support building with C).
>>>>> ---
>>>>> Uses upstream headers from <https://github.com/GPUOpen-
>>>>> LibrariesAndSDKs/AMF/tree/master/amf/public/include>.  I couldn't
>>>>> find an official install method so I've assumed that the AMF headers
>>>>> are under an AMF/ prefix (they have rather generic names, so they
>>>>> need something).  Just copying the two directories from the source
>>>>> path to /usr/local/include/AMF or similar is sufficient.
>>>>>
>>>>> I've also assumed that the features which don't yet exist upstream
>>>>> (H.264 CONSTRAINED profiles) will appear in a future version 1.5.0.
>>>>> There might be more version checking needed, but I'm not sure (newer
>>>>> version / older header should work because of the version
>>>>> initialisation, while older version / newer header fails at that maybe?).
>>>>>
>>>>> The OS checks are removed, it builds fine on Linux if you have the
>> headers.
>>>>>
>>>>
>>>> The public headers from github do not have several fixes that were
>>>> done in the customized header.
>>>> I could cherry-pick and push them but I did not test this for a while
>>>> assuming that the custom header is used.
>>>>
>>>
>>> Pushed.
>>
>> Thank you!
>>
>> Is there an official way to detect a finer version there?  (The version number
>> is still 1.4.4.)  If not, we can just look for one of the just-added enum
>> constants for the configure test.
> 
> There is AMFQueryVersion() exposed as "C" export. See Factory.h
> It will return driver version of runtime but at this point the API is forward and backward compatible.
> The changes I pushed do not change API, just fixed C  compatibility issues.
> So at this point there is no need to check version against header.
> In the future if backward compatibility is broken AMFInit() will check header version and will return error.

We need to check the compatibility of the header at configure-time, though - configure needs to determine whether the header is usable or not.

If the user has, for example, the original 1.4.4 headers then the configure test looking for the AMFFactory will pass, but the compile will not succeed.

- Mark


More information about the ffmpeg-devel mailing list