On 05/09/17 19:55, LongChair . wrote:> Le 05/09/2017 à 19:19, Mark Thompson a 
écrit :
>> On 05/09/17 12:44, LongChair . wrote:
>>> From: LongChair <longch...@hotmail.com>
>>>
>>> This adds hardware decoding for h264 / HEVC / VP8 using MPP Rockchip API.
>>> Will return frames holding an AVDRMFrameDescriptor struct in buf[0] that 
>>> allows drm / dmabuf usage.
>>> Was tested on RK3288 (TinkerBoard) and RK3328.
>>> ---
>>>   Changelog              |   1 +
>>>   configure              |  15 +-
>>>   libavcodec/Makefile    |   3 +
>>>   libavcodec/allcodecs.c |   3 +
>>>   libavcodec/rkmppdec.c  | 567 
>>> +++++++++++++++++++++++++++++++++++++++++++++++++
>>>   5 files changed, 588 insertions(+), 1 deletion(-)
>>>   create mode 100644 libavcodec/rkmppdec.c
>>>
>>> ...
>>> @@ -6008,7 +6016,12 @@ enabled openssl           && { use_pkg_config 
>>> openssl openssl/ssl.h OPENSSL_init
>>>                                  check_lib openssl openssl/ssl.h 
>>> SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
>>>                                  die "ERROR: openssl not found"; }
>>>   enabled qtkit_indev      && { check_header_objcc QTKit/QTKit.h || disable 
>>> qtkit_indev; }
>>> -

Oops, sorry, that wasn't very clear.  I meant leave this ^ blank line, and put 
your check above it.  The form of it in the patch is fine.

>>> +enabled rkmpp             && { { require_pkg_config rockchip_mpp 
>>> rockchip/rk_mpi.h mpp_create ||
>>> +                                 die "ERROR : Rockchip MPP was not 
>>> found."; }  &&
>>> +                               { check_func_headers rockchip/rk_mpi_cmd.h 
>>> "MPP_DEC_GET_FREE_PACKET_SLOT_COUNT" ||
>>> +                                 die "ERROR: Rockchip MPP is outdated, 
>>> please get a more recent one."; } &&
>>> +                               { enabled libdrm || die "ERROR: rkmpp 
>>> requires --enable-libdrm"; }
>>> +                             }
>> Keep the blank line after the list of normal checks and before the more 
>> complex cases below.
> i Hope something like this makes it more readable :
> 
> enabled rkmpp             && {
> 
>                                 { require_pkg_config rockchip_mpp 
> rockchip/rk_mpi.h mpp_create ||
> 
>                                   die "ERROR : Rockchip MPP was not found."; }
> 
>                            &&   { check_func_headers rockchip/rk_mpi_cmd.h 
> "MPP_DEC_GET_FREE_PACKET_SLOT_COUNT" ||
> 
>                                   die "ERROR: Rockchip MPP is outdated, 
> please get a more recent one."; }
> 
>                            &&   { enabled libdrm ||
> 
>                                   die "ERROR: rkmpp requires 
> --enable-libdrm"; }
> 
>                               }
> 
>> Also needs a rebase - qtkit_indev was removed.
> Will rebase
>>> ...
>>> +
>>> +        // setup general frame fields
>>> +        frame->format   = AV_PIX_FMT_DRM_PRIME;
>>> +        frame->width    = mpp_frame_get_width(mppframe);
>>> +        frame->height   = mpp_frame_get_height(mppframe);
>>> +        frame->pts      = mpp_frame_get_pts(mppframe);
>> Can you get other frame metadata here?  (SAR, all of the colour stuff?)
> well there are a few other functions that i didn't use that seem to be 
> colorspace related here 
> https://github.com/rockchip-linux/mpp/blob/30032ae303956788bd5b709c9bc70867b0ea95d6/inc/mpp_frame.h#L242-L253
> I never looked into those yet, but if you feel like some would be 
> helpful and important I could have another looks there.
>> Does anything sensible happen with interlaced streams?
> there are flags defined for this in the MPP headers, but i don't know if 
> they are effectively used in MppFrame. Would need to check further.
> https://github.com/rockchip-linux/mpp/blob/30032ae303956788bd5b709c9bc70867b0ea95d6/inc/mpp_frame.h#L28-L43

Yes, exactly those - all five of the colour-related functions.  (I see the 
point made earlier that this file is oddly reminiscent of libavutil/pixfmt.h 
(including the comments), so you can probably just put the values directly into 
the AVFrame fields...)

>>> ...
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to