mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-09-26 13:11:11 +08:00
chore: A fix for company release requirement
Signed-off-by: Herman Chen <herman.chen@rock-chips.com> Change-Id: Id24b2448a0fe1cbda19c1d1421f8ddb7c21c40dd
This commit is contained in:
@@ -60,7 +60,7 @@ MPP用户态的运行平台,如Android以及Debian等Linux发行版
|
||||
|
||||
- 应用层
|
||||
|
||||
MPP层通过MPI对接各种中间件软件,如OpenMax、ffmpeg和gstreamer,或者直接对接客户的上层应用。
|
||||
MPP层通过MPI对接各种中间件软件,如OpenMax和gstreamer,或者直接对接客户的上层应用。
|
||||
|
||||
## 1.3 平台支持
|
||||
|
||||
@@ -160,7 +160,7 @@ MppBuffer主要用于描述供硬件使用的内存块(即缓存),提供
|
||||
|
||||

|
||||
|
||||
这种方式可以使得解码器使用外部的缓存,可以对接OpenMax/ffmpeg/gstreamer这样的中间件,也方便对接用户己有的上层代码,便于实现零拷贝显示。
|
||||
这种方式可以使得解码器使用外部的缓存,可以对接OpenMax/gstreamer这样的中间件,也方便对接用户己有的上层代码,便于实现零拷贝显示。
|
||||
|
||||
## 2.3 码流封装MppPacket
|
||||
|
||||
|
@@ -58,7 +58,7 @@ Userspace MPP layer shields the differences between different operating systems
|
||||
|
||||
- Application layer
|
||||
|
||||
MPP layer can adapt to various middleware by MPI, such as OpenMax, ffmpeg and gstreamer, or directly be called by the upper application of customers.
|
||||
MPP layer can adapt to various middleware by MPI, such as OpenMax and gstreamer, or directly be called by the upper application of customers.
|
||||
|
||||
# 1.3 Supported platform
|
||||
|
||||
@@ -150,7 +150,7 @@ The procedure pseudo code is shown as follows:
|
||||
|
||||

|
||||
|
||||
This procedure can enable decoder to use external buffer, adapt to middleware such as OpenMax/ffmpeg/ gstreamer, easy to adapt to user upper application. It’s also easy to implement zero-copy display.
|
||||
This procedure can enable decoder to use external buffer, adapt to middleware such as OpenMax / gstreamer, easy to adapt to user upper application. It’s also easy to implement zero-copy display.
|
||||
|
||||
## 2.3 Bitstream structure(MppPacket)
|
||||
|
||||
|
@@ -18,7 +18,7 @@ Linux.
|
||||
The second one is v4l2 driver which is developed for ChromeOS. It currently
|
||||
supports H.264/H.265/vp8/vp9. This driver is used on ChomeOS/Linux.
|
||||
|
||||
Mpp plans to support serval userspace applications including OpenMax, FFmpeg,
|
||||
Mpp plans to support serval userspace applications including OpenMax,
|
||||
gstreamer, libva.
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ System Diagram
|
||||
|
||||
+---------------------------------------+
|
||||
| |
|
||||
| ffmpeg / OpenMax / gstreamer / libva |
|
||||
| OpenMax / gstreamer / libva |
|
||||
| |
|
||||
+---------------------------------------+
|
||||
|
||||
|
@@ -2363,7 +2363,7 @@ static RK_S32 mpp_av1_metadata_scalability(AV1Context *ctx, BitReadCtx_t *gb,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static RK_S32 mpp_av1_get_dolby_rpu(AV1Context *ctx, BitReadCtx_t *gb)
|
||||
static RK_S32 mpp_av1_get_dlby_rpu(AV1Context *ctx, BitReadCtx_t *gb)
|
||||
{
|
||||
MppFrameHdrDynamicMeta *hdr_dynamic_meta = ctx->hdr_dynamic_meta;
|
||||
RK_U32 emdf_payload_size = 0;
|
||||
@@ -2419,7 +2419,7 @@ static RK_S32 mpp_av1_get_dolby_rpu(AV1Context *ctx, BitReadCtx_t *gb)
|
||||
|
||||
hdr_dynamic_meta->size = mpp_writer_bytes(&bit_ctx);
|
||||
hdr_dynamic_meta->hdr_fmt = DOLBY;
|
||||
av1d_dbg(AV1D_DBG_STRMIN, "dolby rpu size %d -> %d\n",
|
||||
av1d_dbg(AV1D_DBG_STRMIN, "dlby rpu size %d -> %d\n",
|
||||
emdf_payload_size, hdr_dynamic_meta->size);
|
||||
|
||||
ctx->hdr_dynamic_meta = hdr_dynamic_meta;
|
||||
@@ -2502,12 +2502,12 @@ static RK_S32 mpp_av1_metadata_itut_t35(AV1Context *ctx, BitReadCtx_t *gb,
|
||||
current->itu_t_t35_terminal_provider_code);
|
||||
|
||||
switch (current->itu_t_t35_terminal_provider_code) {
|
||||
case 0x3B: {/* dolby provider_code is 0x3b*/
|
||||
case 0x3B: {/* dlby provider_code is 0x3b*/
|
||||
READ_BITS_LONG(gb, 32, ¤t->itu_t_t35_terminal_provider_oriented_code);
|
||||
av1d_dbg(AV1D_DBG_STRMIN, "itu_t_t35_terminal_provider_oriented_code 0x%x\n",
|
||||
current->itu_t_t35_terminal_provider_oriented_code);
|
||||
if (current->itu_t_t35_terminal_provider_oriented_code == 0x800)
|
||||
mpp_av1_get_dolby_rpu(ctx, gb);
|
||||
mpp_av1_get_dlby_rpu(ctx, gb);
|
||||
} break;
|
||||
case 0x3C: {/* smpte2094_40 provider_code is 0x3c*/
|
||||
const RK_U16 smpte2094_40_provider_oriented_code = 0x0001;
|
||||
|
@@ -2001,7 +2001,8 @@ void hal_vp9d_update_counts(void *buf, void *dxva)
|
||||
for (n = 0; n < 6; n++) {
|
||||
for (k = 0; k < 6; k++) {
|
||||
s->counts.eob[j][m][i][n][k][0] = eob_coef[1];
|
||||
s->counts.eob[j][m][i][n][k][1] = eob_coef[0] - eob_coef[1]; //ffmpeg need do branch_ct[UNCONSTRAINED_NODES][2] = { neob, eob_counts[i][j][k][l] - neob },
|
||||
// ff need do branch_ct[UNCONSTRAINED_NODES][2] = { neob, eob_counts[i][j][k][l] - neob },
|
||||
s->counts.eob[j][m][i][n][k][1] = eob_coef[0] - eob_coef[1];
|
||||
s->counts.coef[j][m][i][n][k][0] = eob_coef[2];
|
||||
s->counts.coef[j][m][i][n][k][1] = eob_coef[3];
|
||||
s->counts.coef[j][m][i][n][k][2] = eob_coef[4];
|
||||
|
@@ -60,21 +60,21 @@ static VepuFormatCfg vepu_yuv_cfg[MPP_FMT_YUV_BUTT] = {
|
||||
};
|
||||
|
||||
static VepuFormatCfg vepu_rgb_cfg[MPP_FMT_RGB_BUTT - MPP_FRAME_FMT_RGB] = {
|
||||
//MPP_FMT_RGB565, ffmpeg: rgb565be, bin(rrrr,rggg,gggb,bbbb) mem MSB-->LSB(gggb,bbbb,rrrr,rggg)
|
||||
//MPP_FMT_RGB565, ff: rgb565be, bin(rrrr,rggg,gggb,bbbb) mem MSB-->LSB(gggb,bbbb,rrrr,rggg)
|
||||
{ .format = VEPU_FMT_RGB565, .r_mask = 15, .g_mask = 10, .b_mask = 4, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR565, ffmpeg: bgr565be, bin(bbbb,bggg,gggr,rrrr) mem MSB-->LSB(gggr,rrrr,bbbb,bggg)
|
||||
//MPP_FMT_BGR565, ff: bgr565be, bin(bbbb,bggg,gggr,rrrr) mem MSB-->LSB(gggr,rrrr,bbbb,bggg)
|
||||
{ .format = VEPU_FMT_RGB565, .r_mask = 4, .g_mask = 10, .b_mask = 15, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGB555, ffmpeg: rgb555be, bin(0rrr,rrgg,gggb,bbbb) mem MSB-->LSB(gggb,bbbb,0rrr,rrgg)
|
||||
//MPP_FMT_RGB555, ff: rgb555be, bin(0rrr,rrgg,gggb,bbbb) mem MSB-->LSB(gggb,bbbb,0rrr,rrgg)
|
||||
{ .format = VEPU_FMT_RGB555, .r_mask = 14, .g_mask = 9, .b_mask = 4, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR555, ffmpeg: bgr555be, bin(0bbb,bbgg,gggr,rrrr) mem MSB-->LSB(gggr,rrrr,0bbb,bbgg)
|
||||
//MPP_FMT_BGR555, ff: bgr555be, bin(0bbb,bbgg,gggr,rrrr) mem MSB-->LSB(gggr,rrrr,0bbb,bbgg)
|
||||
{ .format = VEPU_FMT_RGB555, .r_mask = 4, .g_mask = 9, .b_mask = 14, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGB444, ffmpeg: rgb444be, bin(0000,rrrr,gggg,bbbb)
|
||||
//MPP_FMT_RGB444, ff: rgb444be, bin(0000,rrrr,gggg,bbbb)
|
||||
{ .format = VEPU_FMT_RGB444, .r_mask = 11, .g_mask = 7, .b_mask = 3, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR444, ffmpeg: bgr444be, bin(0000,bbbb,gggg,rrrr)
|
||||
//MPP_FMT_BGR444, ff: bgr444be, bin(0000,bbbb,gggg,rrrr)
|
||||
{ .format = VEPU_FMT_RGB444, .r_mask = 3, .g_mask = 7, .b_mask = 11, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGB888, ffmpeg: rgb24, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb)
|
||||
//MPP_FMT_RGB888, ff: rgb24, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb)
|
||||
{ .format = VEPU_FMT_BUTT, .r_mask = 0, .g_mask = 0, .b_mask = 0, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 0, },
|
||||
//MPP_FMT_BGR888, ffmpeg: bgr24, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
//MPP_FMT_BGR888, ff: bgr24, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
{ .format = VEPU_FMT_BUTT, .r_mask = 0, .g_mask = 0, .b_mask = 0, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 0, },
|
||||
//MPP_FMT_RGB101010, bin(00rr,rrrr,rrrr,gggg,gggg,ggbb,bbbb,bbbb)
|
||||
{ .format = VEPU_FMT_RGB101010, .r_mask = 29, .g_mask = 19, .b_mask = 9, .swap_8_in = 1, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
@@ -84,29 +84,29 @@ static VepuFormatCfg vepu_rgb_cfg[MPP_FMT_RGB_BUTT - MPP_FRAME_FMT_RGB] = {
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 15, .g_mask = 23, .b_mask = 31, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_ABGR8888, ffmepg: rgba, bin(aaaa,aaaa,bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 31, .g_mask = 23, .b_mask = 15, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGRA8888, ffmpeg: bgra, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr,aaaa,aaaa)
|
||||
//MPP_FMT_BGRA8888, ff: bgra, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr,aaaa,aaaa)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 23, .g_mask = 15, .b_mask = 7, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGBA8888, ffmpeg: rgba, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb,aaaa,aaaa)
|
||||
//MPP_FMT_RGBA8888, ff: rgba, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb,aaaa,aaaa)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 7, .g_mask = 15, .b_mask = 23, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
};
|
||||
static VepuFormatCfg vepu_rgb_le_cfg[MPP_FMT_RGB_BUTT - MPP_FRAME_FMT_RGB] = {
|
||||
//for little endian format
|
||||
//MPP_FMT_RGB565LE, ffmpeg: rgb565le, bin(gggb,bbbb,rrrr,rggg)
|
||||
//MPP_FMT_RGB565LE, ff: rgb565le, bin(gggb,bbbb,rrrr,rggg)
|
||||
{ .format = VEPU_FMT_RGB565, .r_mask = 15, .g_mask = 10, .b_mask = 4, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR565LE, ffmpeg: bgr565le, bin(gggr,rrrr,bbbb,bggg)
|
||||
//MPP_FMT_BGR565LE, ff: bgr565le, bin(gggr,rrrr,bbbb,bggg)
|
||||
{ .format = VEPU_FMT_RGB565, .r_mask = 4, .g_mask = 10, .b_mask = 15, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGB555LE, ffmpeg: rgb555le, bin(gggb,bbbb,0rrr,rrgg)
|
||||
//MPP_FMT_RGB555LE, ff: rgb555le, bin(gggb,bbbb,0rrr,rrgg)
|
||||
{ .format = VEPU_FMT_RGB555, .r_mask = 14, .g_mask = 9, .b_mask = 4, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR555LE, ffmpeg: bgr555le, bin(gggr,rrrr,0bbb,bbgg)
|
||||
//MPP_FMT_BGR555LE, ff: bgr555le, bin(gggr,rrrr,0bbb,bbgg)
|
||||
{ .format = VEPU_FMT_RGB555, .r_mask = 4, .g_mask = 9, .b_mask = 14, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGB444LE, ffmpeg: rgb444le, bin(gggg,bbbb,0000,rrrr)
|
||||
//MPP_FMT_RGB444LE, ff: rgb444le, bin(gggg,bbbb,0000,rrrr)
|
||||
{ .format = VEPU_FMT_RGB444, .r_mask = 11, .g_mask = 7, .b_mask = 3, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGR444LE, ffmpeg: bgr444le, bin(gggg,rrrr,0000,bbbb)
|
||||
//MPP_FMT_BGR444LE, ff: bgr444le, bin(gggg,rrrr,0000,bbbb)
|
||||
{ .format = VEPU_FMT_RGB444, .r_mask = 3, .g_mask = 7, .b_mask = 11, .swap_8_in = 0, .swap_16_in = 1, .swap_32_in = 1, },
|
||||
|
||||
//MPP_FMT_RGB888, ffmpeg: rgb24, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb)
|
||||
//MPP_FMT_RGB888, ff: rgb24, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb)
|
||||
{ .format = VEPU_FMT_BUTT, .r_mask = 0, .g_mask = 0, .b_mask = 0, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 0, },
|
||||
//MPP_FMT_BGR888, ffmpeg: bgr24, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
//MPP_FMT_BGR888, ff: bgr24, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
{ .format = VEPU_FMT_BUTT, .r_mask = 0, .g_mask = 0, .b_mask = 0, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 0, },
|
||||
|
||||
//MPP_FMT_RGB101010, bin(00rr,rrrr,rrrr,gggg,gggg,ggbb,bbbb,bbbb)
|
||||
@@ -118,9 +118,9 @@ static VepuFormatCfg vepu_rgb_le_cfg[MPP_FMT_RGB_BUTT - MPP_FRAME_FMT_RGB] = {
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 23, .g_mask = 15, .b_mask = 7, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_ABGR8888LE, ffmepg: rgba, bin(aaaa,aaaa,bbbb,bbbb,gggg,gggg,rrrr,rrrr)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 7, .g_mask = 15, .b_mask = 23, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_BGRA8888LE, ffmpeg: bgra, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr,aaaa,aaaa)
|
||||
//MPP_FMT_BGRA8888LE, ff: bgra, bin(bbbb,bbbb,gggg,gggg,rrrr,rrrr,aaaa,aaaa)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 15, .g_mask = 23, .b_mask = 31, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
//MPP_FMT_RGBA8888LE, ffmpeg: rgba, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb,aaaa,aaaa)
|
||||
//MPP_FMT_RGBA8888LE, ff: rgba, bin(rrrr,rrrr,gggg,gggg,bbbb,bbbb,aaaa,aaaa)
|
||||
{ .format = VEPU_FMT_RGB888, .r_mask = 31, .g_mask = 23, .b_mask = 15, .swap_8_in = 0, .swap_16_in = 0, .swap_32_in = 1, },
|
||||
};
|
||||
|
||||
|
@@ -32,7 +32,7 @@
|
||||
#include "hal_jpegd_common.h"
|
||||
|
||||
static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
//ffmpeg: rgb565be, bin(rrrr,rggg, gggb,bbbb) mem MSB-->LSB(gggb,bbbb, rrrr,rggg)
|
||||
// ff: rgb565be, bin(rrrr,rggg, gggb,bbbb) mem MSB-->LSB(gggb,bbbb, rrrr,rggg)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB565, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -40,7 +40,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 3, .b_dither = 2,
|
||||
.r_mask = 0xf800f800, .g_mask = 0x07e007e0, .b_mask = 0x001f001f
|
||||
},
|
||||
//ffmpeg: bgr565be, bin(bbbb,bggg, gggr,rrrr) mem MSB-->LSB(gggr,rrrr, bbbb,bggg)
|
||||
// ff: bgr565be, bin(bbbb,bggg, gggr,rrrr) mem MSB-->LSB(gggr,rrrr, bbbb,bggg)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR565, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -48,7 +48,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 3, .b_dither = 2,
|
||||
.r_mask = 0x001f001f, .g_mask = 0x07e007e0, .b_mask = 0xf800f800
|
||||
},
|
||||
//ffmpeg: rgb555be, bin(0rrr,rrgg, gggb,bbbb) mem MSB-->LSB(gggb,bbbb, 0rrr,rrgg)
|
||||
// ff: rgb555be, bin(0rrr,rrgg, gggb,bbbb) mem MSB-->LSB(gggb,bbbb, 0rrr,rrgg)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB555, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -56,7 +56,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 2, .b_dither = 2,
|
||||
.r_mask = 0x7c007c00, .g_mask = 0x03e003e0, .b_mask = 0x001f001f
|
||||
},
|
||||
//ffmpeg: bgr555be, bin(0bbb,bbgg, gggr,rrrr) mem MSB-->LSB(gggr,rrrr, 0bbb,bbgg)
|
||||
// ff: bgr555be, bin(0bbb,bbgg, gggr,rrrr) mem MSB-->LSB(gggr,rrrr, 0bbb,bbgg)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR555, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -64,7 +64,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 2, .b_dither = 2,
|
||||
.r_mask = 0x001f001f, .g_mask = 0x03e003e0, .b_mask = 0x7c007c00
|
||||
},
|
||||
//ffmpeg: rgb444be, bin(0000,rrrr, gggg,bbbb) mem MSB-->LSB(gggg,bbbb, 0000,rrrr)
|
||||
// ff: rgb444be, bin(0000,rrrr, gggg,bbbb) mem MSB-->LSB(gggg,bbbb, 0000,rrrr)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB444, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -72,7 +72,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 1, .g_dither = 1, .b_dither = 1,
|
||||
.r_mask = 0x000f000f, .g_mask = 0xf000f000, .b_mask = 0x0f000f00
|
||||
},
|
||||
//ffmpeg: bgr444be, bin(0000,bbbb, gggg,rrrr) mem MSB-->LSB(gggg,rrrr, 0000,bbbb)
|
||||
// ff: bgr444be, bin(0000,bbbb, gggg,rrrr) mem MSB-->LSB(gggg,rrrr, 0000,bbbb)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR444, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -80,7 +80,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 1, .g_dither = 1, .b_dither = 1,
|
||||
.g_mask = 0xf000f000, .b_mask = 0x000f000f
|
||||
},
|
||||
//ffmpeg: argb, bin(aaaa,aaaa, rrrr,rrrr, gggg,gggg, bbbb,bbbb)
|
||||
// ff: argb, bin(aaaa,aaaa, rrrr,rrrr, gggg,gggg, bbbb,bbbb)
|
||||
{
|
||||
.fmt = MPP_FMT_ARGB8888, .pp_out_fmt = PP_OUT_FORMAT_ARGB,
|
||||
.out_endian = 0, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 0,
|
||||
@@ -90,7 +90,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.g_mask = 0x00ff0000 | 0xff,
|
||||
.b_mask = 0xff000000 | 0xff
|
||||
},
|
||||
//ffmepg: rgba, bin(aaaa,aaaa, bbbb,bbbb, gggg,gggg, rrrr,rrrr)
|
||||
// ff: rgba, bin(aaaa,aaaa, bbbb,bbbb, gggg,gggg, rrrr,rrrr)
|
||||
{
|
||||
.fmt = MPP_FMT_ABGR8888, .pp_out_fmt = PP_OUT_FORMAT_ARGB,
|
||||
.out_endian = 0, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 0,
|
||||
@@ -100,7 +100,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.g_mask = 0x00ff0000 | 0xff,
|
||||
.b_mask = 0x0000ff00 | 0xff
|
||||
},
|
||||
//ffmpeg: bgra, bin(bbbb,bbbb, gggg,gggg, rrrr,rrrr, aaaa,aaaa)
|
||||
// ff: bgra, bin(bbbb,bbbb, gggg,gggg, rrrr,rrrr, aaaa,aaaa)
|
||||
{
|
||||
.fmt = MPP_FMT_BGRA8888, .pp_out_fmt = PP_OUT_FORMAT_ARGB,
|
||||
.out_endian = 0, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 0,
|
||||
@@ -110,7 +110,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.g_mask = 0x0000ff00 | (0xff << 24),
|
||||
.b_mask = 0x000000ff | (0xff << 24)
|
||||
},
|
||||
//ffmpeg: rgba, bin(rrrr,rrrr, gggg,gggg, bbbb,bbbb, aaaa,aaaa)
|
||||
// ff: rgba, bin(rrrr,rrrr, gggg,gggg, bbbb,bbbb, aaaa,aaaa)
|
||||
{
|
||||
.fmt = MPP_FMT_RGBA8888, .pp_out_fmt = PP_OUT_FORMAT_ARGB,
|
||||
.out_endian = 0, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 0,
|
||||
@@ -123,7 +123,7 @@ static PpRgbCfg pp_rgb_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
};
|
||||
|
||||
static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
//ffmpeg: rgb565le, bin(gggb,bbbb, rrrr,rggg) mem MSB-->LSB(rrrr,rggg, gggb,bbbb)
|
||||
// ff: rgb565le, bin(gggb,bbbb, rrrr,rggg) mem MSB-->LSB(rrrr,rggg, gggb,bbbb)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB565 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -131,7 +131,7 @@ static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 3, .b_dither = 2,
|
||||
.r_mask = 0xf800f800, .g_mask = 0x07e007e0, .b_mask = 0x001f001f
|
||||
},
|
||||
//ffmpeg: bgr565le, bin(gggr,rrrr, bbbb,bggg) mem MSB-->LSB(bbbb,bggg, gggr,rrrr)
|
||||
// ff: bgr565le, bin(gggr,rrrr, bbbb,bggg) mem MSB-->LSB(bbbb,bggg, gggr,rrrr)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR565 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -139,7 +139,7 @@ static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 3, .b_dither = 2,
|
||||
.r_mask = 0x001f001f, .g_mask = 0x07e007e0, .b_mask = 0xf800f800
|
||||
},
|
||||
//ffmpeg: rgb555le, bin(gggb,bbbb, 0rrr,rrgg) mem MSB-->LSB(0rrr,rrgg, gggb,bbbb)
|
||||
// ff: rgb555le, bin(gggb,bbbb, 0rrr,rrgg) mem MSB-->LSB(0rrr,rrgg, gggb,bbbb)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB555 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -147,7 +147,7 @@ static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 2, .b_dither = 2,
|
||||
.r_mask = 0x7c007c00, .g_mask = 0x03e003e0, .b_mask = 0x001f001f
|
||||
},
|
||||
//ffmpeg: bgr555le, bin(gggr,rrrr, 0bbb,bbgg) mem MSB-->LSB(0bbb,bbgg, gggr,rrrr)
|
||||
// ff: bgr555le, bin(gggr,rrrr, 0bbb,bbgg) mem MSB-->LSB(0bbb,bbgg, gggr,rrrr)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR555 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 0, .swap_16 = 1, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -155,7 +155,7 @@ static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 2, .g_dither = 2, .b_dither = 2,
|
||||
.r_mask = 0x001f001f, .g_mask = 0x03e003e0, .b_mask = 0x7c007c00
|
||||
},
|
||||
//ffmpeg: rgb444le, bin(gggg,bbbb, 0000,rrrr) mem MSB-->LSB(0000,rrrr, gggg,bbbb)
|
||||
// ff: rgb444le, bin(gggg,bbbb, 0000,rrrr) mem MSB-->LSB(0000,rrrr, gggg,bbbb)
|
||||
{
|
||||
.fmt = MPP_FMT_RGB444 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
@@ -163,7 +163,7 @@ static PpRgbCfg pp_rgb_le_cfgs[PP_RGB_CFG_LENTH] = {
|
||||
.r_dither = 1, .g_dither = 1, .b_dither = 1,
|
||||
.r_mask = 0x000f000f, .g_mask = 0xf000f000, .b_mask = 0x0f000f00
|
||||
},
|
||||
//ffmpeg: bgr444le, bin(gggg,rrrr, 0000,bbbb) mem MSB-->LSB(0000,bbbb, gggg,rrrr)
|
||||
// ff: bgr444le, bin(gggg,rrrr, 0000,bbbb) mem MSB-->LSB(0000,bbbb, gggg,rrrr)
|
||||
{
|
||||
.fmt = MPP_FMT_BGR444 | MPP_FRAME_FMT_LE_MASK, .pp_out_fmt = PP_OUT_FORMAT_RGB565,
|
||||
.out_endian = 1, .swap_16 = 0, .swap_32 = 1, .rgb_in_32 = 1,
|
||||
|
@@ -36,8 +36,8 @@ NOTE:
|
||||
3. Mpp support all format hardware can support except VC1.
|
||||
4. you can get demo about mpp applied to linux and android.
|
||||
Liunx : https://github.com/WainDing/mpp_linux_cpp
|
||||
https://github.com/MUZLATAN/ffmpeg_rtsp_mpp
|
||||
https://github.com/nyanmisaka/ffmpeg-rockchip
|
||||
https://github.com/MUZLATAN
|
||||
https://github.com/nyanmisaka
|
||||
Android : https://github.com/c-xh/RKMediaCodecDemo
|
||||
5. offical github: https://github.com/rockchip-linux/mpp
|
||||
develop github: https://github.com/HermanChen/mpp
|
||||
@@ -190,7 +190,7 @@ Here is the mpp implement overall framework:
|
||||
|
||||
+---------------------------------------+
|
||||
| |
|
||||
| ffmpeg / OpenMax / gstreamer / libva |
|
||||
| OpenMax / gstreamer / libva |
|
||||
| |
|
||||
+---------------------------------------+
|
||||
|
||||
@@ -232,7 +232,7 @@ Here is the Media Process Interface hierarchical structure
|
||||
MpiPacket and MpiFrame is the stream I/O data structure.
|
||||
And MpiBuffer encapsulates different buffer implement like Linux's dma-buf and
|
||||
Android's ion.
|
||||
This part is learned from ffmpeg.
|
||||
This part is learned from ff.
|
||||
|
||||
+-------------------+
|
||||
| |
|
||||
|
@@ -658,7 +658,7 @@ static void fill_MPP_FMT_YUV420SP(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
||||
RK_U32 hor_stride, RK_U32 ver_stride,
|
||||
RK_U32 frame_count)
|
||||
{
|
||||
// MPP_FMT_YUV420SP = ffmpeg: nv12
|
||||
// MPP_FMT_YUV420SP = ff: nv12
|
||||
// https://www.fourcc.org/pixel-format/yuv-nv12/
|
||||
RK_U8 *p = buf;
|
||||
RK_U32 x, y;
|
||||
@@ -682,7 +682,7 @@ static void fill_MPP_FMT_YUV422SP(RK_U8 *buf, RK_U32 width, RK_U32 height,
|
||||
RK_U32 hor_stride, RK_U32 ver_stride,
|
||||
RK_U32 frame_count)
|
||||
{
|
||||
// MPP_FMT_YUV422SP = ffmpeg: nv16
|
||||
// MPP_FMT_YUV422SP = ff: nv16
|
||||
// not valid in www.fourcc.org
|
||||
RK_U8 *p = buf;
|
||||
RK_U32 x, y;
|
||||
@@ -744,7 +744,7 @@ static void get_rgb_color(RK_U32 *R, RK_U32 *G, RK_U32 *B, RK_S32 x, RK_S32 y, R
|
||||
|
||||
static void fill_MPP_FMT_RGB565(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_RGB565 = ffmpeg: rgb565be
|
||||
// MPP_FMT_RGB565 = ff: rgb565be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (rrrr,rggg,gggb,bbbb)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
@@ -763,7 +763,7 @@ static void fill_MPP_FMT_RGB565(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 b
|
||||
|
||||
static void fill_MPP_FMT_BGR565(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_BGR565 = ffmpeg: bgr565be
|
||||
// MPP_FMT_BGR565 = ff: bgr565be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (bbbb,bggg,gggr,rrrr)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
@@ -782,7 +782,7 @@ static void fill_MPP_FMT_BGR565(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 b
|
||||
|
||||
static void fill_MPP_FMT_RGB555(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_RGB555 = ffmpeg: rgb555be
|
||||
// MPP_FMT_RGB555 = ff: rgb555be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (0rrr,rrgg,gggb,bbbb)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
@@ -801,7 +801,7 @@ static void fill_MPP_FMT_RGB555(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 b
|
||||
|
||||
static void fill_MPP_FMT_BGR555(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_BGR555 = ffmpeg: bgr555be
|
||||
// MPP_FMT_BGR555 = ff: bgr555be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (0bbb,bbgg,gggr,rrrr)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
@@ -820,7 +820,7 @@ static void fill_MPP_FMT_BGR555(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 b
|
||||
|
||||
static void fill_MPP_FMT_RGB444(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_RGB444 = ffmpeg: rgb444be
|
||||
// MPP_FMT_RGB444 = ff: rgb444be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (0000,rrrr,gggg,bbbb)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
@@ -839,7 +839,7 @@ static void fill_MPP_FMT_RGB444(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 b
|
||||
|
||||
static void fill_MPP_FMT_BGR444(RK_U8 *p, RK_U32 R, RK_U32 G, RK_U32 B, RK_U32 be)
|
||||
{
|
||||
// MPP_FMT_BGR444 = ffmpeg: bgr444be
|
||||
// MPP_FMT_BGR444 = ff: bgr444be
|
||||
// 16 bit pixel MSB --------> LSB
|
||||
// (0000,bbbb,gggg,rrrr)
|
||||
// big endian | byte 0 | byte 1 |
|
||||
|
Reference in New Issue
Block a user