Files
mpp/inc/mpp_sys_cfg_st.h
Hongjin Li 70b572a2c0 fix[mpp_sys_cfg]: Fix abnormal stride calculation.
Platform: General

Error case:
If the specification specifies a stride, it should be
configured according to the specification's stride rather
than calculated based on width and height, especially
in scenarios involving H.264 field-based sources.
For the case of FBC, hor_stride needs to be processed
based on pixels and is unrelated to bit depth.

Reported-by: Johnson Ding <johnson.ding@rock-chips.com>

Source: rk_32.h264

Signed-off-by: Hongjin Li <vic.hong@rock-chips.com>
Change-Id: I02058432f2baeeea4c5a87c6845b24de8a78b276
2025-02-13 00:20:12 +00:00

79 lines
1.7 KiB
C

/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*/
#ifndef __MPP_SYS_CFG_ST_H__
#define __MPP_SYS_CFG_ST_H__
#include "rk_type.h"
#include "mpp_err.h"
#include "mpp_frame.h"
typedef struct MppSysCfgStHStrd_t {
/* input args start */
MppCodingType type;
RK_U32 fmt_fbc;
RK_U32 width;
RK_U32 h_stride_by_byte;
/* output args start */
RK_U32 h_stride_by_pixel;
} MppSysCfgStHStrd;
typedef struct MppSysCfgStHByteStrd_t {
/* input args start */
MppCodingType type;
MppFrameFormat fmt_codec;
RK_U32 fmt_fbc;
RK_U32 width;
/* in/output args start */
RK_U32 h_stride_by_byte;
} MppSysCfgStHByteStrd;
typedef struct MppSysCfgStVStrd_t {
/* input args start */
MppCodingType type;
RK_U32 fmt_fbc;
RK_U32 height;
/* in/output args start */
RK_U32 v_stride;
} MppSysCfgStVStrd;
typedef struct MppSysCfgStSize_t {
/* input args start */
MppCodingType type;
MppFrameFormat fmt_codec;
RK_U32 fmt_fbc;
RK_U32 width;
RK_U32 height;
/* in/output args start */
RK_U32 h_stride_by_byte;
RK_U32 v_stride;
/* output args start */
RK_U32 h_stride_by_pixel;
RK_U32 size_total;
RK_U32 size_fbc_hdr;
RK_U32 size_fbc_bdy;
} MppSysCfgStSize;
#ifdef __cplusplus
extern "C" {
#endif
MPP_RET mpp_sys_cfg_st_get_h_stride(MppSysCfgStHStrd *h_stride_cfg);
MPP_RET mpp_sys_cfg_st_get_byte_stride(MppSysCfgStHByteStrd *byte_stride_cfg);
MPP_RET mpp_sys_cfg_st_get_v_stride(MppSysCfgStVStrd *v_stride_cfg);
MPP_RET mpp_sys_cfg_st_get_size(MppSysCfgStSize *size_cfg);
#ifdef __cplusplus
}
#endif
#endif /* MPP_SYS_CFGI_H__ */