mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-03 16:26:24 +08:00
[vpu_api]: support nv21 format encode
Change-Id: I82af5c70702b759afbce8665ff536c517d164831 Signed-off-by: Hery Xu <hery.xu@rock-chips.com>
This commit is contained in:
@@ -72,7 +72,8 @@ typedef enum {
|
|||||||
ENC_INPUT_RGB888 = 10, /**< 24-bit RGB */
|
ENC_INPUT_RGB888 = 10, /**< 24-bit RGB */
|
||||||
ENC_INPUT_BGR888 = 11, /**< 24-bit RGB */
|
ENC_INPUT_BGR888 = 11, /**< 24-bit RGB */
|
||||||
ENC_INPUT_RGB101010 = 12, /**< 30-bit RGB */
|
ENC_INPUT_RGB101010 = 12, /**< 30-bit RGB */
|
||||||
ENC_INPUT_BGR101010 = 13 /**< 30-bit RGB */
|
ENC_INPUT_BGR101010 = 13, /**< 30-bit RGB */
|
||||||
|
ENC_INPUT_YUV420_SEMIPLANAR_VU = 0X100 /**< YYYY... VUVUVUVU... */
|
||||||
} EncInputPictureType;
|
} EncInputPictureType;
|
||||||
|
|
||||||
typedef enum VPU_API_CMD {
|
typedef enum VPU_API_CMD {
|
||||||
|
@@ -44,6 +44,9 @@ static MppFrameFormat vpu_pic_type_remap_to_mpp(EncInputPictureType type)
|
|||||||
case ENC_INPUT_YUV420_SEMIPLANAR : {
|
case ENC_INPUT_YUV420_SEMIPLANAR : {
|
||||||
ret = MPP_FMT_YUV420SP;
|
ret = MPP_FMT_YUV420SP;
|
||||||
} break;
|
} break;
|
||||||
|
case ENC_INPUT_YUV420_SEMIPLANAR_VU : {
|
||||||
|
ret = MPP_FMT_YUV420SP_VU;
|
||||||
|
} break;
|
||||||
case ENC_INPUT_YUV422_INTERLEAVED_YUYV : {
|
case ENC_INPUT_YUV422_INTERLEAVED_YUYV : {
|
||||||
ret = MPP_FMT_YUV422_YUYV;
|
ret = MPP_FMT_YUV422_YUYV;
|
||||||
} break;
|
} break;
|
||||||
@@ -231,7 +234,8 @@ static int copy_align_raw_buffer_to_dest(RK_U8 *dst, RK_U8 *src, RK_U32 width,
|
|||||||
RK_U8 *dst_v = dst_u + hor_stride * ver_stride / 4;
|
RK_U8 *dst_v = dst_u + hor_stride * ver_stride / 4;
|
||||||
|
|
||||||
switch (fmt) {
|
switch (fmt) {
|
||||||
case MPP_FMT_YUV420SP : {
|
case MPP_FMT_YUV420SP :
|
||||||
|
case MPP_FMT_YUV420SP_VU : {
|
||||||
for (row = 0; row < height; row++) {
|
for (row = 0; row < height; row++) {
|
||||||
memcpy(dst_buf + row * hor_stride, src_buf + index, width);
|
memcpy(dst_buf + row * hor_stride, src_buf + index, width);
|
||||||
index += width;
|
index += width;
|
||||||
@@ -1409,6 +1413,8 @@ RK_S32 VpuApiLegacy::encoder_sendframe(VpuCodecContext *ctx, EncInputStream_t *a
|
|||||||
}
|
}
|
||||||
if (format >= MPP_FMT_YUV420SP && format < MPP_FMT_YUV_BUTT) {
|
if (format >= MPP_FMT_YUV420SP && format < MPP_FMT_YUV_BUTT) {
|
||||||
align_size = hor_stride * MPP_ALIGN(ver_stride, 16) * 3 / 2;
|
align_size = hor_stride * MPP_ALIGN(ver_stride, 16) * 3 / 2;
|
||||||
|
} else if (format >= MPP_FMT_YUV420SP_VU && format < MPP_FMT_YUV_BUTT) {
|
||||||
|
align_size = hor_stride * MPP_ALIGN(ver_stride, 16) * 3 / 2;
|
||||||
} else if (format >= MPP_FMT_RGB565 && format < MPP_FMT_BGR888) {
|
} else if (format >= MPP_FMT_RGB565 && format < MPP_FMT_BGR888) {
|
||||||
align_size = hor_stride * MPP_ALIGN(ver_stride, 16) * 3;
|
align_size = hor_stride * MPP_ALIGN(ver_stride, 16) * 3;
|
||||||
} else if (format >= MPP_FMT_RGB101010 && format < MPP_FMT_RGB_BUTT) {
|
} else if (format >= MPP_FMT_RGB101010 && format < MPP_FMT_RGB_BUTT) {
|
||||||
|
Reference in New Issue
Block a user