📄 klttce3d_lossless.c
字号:
QccVectorFree(p5); QccMatrixFree(p1,subband_num_rows); QccMatrixFree(p3,subband_num_rows); QccMatrixFree(p4,subband_num_rows); return(return_value);}static int QccWAV3DUpdateNZNStatus(int subband_origin_frame, int subband_origin_row, int subband_origin_col, int subband_num_frame, int subband_num_row, int subband_num_col, int frame, int row, int col, char *** significance_map, int subband){ //Updata neighbors int current_frame,current_row, current_col; int shifted_frame,shifted_row, shifted_col; current_frame=subband_origin_frame+frame; current_row = subband_origin_row + row; current_col = subband_origin_col + col; //previous frame if(frame>0) { if (row > 0) { shifted_frame = current_frame - 1; shifted_row = current_row - 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame - 1; shifted_row = current_row - 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame - 1; shifted_row = current_row - 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (row < subband_num_row - 1) { shifted_frame = current_frame - 1; shifted_row = current_row + 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame - 1; shifted_row = current_row + 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame - 1; shifted_row = current_row + 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (col > 0) { shifted_frame = current_frame - 1; shifted_row = current_row; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame - 1; shifted_row = current_row; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } { shifted_frame = current_frame - 1; shifted_row = current_row; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } //next frame if(frame<subband_num_frame - 1) { if (row > 0) { shifted_frame = current_frame + 1; shifted_row = current_row - 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame + 1; shifted_row = current_row - 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame + 1; shifted_row = current_row - 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (row < subband_num_row - 1) { shifted_frame = current_frame+ 1; shifted_row = current_row + 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame + 1; shifted_row = current_row + 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame + 1; shifted_row = current_row + 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (col > 0) { shifted_frame = current_frame + 1; shifted_row = current_row; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame + 1; shifted_row = current_row; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } { shifted_frame = current_frame + 1; shifted_row = current_row; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } //current frame { if (row > 0) { shifted_frame = current_frame ; shifted_row = current_row - 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame; shifted_row = current_row - 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame ; shifted_row = current_row - 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (row < subband_num_row - 1) { shifted_frame = current_frame; shifted_row = current_row + 1; shifted_col = current_col; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; if (col > 0) { shifted_frame = current_frame ; shifted_row = current_row + 1; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame ; shifted_row = current_row + 1; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } if (col > 0) { shifted_frame = current_frame ; shifted_row = current_row; shifted_col = current_col - 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } if (col < subband_num_col - 1) { shifted_frame = current_frame ; shifted_row = current_row; shifted_col = current_col + 1; if (significance_map[shifted_frame][shifted_row][shifted_col] < QCCWAVKLTTCE3D_S) significance_map[shifted_frame][shifted_row][shifted_col] = QCCWAVKLTTCE3D_NZN_NEW; } } return(0);}static int QccWAVklttce3DIntNZNPass(QccWAVSubbandPyramid3DInt *coefficients, char ***significance_map, char ***sign_array, int threshold, double *subband_significance, QccENTArithmeticModel *model, QccBitBuffer *buffer, int **max_coefficient_bits){ int subband,num_subbands; int return_value; int subband_origin_frame; int subband_origin_row; int subband_origin_col; int subband_num_frames; int subband_num_rows; int subband_num_cols; int frame,row, col; int current_frame,current_row, current_col; int symbol; double p = 0.5; num_subbands = QccWAVSubbandPyramid3DIntNumLevelsToNumSubbandsPacket(coefficients->temporal_num_levels, coefficients->spatial_num_levels); for (subband = 0; subband < num_subbands; subband++) { { if (QccWAVSubbandPyramid3DIntSubbandSize(coefficients, subband, &subband_num_frames, &subband_num_rows, &subband_num_cols)) { QccErrorAddMessage("(QccWAVklttce3DIntNZNPass): Error calling QccWAVSubbandPyramid3DIntSubbandSize()"); return(1); } if (QccWAVSubbandPyramid3DIntSubbandOffsets(coefficients, subband, &subband_origin_frame, &subband_origin_row, &subband_origin_col)) { QccErrorAddMessage("(QccWAVklttce3DIntNZNPass): Error calling QccWAVSubbandPyramid3DSubbandOffsets()"); return(1); } for (frame = 0; frame < subband_num_frames; frame++) { current_frame = subband_origin_frame + frame; if ((threshold - 0.000001) < pow((double)2, (double)(max_coefficient_bits[subband][frame]))) { for (row = 0; row < subband_num_rows; row++) { current_row = subband_origin_row + row; for (col = 0; col < subband_num_cols; col++) { current_col = subband_origin_col + col; if (significance_map[current_frame][current_row][current_col] == QCCWAVKLTTCE3D_NZN) { if (QccWAVTce3DUpdateModel(model, p)) { QccErrorAddMessage("(QccWAVklttce3DIntNZNPass): Error calling QccWAVklttceUpdateModel()"); return_value = 1; return(1); } if (buffer->type == QCCBITBUFFER_OUTPUT) { if (coefficients->volume[current_frame][current_row][current_col] >=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -