[vdpu383]: Update debug information print

Change-Id: I642e9f27afc3c4fda1cf9639d99d3e0ff9e79409
Signed-off-by: Hongjin Li <vic.hong@rock-chips.com>
This commit is contained in:
Hongjin Li
2024-03-04 17:53:10 +08:00
committed by Herman Chen
parent 317f7832bb
commit b87fa379ae
6 changed files with 198 additions and 403 deletions

View File

@@ -109,110 +109,6 @@ typedef struct Vdpu383H264dRegCtx_t {
Vdpu383H264dRegSet *regs; Vdpu383H264dRegSet *regs;
} Vdpu383H264dRegCtx; } Vdpu383H264dRegCtx;
//#define DUMP_DATA
#ifdef DUMP_DATA
static RK_U32 dump_cur_frame = 0;
static char dump_cur_dir[128];
static char dump_cur_fname_path[512];
static MPP_RET flip_string(char *str)
{
RK_U32 len = strlen(str);
RK_U32 i, j;
for (i = 0, j = len - 1; i <= j; i++, j--) {
// swapping characters
char c = str[i];
str[i] = str[j];
str[j] = c;
}
return MPP_OK;
}
static MPP_RET dump_data(char *fname_path, void *data, RK_U32 data_bit_size, RK_U32 line_bits, RK_U32 big_end)
{
RK_U8 *buf_p = (RK_U8 *)data;
RK_U8 cur_data;
RK_U32 i;
RK_U32 loop_cnt;
FILE *dump_fp = NULL;
char line_tmp[256];
RK_U32 str_idx = 0;
dump_fp = fopen(fname_path, "w+");
if (!dump_fp) {
mpp_err_f("open file: %s error!\n", fname_path);
return MPP_NOK;
}
if ((data_bit_size % 4 != 0) || (line_bits % 8 != 0)) {
mpp_err_f("line bits not align to 4!\n");
return MPP_NOK;
}
loop_cnt = data_bit_size / 8;
for (i = 0; i < loop_cnt; i++) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 4) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
sprintf(&line_tmp[str_idx++], "%0x", (cur_data >> 4) & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
// last line
if (data_bit_size % 4) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
if (data_bit_size % line_bits) {
loop_cnt = (line_bits - (data_bit_size % line_bits)) / 4;
for (i = 0; i < loop_cnt; i++)
sprintf(&line_tmp[str_idx++], "%0x", 0);
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
fclose(dump_fp);
return MPP_OK;
}
static MPP_RET dump_reg(RK_U32 *reg_s, RK_U32 count, RK_U32 log_start_idx)
{
RK_U32 loop;
for (loop = 0; loop < count; loop++) {
mpp_log("reg[%03d]: 0%08x", log_start_idx + loop, reg_s[loop]);
}
return MPP_OK;
}
#endif
static RK_U32 rkv_ver_align(RK_U32 val) static RK_U32 rkv_ver_align(RK_U32 val)
{ {
return MPP_ALIGN(val, 16); return MPP_ALIGN(val, 16);
@@ -577,13 +473,13 @@ static MPP_RET set_registers(H264dHalCtx_t *p_hal, Vdpu383H264dRegSet *regs, Hal
mpp_buf_slot_get_prop(p_hal->packet_slots, task->dec.input, SLOT_BUFFER, &mbuffer); mpp_buf_slot_get_prop(p_hal->packet_slots, task->dec.input, SLOT_BUFFER, &mbuffer);
regs->common_addr.reg128_strm_base = mpp_buffer_get_fd(mbuffer); regs->common_addr.reg128_strm_base = mpp_buffer_get_fd(mbuffer);
// regs->h264d_paras.reg65_strm_start_bit = 2 * 8; // regs->h264d_paras.reg65_strm_start_bit = 2 * 8;
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "stream_in.dat"; char *cur_fname = "stream_in.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer),
8 * p_hal->strm_len, 128, 0); 8 * p_hal->strm_len, 128, 0);
} }
#endif #endif
@@ -883,15 +779,15 @@ MPP_RET vdpu383_h264d_gen_regs(void *hal, HalTaskInfo *task)
} }
} }
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
dump_cur_frame++;
memset(dump_cur_dir, 0, sizeof(dump_cur_dir)); memset(dump_cur_dir, 0, sizeof(dump_cur_dir));
sprintf(dump_cur_dir, "avc/Frame%04d", dump_cur_frame); sprintf(dump_cur_dir, "avc/Frame%04d", dump_cur_frame);
if (access(dump_cur_dir, 0)) { if (access(dump_cur_dir, 0)) {
if (mkdir(dump_cur_dir)) if (mkdir(dump_cur_dir))
mpp_err_f("error: mkdir %s\n", dump_cur_dir); mpp_err_f("error: mkdir %s\n", dump_cur_dir);
} }
dump_cur_frame++;
} }
#endif #endif

View File

@@ -27,94 +27,6 @@
#include "vdpu383_h265d.h" #include "vdpu383_h265d.h"
#include "vdpu383_com.h" #include "vdpu383_com.h"
// #define DUMP_DATA
#ifdef DUMP_DATA
static RK_U32 dump_cur_frame = 0;
static char dump_cur_dir[128];
static char dump_cur_fname_path[512];
static flip_string(char *str)
{
RK_U32 len = strlen(str);
RK_U32 i, j;
for (i = 0, j = len - 1; i <= j; i++, j--) {
// swapping characters
char c = str[i];
str[i] = str[j];
str[j] = c;
}
}
static MPP_RET dump_data(char *fname_path, void *data, RK_U32 data_bit_size, RK_U32 line_bits, RK_U32 big_end)
{
RK_U8 *buf_p = (RK_U8 *)data;
RK_U8 cur_data;
RK_U32 i;
RK_U32 loop_cnt;
FILE *dump_fp = NULL;
char line_tmp[256];
RK_U32 str_idx = 0;
dump_fp = fopen(fname_path, "w+");
if ((data_bit_size % 4 != 0) || (line_bits % 8 != 0)) {
mpp_err_f("line bits not align to 4!\n");
return MPP_NOK;
}
loop_cnt = data_bit_size / 8;
for (i = 0; i < loop_cnt; i++) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 4) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
sprintf(&line_tmp[str_idx++], "%0x", (cur_data >> 4) & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
// last line
if (data_bit_size % 4) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
if (data_bit_size % line_bits) {
loop_cnt = (line_bits - (data_bit_size % line_bits)) / 4;
for (i = 0; i < loop_cnt; i++)
sprintf(&line_tmp[str_idx++], "%0x", 0);
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
fclose(dump_fp);
return MPP_OK;
}
#endif
#define HW_RPS #define HW_RPS
#define PPS_SIZE (112 * 64)//(96x64) #define PPS_SIZE (112 * 64)//(96x64)
@@ -702,12 +614,12 @@ static RK_S32 hal_h265d_v345_output_pps_packet(void *hal, void *dxva)
mpp_log("pps[%3d] = 0x%08x\n", i, tmp[i]); mpp_log("pps[%3d] = 0x%08x\n", i, tmp[i]);
} }
#endif #endif
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "global_cfg.dat"; char *cur_fname = "global_cfg.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)bp.pbuf, 64 * bp.index + bp.bitpos, 128, 0); dump_data_to_file(dump_cur_fname_path, (void *)bp.pbuf, 64 * bp.index + bp.bitpos, 128, 0);
} }
#endif #endif
@@ -907,12 +819,12 @@ static RK_S32 hal_h265d_vdpu383_rps(void *dxva, void *rps_buf, void* sw_rps_buf,
mpp_put_bits(&bp, 0, 128); mpp_put_bits(&bp, 0, 128);
} }
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "rps_128bit.dat"; char *cur_fname = "rps_128bit.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)bp.pbuf, 64 * bp.index + bp.bitpos, 128, 0); dump_data_to_file(dump_cur_fname_path, (void *)bp.pbuf, 64 * bp.index + bp.bitpos, 128, 0);
} }
#endif #endif
@@ -1001,7 +913,7 @@ static MPP_RET hal_h265d_vdpu383_gen_regs(void *hal, HalTaskInfo *syn)
return MPP_ERR_NULL_PTR; return MPP_ERR_NULL_PTR;
} }
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
memset(dump_cur_dir, 0, sizeof(dump_cur_dir)); memset(dump_cur_dir, 0, sizeof(dump_cur_dir));
sprintf(dump_cur_dir, "hevc/Frame%04d", dump_cur_frame); sprintf(dump_cur_dir, "hevc/Frame%04d", dump_cur_frame);
@@ -1119,12 +1031,13 @@ static MPP_RET hal_h265d_vdpu383_gen_regs(void *hal, HalTaskInfo *syn)
mv_buf = hal_bufs_get_buf(reg_ctx->cmv_bufs, dxva_ctx->pp.CurrPic.Index7Bits); mv_buf = hal_bufs_get_buf(reg_ctx->cmv_bufs, dxva_ctx->pp.CurrPic.Index7Bits);
hw_regs->h265d_addrs.reg216_colmv_cur_base = mpp_buffer_get_fd(mv_buf->buf[0]); hw_regs->h265d_addrs.reg216_colmv_cur_base = mpp_buffer_get_fd(mv_buf->buf[0]);
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "colmv_cur_frame.dat"; char *cur_fname = "colmv_cur_frame.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]), mpp_buffer_get_size(mv_buf->buf[0]), 64, 0); dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]),
mpp_buffer_get_size(mv_buf->buf[0]), 64, 0);
} }
#endif #endif
@@ -1134,12 +1047,13 @@ static MPP_RET hal_h265d_vdpu383_gen_regs(void *hal, HalTaskInfo *syn)
dxva_ctx->bitstream = mpp_buffer_get_ptr(streambuf); dxva_ctx->bitstream = mpp_buffer_get_ptr(streambuf);
} }
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "stream_in_128bit.dat"; char *cur_fname = "stream_in_128bit.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(streambuf), mpp_buffer_get_size(streambuf), 128, 0); dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(streambuf),
mpp_buffer_get_size(streambuf), 128, 0);
} }
#endif #endif

View File

@@ -20,6 +20,8 @@
#define MPP_RCB_BYTES(bits) MPP_ALIGN((bits + 7) / 8, RCB_ALLINE_SIZE) #define MPP_RCB_BYTES(bits) MPP_ALIGN((bits + 7) / 8, RCB_ALLINE_SIZE)
// #define DUMP_VDPU383_DATAS
typedef enum Vdpu383RcbType_e { typedef enum Vdpu383RcbType_e {
RCB_STRMD_ROW, RCB_STRMD_ROW,
RCB_STRMD_TILE_ROW, RCB_STRMD_TILE_ROW,
@@ -523,6 +525,16 @@ void vdpu383_setup_statistic(Vdpu383CtrlReg *com);
void vdpu383_afbc_align_calc(MppBufSlots slots, MppFrame frame, RK_U32 expand); void vdpu383_afbc_align_calc(MppBufSlots slots, MppFrame frame, RK_U32 expand);
RK_S32 vdpu383_set_rcbinfo(MppDev dev, Vdpu383RcbInfo *rcb_info); RK_S32 vdpu383_set_rcbinfo(MppDev dev, Vdpu383RcbInfo *rcb_info);
#ifdef DUMP_VDPU383_DATAS
extern RK_U32 dump_cur_frame;
extern char dump_cur_dir[128];
extern char dump_cur_fname_path[512];
MPP_RET flip_string(char *str);
MPP_RET dump_data_to_file(char *fname_path, void *data, RK_U32 data_bit_size,
RK_U32 line_bits, RK_U32 big_end);
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -168,3 +168,96 @@ RK_S32 vdpu383_set_rcbinfo(MppDev dev, Vdpu383RcbInfo *rcb_info)
return 0; return 0;
} }
#ifdef DUMP_VDPU383_DATAS
RK_U32 dump_cur_frame = 0;
char dump_cur_dir[128];
char dump_cur_fname_path[512];
MPP_RET flip_string(char *str)
{
RK_U32 len = strlen(str);
RK_U32 i, j;
for (i = 0, j = len - 1; i <= j; i++, j--) {
// swapping characters
char c = str[i];
str[i] = str[j];
str[j] = c;
}
return MPP_OK;
}
MPP_RET dump_data_to_file(char *fname_path, void *data, RK_U32 data_bit_size,
RK_U32 line_bits, RK_U32 big_end)
{
RK_U8 *buf_p = (RK_U8 *)data;
RK_U8 cur_data;
RK_U32 i;
RK_U32 loop_cnt;
FILE *dump_fp = NULL;
char line_tmp[256];
RK_U32 str_idx = 0;
dump_fp = fopen(fname_path, "w+");
if (!dump_fp) {
mpp_err_f("open file: %s error!\n", fname_path);
return MPP_NOK;
}
if ((data_bit_size % 4 != 0) || (line_bits % 8 != 0)) {
mpp_err_f("line bits not align to 4!\n");
return MPP_NOK;
}
loop_cnt = data_bit_size / 8;
for (i = 0; i < loop_cnt; i++) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 4) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
sprintf(&line_tmp[str_idx++], "%0x", (cur_data >> 4) & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
// last line
if (data_bit_size % 4) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
if (data_bit_size % line_bits) {
loop_cnt = (line_bits - (data_bit_size % line_bits)) / 4;
for (i = 0; i < loop_cnt; i++)
sprintf(&line_tmp[str_idx++], "%0x", 0);
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
fclose(dump_fp);
return MPP_OK;
}
#endif

View File

@@ -71,99 +71,9 @@ typedef struct Vdpu383Vp9dCtx_t {
RK_U8 header_data[168]; RK_U8 header_data[168];
} Vdpu383Vp9dCtx; } Vdpu383Vp9dCtx;
// #define DUMP_DATA #ifdef DUMP_VDPU383_DATAS
#ifdef DUMP_DATA
static RK_U32 dump_cur_frame = 0;
static char dump_cur_dir[128];
static char dump_cur_fname_path[512];
static RK_U32 cur_last_segid_flag; static RK_U32 cur_last_segid_flag;
static MppBuffer cur_last_prob_base; static MppBuffer cur_last_prob_base;
static MPP_RET flip_string(char *str)
{
RK_U32 len = strlen(str);
RK_U32 i, j;
for (i = 0, j = len - 1; i <= j; i++, j--) {
// swapping characters
char c = str[i];
str[i] = str[j];
str[j] = c;
}
return MPP_OK;
}
static MPP_RET dump_data(char *fname_path, void *data, RK_U32 data_bit_size, RK_U32 line_bits, RK_U32 big_end)
{
RK_U8 *buf_p = (RK_U8 *)data;
RK_U8 cur_data;
RK_U32 i;
RK_U32 loop_cnt;
FILE *dump_fp = NULL;
char line_tmp[256];
RK_U32 str_idx = 0;
dump_fp = fopen(fname_path, "w+");
if (!dump_fp) {
mpp_err_f("open file: %s error!\n", fname_path);
return MPP_NOK;
}
if ((data_bit_size % 4 != 0) || (line_bits % 8 != 0)) {
mpp_err_f("line bits not align to 4!\n");
return MPP_NOK;
}
loop_cnt = data_bit_size / 8;
for (i = 0; i < loop_cnt; i++) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 4) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
sprintf(&line_tmp[str_idx++], "%0x", (cur_data >> 4) & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
// last line
if (data_bit_size % 4) {
cur_data = buf_p[i];
sprintf(&line_tmp[str_idx++], "%0x", cur_data & 0xf);
if ((i * 8 + 8) % line_bits == 0) {
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
}
if (data_bit_size % line_bits) {
loop_cnt = (line_bits - (data_bit_size % line_bits)) / 4;
for (i = 0; i < loop_cnt; i++)
sprintf(&line_tmp[str_idx++], "%0x", 0);
line_tmp[str_idx++] = '\0';
str_idx = 0;
if (!big_end)
flip_string(line_tmp);
fprintf(dump_fp, "%s\n", line_tmp);
}
fclose(dump_fp);
return MPP_OK;
}
#endif #endif
static MPP_RET hal_vp9d_alloc_res(HalVp9dCtx *hal) static MPP_RET hal_vp9d_alloc_res(HalVp9dCtx *hal)
@@ -742,12 +652,12 @@ static MPP_RET prepare_uncompress_header(HalVp9dCtx *p_hal, DXVA_PicParams_VP9 *
mpp_put_align(&bp, 64, 0);//128 mpp_put_align(&bp, 64, 0);//128
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "global_cfg.dat"; char *cur_fname = "global_cfg.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)bp.pbuf, 64 * (bp.index - 1) + bp.bitpos, 64, 0); dump_data_to_file(dump_cur_fname_path, (void *)bp.pbuf, 64 * (bp.index - 1) + bp.bitpos, 64, 0);
} }
#endif #endif
@@ -810,15 +720,15 @@ static MPP_RET hal_vp9d_vdpu383_gen_regs(void *hal, HalTaskInfo *task)
vp9_hw_regs = (Vdpu383Vp9dRegSet*)hw_ctx->hw_regs; vp9_hw_regs = (Vdpu383Vp9dRegSet*)hw_ctx->hw_regs;
memset(vp9_hw_regs, 0, sizeof(Vdpu383Vp9dRegSet)); memset(vp9_hw_regs, 0, sizeof(Vdpu383Vp9dRegSet));
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
dump_cur_frame++;
memset(dump_cur_dir, 0, sizeof(dump_cur_dir)); memset(dump_cur_dir, 0, sizeof(dump_cur_dir));
sprintf(dump_cur_dir, "vp9/Frame%04d", p_hal->frame_no); sprintf(dump_cur_dir, "vp9/Frame%04d", dump_cur_frame);
if (access(dump_cur_dir, 0)) { if (access(dump_cur_dir, 0)) {
if (mkdir(dump_cur_dir)) if (mkdir(dump_cur_dir))
mpp_err_f("error: mkdir %s\n", dump_cur_dir); mpp_err_f("error: mkdir %s\n", dump_cur_dir);
} }
dump_cur_frame++;
} }
#endif #endif
@@ -871,13 +781,13 @@ static MPP_RET hal_vp9d_vdpu383_gen_regs(void *hal, HalTaskInfo *task)
if (hw_ctx->prob_ctx_valid[frame_ctx_id]) { if (hw_ctx->prob_ctx_valid[frame_ctx_id]) {
vp9_hw_regs->vp9d_addrs.reg184_lastprob_base = vp9_hw_regs->vp9d_addrs.reg184_lastprob_base =
mpp_buffer_get_fd(hw_ctx->prob_loop_base[frame_ctx_id]); mpp_buffer_get_fd(hw_ctx->prob_loop_base[frame_ctx_id]);
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ cur_last_prob_base = hw_ctx->prob_loop_base[frame_ctx_id]; } { cur_last_prob_base = hw_ctx->prob_loop_base[frame_ctx_id]; }
#endif #endif
} else { } else {
vp9_hw_regs->vp9d_addrs.reg184_lastprob_base = mpp_buffer_get_fd(hw_ctx->prob_default_base); vp9_hw_regs->vp9d_addrs.reg184_lastprob_base = mpp_buffer_get_fd(hw_ctx->prob_default_base);
hw_ctx->prob_ctx_valid[frame_ctx_id] |= pic_param->refresh_frame_context; hw_ctx->prob_ctx_valid[frame_ctx_id] |= pic_param->refresh_frame_context;
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ cur_last_prob_base = hw_ctx->prob_default_base; } { cur_last_prob_base = hw_ctx->prob_default_base; }
#endif #endif
} }
@@ -885,20 +795,20 @@ static MPP_RET hal_vp9d_vdpu383_gen_regs(void *hal, HalTaskInfo *task)
mpp_buffer_get_fd(hw_ctx->prob_loop_base[frame_ctx_id]); mpp_buffer_get_fd(hw_ctx->prob_loop_base[frame_ctx_id]);
} }
vp9_hw_regs->vp9d_addrs.reg183_kfprob_base = mpp_buffer_get_fd(hw_ctx->probe_base); vp9_hw_regs->vp9d_addrs.reg183_kfprob_base = mpp_buffer_get_fd(hw_ctx->probe_base);
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "cabac_last_probe.dat"; char *cur_fname = "cabac_last_probe.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cur_last_prob_base), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cur_last_prob_base),
8 * 152 * 16, 128, 0); 8 * 152 * 16, 128, 0);
} }
{ {
char *cur_fname = "cabac_kf_probe.dat"; char *cur_fname = "cabac_kf_probe.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->probe_base), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->probe_base),
8 * PROB_KF_SIZE, 128, 0); 8 * PROB_KF_SIZE, 128, 0);
} }
#endif #endif
#else #else
@@ -985,15 +895,15 @@ static MPP_RET hal_vp9d_vdpu383_gen_regs(void *hal, HalTaskInfo *task)
vp9_hw_regs->vp9d_addrs.reg181_segidlast_base = mpp_buffer_get_fd(hw_ctx->segid_cur_base); vp9_hw_regs->vp9d_addrs.reg181_segidlast_base = mpp_buffer_get_fd(hw_ctx->segid_cur_base);
vp9_hw_regs->vp9d_addrs.reg182_segidcur_base = mpp_buffer_get_fd(hw_ctx->segid_last_base); vp9_hw_regs->vp9d_addrs.reg182_segidcur_base = mpp_buffer_get_fd(hw_ctx->segid_last_base);
} }
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
cur_last_segid_flag = hw_ctx->last_segid_flag; cur_last_segid_flag = hw_ctx->last_segid_flag;
{ {
char *cur_fname = "stream_in.dat"; char *cur_fname = "stream_in.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(streambuf) dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(streambuf)
+ pic_param->uncompressed_header_size_byte_aligned, + pic_param->uncompressed_header_size_byte_aligned,
8 * (((stream_len + 15) & (~15)) + 0x80), 128, 0); 8 * (((stream_len + 15) & (~15)) + 0x80), 128, 0);
} }
#endif #endif
/* set last segid flag */ /* set last segid flag */
@@ -1237,37 +1147,42 @@ static MPP_RET hal_vp9d_vdpu383_wait(void *hal, HalTaskInfo *task)
ret = mpp_dev_ioctl(p_hal->dev, MPP_DEV_CMD_POLL, NULL); ret = mpp_dev_ioctl(p_hal->dev, MPP_DEV_CMD_POLL, NULL);
if (ret) if (ret)
mpp_err_f("poll cmd failed %d\n", ret); mpp_err_f("poll cmd failed %d\n", ret);
#ifdef DUMP_DATA #ifdef DUMP_VDPU383_DATAS
{ {
char *cur_fname = "cabac_update_probe.dat"; char *cur_fname = "cabac_update_probe.dat";
DXVA_PicParams_VP9 *pic_param = (DXVA_PicParams_VP9*)task->dec.syntax.data; DXVA_PicParams_VP9 *pic_param = (DXVA_PicParams_VP9*)task->dec.syntax.data;
RK_U32 frame_ctx_id = pic_param->frame_context_idx; RK_U32 frame_ctx_id = pic_param->frame_context_idx;
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->prob_loop_base[frame_ctx_id]), dump_data_to_file(dump_cur_fname_path,
8 * 152 * 16, 128, 0); (void *)mpp_buffer_get_ptr(hw_ctx->prob_loop_base[frame_ctx_id]),
8 * 152 * 16, 128, 0);
} }
{ {
char *cur_fname = "segid_last.dat"; char *cur_fname = "segid_last.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
if (!cur_last_segid_flag) if (!cur_last_segid_flag)
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->segid_cur_base), dump_data_to_file(dump_cur_fname_path,
8 * 1559 * 8, 64, 0); (void *)mpp_buffer_get_ptr(hw_ctx->segid_cur_base),
8 * 1559 * 8, 64, 0);
else else
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->segid_last_base), dump_data_to_file(dump_cur_fname_path,
8 * 1559 * 8, 64, 0); (void *)mpp_buffer_get_ptr(hw_ctx->segid_last_base),
8 * 1559 * 8, 64, 0);
} }
{ {
char *cur_fname = "segid_cur.dat"; char *cur_fname = "segid_cur.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
if (cur_last_segid_flag) if (cur_last_segid_flag)
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->segid_cur_base), dump_data_to_file(dump_cur_fname_path,
8 * 1559 * 8, 64, 0); (void *)mpp_buffer_get_ptr(hw_ctx->segid_cur_base),
8 * 1559 * 8, 64, 0);
else else
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(hw_ctx->segid_last_base), dump_data_to_file(dump_cur_fname_path,
8 * 1559 * 8, 64, 0); (void *)mpp_buffer_get_ptr(hw_ctx->segid_last_base),
8 * 1559 * 8, 64, 0);
} }
#endif #endif

View File

@@ -130,8 +130,6 @@
#define OFFSET_AV1D_ADDR_REGS (168 * sizeof(RK_U32)) #define OFFSET_AV1D_ADDR_REGS (168 * sizeof(RK_U32))
#define OFFSET_INTERRUPT_REGS (15 * sizeof(RK_U32)) #define OFFSET_INTERRUPT_REGS (15 * sizeof(RK_U32))
#define DUMP_AV1_DATAS 0
typedef struct av1d_rkv_buf_t { typedef struct av1d_rkv_buf_t {
RK_U32 valid; RK_U32 valid;
Vdpu383Av1dRegSet *regs; Vdpu383Av1dRegSet *regs;
@@ -220,9 +218,9 @@ typedef struct VdpuAv1dRegCtx_t {
RK_U8 header_data[VDPU383_UNCMPS_HEADER_SIZE]; RK_U8 header_data[VDPU383_UNCMPS_HEADER_SIZE];
} Vdpu383Av1dRegCtx; } Vdpu383Av1dRegCtx;
// #define DUMP_DATA // #define DUMP_AV1D_VDPU383_DATAS
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
static RK_U32 dump_cur_frame = 0; static RK_U32 dump_cur_frame = 0;
static char dump_cur_dir[128]; static char dump_cur_dir[128];
static char dump_cur_fname_path[512]; static char dump_cur_fname_path[512];
@@ -241,8 +239,8 @@ static MPP_RET flip_string(char *str)
return MPP_OK; return MPP_OK;
} }
static MPP_RET dump_data(char *fname_path, void *data, RK_U32 data_bit_size, static MPP_RET dump_data_to_file(char *fname_path, void *data, RK_U32 data_bit_size,
RK_U32 line_bits, RK_U32 big_end, RK_U32 append) RK_U32 line_bits, RK_U32 big_end, RK_U32 append)
{ {
RK_U8 *buf_p = (RK_U8 *)data; RK_U8 *buf_p = (RK_U8 *)data;
RK_U8 cur_data; RK_U8 cur_data;
@@ -1987,7 +1985,7 @@ static void vdpu383_av1d_set_cdf(Av1dHalCtx *p_hal, DXVA_PicParams_AV1 *dxva)
} }
/* use para in decoder */ /* use para in decoder */
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "cabac_cdf_in.dat"; char *cur_fname = "cabac_cdf_in.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
@@ -2006,13 +2004,13 @@ static void vdpu383_av1d_set_cdf(Av1dHalCtx *p_hal, DXVA_PicParams_AV1 *dxva)
regs->av1d_addrs.reg184_av1_noncoef_rd_base = mpp_buffer_get_fd(reg_ctx->cdf_rd_def_base); regs->av1d_addrs.reg184_av1_noncoef_rd_base = mpp_buffer_get_fd(reg_ctx->cdf_rd_def_base);
regs->av1d_addrs.reg178_av1_coef_rd_base = mpp_buffer_get_fd(reg_ctx->cdf_rd_def_base); regs->av1d_addrs.reg178_av1_coef_rd_base = mpp_buffer_get_fd(reg_ctx->cdf_rd_def_base);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base),
8 * NON_COEF_CDF_SIZE, 128, 0, 0); 8 * NON_COEF_CDF_SIZE, 128, 0, 0);
dump_data(dump_cur_fname_path, (RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base) dump_data_to_file(dump_cur_fname_path, (RK_U8 *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base)
+ NON_COEF_CDF_SIZE + COEF_CDF_SIZE * coeff_cdf_idx, + NON_COEF_CDF_SIZE + COEF_CDF_SIZE * coeff_cdf_idx,
8 * COEF_CDF_SIZE, 128, 0, 1); 8 * COEF_CDF_SIZE, 128, 0, 1);
} }
#endif #endif
} else { } else {
@@ -2022,13 +2020,13 @@ static void vdpu383_av1d_set_cdf(Av1dHalCtx *p_hal, DXVA_PicParams_AV1 *dxva)
cdf_buf = hal_bufs_get_buf(reg_ctx->cdf_bufs, dxva->frame_refs[mapped_idx].Index); cdf_buf = hal_bufs_get_buf(reg_ctx->cdf_bufs, dxva->frame_refs[mapped_idx].Index);
regs->av1d_addrs.reg184_av1_noncoef_rd_base = mpp_buffer_get_fd(cdf_buf->buf[0]); regs->av1d_addrs.reg184_av1_noncoef_rd_base = mpp_buffer_get_fd(cdf_buf->buf[0]);
regs->av1d_addrs.reg178_av1_coef_rd_base = mpp_buffer_get_fd(cdf_buf->buf[0]); regs->av1d_addrs.reg178_av1_coef_rd_base = mpp_buffer_get_fd(cdf_buf->buf[0]);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cdf_buf->buf[0]), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cdf_buf->buf[0]),
8 * NON_COEF_CDF_SIZE, 128, 0, 0); 8 * NON_COEF_CDF_SIZE, 128, 0, 0);
dump_data(dump_cur_fname_path, (RK_U8 *)mpp_buffer_get_ptr(cdf_buf->buf[0]) dump_data_to_file(dump_cur_fname_path, (RK_U8 *)mpp_buffer_get_ptr(cdf_buf->buf[0])
+ NON_COEF_CDF_SIZE + COEF_CDF_SIZE * coeff_cdf_idx, + NON_COEF_CDF_SIZE + COEF_CDF_SIZE * coeff_cdf_idx,
8 * COEF_CDF_SIZE, 128, 0, 1); 8 * COEF_CDF_SIZE, 128, 0, 1);
} }
#endif #endif
} }
@@ -2070,13 +2068,13 @@ static void vdpu383_av1d_set_cdf(Av1dHalCtx *p_hal, DXVA_PicParams_AV1 *dxva)
} }
} }
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "cdf_rd_def.dat"; char *cur_fname = "cdf_rd_def.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(reg_ctx->cdf_rd_def_base),
(NON_COEF_CDF_SIZE + COEF_CDF_SIZE * 4) * 8, 128, 0, 0); (NON_COEF_CDF_SIZE + COEF_CDF_SIZE * 4) * 8, 128, 0, 0);
} }
#endif #endif
@@ -2117,15 +2115,15 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
memset(regs, 0, sizeof(*regs)); memset(regs, 0, sizeof(*regs));
p_hal->strm_len = (RK_S32)mpp_packet_get_length(task->dec.input_packet); p_hal->strm_len = (RK_S32)mpp_packet_get_length(task->dec.input_packet);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
dump_cur_frame++;
memset(dump_cur_dir, 0, sizeof(dump_cur_dir)); memset(dump_cur_dir, 0, sizeof(dump_cur_dir));
sprintf(dump_cur_dir, "av1/Frame%04d", p_hal->frame_no); sprintf(dump_cur_dir, "av1/Frame%04d", dump_cur_frame);
if (access(dump_cur_dir, 0)) { if (access(dump_cur_dir, 0)) {
if (mkdir(dump_cur_dir)) if (mkdir(dump_cur_dir))
mpp_err_f("error: mkdir %s\n", dump_cur_dir); mpp_err_f("error: mkdir %s\n", dump_cur_dir);
} }
dump_cur_frame++;
} }
#endif #endif
@@ -2182,13 +2180,13 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
regs->av1d_paras.reg67_global_len = VDPU383_UNCMPS_HEADER_SIZE / 16; // 128 bit as unit regs->av1d_paras.reg67_global_len = VDPU383_UNCMPS_HEADER_SIZE / 16; // 128 bit as unit
regs->com_pkt_addr.reg131_gbl_base = ctx->bufs_fd; regs->com_pkt_addr.reg131_gbl_base = ctx->bufs_fd;
// mpp_dev_set_reg_offset(p_hal->dev, 131, ctx->offset_uncomps); // mpp_dev_set_reg_offset(p_hal->dev, 131, ctx->offset_uncomps);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "global_cfg.dat"; char *cur_fname = "global_cfg.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, ctx->bufs_ptr, dump_data_to_file(dump_cur_fname_path, ctx->bufs_ptr,
8 * regs->av1d_paras.reg67_global_len * 16, 64, 0, 0); 8 * regs->av1d_paras.reg67_global_len * 16, 64, 0, 0);
} }
#endif #endif
// input strm // input strm
@@ -2200,21 +2198,21 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
mpp_dev_set_reg_offset(p_hal->dev, 128, ctx->offset_uncomps & 0xfffffff0); mpp_dev_set_reg_offset(p_hal->dev, 128, ctx->offset_uncomps & 0xfffffff0);
/* error */ /* error */
regs->av1d_addrs.reg169_error_ref_base = mpp_buffer_get_fd(mbuffer); regs->av1d_addrs.reg169_error_ref_base = mpp_buffer_get_fd(mbuffer);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "stream_in.dat"; char *cur_fname = "stream_in.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer) dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer)
+ ctx->offset_uncomps, + ctx->offset_uncomps,
8 * p_hal->strm_len, 128, 0, 0); 8 * p_hal->strm_len, 128, 0, 0);
} }
{ {
char *cur_fname = "stream_in_no_offset.dat"; char *cur_fname = "stream_in_no_offset.dat";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer),
8 * p_hal->strm_len, 128, 0, 0); 8 * p_hal->strm_len, 128, 0, 0);
} }
#endif #endif
} }
@@ -2333,20 +2331,20 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
vdpu383_av1d_colmv_setup(p_hal, dxva); vdpu383_av1d_colmv_setup(p_hal, dxva);
mv_buf = hal_bufs_get_buf(ctx->colmv_bufs, dxva->CurrPic.Index7Bits); mv_buf = hal_bufs_get_buf(ctx->colmv_bufs, dxva->CurrPic.Index7Bits);
regs->av1d_addrs.reg216_colmv_cur_base = mpp_buffer_get_fd(mv_buf->buf[0]); regs->av1d_addrs.reg216_colmv_cur_base = mpp_buffer_get_fd(mv_buf->buf[0]);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
memset(mpp_buffer_get_ptr(mv_buf->buf[0]), 0, mpp_buffer_get_size(mv_buf->buf[0])); memset(mpp_buffer_get_ptr(mv_buf->buf[0]), 0, mpp_buffer_get_size(mv_buf->buf[0]));
#endif #endif
for (i = 0; i < NUM_REF_FRAMES; i++) { for (i = 0; i < NUM_REF_FRAMES; i++) {
if (dxva->frame_refs[i].Index != (CHAR)0xff && dxva->frame_refs[i].Index != 0x7f) { if (dxva->frame_refs[i].Index != (CHAR)0xff && dxva->frame_refs[i].Index != 0x7f) {
mv_buf = hal_bufs_get_buf(ctx->colmv_bufs, dxva->frame_refs[i].Index); mv_buf = hal_bufs_get_buf(ctx->colmv_bufs, dxva->frame_refs[i].Index);
regs->av1d_addrs.reg217_232_colmv_ref_base[i] = mpp_buffer_get_fd(mv_buf->buf[0]); regs->av1d_addrs.reg217_232_colmv_ref_base[i] = mpp_buffer_get_fd(mv_buf->buf[0]);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "colmv_ref_frame"; char *cur_fname = "colmv_ref_frame";
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s%d.dat", dump_cur_dir, cur_fname, i); sprintf(dump_cur_fname_path, "%s/%s%d.dat", dump_cur_dir, cur_fname, i);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]),
8 * 5120 * 8, 64, 0, 0); 8 * 5120 * 8, 64, 0, 0);
} }
#endif #endif
} }
@@ -2377,23 +2375,6 @@ MPP_RET vdpu383_av1d_start(void *hal, HalTaskInfo *task)
reg_ctx->reg_buf[task->dec.reg_index].regs : reg_ctx->reg_buf[task->dec.reg_index].regs :
reg_ctx->regs; reg_ctx->regs;
MppDev dev = p_hal->dev; MppDev dev = p_hal->dev;
#if DUMP_AV1_DATAS
{
RK_U32 i = 0;
RK_U32 *p = (RK_U32*)regs;
char fname[128];
FILE *fp_in = NULL;
static RK_U32 g_frame_no = 0;
sprintf(fname, "/data/video/reg_%d_in.txt", g_frame_no++);
fp_in = fopen(fname, "wb");
for (i = 0; i < sizeof(*regs) / 4; i++, p++)
fprintf(fp_in, "reg[%3d] = %08x\n", i, *p);
fflush(fp_in);
fclose(fp_in);
}
#endif
do { do {
MppDevRegWrCfg wr_cfg; MppDevRegWrCfg wr_cfg;
MppDevRegRdCfg rd_cfg; MppDevRegRdCfg rd_cfg;
@@ -2475,7 +2456,7 @@ MPP_RET vdpu383_av1d_wait(void *hal, HalTaskInfo *task)
reg_ctx->reg_buf[task->dec.reg_index].regs : reg_ctx->reg_buf[task->dec.reg_index].regs :
reg_ctx->regs; reg_ctx->regs;
(void) p_regs; (void) p_regs;
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "colmv_cur_frame.dat"; char *cur_fname = "colmv_cur_frame.dat";
DXVA_PicParams_AV1 *dxva = (DXVA_PicParams_AV1*)task->dec.syntax.data; DXVA_PicParams_AV1 *dxva = (DXVA_PicParams_AV1*)task->dec.syntax.data;
@@ -2483,8 +2464,8 @@ MPP_RET vdpu383_av1d_wait(void *hal, HalTaskInfo *task)
mv_buf = hal_bufs_get_buf(reg_ctx->colmv_bufs, dxva->CurrPic.Index7Bits); mv_buf = hal_bufs_get_buf(reg_ctx->colmv_bufs, dxva->CurrPic.Index7Bits);
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mv_buf->buf[0]),
8 * 5120 * 8, 64, 0, 0); 8 * 5120 * 8, 64, 0, 0);
} }
{ {
char *cur_fname = "decout.dat"; char *cur_fname = "decout.dat";
@@ -2492,8 +2473,8 @@ MPP_RET vdpu383_av1d_wait(void *hal, HalTaskInfo *task)
mpp_buf_slot_get_prop(p_hal->slots, task->dec.output, SLOT_BUFFER, &mbuffer); mpp_buf_slot_get_prop(p_hal->slots, task->dec.output, SLOT_BUFFER, &mbuffer);
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(mbuffer),
8 * mpp_buffer_get_size(mbuffer), 64, 0, 0); 8 * mpp_buffer_get_size(mbuffer), 64, 0, 0);
} }
#endif #endif
@@ -2512,7 +2493,7 @@ MPP_RET vdpu383_av1d_wait(void *hal, HalTaskInfo *task)
ret = mpp_dev_ioctl(p_hal->dev, MPP_DEV_CMD_POLL, NULL); ret = mpp_dev_ioctl(p_hal->dev, MPP_DEV_CMD_POLL, NULL);
if (ret) if (ret)
mpp_err_f("poll cmd failed %d\n", ret); mpp_err_f("poll cmd failed %d\n", ret);
#ifdef DUMP_DATA #ifdef DUMP_AV1D_VDPU383_DATAS
{ {
char *cur_fname = "cabac_cdf_out.dat"; char *cur_fname = "cabac_cdf_out.dat";
HalBuf *cdf_buf = NULL; HalBuf *cdf_buf = NULL;
@@ -2520,24 +2501,8 @@ MPP_RET vdpu383_av1d_wait(void *hal, HalTaskInfo *task)
memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path)); memset(dump_cur_fname_path, 0, sizeof(dump_cur_fname_path));
sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname); sprintf(dump_cur_fname_path, "%s/%s", dump_cur_dir, cur_fname);
cdf_buf = hal_bufs_get_buf(reg_ctx->cdf_bufs, dxva->CurrPic.Index7Bits); cdf_buf = hal_bufs_get_buf(reg_ctx->cdf_bufs, dxva->CurrPic.Index7Bits);
dump_data(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cdf_buf->buf[0]), dump_data_to_file(dump_cur_fname_path, (void *)mpp_buffer_get_ptr(cdf_buf->buf[0]),
(NON_COEF_CDF_SIZE + COEF_CDF_SIZE) * 8, 128, 0, 0); (NON_COEF_CDF_SIZE + COEF_CDF_SIZE) * 8, 128, 0, 0);
}
#endif
#if DUMP_AV1_DATAS
{
char fname[128];
FILE *fp_in = NULL;
static RK_U32 g_frame_no = 0;
RK_U32 *p = (RK_U32*)p_regs;
sprintf(fname, "/data/video/reg_%d_out.txt", g_frame_no++);
fp_in = fopen(fname, "wb");
for (i = 0; i < sizeof(*p_regs) / 4; i++, p++)
fprintf(fp_in, "reg[%3d] = %08x\n", i, *p);
fflush(fp_in);
fclose(fp_in);
} }
#endif #endif