Hi Yunfei, kernel test robot noticed the following build errors: [auto build test ERROR on media-tree/master] [also build test ERROR on linus/master v6.3 next-20230427] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Yunfei-Dong/media-mediatek-vcodec-support-stateless-hevc-decoder/20230428-104227 base: git://linuxtv.org/media_tree.git master patch link: https://lore.kernel.org/r/20230428024000.26558-1-yunfei.dong%40mediatek.com patch subject: [PATCH] media: mediatek: vcodec: support stateless hevc decoder config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20230428/202304281422.UiLLTEo5-lkp@xxxxxxxxx/config) compiler: sh4-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/e916526fc9c32f4062d328a41f18d5efd2e2b058 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Yunfei-Dong/media-mediatek-vcodec-support-stateless-hevc-decoder/20230428-104227 git checkout e916526fc9c32f4062d328a41f18d5efd2e2b058 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=sh SHELL=/bin/bash drivers/media/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Link: https://lore.kernel.org/oe-kbuild-all/202304281422.UiLLTEo5-lkp@xxxxxxxxx/ All error/warnings (new ones prefixed by >>): drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c: In function 'vdec_hevc_fill_dpb_info': >> drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:412:29: error: implicit declaration of function 'vb2_find_timestamp' [-Werror=implicit-function-declaration] 412 | vb2_index = vb2_find_timestamp(vq, dpb->timestamp, 0); | ^~~~~~~~~~~~~~~~~~ >> drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:403:33: warning: variable 'vb2_v4l2' set but not used [-Wunused-but-set-variable] 403 | struct vb2_v4l2_buffer *vb2_v4l2; | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c: In function 'vdec_hevc_copy_decode_params': >> drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:593:63: error: 'const struct v4l2_ctrl_hevc_decode_params' has no member named 'num_delta_pocs_of_ref_rps_idx' 593 | dst_params->num_delta_pocs_of_ref_rps_idx = src_params->num_delta_pocs_of_ref_rps_idx; | ^~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c: In function 'vdec_hevc_slice_fill_decode_parameters': drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:636:27: error: 'const struct v4l2_ctrl_hevc_decode_params' has no member named 'num_delta_pocs_of_ref_rps_idx' 636 | dec_params->num_delta_pocs_of_ref_rps_idx; | ^~ In file included from drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:11: drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c: In function 'vdec_hevc_slice_setup_lat_buffer': >> drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 6 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:791:9: note: in expansion of macro 'mtk_vcodec_debug' 791 | mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx) err:0x%llx", | ^~~~~~~~~~~~~~~~ >> drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 7 has type 'size_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:791:9: note: in expansion of macro 'mtk_vcodec_debug' 791 | mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx) err:0x%llx", | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 8 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:791:9: note: in expansion of macro 'mtk_vcodec_debug' 791 | mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx) err:0x%llx", | ^~~~~~~~~~~~~~~~ >> drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 6 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:796:9: note: in expansion of macro 'mtk_vcodec_debug' 796 | mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", | ^~~~~~~~~~~~~~~~ >> drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 7 has type 'size_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:796:9: note: in expansion of macro 'mtk_vcodec_debug' 796 | mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 8 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:796:9: note: in expansion of macro 'mtk_vcodec_debug' 796 | mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:29:21: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 9 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 29 | #define pr_fmt(fmt) "%s(),%d: " fmt, __func__, __LINE__ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:223:29: note: in expansion of macro 'pr_fmt' 223 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:247:9: note: in expansion of macro '__dynamic_func_call_cls' 247 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:249:9: note: in expansion of macro '_dynamic_func_call_cls' 249 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:268:9: note: in expansion of macro '_dynamic_func_call' 268 | _dynamic_func_call(fmt, __dynamic_pr_debug, \ | ^~~~~~~~~~~~~~~~~~ include/linux/printk.h:579:9: note: in expansion of macro 'dynamic_pr_debug' 579 | dynamic_pr_debug(fmt, ##__VA_ARGS__) | ^~~~~~~~~~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/../mtk_vcodec_util.h:45:9: note: in expansion of macro 'pr_debug' 45 | pr_debug("[MTK_VCODEC][%d]: " fmt "\n", \ | ^~~~~~~~ drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c:796:9: note: in expansion of macro 'mtk_vcodec_debug' 796 | mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))", | ^~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/vb2_find_timestamp +412 drivers/media/platform/mediatek/vcodec/vdec/vdec_hevc_req_multi_if.c 395 396 static void vdec_hevc_fill_dpb_info(struct mtk_vcodec_ctx *ctx, 397 struct slice_api_hevc_decode_param *decode_params, 398 struct mtk_hevc_dpb_info *hevc_dpb_info) 399 { 400 const struct slice_hevc_dpb_entry *dpb; 401 struct vb2_queue *vq; 402 struct vb2_buffer *vb; > 403 struct vb2_v4l2_buffer *vb2_v4l2; 404 int index, vb2_index; 405 406 vq = v4l2_m2m_get_vq(ctx->m2m_ctx, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); 407 for (index = 0; index < V4L2_HEVC_DPB_ENTRIES_NUM_MAX; index++) { 408 dpb = &decode_params->dpb[index]; 409 if (index >= decode_params->num_active_dpb_entries) 410 continue; 411 > 412 vb2_index = vb2_find_timestamp(vq, dpb->timestamp, 0); 413 if (vb2_index < 0) { 414 dev_err(&ctx->dev->plat_dev->dev, 415 "Reference invalid: dpb_index(%d) timestamp(%lld)", 416 index, dpb->timestamp); 417 continue; 418 } 419 420 vb = vq->bufs[vb2_index]; 421 vb2_v4l2 = container_of(vb, struct vb2_v4l2_buffer, vb2_buf); 422 hevc_dpb_info[index].field = dpb->field_pic; 423 424 hevc_dpb_info[index].y_dma_addr = 425 vb2_dma_contig_plane_dma_addr(vb, 0); 426 if (ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes == 2) 427 hevc_dpb_info[index].c_dma_addr = 428 vb2_dma_contig_plane_dma_addr(vb, 1); 429 else 430 hevc_dpb_info[index].c_dma_addr = 431 hevc_dpb_info[index].y_dma_addr + 432 ctx->picinfo.fb_sz[0]; 433 } 434 } 435 436 static void vdec_hevc_copy_sps_params(struct mtk_hevc_sps_param *dst_param, 437 const struct v4l2_ctrl_hevc_sps *src_param) 438 { 439 GET_HEVC_VDEC_PARAM(video_parameter_set_id); 440 GET_HEVC_VDEC_PARAM(seq_parameter_set_id); 441 GET_HEVC_VDEC_PARAM(pic_width_in_luma_samples); 442 GET_HEVC_VDEC_PARAM(pic_height_in_luma_samples); 443 GET_HEVC_VDEC_PARAM(bit_depth_luma_minus8); 444 GET_HEVC_VDEC_PARAM(bit_depth_chroma_minus8); 445 GET_HEVC_VDEC_PARAM(log2_max_pic_order_cnt_lsb_minus4); 446 GET_HEVC_VDEC_PARAM(sps_max_dec_pic_buffering_minus1); 447 GET_HEVC_VDEC_PARAM(sps_max_num_reorder_pics); 448 GET_HEVC_VDEC_PARAM(sps_max_latency_increase_plus1); 449 GET_HEVC_VDEC_PARAM(log2_min_luma_coding_block_size_minus3); 450 GET_HEVC_VDEC_PARAM(log2_diff_max_min_luma_coding_block_size); 451 GET_HEVC_VDEC_PARAM(log2_min_luma_transform_block_size_minus2); 452 GET_HEVC_VDEC_PARAM(log2_diff_max_min_luma_transform_block_size); 453 GET_HEVC_VDEC_PARAM(max_transform_hierarchy_depth_inter); 454 GET_HEVC_VDEC_PARAM(max_transform_hierarchy_depth_intra); 455 GET_HEVC_VDEC_PARAM(pcm_sample_bit_depth_luma_minus1); 456 GET_HEVC_VDEC_PARAM(pcm_sample_bit_depth_chroma_minus1); 457 GET_HEVC_VDEC_PARAM(log2_min_pcm_luma_coding_block_size_minus3); 458 GET_HEVC_VDEC_PARAM(log2_diff_max_min_pcm_luma_coding_block_size); 459 GET_HEVC_VDEC_PARAM(num_short_term_ref_pic_sets); 460 GET_HEVC_VDEC_PARAM(num_long_term_ref_pics_sps); 461 GET_HEVC_VDEC_PARAM(chroma_format_idc); 462 GET_HEVC_VDEC_PARAM(sps_max_sub_layers_minus1); 463 464 GET_HEVC_VDEC_FLAG(separate_colour_plane, 465 V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE); 466 GET_HEVC_VDEC_FLAG(scaling_list_enabled, 467 V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED); 468 GET_HEVC_VDEC_FLAG(amp_enabled, 469 V4L2_HEVC_SPS_FLAG_AMP_ENABLED); 470 GET_HEVC_VDEC_FLAG(sample_adaptive_offset, 471 V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET); 472 GET_HEVC_VDEC_FLAG(pcm_enabled, 473 V4L2_HEVC_SPS_FLAG_PCM_ENABLED); 474 GET_HEVC_VDEC_FLAG(pcm_loop_filter_disabled, 475 V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED); 476 GET_HEVC_VDEC_FLAG(long_term_ref_pics_enabled, 477 V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT); 478 GET_HEVC_VDEC_FLAG(sps_temporal_mvp_enabled, 479 V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED); 480 GET_HEVC_VDEC_FLAG(strong_intra_smoothing_enabled, 481 V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED); 482 } 483 484 static void vdec_hevc_copy_pps_params(struct mtk_hevc_pps_param *dst_param, 485 const struct v4l2_ctrl_hevc_pps *src_param) 486 { 487 int i; 488 489 GET_HEVC_VDEC_PARAM(pic_parameter_set_id); 490 GET_HEVC_VDEC_PARAM(num_extra_slice_header_bits); 491 GET_HEVC_VDEC_PARAM(num_ref_idx_l0_default_active_minus1); 492 GET_HEVC_VDEC_PARAM(num_ref_idx_l1_default_active_minus1); 493 GET_HEVC_VDEC_PARAM(init_qp_minus26); 494 GET_HEVC_VDEC_PARAM(diff_cu_qp_delta_depth); 495 GET_HEVC_VDEC_PARAM(pps_cb_qp_offset); 496 GET_HEVC_VDEC_PARAM(pps_cr_qp_offset); 497 GET_HEVC_VDEC_PARAM(num_tile_columns_minus1); 498 GET_HEVC_VDEC_PARAM(num_tile_rows_minus1); 499 GET_HEVC_VDEC_PARAM(init_qp_minus26); 500 GET_HEVC_VDEC_PARAM(diff_cu_qp_delta_depth); 501 GET_HEVC_VDEC_PARAM(pic_parameter_set_id); 502 GET_HEVC_VDEC_PARAM(num_extra_slice_header_bits); 503 GET_HEVC_VDEC_PARAM(num_ref_idx_l0_default_active_minus1); 504 GET_HEVC_VDEC_PARAM(num_ref_idx_l1_default_active_minus1); 505 GET_HEVC_VDEC_PARAM(pps_beta_offset_div2); 506 GET_HEVC_VDEC_PARAM(pps_tc_offset_div2); 507 GET_HEVC_VDEC_PARAM(log2_parallel_merge_level_minus2); 508 509 for (i = 0; i < 20; i++) 510 dst_param->column_width_minus1[i] = src_param->column_width_minus1[i]; 511 for (i = 0; i < 22; i++) 512 dst_param->row_height_minus1[i] = src_param->row_height_minus1[i]; 513 514 GET_HEVC_VDEC_FLAG(dependent_slice_segment_enabled, 515 V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED); 516 GET_HEVC_VDEC_FLAG(output_flag_present, 517 V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT); 518 GET_HEVC_VDEC_FLAG(sign_data_hiding_enabled, 519 V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED); 520 GET_HEVC_VDEC_FLAG(cabac_init_present, 521 V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT); 522 GET_HEVC_VDEC_FLAG(constrained_intra_pred, 523 V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED); 524 GET_HEVC_VDEC_FLAG(transform_skip_enabled, 525 V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED); 526 GET_HEVC_VDEC_FLAG(cu_qp_delta_enabled, 527 V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED); 528 GET_HEVC_VDEC_FLAG(pps_slice_chroma_qp_offsets_present, 529 V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT); 530 GET_HEVC_VDEC_FLAG(weighted_pred, 531 V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED); 532 GET_HEVC_VDEC_FLAG(weighted_bipred, 533 V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED); 534 GET_HEVC_VDEC_FLAG(transquant_bypass_enabled, 535 V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED); 536 GET_HEVC_VDEC_FLAG(pps_flag_tiles_enabled, 537 V4L2_HEVC_PPS_FLAG_TILES_ENABLED); 538 GET_HEVC_VDEC_FLAG(entropy_coding_sync_enabled, 539 V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED); 540 GET_HEVC_VDEC_FLAG(loop_filter_across_tiles_enabled, 541 V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED); 542 GET_HEVC_VDEC_FLAG(pps_loop_filter_across_slices_enabled, 543 V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED); 544 GET_HEVC_VDEC_FLAG(deblocking_filter_override_enabled, 545 V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED); 546 GET_HEVC_VDEC_FLAG(pps_disable_deflocking_filter, 547 V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER); 548 GET_HEVC_VDEC_FLAG(lists_modification_present, 549 V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT); 550 GET_HEVC_VDEC_FLAG(slice_segment_header_extersion_present, 551 V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT); 552 GET_HEVC_VDEC_FLAG(deblocking_filter_control_present, 553 V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT); 554 GET_HEVC_VDEC_FLAG(uniform_spacing, 555 V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING); 556 } 557 558 static void vdec_hevc_copy_scaling_matrix(struct slice_api_hevc_scaling_matrix *dst_matrix, 559 const struct v4l2_ctrl_hevc_scaling_matrix *src_matrix) 560 { 561 memcpy(dst_matrix, src_matrix, sizeof(*src_matrix)); 562 } 563 564 static void 565 vdec_hevc_copy_decode_params(struct slice_api_hevc_decode_param *dst_params, 566 const struct v4l2_ctrl_hevc_decode_params *src_params, 567 const struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]) 568 { 569 struct slice_hevc_dpb_entry *dst_entry; 570 const struct v4l2_hevc_dpb_entry *src_entry; 571 int i; 572 573 for (i = 0; i < ARRAY_SIZE(dst_params->dpb); i++) { 574 dst_entry = &dst_params->dpb[i]; 575 src_entry = &dpb[i]; 576 577 dst_entry->timestamp = src_entry->timestamp; 578 dst_entry->flags = src_entry->flags; 579 dst_entry->field_pic = src_entry->field_pic; 580 dst_entry->pic_order_cnt_val = src_entry->pic_order_cnt_val; 581 582 dst_params->poc_st_curr_before[i] = src_params->poc_st_curr_before[i]; 583 dst_params->poc_st_curr_after[i] = src_params->poc_st_curr_after[i]; 584 dst_params->poc_lt_curr[i] = src_params->poc_lt_curr[i]; 585 } 586 587 dst_params->pic_order_cnt_val = src_params->pic_order_cnt_val; 588 dst_params->short_term_ref_pic_set_size = src_params->short_term_ref_pic_set_size; 589 dst_params->long_term_ref_pic_set_size = src_params->long_term_ref_pic_set_size; 590 dst_params->num_active_dpb_entries = src_params->num_active_dpb_entries; 591 dst_params->num_poc_st_curr_before = src_params->num_poc_st_curr_before; 592 dst_params->num_poc_st_curr_after = src_params->num_poc_st_curr_after; > 593 dst_params->num_delta_pocs_of_ref_rps_idx = src_params->num_delta_pocs_of_ref_rps_idx; 594 dst_params->num_poc_lt_curr = src_params->num_poc_lt_curr; 595 dst_params->flags = src_params->flags; 596 } 597 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests