From patchwork Fri Sep 15 12:09:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 5152 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp564174jaa; Fri, 15 Sep 2017 05:09:55 -0700 (PDT) X-Received: by 10.223.152.175 with SMTP id w44mr19513791wrb.98.1505477395407; Fri, 15 Sep 2017 05:09:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1505477395; cv=none; d=google.com; s=arc-20160816; b=kC/0Fw853z0YiQjJhBqDJwDl2C3DHiu3kMBcJX3HIgUkDAkvM3QuLB8EE1P73gnVBd dduTgiF5gchO8o04W3iR3MxJjhAVl4ll51gAjq8yYqpMJNycxIs7IaG29WytVjUQ0UMU Ja7dqwC5J6RrRmDzGpikMpz0Tj3faTVivO+gMenfj5BJH2Np9UYg/ZwRy+2VjLZe3MIa OeZkXmpbgD9NnpOblzQo91ta/JVM2KVFp0yOL2JapYdeZcGuP4Ru5SCLl0iSQIgrBa80 IJu/HqASXYmy6wbi+QZlbsMLibbFWgubePUaIirjV8F4aoxUaqQfo6Aym/AK5i71uS01 bt/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:delivered-to:arc-authentication-results; bh=Z7Vg+sSneZqw+YSb6uya8VDMb4MUg3UByJBYCF5VRe0=; b=uowQiat1AreH08AFZOzS5HEDXxuHbXNj40LL6kHxvAma0lBk3hMgW3kv5OkHIQXg8s 09e7AZPprzfvwfPPxPid9Ib1OKVcqaUaMv6Qiyh2/AK0sdJW82LmszW6RKOqYJz5LzFl ksBoC/GfdpI7dtaEEOIJD1RV26LMrUka1jf+n8wSpJ8FzIZBvUbLQI2LrlvbWABW+gCf PA+vPp4JbcwH7rgWYyPHE+FMkSxbUvUKqmus0+TOo7/UYIvnZWL1I7ZRRe0KAQBSlg55 0PX/ZulaxHmvtbMQfu0mkPDN1rw19UsMogmLK7M7X3DaTQhpJefK3IeBdzWjlLIGFQzB xbxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ba48byMu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t4si858855wme.149.2017.09.15.05.09.55; Fri, 15 Sep 2017 05:09:55 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ba48byMu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 67CC8689F5E; Fri, 15 Sep 2017 15:09:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f43.google.com (mail-it0-f43.google.com [209.85.214.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B331689D6B for ; Fri, 15 Sep 2017 15:09:39 +0300 (EEST) Received: by mail-it0-f43.google.com with SMTP id r131so1275193itc.1 for ; Fri, 15 Sep 2017 05:09:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=yQ4GOWDFOZsX6oADTPetUh0OORc9EmCxb7f2rNuts3M=; b=ba48byMuW8N8ATetNbEsXKiQytmEoJVB7gjRaZl90bUMrc+wstT9EQFswVafJTk+NE lIb0gCOhXSrJut/V1V7VmBDaYbaXcxw/8+5Y9abzt0SXU5mhbZLy3X0dQi4RGQAe6oeI 15J6zzJJxlQHBAY2UC4gGevtPmnDtnP/eL3Sqdq+791h8utOQDawRIzQF1h3UqxmV8uc K1bDKOx6uXMljlmq92B8PRu7811Hyp6OLPkvldPLuskC/x3Dql/vlg2pbgyvQTTHUSGC R0rMtcdVN6KLOzbWlDnPlqq70yGf7W5FZ/v7rI6Cj/Jfa69e12LnSK2mkPxQnekyvUhS r7eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=yQ4GOWDFOZsX6oADTPetUh0OORc9EmCxb7f2rNuts3M=; b=keMc2vVRhX2H/RcU/TCWxy9Rxpbc84dwx1RHcU1w7bnDi3KbDyYk66tMYqJ6bj4nsW NohmVfjepI7Z/iyaD2VriBjEwsX/8CpCdPixqLXjcawV3BvyAK6N/Yv9Nvj5sOTMZhYD XV7p9FZblRuEWW8oZAzbUNbLmaxuFC91OZJqKii2qnGirnH86tYckZszMfzmpSvlqr1O Zuo2eLy1CN73WGr29S0Is5PPz48rrHDW+Zf0i4poMfCUYXbVVzckuOIhH7dSqu7PdTlq Z/E7H1hfolNoIB302BmctT6L+PEt3Fa3luibncsC+WOkV4mmNUcvvgxslquNwxl/bJXn h8Cw== X-Gm-Message-State: AHPjjUgSx/s2xyBcTv87XMy+ffURA2LA3ZxOCD7gpMczRHq15pqkKE7+ PX36gdtmTLKLsI4Ym8LlmASgU4Gs8RFQKzDwyisT/A== X-Google-Smtp-Source: AOwi7QAAJobcLwL/2XqL3j0wcNOqRbnqIwBELuEbM78rE6jalgWBVtw6eQs+y4bOSZ9woITL1P4oI3sKLT2bI3MVlUw= X-Received: by 10.36.51.5 with SMTP id k5mr4629678itk.98.1505477384790; Fri, 15 Sep 2017 05:09:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.2.36.72 with HTTP; Fri, 15 Sep 2017 05:09:24 -0700 (PDT) In-Reply-To: <1db7424e-493a-a6e5-e3cd-14acc04bc0b1@jkqxz.net> References: <20170907215619.3182-1-sw@jkqxz.net> <20170907215619.3182-5-sw@jkqxz.net> <1db7424e-493a-a6e5-e3cd-14acc04bc0b1@jkqxz.net> From: Carl Eugen Hoyos Date: Fri, 15 Sep 2017 14:09:24 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 5/5] lavd: Add KMS frame grabber X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 2017-09-15 0:37 GMT+02:00 Mark Thompson : > On 14/09/17 22:30, Carl Eugen Hoyos wrote: >> 2017-09-07 23:56 GMT+02:00 Mark Thompson : >> >>> +static const struct { >>> + enum AVPixelFormat pixfmt; >>> + uint32_t drm_format; >>> +} kmsgrab_formats[] = { >>> + { AV_PIX_FMT_GRAY8, DRM_FORMAT_R8 }, >>> + { AV_PIX_FMT_GRAY16LE, DRM_FORMAT_R16 }, >>> + { AV_PIX_FMT_RGB24, DRM_FORMAT_RGB888 }, >>> + { AV_PIX_FMT_BGR24, DRM_FORMAT_BGR888 }, >>> + { AV_PIX_FMT_0RGB, DRM_FORMAT_XRGB8888 }, >>> + { AV_PIX_FMT_0BGR, DRM_FORMAT_XBGR8888 }, >>> + { AV_PIX_FMT_RGB0, DRM_FORMAT_RGBX8888 }, >>> + { AV_PIX_FMT_BGR0, DRM_FORMAT_BGRX8888 }, >>> + { AV_PIX_FMT_ARGB, DRM_FORMAT_ARGB8888 }, >>> + { AV_PIX_FMT_ABGR, DRM_FORMAT_ABGR8888 }, >>> + { AV_PIX_FMT_RGBA, DRM_FORMAT_RGBA8888 }, >>> + { AV_PIX_FMT_BGRA, DRM_FORMAT_BGRA8888 }, >>> + { AV_PIX_FMT_YUYV422, DRM_FORMAT_YUYV }, >>> + { AV_PIX_FMT_YVYU422, DRM_FORMAT_YVYU }, >>> + { AV_PIX_FMT_UYVY422, DRM_FORMAT_UYVY }, >>> + { AV_PIX_FMT_NV12, DRM_FORMAT_NV12 }, >>> + { AV_PIX_FMT_YUV420P, DRM_FORMAT_YUV420 }, >>> + { AV_PIX_FMT_YUV422P, DRM_FORMAT_YUV422 }, >>> + { AV_PIX_FMT_YUV444P, DRM_FORMAT_YUV444 }, >> >> Which of those were you able to test? > > Only the 32-bit RGB0-type ones (all of them are testable because you just get the colours in a different order). So RGB0, BGR0, 0RGB and 0BGR all work fine? > Intel at least should work with others in near-future versions (e.g. ), though I haven't actually tested this. It seemed sensible to include all core DRM formats which map to ffmpeg pixfmts to account for other drivers (possibly future) which I can't test now. Good idea, twelve more are attached. > I've tested on amdgpu, exynos, i915 and rockchip. It should work on other KMS drivers, though if the output is tiled or not-CPU-mappable it can be hard to get the output somewhere where it can actually be used. (The ARM ones are fine and allow hwdownload directly. Intels I've tried are mappable but tiled so hwdownload is messed up, but they interoperate cleanly with VAAPI. The AMD I have makes the objects completely unmappable from the CPU, but they can be imported to other GPU things with Mesa.) > >> I find the comments in the header file very misleading: >> What is "little-endian 8:8:8:8 ARGB"? > > It is just A-R-G-B in memory in that order as you might expect > without the comment. So the comment is simply wrong for the 8:8:8:8 RGB formats? Iirc, the same comment in the SDL sources defines another order (or OpenGL, I don't remember atm), as does FFmpeg through its RGB32 formats. > Not sure why it says little-endian - maybe to emphasise that it doesn't change based on the host architecture? Wouldn't it be better if the comment said "does not change based on the host architecture"? Carl Eugen diff --git a/libavdevice/kmsgrab.c b/libavdevice/kmsgrab.c index 67a83ef..2b8affa 100644 --- a/libavdevice/kmsgrab.c +++ b/libavdevice/kmsgrab.c @@ -207,7 +207,17 @@ static const struct { #endif #ifdef DRM_FORMAT_R16 { AV_PIX_FMT_GRAY16LE, DRM_FORMAT_R16 }, + { AV_PIX_FMT_GRAY16BE, DRM_FORMAT_R16 | DRM_FORMAT_BIG_ENDIAN }, #endif + { AV_PIX_FMT_BGR8, DRM_FORMAT_BGR233 }, + { AV_PIX_FMT_RGB555LE, DRM_FORMAT_XRGB1555 }, + { AV_PIX_FMT_RGB555BE, DRM_FORMAT_XRGB1555 | DRM_FORMAT_BIG_ENDIAN }, + { AV_PIX_FMT_BGR555LE, DRM_FORMAT_XBGR1555 }, + { AV_PIX_FMT_BGR555BE, DRM_FORMAT_XBGR1555 | DRM_FORMAT_BIG_ENDIAN }, + { AV_PIX_FMT_RGB565LE, DRM_FORMAT_RGB565 }, + { AV_PIX_FMT_RGB565BE, DRM_FORMAT_RGB565 | DRM_FORMAT_BIG_ENDIAN }, + { AV_PIX_FMT_BGR565LE, DRM_FORMAT_BGR565 }, + { AV_PIX_FMT_BGR565BE, DRM_FORMAT_BGR565 | DRM_FORMAT_BIG_ENDIAN }, { AV_PIX_FMT_RGB24, DRM_FORMAT_RGB888 }, { AV_PIX_FMT_BGR24, DRM_FORMAT_BGR888 }, { AV_PIX_FMT_0RGB, DRM_FORMAT_XRGB8888 }, @@ -222,6 +232,8 @@ static const struct { { AV_PIX_FMT_YVYU422, DRM_FORMAT_YVYU }, { AV_PIX_FMT_UYVY422, DRM_FORMAT_UYVY }, { AV_PIX_FMT_NV12, DRM_FORMAT_NV12 }, + { AV_PIX_FMT_YUV410P, DRM_FORMAT_YUV410 }, + { AV_PIX_FMT_YUV411P, DRM_FORMAT_YUV411 }, { AV_PIX_FMT_YUV420P, DRM_FORMAT_YUV420 }, { AV_PIX_FMT_YUV422P, DRM_FORMAT_YUV422 }, { AV_PIX_FMT_YUV444P, DRM_FORMAT_YUV444 },