diff mbox

[FFmpeg-devel] Add YUV444 32bit floating point pixel format

Message ID 20170720154659.29102-1-vittorio.giovara@gmail.com
State New
Headers show

Commit Message

Vittorio Giovara July 20, 2017, 3:46 p.m. UTC
With and without alpha.
---
Updated with fate tests.
Vittorio

 libavutil/pixdesc.c              | 51 ++++++++++++++++++++++++++++++++++++++++
 libavutil/pixdesc.h              |  5 ++++
 libavutil/pixfmt.h               |  7 ++++++
 libswscale/utils.c               |  4 ++++
 tests/ref/fate/sws-pixdesc-query | 16 +++++++++++++
 5 files changed, 83 insertions(+)

Comments

Carl Eugen Hoyos July 20, 2017, 9:45 p.m. UTC | #1
2017-07-20 17:46 GMT+02:00 Vittorio Giovara <vittorio.giovara@gmail.com>:

> +    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
> +    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
> +    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
> +    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },

Feel free to ignore but imo adding (non-hw) pix_fmts that can neither
be read nor written by default FFmpeg is not ok.

Carl Eugen
Paul B Mahol July 21, 2017, 6:48 a.m. UTC | #2
On 7/20/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
> 2017-07-20 17:46 GMT+02:00 Vittorio Giovara <vittorio.giovara@gmail.com>:
>
>> +    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
>> +    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
>> +    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
>> +    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },
>
> Feel free to ignore but imo adding (non-hw) pix_fmts that can neither
> be read nor written by default FFmpeg is not ok.

We will just ignore you as usual.
Nicolas George July 21, 2017, 7:24 a.m. UTC | #3
Le tridi 3 thermidor, an CCXXV, Paul B Mahol a écrit :
> We will just ignore you as usual.

Will you please stop the ad-hominem attacks?
Paul B Mahol July 21, 2017, 8:31 a.m. UTC | #4
On 7/21/17, Nicolas George <george@nsup.org> wrote:
> Le tridi 3 thermidor, an CCXXV, Paul B Mahol a ecrit :
>> We will just ignore you as usual.
>
> Will you please stop the ad-hominem attacks?

No I will not, until you and others stop being disrespectful.
Reimar Döffinger July 21, 2017, 6:22 p.m. UTC | #5
On 21.07.2017, at 08:48, Paul B Mahol <onemda@gmail.com> wrote:

> On 7/20/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>> 2017-07-20 17:46 GMT+02:00 Vittorio Giovara <vittorio.giovara@gmail.com>:
>> 
>>> +    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
>>> +    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
>>> +    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
>>> +    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },
>> 
>> Feel free to ignore but imo adding (non-hw) pix_fmts that can neither
>> be read nor written by default FFmpeg is not ok.
> 
> We will just ignore you as usual.

I don't know what is going on here, but I kind of expected for this kind of inappropriate behaviour to finally have died down.
Stop it, this mailing list is not the place to parade conflicts like a trophy, and I believe I am not the only one who simply doesn't want to have to read this kind of thing any longer.
Paul B Mahol July 21, 2017, 6:48 p.m. UTC | #6
On 7/21/17, Reimar Doeffinger <Reimar.Doeffinger@gmx.de> wrote:
> On 21.07.2017, at 08:48, Paul B Mahol <onemda@gmail.com> wrote:
>
>> On 7/20/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>> 2017-07-20 17:46 GMT+02:00 Vittorio Giovara <vittorio.giovara@gmail.com>:
>>>
>>>> +    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
>>>> +    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
>>>> +    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
>>>> +    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },
>>>
>>> Feel free to ignore but imo adding (non-hw) pix_fmts that can neither
>>> be read nor written by default FFmpeg is not ok.
>>
>> We will just ignore you as usual.
>
> I don't know what is going on here, but I kind of expected for this kind of
> inappropriate behaviour to finally have died down.
> Stop it, this mailing list is not the place to parade conflicts like a
> trophy, and I believe I am not the only one who simply doesn't want to have
> to read this kind of thing any longer.

Sorry, but this is not mplayer land.
Reimar Döffinger July 22, 2017, 8:45 a.m. UTC | #7
On 21.07.2017, at 20:48, Paul B Mahol <onemda@gmail.com> wrote:

> On 7/21/17, Reimar Doeffinger <Reimar.Doeffinger@gmx.de> wrote:
>> On 21.07.2017, at 08:48, Paul B Mahol <onemda@gmail.com> wrote:
>> 
>>> On 7/20/17, Carl Eugen Hoyos <ceffmpeg@gmail.com> wrote:
>>>> 2017-07-20 17:46 GMT+02:00 Vittorio Giovara <vittorio.giovara@gmail.com>:
>>>> 
>>>>> +    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
>>>>> +    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
>>>>> +    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
>>>>> +    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },
>>>> 
>>>> Feel free to ignore but imo adding (non-hw) pix_fmts that can neither
>>>> be read nor written by default FFmpeg is not ok.
>>> 
>>> We will just ignore you as usual.
>> 
>> I don't know what is going on here, but I kind of expected for this kind of
>> inappropriate behaviour to finally have died down.
>> Stop it, this mailing list is not the place to parade conflicts like a
>> trophy, and I believe I am not the only one who simply doesn't want to have
>> to read this kind of thing any longer.
> 
> Sorry, but this is not mplayer land.

Where I am happy to return to should this be the way this mailing list becomes again.
But you seem to think that I am speaking from a mistaken assumption of being a "leader" here or something. I assume no such thing. You have contributed a lot more than I have in a long, long time. It's not the point though.
I speak because nobody else does and because to the best of my experience someone needs to.
Not because I particularly believe one email will change you or your behaviour, but because it is necessary to show: if someone makes an unpopular argument, or offends someone or whatever on this list in one discussion that doesn't mean they will stand alone if they are hounded in retaliation in other contexts. (it is also not about everyone else being angels and in the best possible way communcating their opinions, that would not be a reasonable goal)
Though it might not hurt if you consider that your style sometimes means that even people agreeing with you on (technical) principles can't really side with you.
I'd love if you'd now start to go all for the non-agressive way of getting support for your position, but that's just me being a hopeless idealist and as said not the point.

Sorry for disturbing anyone's fun with too much philosophy ;)
Reimar
Reimar Döffinger July 22, 2017, 5:02 p.m. UTC | #8
On 22.07.2017, at 10:45, Reimar Döffinger <Reimar.Doeffinger@gmx.de> wrote:

> 
> Sorry for disturbing anyone's fun with too much philosophy ;)

I also apologize that I sent my previous mail, which was the first on the topic, to the public mailing list.
I SHOULD know better and contact the people involved in private as a first step, but it simply did not occur to me at the time.
My apologies, also to you Paul in case you care... (are we on first name basis on this list?)

Regards,
Reimar
diff mbox

Patch

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 1983ce9ef5..2175b9d799 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -2162,6 +2162,57 @@  static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
         .name = "d3d11",
         .flags = AV_PIX_FMT_FLAG_HWACCEL,
     },
+    [AV_PIX_FMT_YUV444F32LE] = {
+        .name = "yuv444f32le",
+        .nb_components = 3,
+        .log2_chroma_w = 0,
+        .log2_chroma_h = 0,
+        .comp = {
+            { 0, 4, 0, 0, 32, 3, 31, 1 },        /* Y */
+            { 1, 4, 0, 0, 32, 3, 31, 1 },        /* U */
+            { 2, 4, 0, 0, 32, 3, 31, 1 },        /* V */
+        },
+        .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT,
+    },
+    [AV_PIX_FMT_YUV444F32BE] = {
+        .name = "yuv444f32be",
+        .nb_components = 3,
+        .log2_chroma_w = 0,
+        .log2_chroma_h = 0,
+        .comp = {
+            { 0, 4, 0, 0, 32, 3, 31, 1 },        /* Y */
+            { 1, 4, 0, 0, 32, 3, 31, 1 },        /* U */
+            { 2, 4, 0, 0, 32, 3, 31, 1 },        /* V */
+        },
+        .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT,
+    },
+    [AV_PIX_FMT_YUVA444F32LE] = {
+        .name = "yuva444f32le",
+        .nb_components = 4,
+        .log2_chroma_w = 0,
+        .log2_chroma_h = 0,
+        .comp = {
+            { 0, 4, 0, 0, 32, 3, 31, 1 },        /* Y */
+            { 1, 4, 0, 0, 32, 3, 31, 1 },        /* U */
+            { 2, 4, 0, 0, 32, 3, 31, 1 },        /* V */
+            { 3, 4, 0, 0, 32, 3, 31, 1 },        /* A */
+        },
+        .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
+    },
+    [AV_PIX_FMT_YUVA444F32BE] = {
+        .name = "yuva444f32be",
+        .nb_components = 4,
+        .log2_chroma_w = 0,
+        .log2_chroma_h = 0,
+        .comp = {
+            { 0, 4, 0, 0, 32, 3, 31, 1 },        /* Y */
+            { 1, 4, 0, 0, 32, 3, 31, 1 },        /* U */
+            { 2, 4, 0, 0, 32, 3, 31, 1 },        /* V */
+            { 3, 4, 0, 0, 32, 3, 31, 1 },        /* A */
+        },
+        .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR |
+                 AV_PIX_FMT_FLAG_FLOAT | AV_PIX_FMT_FLAG_ALPHA,
+    },
 };
 #if FF_API_PLUS1_MINUS1
 FF_ENABLE_DEPRECATION_WARNINGS
diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h
index c3a6f27f49..294555260a 100644
--- a/libavutil/pixdesc.h
+++ b/libavutil/pixdesc.h
@@ -178,6 +178,11 @@  typedef struct AVPixFmtDescriptor {
 #define AV_PIX_FMT_FLAG_BAYER        (1 << 8)
 
 /**
+ * The pixel format contains IEEE-754 single precision floating point values.
+ */
+#define AV_PIX_FMT_FLAG_FLOAT        (1 << 10)
+
+/**
  * Return the number of bits per pixel used by the pixel format
  * described by pixdesc. Note that this is not the same as the number
  * of bits per sample.
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index e1e4074bee..d6a874da15 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -326,6 +326,11 @@  enum AVPixelFormat {
      */
     AV_PIX_FMT_D3D11,
 
+    AV_PIX_FMT_YUV444F32LE,  ///< IEEE-754 single precision planar YUV 4:4:4,  96bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+    AV_PIX_FMT_YUV444F32BE,  ///< IEEE-754 single precision planar YUV 4:4:4,  96bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+    AV_PIX_FMT_YUVA444F32LE, ///< IEEE-754 single precision planar YUV 4:4:4, 128bpp, (1 Cr & Cb sample per 1x1 Y & A sample), little-endian
+    AV_PIX_FMT_YUVA444F32BE, ///< IEEE-754 single precision planar YUV 4:4:4, 128bpp, (1 Cr & Cb sample per 1x1 Y & A sample), big-endian
+
     AV_PIX_FMT_NB         ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
 };
 
@@ -389,6 +394,8 @@  enum AVPixelFormat {
 #define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE,    BAYER_GBRG16LE)
 #define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE,    BAYER_GRBG16LE)
 
+#define AV_PIX_FMT_YUV444F32  AV_PIX_FMT_NE(YUV444F32BE,  YUV444F32LE)
+#define AV_PIX_FMT_YUVA444F32 AV_PIX_FMT_NE(YUVA444F32BE, YUVA444F32LE)
 
 #define AV_PIX_FMT_YUVA420P9  AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
 #define AV_PIX_FMT_YUVA422P9  AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 17c996734a..892b219049 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -254,6 +254,10 @@  static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
     [AV_PIX_FMT_P010BE]      = { 1, 1 },
     [AV_PIX_FMT_P016LE]      = { 1, 0 },
     [AV_PIX_FMT_P016BE]      = { 1, 0 },
+    [AV_PIX_FMT_YUV444F32LE]  = { 0, 0 },
+    [AV_PIX_FMT_YUV444F32BE]  = { 0, 0 },
+    [AV_PIX_FMT_YUVA444F32LE] = { 0, 0 },
+    [AV_PIX_FMT_YUVA444F32BE] = { 0, 0 },
 };
 
 int sws_isSupportedInput(enum AVPixelFormat pix_fmt)
diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query
index e262a0cabf..7f2fc557d6 100644
--- a/tests/ref/fate/sws-pixdesc-query
+++ b/tests/ref/fate/sws-pixdesc-query
@@ -154,6 +154,8 @@  isBE:
   gray12be
   gray10be
   p016be
+  yuv444f32be
+  yuva444f32be
 
 isYUV:
   yuv420p
@@ -242,6 +244,10 @@  isYUV:
   p010be
   p016le
   p016be
+  yuv444f32le
+  yuv444f32be
+  yuva444f32le
+  yuva444f32be
 
 isPlanarYUV:
   yuv420p
@@ -319,6 +325,10 @@  isPlanarYUV:
   p010be
   p016le
   p016be
+  yuv444f32le
+  yuv444f32be
+  yuva444f32le
+  yuva444f32be
 
 isRGB:
   rgb24
@@ -567,6 +577,8 @@  ALPHA:
   gbrap12le
   gbrap10be
   gbrap10le
+  yuva444f32le
+  yuva444f32be
 
 Packed:
   yuyv422
@@ -726,6 +738,10 @@  Planar:
   gbrap10le
   p016le
   p016be
+  yuv444f32le
+  yuv444f32be
+  yuva444f32le
+  yuva444f32be
 
 PackedRGB:
   rgb24