mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[mpp_frame]: Add color format print
1. Add color format print for all supported format. 2. Add RGB color fill function. Change-Id: I79fb3f40402b6fb6e36883c99945e709723aee7d Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -196,6 +196,7 @@ MPP_RET mpp_destroy(MppCtx ctx);
|
|||||||
// coding type format function
|
// coding type format function
|
||||||
MPP_RET mpp_check_support_format(MppCtxType type, MppCodingType coding);
|
MPP_RET mpp_check_support_format(MppCtxType type, MppCodingType coding);
|
||||||
void mpp_show_support_format(void);
|
void mpp_show_support_format(void);
|
||||||
|
void mpp_show_color_format(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
41
mpp/mpi.cpp
41
mpp/mpi.cpp
@@ -547,3 +547,44 @@ void mpp_show_support_format()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
MppFrameFormat format;
|
||||||
|
const char *name;
|
||||||
|
} MppFrameFormatInfo;
|
||||||
|
|
||||||
|
static MppFrameFormatInfo color_list[] = {
|
||||||
|
{ MPP_FMT_YUV420SP, "YUV420SP, NV12" },
|
||||||
|
{ MPP_FMT_YUV420SP_10BIT, "YUV420SP-10bit" },
|
||||||
|
{ MPP_FMT_YUV422SP, "YUV422SP, NV24" },
|
||||||
|
{ MPP_FMT_YUV422SP_10BIT, "YUV422SP-10bit" },
|
||||||
|
{ MPP_FMT_YUV420P, "YUV420P, I420" },
|
||||||
|
{ MPP_FMT_YUV420SP_VU, "YUV420SP, NV21" },
|
||||||
|
{ MPP_FMT_YUV422P, "YUV422P, 422P" },
|
||||||
|
{ MPP_FMT_YUV422SP_VU, "YUV422SP, NV42" },
|
||||||
|
{ MPP_FMT_YUV422_YUYV, "YUV422-YUYV, YUY2" },
|
||||||
|
{ MPP_FMT_YUV422_UYVY, "YUV422-UYVY, UYVY" },
|
||||||
|
{ MPP_FMT_YUV400, "YUV400-Y8, Y800" },
|
||||||
|
|
||||||
|
{ MPP_FMT_RGB565, "RGB565" },
|
||||||
|
{ MPP_FMT_BGR565, "BGR565" },
|
||||||
|
{ MPP_FMT_RGB555, "RGB555" },
|
||||||
|
{ MPP_FMT_BGR555, "BGR555" },
|
||||||
|
{ MPP_FMT_RGB888, "RGB888" },
|
||||||
|
{ MPP_FMT_BGR888, "BGR888" },
|
||||||
|
|
||||||
|
{ MPP_FMT_ARGB8888, "ARGB8888" },
|
||||||
|
{ MPP_FMT_ABGR8888, "ABGR8888" },
|
||||||
|
};
|
||||||
|
|
||||||
|
void mpp_show_color_format()
|
||||||
|
{
|
||||||
|
RK_U32 i = 0;
|
||||||
|
|
||||||
|
mpp_log("mpp color support list:");
|
||||||
|
|
||||||
|
for (i = 0; i < MPP_ARRAY_ELEMS(color_list); i++) {
|
||||||
|
MppFrameFormatInfo *info = &color_list[i];
|
||||||
|
mpp_log("color: id %-5d 0x%05x %s\n",
|
||||||
|
info->format, info->format, info->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -225,14 +225,14 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
ptr = mpp_buffer_get_ptr(src_buf);
|
ptr = mpp_buffer_get_ptr(src_buf);
|
||||||
if (cmd.have_input) {
|
if (cmd.have_input) {
|
||||||
ret = read_yuv_image((RK_U8 *)ptr, fin, cmd.src_w, cmd.src_h,
|
ret = read_image((RK_U8 *)ptr, fin, cmd.src_w, cmd.src_h,
|
||||||
cmd.src_w, cmd.src_h, cmd.dst_fmt);
|
cmd.src_w, cmd.src_h, cmd.dst_fmt);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err("failed to read input file ret:%d\n", ret);
|
mpp_err("failed to read input file ret:%d\n", ret);
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ret = fill_yuv_image((RK_U8 *)ptr, cmd.src_w, cmd.src_h,
|
ret = fill_image((RK_U8 *)ptr, cmd.src_w, cmd.src_h,
|
||||||
cmd.src_w, cmd.src_h, cmd.src_fmt, frame_count);
|
cmd.src_w, cmd.src_h, cmd.src_fmt, frame_count);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err("failed to fill input buffer ret:%d\n", ret);
|
mpp_err("failed to fill input buffer ret:%d\n", ret);
|
||||||
|
@@ -618,7 +618,7 @@ MPP_RET test_mpp_run(MpiEncTestData *p)
|
|||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
if (p->fp_input) {
|
if (p->fp_input) {
|
||||||
ret = read_yuv_image(buf, p->fp_input, p->width, p->height,
|
ret = read_image(buf, p->fp_input, p->width, p->height,
|
||||||
p->hor_stride, p->ver_stride, p->fmt);
|
p->hor_stride, p->ver_stride, p->fmt);
|
||||||
if (ret == MPP_NOK || feof(p->fp_input)) {
|
if (ret == MPP_NOK || feof(p->fp_input)) {
|
||||||
mpp_log("found last frame. feof %d\n", feof(p->fp_input));
|
mpp_log("found last frame. feof %d\n", feof(p->fp_input));
|
||||||
@@ -626,7 +626,7 @@ MPP_RET test_mpp_run(MpiEncTestData *p)
|
|||||||
} else if (ret == MPP_ERR_VALUE)
|
} else if (ret == MPP_ERR_VALUE)
|
||||||
goto RET;
|
goto RET;
|
||||||
} else {
|
} else {
|
||||||
ret = fill_yuv_image(buf, p->width, p->height, p->hor_stride,
|
ret = fill_image(buf, p->width, p->height, p->hor_stride,
|
||||||
p->ver_stride, p->fmt, p->frame_count);
|
p->ver_stride, p->fmt, p->frame_count);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto RET;
|
goto RET;
|
||||||
|
@@ -362,7 +362,7 @@ MPP_RET test_mpp_run(MpiEncTestData *p)
|
|||||||
void *buf = mpp_buffer_get_ptr(p->frm_buf);
|
void *buf = mpp_buffer_get_ptr(p->frm_buf);
|
||||||
|
|
||||||
if (p->fp_input) {
|
if (p->fp_input) {
|
||||||
ret = read_yuv_image(buf, p->fp_input, p->width, p->height,
|
ret = read_image(buf, p->fp_input, p->width, p->height,
|
||||||
p->hor_stride, p->ver_stride, p->fmt);
|
p->hor_stride, p->ver_stride, p->fmt);
|
||||||
if (ret == MPP_NOK || feof(p->fp_input)) {
|
if (ret == MPP_NOK || feof(p->fp_input)) {
|
||||||
mpp_log("found last frame. feof %d\n", feof(p->fp_input));
|
mpp_log("found last frame. feof %d\n", feof(p->fp_input));
|
||||||
@@ -370,7 +370,7 @@ MPP_RET test_mpp_run(MpiEncTestData *p)
|
|||||||
} else if (ret == MPP_ERR_VALUE)
|
} else if (ret == MPP_ERR_VALUE)
|
||||||
goto RET;
|
goto RET;
|
||||||
} else {
|
} else {
|
||||||
ret = fill_yuv_image(buf, p->width, p->height, p->hor_stride,
|
ret = fill_image(buf, p->width, p->height, p->hor_stride,
|
||||||
p->ver_stride, p->fmt, p->frame_count);
|
p->ver_stride, p->fmt, p->frame_count);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto RET;
|
goto RET;
|
||||||
@@ -529,6 +529,7 @@ static void mpi_enc_test_help()
|
|||||||
mpp_log("usage: mpi_enc_test [options]\n");
|
mpp_log("usage: mpi_enc_test [options]\n");
|
||||||
show_options(mpi_enc_cmd);
|
show_options(mpi_enc_cmd);
|
||||||
mpp_show_support_format();
|
mpp_show_support_format();
|
||||||
|
mpp_show_color_format();
|
||||||
}
|
}
|
||||||
|
|
||||||
static RK_S32 mpi_enc_test_parse_options(int argc, char **argv, MpiEncTestCmd* cmd)
|
static RK_S32 mpi_enc_test_parse_options(int argc, char **argv, MpiEncTestCmd* cmd)
|
||||||
|
@@ -713,7 +713,7 @@ static MPP_RET mpi_rc_codec(MpiRcTestCtx *ctx)
|
|||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
if (fp_input) {
|
if (fp_input) {
|
||||||
ret = read_yuv_image(buf, fp_input,
|
ret = read_image(buf, fp_input,
|
||||||
prep_cfg->width, prep_cfg->height,
|
prep_cfg->width, prep_cfg->height,
|
||||||
prep_cfg->hor_stride, prep_cfg->ver_stride,
|
prep_cfg->hor_stride, prep_cfg->ver_stride,
|
||||||
prep_cfg->format);
|
prep_cfg->format);
|
||||||
@@ -722,7 +722,7 @@ static MPP_RET mpi_rc_codec(MpiRcTestCtx *ctx)
|
|||||||
frm_eos = 1;
|
frm_eos = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ret = fill_yuv_image(buf, prep_cfg->width, prep_cfg->height,
|
ret = fill_image(buf, prep_cfg->width, prep_cfg->height,
|
||||||
prep_cfg->hor_stride, prep_cfg->ver_stride,
|
prep_cfg->hor_stride, prep_cfg->ver_stride,
|
||||||
prep_cfg->format, frame_count);
|
prep_cfg->format, frame_count);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@@ -261,7 +261,7 @@ void read_frm_crc(FILE *fp, FrmCrc *crc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET read_yuv_image(RK_U8 *buf, FILE *fp, RK_U32 width, RK_U32 height,
|
MPP_RET read_image(RK_U8 *buf, FILE *fp, RK_U32 width, RK_U32 height,
|
||||||
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt)
|
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt)
|
||||||
{
|
{
|
||||||
MPP_RET ret = MPP_OK;
|
MPP_RET ret = MPP_OK;
|
||||||
@@ -341,7 +341,7 @@ err:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET fill_yuv_image(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
MPP_RET fill_image(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
||||||
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt,
|
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt,
|
||||||
RK_U32 frame_count)
|
RK_U32 frame_count)
|
||||||
{
|
{
|
||||||
@@ -403,6 +403,21 @@ MPP_RET fill_yuv_image(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
case MPP_FMT_RGB888 :
|
||||||
|
case MPP_FMT_BGR888 :
|
||||||
|
case MPP_FMT_ARGB8888 : {
|
||||||
|
RK_U8 *p = buf_y;
|
||||||
|
RK_U32 pix_w = (fmt == MPP_FMT_ARGB8888 || fmt == MPP_FMT_ABGR8888) ? 4 : 4;
|
||||||
|
|
||||||
|
for (y = 0; y < height; y++, p += hor_stride * pix_w) {
|
||||||
|
for (x = 0; x < width; x++) {
|
||||||
|
p[x * 4 + 0] = x * 3 + 0 + y + frame_count * 3;
|
||||||
|
p[x * 4 + 1] = x * 3 + 1 + y + frame_count * 3;
|
||||||
|
p[x * 4 + 2] = x * 3 + 2 + y + frame_count * 3;
|
||||||
|
p[x * 4 + 3] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} break;
|
||||||
default : {
|
default : {
|
||||||
mpp_err_f("filling function do not support type %d\n", fmt);
|
mpp_err_f("filling function do not support type %d\n", fmt);
|
||||||
ret = MPP_NOK;
|
ret = MPP_NOK;
|
||||||
|
@@ -59,10 +59,10 @@ void calc_frm_crc(MppFrame frame, FrmCrc *crc);
|
|||||||
void write_frm_crc(FILE *fp, FrmCrc *crc);
|
void write_frm_crc(FILE *fp, FrmCrc *crc);
|
||||||
void read_frm_crc(FILE *fp, FrmCrc *crc);
|
void read_frm_crc(FILE *fp, FrmCrc *crc);
|
||||||
|
|
||||||
MPP_RET read_yuv_image(RK_U8 *buf, FILE *fp, RK_U32 width, RK_U32 height,
|
MPP_RET read_image(RK_U8 *buf, FILE *fp, RK_U32 width, RK_U32 height,
|
||||||
RK_U32 hor_stride, RK_U32 ver_stride,
|
RK_U32 hor_stride, RK_U32 ver_stride,
|
||||||
MppFrameFormat fmt);
|
MppFrameFormat fmt);
|
||||||
MPP_RET fill_yuv_image(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
MPP_RET fill_image(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
||||||
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt,
|
RK_U32 hor_stride, RK_U32 ver_stride, MppFrameFormat fmt,
|
||||||
RK_U32 frame_count);
|
RK_U32 frame_count);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user