3588 display_framework_config

由于未提供博客具体内容,无法给出包含关键信息的摘要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

unsigned char * bs_buf5 = NULL; #endif #if MULTI_LAYER_FRAMEWORK DEC id[MAX_LAYER] = { NULL, NULL }; DEC_CDSC cdsc[MAX_LAYER]; #else DEC id = NULL; DEC_CDSC cdsc; #endif COM_BITB bitb; COM_IMGB * imgb; DEC_STAT stat; int ret; COM_CLK clk_beg, clk_tot; int bs_cnt, pic_cnt; int bs_size = 0, bs_read_pos = 0; int width, height; FILE * fp_bs = NULL; #if LIB_PIC_ERR_TOL int libpic_num_patch = 0; int *libpic_bs_size = NULL; unsigned char * libpic_bs_buf = NULL; int num_nalu = 0; int collect_libpic_state = 0; unsigned int libpic_addr = 0; #endif #if SVAC_AI_SEG_EXT fp_seg = fopen("dec_aiseg.bin", "wb"); #endif #if ENC_DEC_TRACE fp_trace = NULL; #endif #if CU_LEVEL_PRIVACY unsigned int libpic_addr_privacy = 0; int *libpic_bs_size_privacy = NULL; unsigned char * libpic_bs_buf_privacy = NULL; int num_nalu_privacy = 0; #endif #if LINUX signal(SIGSEGV, handler); // install our handler #endif #if DECODING_TIME_TEST clk_beg = com_clk_get(); #endif /* parse options */ ret = com_args_parse_all(argc, argv, options); if(ret != 0) { if(ret > 0) v0print("-%c argument should be set\n", ret); print_usage(); return -1; } /* open input bitstream */ fp_bs = fopen(op_fname_inp, "rb"); if(fp_bs == NULL) { v0print("ERROR: cannot open bitstream file = %s\n", op_fname_inp); print_usage(); return -1; } if(op_flag[OP_FLAG_FNAME_OUT]) { /* remove decoded file contents if exists */ FILE * fp; #if MULTI_LAYER_FRAMEWORK fp = fopen(op_fname_out[0], "wb"); #else fp = fopen(op_fname_out, "wb"); #endif if(fp == NULL) { v0print("ERROR: cannot create a decoded file\n"); print_usage(); return -1; } fclose(fp); } #if MULTI_LAYER_FRAMEWORK if (op_flag[OP_FLAG_FNAME_OUT1]) { /* remove decoded file contents if exists */ FILE* fp; fp = fopen(op_fname_out[1], "wb"); if (fp == NULL) { v0print("ERROR: cannot create a EL decoded file\n"); print_usage(); return -1; } fclose(fp); } #endif bs_buf = malloc(MAX_BS_BUF); if(bs_buf == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } bs_buf2 = malloc(MAX_BS_BUF); if (bs_buf2 == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } #if SVAC_UD_MD5_STREAM bs_buf5 = malloc(MAX_BS_BUF); if (bs_buf5 == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } bitb.addr3 = bs_buf5; bitb.addr3_beg = bs_buf5; bs_buf4 = malloc(MAX_BS_BUF); if (bs_buf4 == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } unsigned char * buf4_p = bs_buf4; unsigned char * buf4_beg = bs_buf4; #endif #if CU_LEVEL_PRIVACY unsigned char *bs_buf3 = malloc(MAX_BS_BUF); if (bs_buf3 == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } #endif #if LIBVC_ON #if MULTI_LAYER_FRAMEWORK LibVCData libvc_data[MAX_LAYER]; for (int i = 0; i < MAX_LAYER; i++) { init_libvcdata(&libvc_data[i]); } #else LibVCData libvc_data; init_libvcdata(&libvc_data); #endif if (op_flag[OP_FLAG_FNAME_INP_LIBPICS]) { #if MULTI_LAYER_FRAMEWORK int err; for (int i = 0; i < MAX_LAYER; i++) { err = decode_libpics(&cdsc[i], &libvc_data[i]); if (err) { v0print("Error when decode lib pic!"); return -1; } libvc_data[i].is_libpic_prepared = 1; } #else int err = decode_libpics(&cdsc, &libvc_data); if (err) { v0print("Error when decode lib pic!"); return -1; } libvc_data.is_libpic_prepared = 1; #endif } #endif #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { id[i] = dec_create(&cdsc[i], NULL); dec_setlayer(id[i],i); if (id[i] == NULL) { v0print("ERROR: cannot create decoder\n"); return -1; } } #else id = dec_create(&cdsc, NULL); if(id == NULL) { v0print("ERROR: cannot create decoder\n"); return -1; } #endif #if LIBVC_ON #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { set_livcdata_dec(id[i], &libvc_data[i]); } #else set_livcdata_dec(id, &libvc_data); #endif #endif #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { if (set_extra_config(id[i])) { v0print("ERROR: cannot set extra configurations\n"); return -1; } } #else if (set_extra_config(id)) { v0print("ERROR: cannot set extra configurations\n"); return -1; } #endif pic_cnt = 0; clk_tot = 0; bs_cnt = 0; width = height = 0; #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { g_CountDOICyCleTime[i] = 0; // initialized the number . g_DOIPrev[i] = 0; } #else g_CountDOICyCleTime = 0; // initialized the number . g_DOIPrev = 0; #endif #if CU_LEVEL_PRIVACY int bs_buf3_size = 0; #endif while (1) { #if MULTI_LAYER_FRAMEWORK int nal_layer_id = 0; #endif if (state == STATE_DECODING) { bs_size = read_a_bs(fp_bs, &bs_read_pos, bs_buf, bs_buf2 #if CU_LEVEL_PRIVACY , bs_buf3, &bs_buf3_size #endif #if SVAC_UD_MD5_STREAM , &bitb #endif ); if (bs_size <= 0) { state = STATE_BUMPING; v1print("bumping process starting...\n"); continue; } bs_read_pos += bs_size; bitb.addr = bs_buf; #if CU_LEVEL_PRIVACY bitb.addr2 = bs_buf3; bitb.ssize2 = bs_buf3_size; bitb.ssize = bs_size - bs_buf3_size; #else bitb.ssize = bs_size; #endif bitb.bsize = MAX_BS_BUF; #if MULTI_LAYER_FRAMEWORK nal_layer_id = (bs_buf[4] >> 1) & 0x07; if (nal_layer_id == 0) { v1print("BL---[%4d]-th BS (%07dbytes) --> ", bs_cnt++, bs_size); } else { v1print("EL---[%4d]-th BS (%07dbytes) --> ", bs_cnt++, bs_size); } #else v1print("[%4d]-th BS (%07dbytes) --> ", bs_cnt++, bs_size); #endif #if LIB_PIC_ERR_TOL #if SVAC_PROGRESSIVE // 7 6 5 4 3 & 2 // temporal_nesting library_picture_enable library_stream duplicate_sqh library_picture_mode_index int library_picture_enable = bs_buf[7] & 0x40; int library_stream_flag = bs_buf[7] & 0x20; int library_picture_mode_index = (bs_buf[7] >> 2) & 3; #else // 7 6 5 4 3 2 1 & 0 // progressive_sequence field_coded_sequence temporal_nesting library_picture_enable library_stream duplicate_sqh library_picture_mode_index int library_picture_enable = bs_buf[7] & 0x10; int library_picture_enable_flag = bs_buf[7] & 8; #if EMULATION_PREVENT_BUGFIX int library_picture_mode_index = bs_buf[7] & 3; #else int library_picture_mode_index = ((bs_buf[7] & 1) << 1) + (bs_buf[8] >> 7); #endif #endif if (bs_buf[3] == SVAC_SPS && library_stream_flag && library_picture_mode_index == 0) { if (libpic_bs_buf == NULL) { libpic_bs_buf = malloc(MAX_BS_BUF); if (libpic_bs_buf == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } } if (libpic_bs_size == NULL) { libpic_bs_size = malloc(sizeof(int) * 260); if (libpic_bs_size == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } } #if CU_LEVEL_PRIVACY if (libpic_bs_buf_privacy == NULL) { libpic_bs_buf_privacy = malloc(MAX_BS_BUF); if (libpic_bs_buf_privacy == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } } if (libpic_bs_size_privacy == NULL) { libpic_bs_size_privacy = malloc(sizeof(int) * 260); if (libpic_bs_size_privacy == NULL) { v0print("ERROR: cannot allocate bit buffer, size=%d\n", MAX_BS_BUF); return -1; } } num_nalu_privacy = 0; #endif memcpy(libpic_bs_buf, bs_buf, bs_real_size); state = STATE_LIBPIC_COLLECTING; libpic_bs_size[0] = bs_real_size; collect_libpic_state = 1; num_nalu = 1; libpic_addr = bs_real_size; #if SVAC_UD_MD5_STREAM unsigned int tmp_bs_size = (unsigned int)((unsigned char *)bitb.addr3 - (unsigned char *)bitb.addr3_beg); memcpy(buf4_p, bitb.addr3_beg, tmp_bs_size); buf4_p = buf4_p + tmp_bs_size; bitb.addr3 = (unsigned char *)bitb.addr3_beg; #endif continue; } else if (bs_buf[3] == SVAC_SPS && library_picture_enable && library_stream_flag == 0 && library_picture_mode_index == 0) { libpic_addr = 0; #if CU_LEVEL_PRIVACY libpic_addr_privacy = 0; #endif #if SVAC_UD_MD5_STREAM bitb.addr3_beg = buf4_beg; buf4_beg = bs_buf5; unsigned char * tmp_p = buf4_p; buf4_p = bitb.addr3; bitb.addr3 = tmp_p; #endif for (int i = 0; i < num_nalu; i++) { #if !DECODING_TIME_TEST clk_beg = com_clk_get(); #endif /* main decoding block */ bitb.addr = libpic_bs_buf + libpic_addr; bitb.ssize = libpic_bs_size[i] - 4; bitb.bsize = MAX_BS_BUF; libpic_addr += libpic_bs_size[i]; #if CU_LEVEL_PRIVACY if (i >= num_nalu - num_nalu_privacy) { bitb.addr2 = libpic_bs_buf_privacy + libpic_addr_privacy; bitb.ssize2 = libpic_bs_size_privacy[i - num_nalu + num_nalu_privacy] + 4 ; libpic_addr_privacy += libpic_bs_size_privacy[i - num_nalu + num_nalu_privacy]; } #endif #if MULTI_LAYER_FRAMEWORK ret = dec_cnk((DEC_CTX*)id[0], &bitb, &stat); #else ret = dec_cnk((DEC_CTX*)id, &bitb, &stat); #endif if (stat.ctype == COM_CT_SEQ_END) { state = STATE_BUMPING; v1print("bumping process starting...\n"); continue; } if (COM_FAILED(ret)) { v0print("failed to decode bitstream\n"); return -1; } #if !DECODING_TIME_TEST clk_tot += com_clk_from(clk_beg); #endif print_stat(&stat, ret); } #if SVAC_UD_MD5_STREAM bitb.addr3_beg = buf4_beg; bitb.addr3 = buf4_p; buf4_beg = bs_buf4; buf4_p = bs_buf4; #endif num_nalu = 0; libpic_addr = 0; bitb.addr = bs_buf; bitb.ssize = bs_size; bitb.bsize = MAX_BS_BUF; } #endif #if !DECODING_TIME_TEST clk_beg = com_clk_get(); #endif /* main decoding block */ #if MULTI_LAYER_FRAMEWORK if (nal_layer_id == 0) { DEC_CTX* ctx_t = (DEC_CTX*)id[0]; ctx_t->ctx_e = id[1]; ret = dec_cnk((DEC_CTX*)id[0], &bitb, &stat); } else { DEC_CTX* ctx_e = (DEC_CTX*)id[nal_layer_id]; assert(ctx_e->layer_id == nal_layer_id); if (!ctx_e->init_sps_pps) { DEC_CTX* ctx_b = (DEC_CTX*)id[0]; ctx_e->ctx_b =id[ctx_b->info.sqh.ref_layer_id[nal_layer_id]]; COM_SQH* sqh_e = &ctx_e->info.sqh; COM_SQH* sqh_b = &ctx_b->info.sqh; memcpy(sqh_e, sqh_b, sizeof(COM_SQH)); COM_PIC_PARA_SET* pps_e = &ctx_e->info.pps[0]; memcpy(pps_e, ctx_b->info.pps, sizeof(COM_PIC_PARA_SET)); #if LIBVC_ON ctx_e->dpm.libvc_data->is_libpic_processing = sqh_b->library_stream_flag; ctx_e->dpm.libvc_data->library_picture_enable_flag = sqh_b->library_picture_enable_flag; #endif #if HIGH_LEVEL_PRIVACY COM_PRIVACY* pri_e = &ctx_e->ctx_privacy_data; COM_PRIVACY* pri_b = &ctx_b->ctx_privacy_data; memcpy(pri_e, pri_b, sizeof(COM_PRIVACY)); #endif } ret = dec_cnk((DEC_CTX*)id[nal_layer_id], &bitb, &stat); } #else ret = dec_cnk((DEC_CTX*)id, &bitb, &stat); #endif if (stat.ctype == COM_CT_SEQ_END) { state = STATE_BUMPING; v1print("bumping process starting...\n"); continue; } if (COM_FAILED(ret)) { v0print("failed to decode bitstream\n"); return -1; } #if !DECODING_TIME_TEST clk_tot += com_clk_from(clk_beg); #endif print_stat(&stat, ret); } #if LIB_PIC_ERR_TOL if (state == STATE_LIBPIC_COLLECTING) { bs_size = read_a_bs(fp_bs, &bs_read_pos, bs_buf, bs_buf2 #if CU_LEVEL_PRIVACY , bs_buf3, &bs_buf3_size #endif #if SVAC_UD_MD5_STREAM , &bitb #endif ); if (bs_size <= 0) { state = STATE_BUMPING; v1print("bumping process starting...\n"); continue; } bs_read_pos += bs_size; bitb.addr = bs_buf; bitb.ssize = bs_size; bitb.bsize = MAX_BS_BUF; #if CU_LEVEL_PRIVACY bitb.addr2 = bs_buf3; bitb.ssize2 = bs_buf3_size; #endif v1print("[%4d]-th BS (%07dbytes) --> ", bs_cnt++, bs_size); if (bs_buf[3] == SVAC_PPS && collect_libpic_state == 1) { memcpy(libpic_bs_buf + libpic_addr, bs_buf, bs_real_size); libpic_bs_size[num_nalu++] = bs_real_size; collect_libpic_state = 2; libpic_addr += bs_real_size; #if SVAC_UD_MD5_STREAM unsigned int tmp_bs_size = (unsigned int)((unsigned char *)bitb.addr3 - (unsigned char *)bitb.addr3_beg); memcpy(buf4_p, bitb.addr3_beg, tmp_bs_size); buf4_p = buf4_p + tmp_bs_size; bitb.addr3 = (unsigned char *)bitb.addr3_beg; #endif continue; } else if (bs_buf[3] == SVAC_PH && collect_libpic_state == 2) { memcpy(libpic_bs_buf + libpic_addr, bs_buf, bs_real_size); libpic_bs_size[num_nalu++] = bs_real_size; collect_libpic_state = 3; libpic_addr += bs_real_size; #if SVAC_UD_MD5_STREAM unsigned int tmp_bs_size = (unsigned int)((unsigned char *)bitb.addr3 - (unsigned char *)bitb.addr3_beg); memcpy(buf4_p, bitb.addr3_beg, tmp_bs_size); buf4_p = buf4_p + tmp_bs_size; bitb.addr3 = (unsigned char *)bitb.addr3_beg; #endif continue; } else if (bs_buf[3] == SVAC_CRR_DL) { memcpy(libpic_bs_buf + libpic_addr, bs_buf, bs_real_size); libpic_bs_size[num_nalu++] = bs_real_size; assert(collect_libpic_state == 3 || collect_libpic_state == 4); libpic_addr += bs_real_size; #if SVAC_UD_MD5_STREAM unsigned int tmp_bs_size = (unsigned int)((unsigned char *)bitb.addr3 - (unsigned char *)bitb.addr3_beg); memcpy(buf4_p, bitb.addr3_beg, tmp_bs_size); buf4_p = buf4_p + tmp_bs_size; bitb.addr3 = (unsigned char *)bitb.addr3_beg; #endif #if CU_LEVEL_PRIVACY memcpy(libpic_bs_buf_privacy + libpic_addr_privacy, bs_buf3, bs_buf3_size); libpic_bs_size_privacy[num_nalu_privacy++] = bs_buf3_size; libpic_addr_privacy += bs_buf3_size; #endif if (collect_libpic_state == 3) collect_libpic_state = 4; else if (collect_libpic_state == 4) { state = STATE_DECODING; } continue; } else if (bs_buf[3] == SVAC_CRR_L) { memcpy(libpic_bs_buf + libpic_addr, bs_buf, bs_real_size); libpic_bs_size[num_nalu++] = bs_real_size; assert(collect_libpic_state == 3 || collect_libpic_state == 4); libpic_addr += bs_real_size; #if CU_LEVEL_PRIVACY memcpy(libpic_bs_buf_privacy + libpic_addr_privacy, bs_buf3, bs_buf3_size); libpic_bs_size_privacy[num_nalu_privacy++] = bs_buf3_size; libpic_addr_privacy += bs_buf3_size; #endif #if SVAC_UD_MD5_STREAM unsigned int tmp_bs_size = (unsigned int)((unsigned char *)bitb.addr3 - (unsigned char *)bitb.addr3_beg); memcpy(buf4_p, bitb.addr3_beg, tmp_bs_size); buf4_p = buf4_p + tmp_bs_size; bitb.addr3 = (unsigned char *)bitb.addr3_beg; #endif if (collect_libpic_state == 3) { state = STATE_DECODING; } continue; } else if (bs_buf[3] == SVAC_SPS && (bs_buf[7] & 16) && (bs_buf[7] & 8) == 0) { v0print("ERROR: not recieve enough libpic NALU\n"); return -1; } #if !DECODING_TIME_TEST clk_beg = com_clk_get(); #endif /* main decoding block */ #if MULTI_LAYER_FRAMEWORK ret = dec_cnk((DEC_CTX*)id[0], &bitb, &stat); #else ret = dec_cnk((DEC_CTX*)id, &bitb, &stat); #endif if (stat.ctype == COM_CT_SEQ_END) { state = STATE_BUMPING; v1print("bumping process starting...\n"); continue; } if (COM_FAILED(ret)) { v0print("failed to decode bitstream\n"); return -1; } #if !DECODING_TIME_TEST clk_tot += com_clk_from(clk_beg); #endif print_stat(&stat, ret); } #endif if (stat.fnum >= 0 || state == STATE_BUMPING) { #if MULTI_LAYER_FRAMEWORK ret = dec_pull_frm((DEC_CTX*)id[nal_layer_id], &imgb, state); #else ret = dec_pull_frm((DEC_CTX*)id, &imgb, state); #endif if (ret == COM_ERR_UNEXPECTED) { v1print("bumping process completed\n"); if (bs_size <= 0) { goto END; } else { state = STATE_DECODING; } } else if (COM_FAILED(ret)) { v0print("failed to pull the decoded image\n"); return -1; } } else { imgb = NULL; } if (imgb) { width = imgb->width[0]; height = imgb->height[0]; #if LIB_PIC_MIXBIN #if MULTI_LAYER_FRAMEWORK if (!((DEC_CTX*)id[0])->info.sqh.library_stream_flag #else if (!((DEC_CTX*)id)->info.sqh.library_stream_flag #endif #if LIBPIC_DISPLAY #if MULTI_LAYER_FRAMEWORK || (((DEC_CTX*)id[0])->info.sqh.library_stream_flag && ((DEC_CTX*)id[0])->info.sqh.library_picture_mode_index == 1) #else || (((DEC_CTX*)id)->info.sqh.library_stream_flag && ((DEC_CTX*)id)->info.sqh.library_picture_mode_index == 1) #endif #endif ) { #endif #if MULTI_LAYER_FRAMEWORK if (op_flag[OP_FLAG_FNAME_OUT] && nal_layer_id == 0) { write_dec_img(id[0], op_fname_out[0], imgb, ((DEC_CTX*)id[0])->info.bit_depth_internal); } if (op_flag[OP_FLAG_FNAME_OUT1] && nal_layer_id == 1) { write_dec_img(id[1], op_fname_out[1], imgb, ((DEC_CTX*)id[1])->info.bit_depth_internal); } #else if (op_flag[OP_FLAG_FNAME_OUT]) { write_dec_img(id, op_fname_out, imgb, ((DEC_CTX*)id)->info.bit_depth_internal); } #endif imgb->release(imgb); pic_cnt++; #if LIB_PIC_MIXBIN } else if (op_flag[OP_FLAG_FNAME_OUT_LIBPICS]) { #if MULTI_LAYER_FRAMEWORK write_dec_img(id[0], op_fname_out_libpics, imgb, ((DEC_CTX*)id[0])->info.bit_depth_internal); #else write_dec_img(id, op_fname_out_libpics, imgb, ((DEC_CTX*)id)->info.bit_depth_internal); #endif } #endif } } END: #if DECODING_TIME_TEST clk_tot += com_clk_from(clk_beg); #endif v1print("===========================================================\n"); v1print("Resolution (decoding) = %d x %d\n", width, height); #if MULTI_LAYER_FRAMEWORK v1print("BL Resolution (output) = %d x %d\n", ((DEC_CTX*)id[0])->info.sqh.horizontal_size[0], ((DEC_CTX*)id[0])->info.sqh.vertical_size[0]); v1print("EL1 Resolution (output) = %d x %d\n", ((DEC_CTX*)id[0])->info.sqh.horizontal_size[1], ((DEC_CTX*)id[0])->info.sqh.vertical_size[1]); #else v1print("Resolution (output) = %d x %d\n", ((DEC_CTX *)id)->info.sqh.horizontal_size, ((DEC_CTX *)id)->info.sqh.vertical_size); #endif v1print("Processed BS count = %d\n", bs_cnt); v1print("Decoded frame count = %d\n", pic_cnt); if(pic_cnt > 0) { v1print("total decoding time = %d msec,", (int)com_clk_msec(clk_tot)); v1print(" %.3f sec\n", (float)(com_clk_msec(clk_tot) /1000.0)); v1print("Average decoding time for a frame = %d msec\n", (int)com_clk_msec(clk_tot)/pic_cnt); v1print("Average decoding speed = %.3f frames/sec\n", ((float)pic_cnt*1000)/((float)com_clk_msec(clk_tot))); } v1print("===========================================================\n"); if (op_flag[OP_FLAG_USE_PIC_SIGN] && pic_cnt > 0) { v1print("Decode Match: 1 (HASH)\n"); #if SVAC_UD_MD5_STREAM #if MULTI_LAYER_FRAMEWORK if (((DEC_CTX *)id[0])->stream_sign_check_flag) #else if (((DEC_CTX *)id)->stream_sign_check_flag) #endif v1print("Stream Decode Match: 1 (HASH)\n"); #endif v1print("===========================================================\n"); } #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { if (id[i]) dec_delete(id[i]); } #else if(id) dec_delete(id); #endif if(fp_bs) fclose(fp_bs); if(bs_buf) free(bs_buf); if (bs_buf2) { free(bs_buf2); bs_buf2 = NULL; } #if CU_LEVEL_PRIVACY if (bs_buf3) { free(bs_buf3); bs_buf3 = NULL; } #endif #if SVAC_UD_MD5_STREAM if (bs_buf5) { free(bs_buf5); bs_buf5 = NULL; } if (bs_buf4) { free(bs_buf4); bs_buf4 = NULL; } #endif #if LIBVC_ON #if MULTI_LAYER_FRAMEWORK for (int i = 0; i < MAX_LAYER; i++) { delete_libvcdata(&libvc_data[i]); } #else delete_libvcdata(&libvc_data); #endif #endif #if ENC_DEC_TRACE if( fp_trace ) { fclose( fp_trace ); fp_trace = NULL; } #endif #if SVAC_AI_SEG_EXT if (fp_seg) { fclose(fp_seg); fp_seg = NULL; } #endif return 0; }对这段代码做注释
07-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

android framework

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值