0015_Add_NV21_for_gstomxvideoenc_class.patch 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. Add NV21 for omxvideoenc class
  2. Signed-off-by: Leo Lu <leo.lu@starfivetech.com>
  3. diff -purN a/omx/gstomxvideoenc.c b/omx/gstomxvideoenc.c
  4. --- a/omx/gstomxvideoenc.c 2022-08-26 18:07:10.171979169 +0800
  5. +++ b/omx/gstomxvideoenc.c 2022-08-29 09:54:54.979229076 +0800
  6. @@ -1391,6 +1391,7 @@ get_chroma_info_from_input (GstOMXVideoE
  7. break;
  8. case GST_VIDEO_FORMAT_I420:
  9. case GST_VIDEO_FORMAT_NV12:
  10. + case GST_VIDEO_FORMAT_NV21:
  11. *chroma_format = "4:2:0";
  12. *bit_depth_luma = *bit_depth_chroma = 8;
  13. break;
  14. @@ -2045,6 +2046,7 @@ gst_omx_video_enc_configure_input_buffer
  15. case OMX_COLOR_FormatYUV420PackedSemiPlanar:
  16. case OMX_COLOR_FormatYUV420SemiPlanar:
  17. + case OMX_COLOR_FormatYVU420SemiPlanar:
  18. port_def.nBufferSize =
  19. (port_def.format.video.nStride * port_def.format.video.nFrameHeight) +
  20. (port_def.format.video.nStride *
  21. @@ -2693,6 +2695,9 @@ gst_omx_video_enc_set_format (GstVideoEn
  22. case GST_VIDEO_FORMAT_ARGB:
  23. port_def.format.video.eColorFormat = OMX_COLOR_Format32bitBGRA8888;
  24. break;
  25. + case GST_VIDEO_FORMAT_NV21:
  26. + port_def.format.video.eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
  27. + break;
  28. default:
  29. GST_ERROR_OBJECT (self, "Unsupported format %s",
  30. gst_video_format_to_string (info->finfo->format));
  31. @@ -3094,6 +3099,7 @@ gst_omx_video_enc_fill_buffer (GstOMXVid
  32. break;
  33. }
  34. case GST_VIDEO_FORMAT_NV12:
  35. + case GST_VIDEO_FORMAT_NV21:
  36. case GST_VIDEO_FORMAT_NV16:
  37. case GST_VIDEO_FORMAT_NV12_10LE32:
  38. case GST_VIDEO_FORMAT_NV16_10LE32:
  39. @@ -3728,6 +3734,7 @@ filter_supported_formats (GList * negoti
  40. case GST_VIDEO_FORMAT_NV16:
  41. case GST_VIDEO_FORMAT_NV16_10LE32:
  42. case GST_VIDEO_FORMAT_GRAY8:
  43. + case GST_VIDEO_FORMAT_NV21:
  44. cur = g_list_next (cur);
  45. continue;
  46. default:
  47. diff -purN a/omx/gstomxvideo.h b/omx/gstomxvideo.h
  48. --- a/omx/gstomxvideo.h 2022-08-26 18:07:10.219979290 +0800
  49. +++ b/omx/gstomxvideo.h 2022-08-29 09:55:41.307514974 +0800
  50. @@ -39,7 +39,7 @@ G_BEGIN_DECLS
  51. "NV16, YUY2, YVYU, UYVY, NV12, NV21, I420, RGB16, BGR16, ABGR, ARGB, GRAY8 }"
  52. #define GST_OMX_VIDEO_ENC_SUPPORTED_FORMATS "{ NV16_10LE32, NV12_10LE32, " \
  53. - "NV16, NV12, I420, GRAY8 }"
  54. + "NV16, NV12, NV21, I420, GRAY8 }"
  55. typedef struct
  56. {
  57. diff -purN a/omx/openmax/OMX_IVCommon.h b/omx/openmax/OMX_IVCommon.h
  58. --- a/omx/openmax/OMX_IVCommon.h 2021-09-09 03:05:28.046623200 +0800
  59. +++ b/omx/openmax/OMX_IVCommon.h 2022-08-29 09:56:49.415927528 +0800
  60. @@ -130,6 +130,7 @@ typedef enum OMX_COLOR_FORMATTYPE {
  61. OMX_COLOR_Format18BitBGR666,
  62. OMX_COLOR_Format24BitARGB6666,
  63. OMX_COLOR_Format24BitABGR6666,
  64. + OMX_COLOR_FormatYVU420SemiPlanar, /* NV21 */
  65. OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  66. OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  67. OMX_COLOR_FormatMax = 0x7FFFFFFF