2017-09-15 0:37 GMT+02:00 Mark Thompson <[email protected]>:
> On 14/09/17 22:30, Carl Eugen Hoyos wrote:
>> 2017-09-07 23:56 GMT+02:00 Mark Thompson <[email protected]>:
>>
>>> +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.
> <https://lists.freedesktop.org/archives/intel-gfx/2017-July/132642.html>),
> 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 },
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel