diff mbox series

[FFmpeg-devel,v2,1/3] lavu/pix_fmt: add new pixel format x2rgb10

Message ID 1587532983-20287-1-git-send-email-fei.w.wang@intel.com
State New
Headers show
Series [FFmpeg-devel,v2,1/3] lavu/pix_fmt: add new pixel format x2rgb10
Related show

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Fei Wang April 22, 2020, 5:23 a.m. UTC
The format is packed RGB with each channel 10 bits available and
include 2 bits unused.

Signed-off-by: Fei Wang <fei.w.wang@intel.com>
---
 libavutil/pixdesc.c                     | 24 ++++++++++++++++++++++++
 libavutil/pixfmt.h                      |  3 +++
 libavutil/version.h                     |  2 +-
 tests/ref/fate/filter-pixdesc-x2rgb10le |  1 +
 tests/ref/fate/sws-pixdesc-query        | 11 +++++++++++
 5 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 tests/ref/fate/filter-pixdesc-x2rgb10le

Comments

Fei Wang April 22, 2020, 5:28 a.m. UTC | #1
> -----Original Message-----
> From: Wang, Fei W <fei.w.wang@intel.com>
> Sent: Wednesday, April 22, 2020 1:23 PM
> To: ffmpeg-devel@ffmpeg.org
> Cc: Wang, Fei W <fei.w.wang@intel.com>
> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
> 
> The format is packed RGB with each channel 10 bits available and include 2
> bits unused.
> 
> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
> ---
>  libavutil/pixdesc.c                     | 24 ++++++++++++++++++++++++
>  libavutil/pixfmt.h                      |  3 +++
>  libavutil/version.h                     |  2 +-
>  tests/ref/fate/filter-pixdesc-x2rgb10le |  1 +
>  tests/ref/fate/sws-pixdesc-query        | 11 +++++++++++
>  5 files changed, 40 insertions(+), 1 deletion(-)  create mode 100644
> tests/ref/fate/filter-pixdesc-x2rgb10le
> 
> diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 9d61c52..23ec1ab
> 100644
> --- a/libavutil/pixdesc.c
> +++ b/libavutil/pixdesc.c
> @@ -252,6 +252,30 @@ static const AVPixFmtDescriptor
> av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
>          },
>          .flags = AV_PIX_FMT_FLAG_RGB,
>      },
> +    [AV_PIX_FMT_X2RGB10LE] = {
> +        .name = "x2rgb10le",
> +        .nb_components= 3,
> +        .log2_chroma_w= 0,
> +        .log2_chroma_h= 0,
> +        .comp = {
> +            { 0, 4, 2, 4, 10, 3, 9, 2 }, 	   /* R */
> +            { 0, 4, 1, 2, 10, 3, 9, 3 }, 	   /* G */
> +            { 0, 4, 0, 0, 10, 3, 9, 4 }, 	   /* B */
> +        },
> +        .flags = AV_PIX_FMT_FLAG_RGB,
> +    },
> +    [AV_PIX_FMT_X2RGB10BE] = {
> +        .name = "x2rgb10be",
> +        .nb_components= 3,
> +        .log2_chroma_w= 0,
> +        .log2_chroma_h= 0,
> +        .comp = {
> +            { 0, 4, 0, 4, 10, 3, 9, 2 }, 	   /* R */
> +            { 0, 4, 1, 2, 10, 3, 9, 3 }, 	   /* G */
> +            { 0, 4, 2, 0, 10, 3, 9, 4 }, 	   /* B */
> +        },
> +        .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE,
> +    },
>      [AV_PIX_FMT_YUV422P] = {
>          .name = "yuv422p",
>          .nb_components = 3,
> diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 1c625cf..71058d7
> 100644
> --- a/libavutil/pixfmt.h
> +++ b/libavutil/pixfmt.h
> @@ -358,6 +358,8 @@ enum AVPixelFormat {
>      AV_PIX_FMT_Y210BE,    ///< packed YUV 4:2:2 like YUYV422, 20bpp, data
> in the high bits, big-endian
>      AV_PIX_FMT_Y210LE,    ///< packed YUV 4:2:2 like YUYV422, 20bpp, data
> in the high bits, little-endian
> 
> +    AV_PIX_FMT_X2RGB10LE,    ///< packed RGB 10:10:10, 30bpp, (msb)2X
> 10R 10G 10B(lsb), little-endian, X=unused/undefined
> +    AV_PIX_FMT_X2RGB10BE,    ///< packed RGB 10:10:10, 30bpp, (msb)2X
> 10R 10G 10B(lsb), big-endian, X=unused/undefined
>      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
>  };
> 
> @@ -447,6 +449,7 @@ enum AVPixelFormat {
>  #define AV_PIX_FMT_P016       AV_PIX_FMT_NE(P016BE,  P016LE)
> 
>  #define AV_PIX_FMT_Y210       AV_PIX_FMT_NE(Y210BE,  Y210LE)
> +#define AV_PIX_FMT_X2RGB10       AV_PIX_FMT_NE(X2RGB10BE,
> X2RGB10LE)
> 
>  /**
>    * Chromaticity coordinates of the source primaries.
> diff --git a/libavutil/version.h b/libavutil/version.h index 70836a5..e4fa0a9
> 100644
> --- a/libavutil/version.h
> +++ b/libavutil/version.h
> @@ -79,7 +79,7 @@
>   */
> 
>  #define LIBAVUTIL_VERSION_MAJOR  56
> -#define LIBAVUTIL_VERSION_MINOR  42
> +#define LIBAVUTIL_VERSION_MINOR  43
>  #define LIBAVUTIL_VERSION_MICRO 102
> 
>  #define LIBAVUTIL_VERSION_INT
> AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
> diff --git a/tests/ref/fate/filter-pixdesc-x2rgb10le b/tests/ref/fate/filter-
> pixdesc-x2rgb10le
> new file mode 100644
> index 0000000..94c8640
> --- /dev/null
> +++ b/tests/ref/fate/filter-pixdesc-x2rgb10le
> @@ -0,0 +1 @@
> +pixdesc-x2rgb10le    98d697ed4668daf535163d5e08c903bb
> diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-
> query
> index bc9a0d8..c3cccfa 100644
> --- a/tests/ref/fate/sws-pixdesc-query
> +++ b/tests/ref/fate/sws-pixdesc-query
> @@ -57,6 +57,8 @@ isNBPS:
>    nv20le
>    p010be
>    p010le
> +  x2rgb10be
> +  x2rgb10le
>    xyz12be
>    xyz12le
>    y210be
> @@ -141,6 +143,7 @@ isBE:
>    rgb555be
>    rgb565be
>    rgba64be
> +  x2rgb10be
>    xyz12be
>    y210be
>    ya16be
> @@ -436,6 +439,8 @@ isRGB:
>    rgb8
>    rgba64be
>    rgba64le
> +  x2rgb10be
> +  x2rgb10le
> 
>  Gray:
>    gray
> @@ -582,6 +587,8 @@ AnyRGB:
>    rgb8
>    rgba64be
>    rgba64le
> +  x2rgb10be
> +  x2rgb10le
> 
>  ALPHA:
>    ayuv64be
> @@ -689,6 +696,8 @@ Packed:
>    rgba64le
>    uyvy422
>    uyyvyy411
> +  x2rgb10be
> +  x2rgb10le
>    xyz12be
>    xyz12le
>    y210be
> @@ -853,6 +862,8 @@ PackedRGB:
>    rgb8
>    rgba64be
>    rgba64le
> +  x2rgb10be
> +  x2rgb10le
> 
>  PlanarRGB:
>    gbrap
> --
> 2.7.4
V2: fixed FATE fail for separate patch in this patch series.
Lynne May 12, 2020, 9:42 p.m. UTC | #2
Apr 22, 2020, 06:28 by fei.w.wang@intel.com:

>> -----Original Message-----
>> From: Wang, Fei W <fei.w.wang@intel.com>
>> Sent: Wednesday, April 22, 2020 1:23 PM
>> To: ffmpeg-devel@ffmpeg.org
>> Cc: Wang, Fei W <fei.w.wang@intel.com>
>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
>>
>> The format is packed RGB with each channel 10 bits available and include 2
>> bits unused.
>>
>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
>>

Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
I'm happy with the name as-is.
Mark Thompson May 12, 2020, 10:42 p.m. UTC | #3
On 12/05/2020 22:42, Lynne wrote:
> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
>>> -----Original Message-----
>>> From: Wang, Fei W <fei.w.wang@intel.com>
>>> Sent: Wednesday, April 22, 2020 1:23 PM
>>> To: ffmpeg-devel@ffmpeg.org
>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
>>>
>>> The format is packed RGB with each channel 10 bits available and include 2
>>> bits unused.
>>>
>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
>>>
> 
> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
> I'm happy with the name as-is.

Yes, but we probably need to reach a consensus on whether we are accepting the addition of these V210-like packed formats first - there were voices against it last time this was raised.

I am in favour of allowing it because it is a common buffer format used in both graphics and display hardware, and appears in pretty much all related APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).

Thanks,

- Mark
Lynne May 12, 2020, 11:19 p.m. UTC | #4
May 12, 2020, 23:42 by sw@jkqxz.net:

> On 12/05/2020 22:42, Lynne wrote:
>
>> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
>>
>>>> -----Original Message-----
>>>> From: Wang, Fei W <fei.w.wang@intel.com>
>>>> Sent: Wednesday, April 22, 2020 1:23 PM
>>>> To: ffmpeg-devel@ffmpeg.org
>>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
>>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
>>>>
>>>> The format is packed RGB with each channel 10 bits available and include 2
>>>> bits unused.
>>>>
>>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
>>>>
>>
>> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
>> I'm happy with the name as-is.
>>
>
> Yes, but we probably need to reach a consensus on whether we are accepting the addition of these V210-like packed formats first - there were voices against it last time this was raised.
>
> I am in favour of allowing it because it is a common buffer format used in both graphics and display hardware, and appears in pretty much all related APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).
>

Same. With it, we would be able to support kmsgrab from 10bit displays, which are becoming more
and more popular.
Fei Wang May 15, 2020, 6:58 a.m. UTC | #5
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Lynne
> Sent: Wednesday, May 13, 2020 7:19 AM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
> format x2rgb10
> 
> May 12, 2020, 23:42 by sw@jkqxz.net:
> 
> > On 12/05/2020 22:42, Lynne wrote:
> >
> >> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
> >>
> >>>> -----Original Message-----
> >>>> From: Wang, Fei W <fei.w.wang@intel.com>
> >>>> Sent: Wednesday, April 22, 2020 1:23 PM
> >>>> To: ffmpeg-devel@ffmpeg.org
> >>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
> >>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
> >>>>
> >>>> The format is packed RGB with each channel 10 bits available and
> >>>> include 2 bits unused.
> >>>>
> >>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
> >>>>
> >>
> >> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
> >> I'm happy with the name as-is.
> >>
> >
> > Yes, but we probably need to reach a consensus on whether we are
> accepting the addition of these V210-like packed formats first - there were
> voices against it last time this was raised.
> >
> > I am in favour of allowing it because it is a common buffer format used in
> both graphics and display hardware, and appears in pretty much all related
> APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).
> >
> 
> Same. With it, we would be able to support kmsgrab from 10bit displays,
> which are becoming more and more popular.
Glad to know this format can be used for Vulkan 10bit display. Sounds like
this format can bring more benefit to ffmpeg. Ping for other comments. 

Thanks
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org
> with subject "unsubscribe".
Fei Wang June 2, 2020, 7:30 a.m. UTC | #6
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Wang,
> Fei W
> Sent: Friday, May 15, 2020 2:58 PM
> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
> format x2rgb10
> 
> 
> > -----Original Message-----
> > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> > Lynne
> > Sent: Wednesday, May 13, 2020 7:19 AM
> > To: FFmpeg development discussions and patches <ffmpeg-
> > devel@ffmpeg.org>
> > Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
> > format x2rgb10
> >
> > May 12, 2020, 23:42 by sw@jkqxz.net:
> >
> > > On 12/05/2020 22:42, Lynne wrote:
> > >
> > >> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
> > >>
> > >>>> -----Original Message-----
> > >>>> From: Wang, Fei W <fei.w.wang@intel.com>
> > >>>> Sent: Wednesday, April 22, 2020 1:23 PM
> > >>>> To: ffmpeg-devel@ffmpeg.org
> > >>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
> > >>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format
> > >>>> x2rgb10
> > >>>>
> > >>>> The format is packed RGB with each channel 10 bits available and
> > >>>> include 2 bits unused.
> > >>>>
> > >>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
> > >>>>
> > >>
> > >> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
> > >> I'm happy with the name as-is.
> > >>
> > >
> > > Yes, but we probably need to reach a consensus on whether we are
> > accepting the addition of these V210-like packed formats first - there
> > were voices against it last time this was raised.
> > >
> > > I am in favour of allowing it because it is a common buffer format
> > > used in
> > both graphics and display hardware, and appears in pretty much all
> > related APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).
> > >
> >
> > Same. With it, we would be able to support kmsgrab from 10bit
> > displays, which are becoming more and more popular.
> Glad to know this format can be used for Vulkan 10bit display. Sounds like this
> format can bring more benefit to ffmpeg. Ping for other comments.
Hi Kindly ping, is there any other concern of this format? Tks.

> 
> Thanks
> >
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org
> with subject "unsubscribe".
Lynne June 11, 2020, 4:26 p.m. UTC | #7
Jun 2, 2020, 08:30 by fei.w.wang@intel.com:

>
>
>> -----Original Message-----
>> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Wang,
>> Fei W
>> Sent: Friday, May 15, 2020 2:58 PM
>> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
>> Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
>> format x2rgb10
>>
>>
>> > -----Original Message-----
>> > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
>> > Lynne
>> > Sent: Wednesday, May 13, 2020 7:19 AM
>> > To: FFmpeg development discussions and patches <ffmpeg-
>> > devel@ffmpeg.org>
>> > Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
>> > format x2rgb10
>> >
>> > May 12, 2020, 23:42 by sw@jkqxz.net:
>> >
>> > > On 12/05/2020 22:42, Lynne wrote:
>> > >
>> > >> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
>> > >>
>> > >>>> -----Original Message-----
>> > >>>> From: Wang, Fei W <fei.w.wang@intel.com>
>> > >>>> Sent: Wednesday, April 22, 2020 1:23 PM
>> > >>>> To: ffmpeg-devel@ffmpeg.org
>> > >>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
>> > >>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format
>> > >>>> x2rgb10
>> > >>>>
>> > >>>> The format is packed RGB with each channel 10 bits available and
>> > >>>> include 2 bits unused.
>> > >>>>
>> > >>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
>> > >>>>
>> > >>
>> > >> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
>> > >> I'm happy with the name as-is.
>> > >>
>> > >
>> > > Yes, but we probably need to reach a consensus on whether we are
>> > accepting the addition of these V210-like packed formats first - there
>> > were voices against it last time this was raised.
>> > >
>> > > I am in favour of allowing it because it is a common buffer format
>> > > used in
>> > both graphics and display hardware, and appears in pretty much all
>> > related APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).
>> > >
>> >
>> > Same. With it, we would be able to support kmsgrab from 10bit
>> > displays, which are becoming more and more popular.
>> Glad to know this format can be used for Vulkan 10bit display. Sounds like this
>> format can bring more benefit to ffmpeg. Ping for other comments.
>>
> Hi Kindly ping, is there any other concern of this format? Tks.
>

Planning to push this tomorrow so I can start working on supporting it in Vulkan.
Lynne June 12, 2020, 5:01 p.m. UTC | #8
Jun 11, 2020, 17:26 by dev@lynne.ee:

> Jun 2, 2020, 08:30 by fei.w.wang@intel.com:
>
>>
>>
>>> -----Original Message-----
>>> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Wang,
>>> Fei W
>>> Sent: Friday, May 15, 2020 2:58 PM
>>> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
>>> Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
>>> format x2rgb10
>>>
>>>
>>> > -----Original Message-----
>>> > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
>>> > Lynne
>>> > Sent: Wednesday, May 13, 2020 7:19 AM
>>> > To: FFmpeg development discussions and patches <ffmpeg-
>>> > devel@ffmpeg.org>
>>> > Subject: Re: [FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel
>>> > format x2rgb10
>>> >
>>> > May 12, 2020, 23:42 by sw@jkqxz.net:
>>> >
>>> > > On 12/05/2020 22:42, Lynne wrote:
>>> > >
>>> > >> Apr 22, 2020, 06:28 by fei.w.wang@intel.com:
>>> > >>
>>> > >>>> -----Original Message-----
>>> > >>>> From: Wang, Fei W <fei.w.wang@intel.com>
>>> > >>>> Sent: Wednesday, April 22, 2020 1:23 PM
>>> > >>>> To: ffmpeg-devel@ffmpeg.org
>>> > >>>> Cc: Wang, Fei W <fei.w.wang@intel.com>
>>> > >>>> Subject: [PATCH v2 1/3] lavu/pix_fmt: add new pixel format
>>> > >>>> x2rgb10
>>> > >>>>
>>> > >>>> The format is packed RGB with each channel 10 bits available and
>>> > >>>> include 2 bits unused.
>>> > >>>>
>>> > >>>> Signed-off-by: Fei Wang <fei.w.wang@intel.com>
>>> > >>>>
>>> > >>
>>> > >> Ping on this patch? I kind of need it to support 10 bit Vulkan sw_formats.
>>> > >> I'm happy with the name as-is.
>>> > >>
>>> > >
>>> > > Yes, but we probably need to reach a consensus on whether we are
>>> > accepting the addition of these V210-like packed formats first - there
>>> > were voices against it last time this was raised.
>>> > >
>>> > > I am in favour of allowing it because it is a common buffer format
>>> > > used in
>>> > both graphics and display hardware, and appears in pretty much all
>>> > related APIs (OpenGL, OpenCL, Vulkan, KMS, D3D).
>>> > >
>>> >
>>> > Same. With it, we would be able to support kmsgrab from 10bit
>>> > displays, which are becoming more and more popular.
>>> Glad to know this format can be used for Vulkan 10bit display. Sounds like this
>>> format can bring more benefit to ffmpeg. Ping for other comments.
>>>
>> Hi Kindly ping, is there any other concern of this format? Tks.
>>
>
> Planning to push this tomorrow so I can start working on supporting it in Vulkan.
>

Pushed.
Thanks for adding swscale support for it as well, it makes debugging easier.
diff mbox series

Patch

diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 9d61c52..23ec1ab 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -252,6 +252,30 @@  static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
         },
         .flags = AV_PIX_FMT_FLAG_RGB,
     },
+    [AV_PIX_FMT_X2RGB10LE] = {
+        .name = "x2rgb10le",
+        .nb_components= 3,
+        .log2_chroma_w= 0,
+        .log2_chroma_h= 0,
+        .comp = {
+            { 0, 4, 2, 4, 10, 3, 9, 2 }, 	   /* R */
+            { 0, 4, 1, 2, 10, 3, 9, 3 }, 	   /* G */
+            { 0, 4, 0, 0, 10, 3, 9, 4 }, 	   /* B */
+        },
+        .flags = AV_PIX_FMT_FLAG_RGB,
+    },
+    [AV_PIX_FMT_X2RGB10BE] = {
+        .name = "x2rgb10be",
+        .nb_components= 3,
+        .log2_chroma_w= 0,
+        .log2_chroma_h= 0,
+        .comp = {
+            { 0, 4, 0, 4, 10, 3, 9, 2 }, 	   /* R */
+            { 0, 4, 1, 2, 10, 3, 9, 3 }, 	   /* G */
+            { 0, 4, 2, 0, 10, 3, 9, 4 }, 	   /* B */
+        },
+        .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE,
+    },
     [AV_PIX_FMT_YUV422P] = {
         .name = "yuv422p",
         .nb_components = 3,
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 1c625cf..71058d7 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -358,6 +358,8 @@  enum AVPixelFormat {
     AV_PIX_FMT_Y210BE,    ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian
     AV_PIX_FMT_Y210LE,    ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian
 
+    AV_PIX_FMT_X2RGB10LE,    ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined
+    AV_PIX_FMT_X2RGB10BE,    ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined
     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
 };
 
@@ -447,6 +449,7 @@  enum AVPixelFormat {
 #define AV_PIX_FMT_P016       AV_PIX_FMT_NE(P016BE,  P016LE)
 
 #define AV_PIX_FMT_Y210       AV_PIX_FMT_NE(Y210BE,  Y210LE)
+#define AV_PIX_FMT_X2RGB10       AV_PIX_FMT_NE(X2RGB10BE, X2RGB10LE)
 
 /**
   * Chromaticity coordinates of the source primaries.
diff --git a/libavutil/version.h b/libavutil/version.h
index 70836a5..e4fa0a9 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,7 +79,7 @@ 
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  56
-#define LIBAVUTIL_VERSION_MINOR  42
+#define LIBAVUTIL_VERSION_MINOR  43
 #define LIBAVUTIL_VERSION_MICRO 102
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/tests/ref/fate/filter-pixdesc-x2rgb10le b/tests/ref/fate/filter-pixdesc-x2rgb10le
new file mode 100644
index 0000000..94c8640
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-x2rgb10le
@@ -0,0 +1 @@ 
+pixdesc-x2rgb10le    98d697ed4668daf535163d5e08c903bb
diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query
index bc9a0d8..c3cccfa 100644
--- a/tests/ref/fate/sws-pixdesc-query
+++ b/tests/ref/fate/sws-pixdesc-query
@@ -57,6 +57,8 @@  isNBPS:
   nv20le
   p010be
   p010le
+  x2rgb10be
+  x2rgb10le
   xyz12be
   xyz12le
   y210be
@@ -141,6 +143,7 @@  isBE:
   rgb555be
   rgb565be
   rgba64be
+  x2rgb10be
   xyz12be
   y210be
   ya16be
@@ -436,6 +439,8 @@  isRGB:
   rgb8
   rgba64be
   rgba64le
+  x2rgb10be
+  x2rgb10le
 
 Gray:
   gray
@@ -582,6 +587,8 @@  AnyRGB:
   rgb8
   rgba64be
   rgba64le
+  x2rgb10be
+  x2rgb10le
 
 ALPHA:
   ayuv64be
@@ -689,6 +696,8 @@  Packed:
   rgba64le
   uyvy422
   uyyvyy411
+  x2rgb10be
+  x2rgb10le
   xyz12be
   xyz12le
   y210be
@@ -853,6 +862,8 @@  PackedRGB:
   rgb8
   rgba64be
   rgba64le
+  x2rgb10be
+  x2rgb10le
 
 PlanarRGB:
   gbrap