0008-support-nv21-i422-y444-for-omxmjpegdec.patch 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. --- a/config/stf/gstomx.conf
  2. +++ b/config/stf/gstomx.conf
  3. @@ -42,3 +42,4 @@
  4. out-port-index=1
  5. rank=1
  6. hacks=pass-profile-to-decoder;pass-color-format-to-decoder;ensure-buffer-count-actual
  7. +src-template-caps=video/x-raw, format = (string) { NV16_10LE32, NV12_10LE32, NV16, YUY2, YVYU, UYVY, NV12, NV21, I420, RGB16, BGR16, ABGR, ARGB, GRAY8, Y42B, Y444 }, width = (int) [ 1, max ], height = (int) [ 1, max ], framerate = (fraction) [ 0, max ]
  8. --- a/omx/gstomxbufferpool.c
  9. +++ b/omx/gstomxbufferpool.c
  10. @@ -370,9 +370,29 @@
  11. case GST_VIDEO_FORMAT_NV12_10LE32:
  12. case GST_VIDEO_FORMAT_NV16:
  13. case GST_VIDEO_FORMAT_NV16_10LE32:
  14. +#ifdef USE_OMX_TARGET_STARFIVE
  15. + case GST_VIDEO_FORMAT_NV21:
  16. +#endif
  17. stride[1] = nstride;
  18. offset[1] = offset[0] + stride[0] * nslice;
  19. break;
  20. +#ifdef USE_OMX_TARGET_STARFIVE
  21. + case GST_VIDEO_FORMAT_Y42B:
  22. + stride[0] = GST_ROUND_UP_4 (nstride);
  23. + stride[1] = GST_ROUND_UP_8 (nstride) / 2;
  24. + stride[2] = stride[1];
  25. +
  26. + offset[1] = stride[0] * nslice;
  27. + offset[2] = offset[1] + stride[1] * nslice;
  28. + break;
  29. +
  30. + case GST_VIDEO_FORMAT_Y444:
  31. + stride[1] = nstride;
  32. + stride[2] = nstride;
  33. + offset[1] = offset[0] + stride[0] * nslice;
  34. + offset[2] = offset[1] + stride[1] * nslice;
  35. + break;
  36. +#endif
  37. default:
  38. g_assert_not_reached ();
  39. break;
  40. --- a/omx/gstomxvideo.c
  41. +++ b/omx/gstomxvideo.c
  42. @@ -93,6 +93,17 @@
  43. format = GST_VIDEO_FORMAT_NV16_10LE32;
  44. break;
  45. #pragma GCC diagnostic pop
  46. +#endif
  47. +#ifdef USE_OMX_TARGET_STARFIVE
  48. + case OMX_COLOR_FormatYUV422Planar:
  49. + format = GST_VIDEO_FORMAT_Y42B;
  50. + break;
  51. + case OMX_COLOR_FormatYUV444Interleaved:
  52. + format = GST_VIDEO_FORMAT_Y444;
  53. + break;
  54. + case OMX_COLOR_FormatYVU420SemiPlanar:
  55. + format = GST_VIDEO_FORMAT_NV21;
  56. + break;
  57. #endif
  58. default:
  59. format = GST_VIDEO_FORMAT_UNKNOWN;
  60. --- a/omx/gstomxvideodec.c
  61. +++ b/omx/gstomxvideodec.c
  62. @@ -592,6 +592,9 @@
  63. case GST_VIDEO_FORMAT_YUY2:
  64. case GST_VIDEO_FORMAT_UYVY:
  65. case GST_VIDEO_FORMAT_YVYU:
  66. +#ifdef USE_OMX_TARGET_STARFIVE
  67. + case GST_VIDEO_FORMAT_Y42B:
  68. +#endif
  69. dst_width[0] = GST_VIDEO_INFO_WIDTH (vinfo) * 2;
  70. break;
  71. case GST_VIDEO_FORMAT_GRAY8:
  72. @@ -609,6 +612,9 @@
  73. dst_height[2] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) / 2;
  74. break;
  75. case GST_VIDEO_FORMAT_NV12:
  76. +#ifdef USE_OMX_TARGET_STARFIVE
  77. + case GST_VIDEO_FORMAT_NV21:
  78. +#endif
  79. dst_width[0] = GST_VIDEO_INFO_WIDTH (vinfo);
  80. src_stride[1] = nstride;
  81. src_size[1] = src_stride[1] * nslice / 2;
  82. @@ -638,6 +644,18 @@
  83. src_size[1] = src_stride[1] * nslice;
  84. dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo);
  85. break;
  86. +#ifdef USE_OMX_TARGET_STARFIVE
  87. + case GST_VIDEO_FORMAT_Y444:
  88. + dst_width[0] = GST_VIDEO_INFO_WIDTH (vinfo);
  89. + dst_width[1] = GST_VIDEO_INFO_WIDTH (vinfo);
  90. + dst_width[2] = GST_VIDEO_INFO_WIDTH (vinfo);
  91. + src_size[1] = src_size[0];
  92. + src_size[2] = src_size[0];
  93. + src_stride[1] = nstride;
  94. + dst_height[1] = dst_height[0];
  95. + dst_height[2] = dst_height[0];
  96. + break;
  97. +#endif
  98. default:
  99. g_assert_not_reached ();
  100. break;