| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include <math.h> | 11 #include <math.h> |
| 12 #include <stdio.h> | 12 #include <stdio.h> |
| 13 #include <limits.h> | 13 #include <limits.h> |
| 14 | 14 |
| 15 #include "./vpx_config.h" | 15 #include "./vpx_config.h" |
| 16 #include "./vp9_rtcd.h" | 16 #include "./vp9_rtcd.h" |
| 17 #include "./vpx_dsp_rtcd.h" | 17 #include "./vpx_dsp_rtcd.h" |
| 18 #include "./vpx_scale_rtcd.h" | 18 #include "./vpx_scale_rtcd.h" |
| 19 #include "vpx/internal/vpx_psnr.h" | 19 #include "vpx/internal/vpx_psnr.h" |
| 20 #include "vpx_ports/mem.h" |
| 20 #include "vpx_ports/vpx_timer.h" | 21 #include "vpx_ports/vpx_timer.h" |
| 21 | 22 |
| 22 #include "vp9/common/vp9_alloccommon.h" | 23 #include "vp9/common/vp9_alloccommon.h" |
| 23 #include "vp9/common/vp9_filter.h" | 24 #include "vp9/common/vp9_filter.h" |
| 24 #include "vp9/common/vp9_idct.h" | 25 #include "vp9/common/vp9_idct.h" |
| 25 #if CONFIG_VP9_POSTPROC | 26 #if CONFIG_VP9_POSTPROC |
| 26 #include "vp9/common/vp9_postproc.h" | 27 #include "vp9/common/vp9_postproc.h" |
| 27 #endif | 28 #endif |
| 28 #include "vp9/common/vp9_reconinter.h" | 29 #include "vp9/common/vp9_reconinter.h" |
| 29 #include "vp9/common/vp9_reconintra.h" | 30 #include "vp9/common/vp9_reconintra.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 default: | 105 default: |
| 105 *hr = 1; | 106 *hr = 1; |
| 106 *hs = 1; | 107 *hs = 1; |
| 107 assert(0); | 108 assert(0); |
| 108 break; | 109 break; |
| 109 } | 110 } |
| 110 } | 111 } |
| 111 | 112 |
| 112 // Mark all inactive blocks as active. Other segmentation features may be set | 113 // Mark all inactive blocks as active. Other segmentation features may be set |
| 113 // so memset cannot be used, instead only inactive blocks should be reset. | 114 // so memset cannot be used, instead only inactive blocks should be reset. |
| 114 void vp9_suppress_active_map(VP9_COMP *cpi) { | 115 static void suppress_active_map(VP9_COMP *cpi) { |
| 115 unsigned char *const seg_map = cpi->segmentation_map; | 116 unsigned char *const seg_map = cpi->segmentation_map; |
| 116 int i; | 117 int i; |
| 117 if (cpi->active_map.enabled || cpi->active_map.update) | 118 if (cpi->active_map.enabled || cpi->active_map.update) |
| 118 for (i = 0; i < cpi->common.mi_rows * cpi->common.mi_cols; ++i) | 119 for (i = 0; i < cpi->common.mi_rows * cpi->common.mi_cols; ++i) |
| 119 if (seg_map[i] == AM_SEGMENT_ID_INACTIVE) | 120 if (seg_map[i] == AM_SEGMENT_ID_INACTIVE) |
| 120 seg_map[i] = AM_SEGMENT_ID_ACTIVE; | 121 seg_map[i] = AM_SEGMENT_ID_ACTIVE; |
| 121 } | 122 } |
| 122 | 123 |
| 123 void vp9_apply_active_map(VP9_COMP *cpi) { | 124 static void apply_active_map(VP9_COMP *cpi) { |
| 124 struct segmentation *const seg = &cpi->common.seg; | 125 struct segmentation *const seg = &cpi->common.seg; |
| 125 unsigned char *const seg_map = cpi->segmentation_map; | 126 unsigned char *const seg_map = cpi->segmentation_map; |
| 126 const unsigned char *const active_map = cpi->active_map.map; | 127 const unsigned char *const active_map = cpi->active_map.map; |
| 127 int i; | 128 int i; |
| 128 | 129 |
| 129 assert(AM_SEGMENT_ID_ACTIVE == CR_SEGMENT_ID_BASE); | 130 assert(AM_SEGMENT_ID_ACTIVE == CR_SEGMENT_ID_BASE); |
| 130 | 131 |
| 131 if (frame_is_intra_only(&cpi->common)) { | 132 if (frame_is_intra_only(&cpi->common)) { |
| 132 cpi->active_map.enabled = 0; | 133 cpi->active_map.enabled = 0; |
| 133 cpi->active_map.update = 1; | 134 cpi->active_map.update = 1; |
| (...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 | 679 |
| 679 { | 680 { |
| 680 unsigned int tokens = get_token_alloc(cm->mb_rows, cm->mb_cols); | 681 unsigned int tokens = get_token_alloc(cm->mb_rows, cm->mb_cols); |
| 681 CHECK_MEM_ERROR(cm, cpi->tile_tok[0][0], | 682 CHECK_MEM_ERROR(cm, cpi->tile_tok[0][0], |
| 682 vpx_calloc(tokens, sizeof(*cpi->tile_tok[0][0]))); | 683 vpx_calloc(tokens, sizeof(*cpi->tile_tok[0][0]))); |
| 683 } | 684 } |
| 684 | 685 |
| 685 vp9_setup_pc_tree(&cpi->common, &cpi->td); | 686 vp9_setup_pc_tree(&cpi->common, &cpi->td); |
| 686 } | 687 } |
| 687 | 688 |
| 689 void vp9_new_framerate(VP9_COMP *cpi, double framerate) { |
| 690 cpi->framerate = framerate < 0.1 ? 30 : framerate; |
| 691 vp9_rc_update_framerate(cpi); |
| 692 } |
| 693 |
| 694 static void set_tile_limits(VP9_COMP *cpi) { |
| 695 VP9_COMMON *const cm = &cpi->common; |
| 696 |
| 697 int min_log2_tile_cols, max_log2_tile_cols; |
| 698 vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); |
| 699 |
| 700 if (is_two_pass_svc(cpi) && |
| 701 (cpi->svc.encode_empty_frame_state == ENCODING || |
| 702 cpi->svc.number_spatial_layers > 1)) { |
| 703 cm->log2_tile_cols = 0; |
| 704 cm->log2_tile_rows = 0; |
| 705 } else { |
| 706 cm->log2_tile_cols = clamp(cpi->oxcf.tile_columns, |
| 707 min_log2_tile_cols, max_log2_tile_cols); |
| 708 cm->log2_tile_rows = cpi->oxcf.tile_rows; |
| 709 } |
| 710 } |
| 711 |
| 688 static void update_frame_size(VP9_COMP *cpi) { | 712 static void update_frame_size(VP9_COMP *cpi) { |
| 689 VP9_COMMON *const cm = &cpi->common; | 713 VP9_COMMON *const cm = &cpi->common; |
| 690 MACROBLOCKD *const xd = &cpi->td.mb.e_mbd; | 714 MACROBLOCKD *const xd = &cpi->td.mb.e_mbd; |
| 691 | 715 |
| 692 vp9_set_mb_mi(cm, cm->width, cm->height); | 716 vp9_set_mb_mi(cm, cm->width, cm->height); |
| 693 vp9_init_context_buffers(cm); | 717 vp9_init_context_buffers(cm); |
| 694 init_macroblockd(cm, xd); | 718 init_macroblockd(cm, xd); |
| 695 | 719 |
| 720 set_tile_limits(cpi); |
| 721 |
| 696 if (is_two_pass_svc(cpi)) { | 722 if (is_two_pass_svc(cpi)) { |
| 697 if (vp9_realloc_frame_buffer(&cpi->alt_ref_buffer, | 723 if (vp9_realloc_frame_buffer(&cpi->alt_ref_buffer, |
| 698 cm->width, cm->height, | 724 cm->width, cm->height, |
| 699 cm->subsampling_x, cm->subsampling_y, | 725 cm->subsampling_x, cm->subsampling_y, |
| 700 #if CONFIG_VP9_HIGHBITDEPTH | 726 #if CONFIG_VP9_HIGHBITDEPTH |
| 701 cm->use_highbitdepth, | 727 cm->use_highbitdepth, |
| 702 #endif | 728 #endif |
| 703 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, | 729 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, |
| 704 NULL, NULL, NULL)) | 730 NULL, NULL, NULL)) |
| 705 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, | 731 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, |
| 706 "Failed to reallocate alt_ref_buffer"); | 732 "Failed to reallocate alt_ref_buffer"); |
| 707 } | 733 } |
| 708 } | 734 } |
| 709 | 735 |
| 710 void vp9_new_framerate(VP9_COMP *cpi, double framerate) { | |
| 711 cpi->framerate = framerate < 0.1 ? 30 : framerate; | |
| 712 vp9_rc_update_framerate(cpi); | |
| 713 } | |
| 714 | |
| 715 static void set_tile_limits(VP9_COMP *cpi) { | |
| 716 VP9_COMMON *const cm = &cpi->common; | |
| 717 | |
| 718 int min_log2_tile_cols, max_log2_tile_cols; | |
| 719 vp9_get_tile_n_bits(cm->mi_cols, &min_log2_tile_cols, &max_log2_tile_cols); | |
| 720 | |
| 721 if (is_two_pass_svc(cpi) && cpi->svc.encode_empty_frame_state == ENCODING) { | |
| 722 cm->log2_tile_cols = 0; | |
| 723 cm->log2_tile_rows = 0; | |
| 724 } else { | |
| 725 cm->log2_tile_cols = clamp(cpi->oxcf.tile_columns, | |
| 726 min_log2_tile_cols, max_log2_tile_cols); | |
| 727 cm->log2_tile_rows = cpi->oxcf.tile_rows; | |
| 728 } | |
| 729 } | |
| 730 | |
| 731 static void init_buffer_indices(VP9_COMP *cpi) { | 736 static void init_buffer_indices(VP9_COMP *cpi) { |
| 732 cpi->lst_fb_idx = 0; | 737 cpi->lst_fb_idx = 0; |
| 733 cpi->gld_fb_idx = 1; | 738 cpi->gld_fb_idx = 1; |
| 734 cpi->alt_fb_idx = 2; | 739 cpi->alt_fb_idx = 2; |
| 735 } | 740 } |
| 736 | 741 |
| 737 static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) { | 742 static void init_config(struct VP9_COMP *cpi, VP9EncoderConfig *oxcf) { |
| 738 VP9_COMMON *const cm = &cpi->common; | 743 VP9_COMMON *const cm = &cpi->common; |
| 739 | 744 |
| 740 cpi->oxcf = *oxcf; | 745 cpi->oxcf = *oxcf; |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 988 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad4x4x4d) | 993 MAKE_BFP_SAD4D_WRAPPER(vpx_highbd_sad4x4x4d) |
| 989 | 994 |
| 990 static void highbd_set_var_fns(VP9_COMP *const cpi) { | 995 static void highbd_set_var_fns(VP9_COMP *const cpi) { |
| 991 VP9_COMMON *const cm = &cpi->common; | 996 VP9_COMMON *const cm = &cpi->common; |
| 992 if (cm->use_highbitdepth) { | 997 if (cm->use_highbitdepth) { |
| 993 switch (cm->bit_depth) { | 998 switch (cm->bit_depth) { |
| 994 case VPX_BITS_8: | 999 case VPX_BITS_8: |
| 995 HIGHBD_BFP(BLOCK_32X16, | 1000 HIGHBD_BFP(BLOCK_32X16, |
| 996 vpx_highbd_sad32x16_bits8, | 1001 vpx_highbd_sad32x16_bits8, |
| 997 vpx_highbd_sad32x16_avg_bits8, | 1002 vpx_highbd_sad32x16_avg_bits8, |
| 998 vp9_highbd_variance32x16, | 1003 vpx_highbd_8_variance32x16, |
| 999 vp9_highbd_sub_pixel_variance32x16, | 1004 vp9_highbd_sub_pixel_variance32x16, |
| 1000 vp9_highbd_sub_pixel_avg_variance32x16, | 1005 vp9_highbd_sub_pixel_avg_variance32x16, |
| 1001 NULL, | 1006 NULL, |
| 1002 NULL, | 1007 NULL, |
| 1003 vpx_highbd_sad32x16x4d_bits8) | 1008 vpx_highbd_sad32x16x4d_bits8) |
| 1004 | 1009 |
| 1005 HIGHBD_BFP(BLOCK_16X32, | 1010 HIGHBD_BFP(BLOCK_16X32, |
| 1006 vpx_highbd_sad16x32_bits8, | 1011 vpx_highbd_sad16x32_bits8, |
| 1007 vpx_highbd_sad16x32_avg_bits8, | 1012 vpx_highbd_sad16x32_avg_bits8, |
| 1008 vp9_highbd_variance16x32, | 1013 vpx_highbd_8_variance16x32, |
| 1009 vp9_highbd_sub_pixel_variance16x32, | 1014 vp9_highbd_sub_pixel_variance16x32, |
| 1010 vp9_highbd_sub_pixel_avg_variance16x32, | 1015 vp9_highbd_sub_pixel_avg_variance16x32, |
| 1011 NULL, | 1016 NULL, |
| 1012 NULL, | 1017 NULL, |
| 1013 vpx_highbd_sad16x32x4d_bits8) | 1018 vpx_highbd_sad16x32x4d_bits8) |
| 1014 | 1019 |
| 1015 HIGHBD_BFP(BLOCK_64X32, | 1020 HIGHBD_BFP(BLOCK_64X32, |
| 1016 vpx_highbd_sad64x32_bits8, | 1021 vpx_highbd_sad64x32_bits8, |
| 1017 vpx_highbd_sad64x32_avg_bits8, | 1022 vpx_highbd_sad64x32_avg_bits8, |
| 1018 vp9_highbd_variance64x32, | 1023 vpx_highbd_8_variance64x32, |
| 1019 vp9_highbd_sub_pixel_variance64x32, | 1024 vp9_highbd_sub_pixel_variance64x32, |
| 1020 vp9_highbd_sub_pixel_avg_variance64x32, | 1025 vp9_highbd_sub_pixel_avg_variance64x32, |
| 1021 NULL, | 1026 NULL, |
| 1022 NULL, | 1027 NULL, |
| 1023 vpx_highbd_sad64x32x4d_bits8) | 1028 vpx_highbd_sad64x32x4d_bits8) |
| 1024 | 1029 |
| 1025 HIGHBD_BFP(BLOCK_32X64, | 1030 HIGHBD_BFP(BLOCK_32X64, |
| 1026 vpx_highbd_sad32x64_bits8, | 1031 vpx_highbd_sad32x64_bits8, |
| 1027 vpx_highbd_sad32x64_avg_bits8, | 1032 vpx_highbd_sad32x64_avg_bits8, |
| 1028 vp9_highbd_variance32x64, | 1033 vpx_highbd_8_variance32x64, |
| 1029 vp9_highbd_sub_pixel_variance32x64, | 1034 vp9_highbd_sub_pixel_variance32x64, |
| 1030 vp9_highbd_sub_pixel_avg_variance32x64, | 1035 vp9_highbd_sub_pixel_avg_variance32x64, |
| 1031 NULL, | 1036 NULL, |
| 1032 NULL, | 1037 NULL, |
| 1033 vpx_highbd_sad32x64x4d_bits8) | 1038 vpx_highbd_sad32x64x4d_bits8) |
| 1034 | 1039 |
| 1035 HIGHBD_BFP(BLOCK_32X32, | 1040 HIGHBD_BFP(BLOCK_32X32, |
| 1036 vpx_highbd_sad32x32_bits8, | 1041 vpx_highbd_sad32x32_bits8, |
| 1037 vpx_highbd_sad32x32_avg_bits8, | 1042 vpx_highbd_sad32x32_avg_bits8, |
| 1038 vp9_highbd_variance32x32, | 1043 vpx_highbd_8_variance32x32, |
| 1039 vp9_highbd_sub_pixel_variance32x32, | 1044 vp9_highbd_sub_pixel_variance32x32, |
| 1040 vp9_highbd_sub_pixel_avg_variance32x32, | 1045 vp9_highbd_sub_pixel_avg_variance32x32, |
| 1041 vpx_highbd_sad32x32x3_bits8, | 1046 vpx_highbd_sad32x32x3_bits8, |
| 1042 vpx_highbd_sad32x32x8_bits8, | 1047 vpx_highbd_sad32x32x8_bits8, |
| 1043 vpx_highbd_sad32x32x4d_bits8) | 1048 vpx_highbd_sad32x32x4d_bits8) |
| 1044 | 1049 |
| 1045 HIGHBD_BFP(BLOCK_64X64, | 1050 HIGHBD_BFP(BLOCK_64X64, |
| 1046 vpx_highbd_sad64x64_bits8, | 1051 vpx_highbd_sad64x64_bits8, |
| 1047 vpx_highbd_sad64x64_avg_bits8, | 1052 vpx_highbd_sad64x64_avg_bits8, |
| 1048 vp9_highbd_variance64x64, | 1053 vpx_highbd_8_variance64x64, |
| 1049 vp9_highbd_sub_pixel_variance64x64, | 1054 vp9_highbd_sub_pixel_variance64x64, |
| 1050 vp9_highbd_sub_pixel_avg_variance64x64, | 1055 vp9_highbd_sub_pixel_avg_variance64x64, |
| 1051 vpx_highbd_sad64x64x3_bits8, | 1056 vpx_highbd_sad64x64x3_bits8, |
| 1052 vpx_highbd_sad64x64x8_bits8, | 1057 vpx_highbd_sad64x64x8_bits8, |
| 1053 vpx_highbd_sad64x64x4d_bits8) | 1058 vpx_highbd_sad64x64x4d_bits8) |
| 1054 | 1059 |
| 1055 HIGHBD_BFP(BLOCK_16X16, | 1060 HIGHBD_BFP(BLOCK_16X16, |
| 1056 vpx_highbd_sad16x16_bits8, | 1061 vpx_highbd_sad16x16_bits8, |
| 1057 vpx_highbd_sad16x16_avg_bits8, | 1062 vpx_highbd_sad16x16_avg_bits8, |
| 1058 vp9_highbd_variance16x16, | 1063 vpx_highbd_8_variance16x16, |
| 1059 vp9_highbd_sub_pixel_variance16x16, | 1064 vp9_highbd_sub_pixel_variance16x16, |
| 1060 vp9_highbd_sub_pixel_avg_variance16x16, | 1065 vp9_highbd_sub_pixel_avg_variance16x16, |
| 1061 vpx_highbd_sad16x16x3_bits8, | 1066 vpx_highbd_sad16x16x3_bits8, |
| 1062 vpx_highbd_sad16x16x8_bits8, | 1067 vpx_highbd_sad16x16x8_bits8, |
| 1063 vpx_highbd_sad16x16x4d_bits8) | 1068 vpx_highbd_sad16x16x4d_bits8) |
| 1064 | 1069 |
| 1065 HIGHBD_BFP(BLOCK_16X8, | 1070 HIGHBD_BFP(BLOCK_16X8, |
| 1066 vpx_highbd_sad16x8_bits8, | 1071 vpx_highbd_sad16x8_bits8, |
| 1067 vpx_highbd_sad16x8_avg_bits8, | 1072 vpx_highbd_sad16x8_avg_bits8, |
| 1068 vp9_highbd_variance16x8, | 1073 vpx_highbd_8_variance16x8, |
| 1069 vp9_highbd_sub_pixel_variance16x8, | 1074 vp9_highbd_sub_pixel_variance16x8, |
| 1070 vp9_highbd_sub_pixel_avg_variance16x8, | 1075 vp9_highbd_sub_pixel_avg_variance16x8, |
| 1071 vpx_highbd_sad16x8x3_bits8, | 1076 vpx_highbd_sad16x8x3_bits8, |
| 1072 vpx_highbd_sad16x8x8_bits8, | 1077 vpx_highbd_sad16x8x8_bits8, |
| 1073 vpx_highbd_sad16x8x4d_bits8) | 1078 vpx_highbd_sad16x8x4d_bits8) |
| 1074 | 1079 |
| 1075 HIGHBD_BFP(BLOCK_8X16, | 1080 HIGHBD_BFP(BLOCK_8X16, |
| 1076 vpx_highbd_sad8x16_bits8, | 1081 vpx_highbd_sad8x16_bits8, |
| 1077 vpx_highbd_sad8x16_avg_bits8, | 1082 vpx_highbd_sad8x16_avg_bits8, |
| 1078 vp9_highbd_variance8x16, | 1083 vpx_highbd_8_variance8x16, |
| 1079 vp9_highbd_sub_pixel_variance8x16, | 1084 vp9_highbd_sub_pixel_variance8x16, |
| 1080 vp9_highbd_sub_pixel_avg_variance8x16, | 1085 vp9_highbd_sub_pixel_avg_variance8x16, |
| 1081 vpx_highbd_sad8x16x3_bits8, | 1086 vpx_highbd_sad8x16x3_bits8, |
| 1082 vpx_highbd_sad8x16x8_bits8, | 1087 vpx_highbd_sad8x16x8_bits8, |
| 1083 vpx_highbd_sad8x16x4d_bits8) | 1088 vpx_highbd_sad8x16x4d_bits8) |
| 1084 | 1089 |
| 1085 HIGHBD_BFP(BLOCK_8X8, | 1090 HIGHBD_BFP(BLOCK_8X8, |
| 1086 vpx_highbd_sad8x8_bits8, | 1091 vpx_highbd_sad8x8_bits8, |
| 1087 vpx_highbd_sad8x8_avg_bits8, | 1092 vpx_highbd_sad8x8_avg_bits8, |
| 1088 vp9_highbd_variance8x8, | 1093 vpx_highbd_8_variance8x8, |
| 1089 vp9_highbd_sub_pixel_variance8x8, | 1094 vp9_highbd_sub_pixel_variance8x8, |
| 1090 vp9_highbd_sub_pixel_avg_variance8x8, | 1095 vp9_highbd_sub_pixel_avg_variance8x8, |
| 1091 vpx_highbd_sad8x8x3_bits8, | 1096 vpx_highbd_sad8x8x3_bits8, |
| 1092 vpx_highbd_sad8x8x8_bits8, | 1097 vpx_highbd_sad8x8x8_bits8, |
| 1093 vpx_highbd_sad8x8x4d_bits8) | 1098 vpx_highbd_sad8x8x4d_bits8) |
| 1094 | 1099 |
| 1095 HIGHBD_BFP(BLOCK_8X4, | 1100 HIGHBD_BFP(BLOCK_8X4, |
| 1096 vpx_highbd_sad8x4_bits8, | 1101 vpx_highbd_sad8x4_bits8, |
| 1097 vpx_highbd_sad8x4_avg_bits8, | 1102 vpx_highbd_sad8x4_avg_bits8, |
| 1098 vp9_highbd_variance8x4, | 1103 vpx_highbd_8_variance8x4, |
| 1099 vp9_highbd_sub_pixel_variance8x4, | 1104 vp9_highbd_sub_pixel_variance8x4, |
| 1100 vp9_highbd_sub_pixel_avg_variance8x4, | 1105 vp9_highbd_sub_pixel_avg_variance8x4, |
| 1101 NULL, | 1106 NULL, |
| 1102 vpx_highbd_sad8x4x8_bits8, | 1107 vpx_highbd_sad8x4x8_bits8, |
| 1103 vpx_highbd_sad8x4x4d_bits8) | 1108 vpx_highbd_sad8x4x4d_bits8) |
| 1104 | 1109 |
| 1105 HIGHBD_BFP(BLOCK_4X8, | 1110 HIGHBD_BFP(BLOCK_4X8, |
| 1106 vpx_highbd_sad4x8_bits8, | 1111 vpx_highbd_sad4x8_bits8, |
| 1107 vpx_highbd_sad4x8_avg_bits8, | 1112 vpx_highbd_sad4x8_avg_bits8, |
| 1108 vp9_highbd_variance4x8, | 1113 vpx_highbd_8_variance4x8, |
| 1109 vp9_highbd_sub_pixel_variance4x8, | 1114 vp9_highbd_sub_pixel_variance4x8, |
| 1110 vp9_highbd_sub_pixel_avg_variance4x8, | 1115 vp9_highbd_sub_pixel_avg_variance4x8, |
| 1111 NULL, | 1116 NULL, |
| 1112 vpx_highbd_sad4x8x8_bits8, | 1117 vpx_highbd_sad4x8x8_bits8, |
| 1113 vpx_highbd_sad4x8x4d_bits8) | 1118 vpx_highbd_sad4x8x4d_bits8) |
| 1114 | 1119 |
| 1115 HIGHBD_BFP(BLOCK_4X4, | 1120 HIGHBD_BFP(BLOCK_4X4, |
| 1116 vpx_highbd_sad4x4_bits8, | 1121 vpx_highbd_sad4x4_bits8, |
| 1117 vpx_highbd_sad4x4_avg_bits8, | 1122 vpx_highbd_sad4x4_avg_bits8, |
| 1118 vp9_highbd_variance4x4, | 1123 vpx_highbd_8_variance4x4, |
| 1119 vp9_highbd_sub_pixel_variance4x4, | 1124 vp9_highbd_sub_pixel_variance4x4, |
| 1120 vp9_highbd_sub_pixel_avg_variance4x4, | 1125 vp9_highbd_sub_pixel_avg_variance4x4, |
| 1121 vpx_highbd_sad4x4x3_bits8, | 1126 vpx_highbd_sad4x4x3_bits8, |
| 1122 vpx_highbd_sad4x4x8_bits8, | 1127 vpx_highbd_sad4x4x8_bits8, |
| 1123 vpx_highbd_sad4x4x4d_bits8) | 1128 vpx_highbd_sad4x4x4d_bits8) |
| 1124 break; | 1129 break; |
| 1125 | 1130 |
| 1126 case VPX_BITS_10: | 1131 case VPX_BITS_10: |
| 1127 HIGHBD_BFP(BLOCK_32X16, | 1132 HIGHBD_BFP(BLOCK_32X16, |
| 1128 vpx_highbd_sad32x16_bits10, | 1133 vpx_highbd_sad32x16_bits10, |
| 1129 vpx_highbd_sad32x16_avg_bits10, | 1134 vpx_highbd_sad32x16_avg_bits10, |
| 1130 vp9_highbd_10_variance32x16, | 1135 vpx_highbd_10_variance32x16, |
| 1131 vp9_highbd_10_sub_pixel_variance32x16, | 1136 vp9_highbd_10_sub_pixel_variance32x16, |
| 1132 vp9_highbd_10_sub_pixel_avg_variance32x16, | 1137 vp9_highbd_10_sub_pixel_avg_variance32x16, |
| 1133 NULL, | 1138 NULL, |
| 1134 NULL, | 1139 NULL, |
| 1135 vpx_highbd_sad32x16x4d_bits10) | 1140 vpx_highbd_sad32x16x4d_bits10) |
| 1136 | 1141 |
| 1137 HIGHBD_BFP(BLOCK_16X32, | 1142 HIGHBD_BFP(BLOCK_16X32, |
| 1138 vpx_highbd_sad16x32_bits10, | 1143 vpx_highbd_sad16x32_bits10, |
| 1139 vpx_highbd_sad16x32_avg_bits10, | 1144 vpx_highbd_sad16x32_avg_bits10, |
| 1140 vp9_highbd_10_variance16x32, | 1145 vpx_highbd_10_variance16x32, |
| 1141 vp9_highbd_10_sub_pixel_variance16x32, | 1146 vp9_highbd_10_sub_pixel_variance16x32, |
| 1142 vp9_highbd_10_sub_pixel_avg_variance16x32, | 1147 vp9_highbd_10_sub_pixel_avg_variance16x32, |
| 1143 NULL, | 1148 NULL, |
| 1144 NULL, | 1149 NULL, |
| 1145 vpx_highbd_sad16x32x4d_bits10) | 1150 vpx_highbd_sad16x32x4d_bits10) |
| 1146 | 1151 |
| 1147 HIGHBD_BFP(BLOCK_64X32, | 1152 HIGHBD_BFP(BLOCK_64X32, |
| 1148 vpx_highbd_sad64x32_bits10, | 1153 vpx_highbd_sad64x32_bits10, |
| 1149 vpx_highbd_sad64x32_avg_bits10, | 1154 vpx_highbd_sad64x32_avg_bits10, |
| 1150 vp9_highbd_10_variance64x32, | 1155 vpx_highbd_10_variance64x32, |
| 1151 vp9_highbd_10_sub_pixel_variance64x32, | 1156 vp9_highbd_10_sub_pixel_variance64x32, |
| 1152 vp9_highbd_10_sub_pixel_avg_variance64x32, | 1157 vp9_highbd_10_sub_pixel_avg_variance64x32, |
| 1153 NULL, | 1158 NULL, |
| 1154 NULL, | 1159 NULL, |
| 1155 vpx_highbd_sad64x32x4d_bits10) | 1160 vpx_highbd_sad64x32x4d_bits10) |
| 1156 | 1161 |
| 1157 HIGHBD_BFP(BLOCK_32X64, | 1162 HIGHBD_BFP(BLOCK_32X64, |
| 1158 vpx_highbd_sad32x64_bits10, | 1163 vpx_highbd_sad32x64_bits10, |
| 1159 vpx_highbd_sad32x64_avg_bits10, | 1164 vpx_highbd_sad32x64_avg_bits10, |
| 1160 vp9_highbd_10_variance32x64, | 1165 vpx_highbd_10_variance32x64, |
| 1161 vp9_highbd_10_sub_pixel_variance32x64, | 1166 vp9_highbd_10_sub_pixel_variance32x64, |
| 1162 vp9_highbd_10_sub_pixel_avg_variance32x64, | 1167 vp9_highbd_10_sub_pixel_avg_variance32x64, |
| 1163 NULL, | 1168 NULL, |
| 1164 NULL, | 1169 NULL, |
| 1165 vpx_highbd_sad32x64x4d_bits10) | 1170 vpx_highbd_sad32x64x4d_bits10) |
| 1166 | 1171 |
| 1167 HIGHBD_BFP(BLOCK_32X32, | 1172 HIGHBD_BFP(BLOCK_32X32, |
| 1168 vpx_highbd_sad32x32_bits10, | 1173 vpx_highbd_sad32x32_bits10, |
| 1169 vpx_highbd_sad32x32_avg_bits10, | 1174 vpx_highbd_sad32x32_avg_bits10, |
| 1170 vp9_highbd_10_variance32x32, | 1175 vpx_highbd_10_variance32x32, |
| 1171 vp9_highbd_10_sub_pixel_variance32x32, | 1176 vp9_highbd_10_sub_pixel_variance32x32, |
| 1172 vp9_highbd_10_sub_pixel_avg_variance32x32, | 1177 vp9_highbd_10_sub_pixel_avg_variance32x32, |
| 1173 vpx_highbd_sad32x32x3_bits10, | 1178 vpx_highbd_sad32x32x3_bits10, |
| 1174 vpx_highbd_sad32x32x8_bits10, | 1179 vpx_highbd_sad32x32x8_bits10, |
| 1175 vpx_highbd_sad32x32x4d_bits10) | 1180 vpx_highbd_sad32x32x4d_bits10) |
| 1176 | 1181 |
| 1177 HIGHBD_BFP(BLOCK_64X64, | 1182 HIGHBD_BFP(BLOCK_64X64, |
| 1178 vpx_highbd_sad64x64_bits10, | 1183 vpx_highbd_sad64x64_bits10, |
| 1179 vpx_highbd_sad64x64_avg_bits10, | 1184 vpx_highbd_sad64x64_avg_bits10, |
| 1180 vp9_highbd_10_variance64x64, | 1185 vpx_highbd_10_variance64x64, |
| 1181 vp9_highbd_10_sub_pixel_variance64x64, | 1186 vp9_highbd_10_sub_pixel_variance64x64, |
| 1182 vp9_highbd_10_sub_pixel_avg_variance64x64, | 1187 vp9_highbd_10_sub_pixel_avg_variance64x64, |
| 1183 vpx_highbd_sad64x64x3_bits10, | 1188 vpx_highbd_sad64x64x3_bits10, |
| 1184 vpx_highbd_sad64x64x8_bits10, | 1189 vpx_highbd_sad64x64x8_bits10, |
| 1185 vpx_highbd_sad64x64x4d_bits10) | 1190 vpx_highbd_sad64x64x4d_bits10) |
| 1186 | 1191 |
| 1187 HIGHBD_BFP(BLOCK_16X16, | 1192 HIGHBD_BFP(BLOCK_16X16, |
| 1188 vpx_highbd_sad16x16_bits10, | 1193 vpx_highbd_sad16x16_bits10, |
| 1189 vpx_highbd_sad16x16_avg_bits10, | 1194 vpx_highbd_sad16x16_avg_bits10, |
| 1190 vp9_highbd_10_variance16x16, | 1195 vpx_highbd_10_variance16x16, |
| 1191 vp9_highbd_10_sub_pixel_variance16x16, | 1196 vp9_highbd_10_sub_pixel_variance16x16, |
| 1192 vp9_highbd_10_sub_pixel_avg_variance16x16, | 1197 vp9_highbd_10_sub_pixel_avg_variance16x16, |
| 1193 vpx_highbd_sad16x16x3_bits10, | 1198 vpx_highbd_sad16x16x3_bits10, |
| 1194 vpx_highbd_sad16x16x8_bits10, | 1199 vpx_highbd_sad16x16x8_bits10, |
| 1195 vpx_highbd_sad16x16x4d_bits10) | 1200 vpx_highbd_sad16x16x4d_bits10) |
| 1196 | 1201 |
| 1197 HIGHBD_BFP(BLOCK_16X8, | 1202 HIGHBD_BFP(BLOCK_16X8, |
| 1198 vpx_highbd_sad16x8_bits10, | 1203 vpx_highbd_sad16x8_bits10, |
| 1199 vpx_highbd_sad16x8_avg_bits10, | 1204 vpx_highbd_sad16x8_avg_bits10, |
| 1200 vp9_highbd_10_variance16x8, | 1205 vpx_highbd_10_variance16x8, |
| 1201 vp9_highbd_10_sub_pixel_variance16x8, | 1206 vp9_highbd_10_sub_pixel_variance16x8, |
| 1202 vp9_highbd_10_sub_pixel_avg_variance16x8, | 1207 vp9_highbd_10_sub_pixel_avg_variance16x8, |
| 1203 vpx_highbd_sad16x8x3_bits10, | 1208 vpx_highbd_sad16x8x3_bits10, |
| 1204 vpx_highbd_sad16x8x8_bits10, | 1209 vpx_highbd_sad16x8x8_bits10, |
| 1205 vpx_highbd_sad16x8x4d_bits10) | 1210 vpx_highbd_sad16x8x4d_bits10) |
| 1206 | 1211 |
| 1207 HIGHBD_BFP(BLOCK_8X16, | 1212 HIGHBD_BFP(BLOCK_8X16, |
| 1208 vpx_highbd_sad8x16_bits10, | 1213 vpx_highbd_sad8x16_bits10, |
| 1209 vpx_highbd_sad8x16_avg_bits10, | 1214 vpx_highbd_sad8x16_avg_bits10, |
| 1210 vp9_highbd_10_variance8x16, | 1215 vpx_highbd_10_variance8x16, |
| 1211 vp9_highbd_10_sub_pixel_variance8x16, | 1216 vp9_highbd_10_sub_pixel_variance8x16, |
| 1212 vp9_highbd_10_sub_pixel_avg_variance8x16, | 1217 vp9_highbd_10_sub_pixel_avg_variance8x16, |
| 1213 vpx_highbd_sad8x16x3_bits10, | 1218 vpx_highbd_sad8x16x3_bits10, |
| 1214 vpx_highbd_sad8x16x8_bits10, | 1219 vpx_highbd_sad8x16x8_bits10, |
| 1215 vpx_highbd_sad8x16x4d_bits10) | 1220 vpx_highbd_sad8x16x4d_bits10) |
| 1216 | 1221 |
| 1217 HIGHBD_BFP(BLOCK_8X8, | 1222 HIGHBD_BFP(BLOCK_8X8, |
| 1218 vpx_highbd_sad8x8_bits10, | 1223 vpx_highbd_sad8x8_bits10, |
| 1219 vpx_highbd_sad8x8_avg_bits10, | 1224 vpx_highbd_sad8x8_avg_bits10, |
| 1220 vp9_highbd_10_variance8x8, | 1225 vpx_highbd_10_variance8x8, |
| 1221 vp9_highbd_10_sub_pixel_variance8x8, | 1226 vp9_highbd_10_sub_pixel_variance8x8, |
| 1222 vp9_highbd_10_sub_pixel_avg_variance8x8, | 1227 vp9_highbd_10_sub_pixel_avg_variance8x8, |
| 1223 vpx_highbd_sad8x8x3_bits10, | 1228 vpx_highbd_sad8x8x3_bits10, |
| 1224 vpx_highbd_sad8x8x8_bits10, | 1229 vpx_highbd_sad8x8x8_bits10, |
| 1225 vpx_highbd_sad8x8x4d_bits10) | 1230 vpx_highbd_sad8x8x4d_bits10) |
| 1226 | 1231 |
| 1227 HIGHBD_BFP(BLOCK_8X4, | 1232 HIGHBD_BFP(BLOCK_8X4, |
| 1228 vpx_highbd_sad8x4_bits10, | 1233 vpx_highbd_sad8x4_bits10, |
| 1229 vpx_highbd_sad8x4_avg_bits10, | 1234 vpx_highbd_sad8x4_avg_bits10, |
| 1230 vp9_highbd_10_variance8x4, | 1235 vpx_highbd_10_variance8x4, |
| 1231 vp9_highbd_10_sub_pixel_variance8x4, | 1236 vp9_highbd_10_sub_pixel_variance8x4, |
| 1232 vp9_highbd_10_sub_pixel_avg_variance8x4, | 1237 vp9_highbd_10_sub_pixel_avg_variance8x4, |
| 1233 NULL, | 1238 NULL, |
| 1234 vpx_highbd_sad8x4x8_bits10, | 1239 vpx_highbd_sad8x4x8_bits10, |
| 1235 vpx_highbd_sad8x4x4d_bits10) | 1240 vpx_highbd_sad8x4x4d_bits10) |
| 1236 | 1241 |
| 1237 HIGHBD_BFP(BLOCK_4X8, | 1242 HIGHBD_BFP(BLOCK_4X8, |
| 1238 vpx_highbd_sad4x8_bits10, | 1243 vpx_highbd_sad4x8_bits10, |
| 1239 vpx_highbd_sad4x8_avg_bits10, | 1244 vpx_highbd_sad4x8_avg_bits10, |
| 1240 vp9_highbd_10_variance4x8, | 1245 vpx_highbd_10_variance4x8, |
| 1241 vp9_highbd_10_sub_pixel_variance4x8, | 1246 vp9_highbd_10_sub_pixel_variance4x8, |
| 1242 vp9_highbd_10_sub_pixel_avg_variance4x8, | 1247 vp9_highbd_10_sub_pixel_avg_variance4x8, |
| 1243 NULL, | 1248 NULL, |
| 1244 vpx_highbd_sad4x8x8_bits10, | 1249 vpx_highbd_sad4x8x8_bits10, |
| 1245 vpx_highbd_sad4x8x4d_bits10) | 1250 vpx_highbd_sad4x8x4d_bits10) |
| 1246 | 1251 |
| 1247 HIGHBD_BFP(BLOCK_4X4, | 1252 HIGHBD_BFP(BLOCK_4X4, |
| 1248 vpx_highbd_sad4x4_bits10, | 1253 vpx_highbd_sad4x4_bits10, |
| 1249 vpx_highbd_sad4x4_avg_bits10, | 1254 vpx_highbd_sad4x4_avg_bits10, |
| 1250 vp9_highbd_10_variance4x4, | 1255 vpx_highbd_10_variance4x4, |
| 1251 vp9_highbd_10_sub_pixel_variance4x4, | 1256 vp9_highbd_10_sub_pixel_variance4x4, |
| 1252 vp9_highbd_10_sub_pixel_avg_variance4x4, | 1257 vp9_highbd_10_sub_pixel_avg_variance4x4, |
| 1253 vpx_highbd_sad4x4x3_bits10, | 1258 vpx_highbd_sad4x4x3_bits10, |
| 1254 vpx_highbd_sad4x4x8_bits10, | 1259 vpx_highbd_sad4x4x8_bits10, |
| 1255 vpx_highbd_sad4x4x4d_bits10) | 1260 vpx_highbd_sad4x4x4d_bits10) |
| 1256 break; | 1261 break; |
| 1257 | 1262 |
| 1258 case VPX_BITS_12: | 1263 case VPX_BITS_12: |
| 1259 HIGHBD_BFP(BLOCK_32X16, | 1264 HIGHBD_BFP(BLOCK_32X16, |
| 1260 vpx_highbd_sad32x16_bits12, | 1265 vpx_highbd_sad32x16_bits12, |
| 1261 vpx_highbd_sad32x16_avg_bits12, | 1266 vpx_highbd_sad32x16_avg_bits12, |
| 1262 vp9_highbd_12_variance32x16, | 1267 vpx_highbd_12_variance32x16, |
| 1263 vp9_highbd_12_sub_pixel_variance32x16, | 1268 vp9_highbd_12_sub_pixel_variance32x16, |
| 1264 vp9_highbd_12_sub_pixel_avg_variance32x16, | 1269 vp9_highbd_12_sub_pixel_avg_variance32x16, |
| 1265 NULL, | 1270 NULL, |
| 1266 NULL, | 1271 NULL, |
| 1267 vpx_highbd_sad32x16x4d_bits12) | 1272 vpx_highbd_sad32x16x4d_bits12) |
| 1268 | 1273 |
| 1269 HIGHBD_BFP(BLOCK_16X32, | 1274 HIGHBD_BFP(BLOCK_16X32, |
| 1270 vpx_highbd_sad16x32_bits12, | 1275 vpx_highbd_sad16x32_bits12, |
| 1271 vpx_highbd_sad16x32_avg_bits12, | 1276 vpx_highbd_sad16x32_avg_bits12, |
| 1272 vp9_highbd_12_variance16x32, | 1277 vpx_highbd_12_variance16x32, |
| 1273 vp9_highbd_12_sub_pixel_variance16x32, | 1278 vp9_highbd_12_sub_pixel_variance16x32, |
| 1274 vp9_highbd_12_sub_pixel_avg_variance16x32, | 1279 vp9_highbd_12_sub_pixel_avg_variance16x32, |
| 1275 NULL, | 1280 NULL, |
| 1276 NULL, | 1281 NULL, |
| 1277 vpx_highbd_sad16x32x4d_bits12) | 1282 vpx_highbd_sad16x32x4d_bits12) |
| 1278 | 1283 |
| 1279 HIGHBD_BFP(BLOCK_64X32, | 1284 HIGHBD_BFP(BLOCK_64X32, |
| 1280 vpx_highbd_sad64x32_bits12, | 1285 vpx_highbd_sad64x32_bits12, |
| 1281 vpx_highbd_sad64x32_avg_bits12, | 1286 vpx_highbd_sad64x32_avg_bits12, |
| 1282 vp9_highbd_12_variance64x32, | 1287 vpx_highbd_12_variance64x32, |
| 1283 vp9_highbd_12_sub_pixel_variance64x32, | 1288 vp9_highbd_12_sub_pixel_variance64x32, |
| 1284 vp9_highbd_12_sub_pixel_avg_variance64x32, | 1289 vp9_highbd_12_sub_pixel_avg_variance64x32, |
| 1285 NULL, | 1290 NULL, |
| 1286 NULL, | 1291 NULL, |
| 1287 vpx_highbd_sad64x32x4d_bits12) | 1292 vpx_highbd_sad64x32x4d_bits12) |
| 1288 | 1293 |
| 1289 HIGHBD_BFP(BLOCK_32X64, | 1294 HIGHBD_BFP(BLOCK_32X64, |
| 1290 vpx_highbd_sad32x64_bits12, | 1295 vpx_highbd_sad32x64_bits12, |
| 1291 vpx_highbd_sad32x64_avg_bits12, | 1296 vpx_highbd_sad32x64_avg_bits12, |
| 1292 vp9_highbd_12_variance32x64, | 1297 vpx_highbd_12_variance32x64, |
| 1293 vp9_highbd_12_sub_pixel_variance32x64, | 1298 vp9_highbd_12_sub_pixel_variance32x64, |
| 1294 vp9_highbd_12_sub_pixel_avg_variance32x64, | 1299 vp9_highbd_12_sub_pixel_avg_variance32x64, |
| 1295 NULL, | 1300 NULL, |
| 1296 NULL, | 1301 NULL, |
| 1297 vpx_highbd_sad32x64x4d_bits12) | 1302 vpx_highbd_sad32x64x4d_bits12) |
| 1298 | 1303 |
| 1299 HIGHBD_BFP(BLOCK_32X32, | 1304 HIGHBD_BFP(BLOCK_32X32, |
| 1300 vpx_highbd_sad32x32_bits12, | 1305 vpx_highbd_sad32x32_bits12, |
| 1301 vpx_highbd_sad32x32_avg_bits12, | 1306 vpx_highbd_sad32x32_avg_bits12, |
| 1302 vp9_highbd_12_variance32x32, | 1307 vpx_highbd_12_variance32x32, |
| 1303 vp9_highbd_12_sub_pixel_variance32x32, | 1308 vp9_highbd_12_sub_pixel_variance32x32, |
| 1304 vp9_highbd_12_sub_pixel_avg_variance32x32, | 1309 vp9_highbd_12_sub_pixel_avg_variance32x32, |
| 1305 vpx_highbd_sad32x32x3_bits12, | 1310 vpx_highbd_sad32x32x3_bits12, |
| 1306 vpx_highbd_sad32x32x8_bits12, | 1311 vpx_highbd_sad32x32x8_bits12, |
| 1307 vpx_highbd_sad32x32x4d_bits12) | 1312 vpx_highbd_sad32x32x4d_bits12) |
| 1308 | 1313 |
| 1309 HIGHBD_BFP(BLOCK_64X64, | 1314 HIGHBD_BFP(BLOCK_64X64, |
| 1310 vpx_highbd_sad64x64_bits12, | 1315 vpx_highbd_sad64x64_bits12, |
| 1311 vpx_highbd_sad64x64_avg_bits12, | 1316 vpx_highbd_sad64x64_avg_bits12, |
| 1312 vp9_highbd_12_variance64x64, | 1317 vpx_highbd_12_variance64x64, |
| 1313 vp9_highbd_12_sub_pixel_variance64x64, | 1318 vp9_highbd_12_sub_pixel_variance64x64, |
| 1314 vp9_highbd_12_sub_pixel_avg_variance64x64, | 1319 vp9_highbd_12_sub_pixel_avg_variance64x64, |
| 1315 vpx_highbd_sad64x64x3_bits12, | 1320 vpx_highbd_sad64x64x3_bits12, |
| 1316 vpx_highbd_sad64x64x8_bits12, | 1321 vpx_highbd_sad64x64x8_bits12, |
| 1317 vpx_highbd_sad64x64x4d_bits12) | 1322 vpx_highbd_sad64x64x4d_bits12) |
| 1318 | 1323 |
| 1319 HIGHBD_BFP(BLOCK_16X16, | 1324 HIGHBD_BFP(BLOCK_16X16, |
| 1320 vpx_highbd_sad16x16_bits12, | 1325 vpx_highbd_sad16x16_bits12, |
| 1321 vpx_highbd_sad16x16_avg_bits12, | 1326 vpx_highbd_sad16x16_avg_bits12, |
| 1322 vp9_highbd_12_variance16x16, | 1327 vpx_highbd_12_variance16x16, |
| 1323 vp9_highbd_12_sub_pixel_variance16x16, | 1328 vp9_highbd_12_sub_pixel_variance16x16, |
| 1324 vp9_highbd_12_sub_pixel_avg_variance16x16, | 1329 vp9_highbd_12_sub_pixel_avg_variance16x16, |
| 1325 vpx_highbd_sad16x16x3_bits12, | 1330 vpx_highbd_sad16x16x3_bits12, |
| 1326 vpx_highbd_sad16x16x8_bits12, | 1331 vpx_highbd_sad16x16x8_bits12, |
| 1327 vpx_highbd_sad16x16x4d_bits12) | 1332 vpx_highbd_sad16x16x4d_bits12) |
| 1328 | 1333 |
| 1329 HIGHBD_BFP(BLOCK_16X8, | 1334 HIGHBD_BFP(BLOCK_16X8, |
| 1330 vpx_highbd_sad16x8_bits12, | 1335 vpx_highbd_sad16x8_bits12, |
| 1331 vpx_highbd_sad16x8_avg_bits12, | 1336 vpx_highbd_sad16x8_avg_bits12, |
| 1332 vp9_highbd_12_variance16x8, | 1337 vpx_highbd_12_variance16x8, |
| 1333 vp9_highbd_12_sub_pixel_variance16x8, | 1338 vp9_highbd_12_sub_pixel_variance16x8, |
| 1334 vp9_highbd_12_sub_pixel_avg_variance16x8, | 1339 vp9_highbd_12_sub_pixel_avg_variance16x8, |
| 1335 vpx_highbd_sad16x8x3_bits12, | 1340 vpx_highbd_sad16x8x3_bits12, |
| 1336 vpx_highbd_sad16x8x8_bits12, | 1341 vpx_highbd_sad16x8x8_bits12, |
| 1337 vpx_highbd_sad16x8x4d_bits12) | 1342 vpx_highbd_sad16x8x4d_bits12) |
| 1338 | 1343 |
| 1339 HIGHBD_BFP(BLOCK_8X16, | 1344 HIGHBD_BFP(BLOCK_8X16, |
| 1340 vpx_highbd_sad8x16_bits12, | 1345 vpx_highbd_sad8x16_bits12, |
| 1341 vpx_highbd_sad8x16_avg_bits12, | 1346 vpx_highbd_sad8x16_avg_bits12, |
| 1342 vp9_highbd_12_variance8x16, | 1347 vpx_highbd_12_variance8x16, |
| 1343 vp9_highbd_12_sub_pixel_variance8x16, | 1348 vp9_highbd_12_sub_pixel_variance8x16, |
| 1344 vp9_highbd_12_sub_pixel_avg_variance8x16, | 1349 vp9_highbd_12_sub_pixel_avg_variance8x16, |
| 1345 vpx_highbd_sad8x16x3_bits12, | 1350 vpx_highbd_sad8x16x3_bits12, |
| 1346 vpx_highbd_sad8x16x8_bits12, | 1351 vpx_highbd_sad8x16x8_bits12, |
| 1347 vpx_highbd_sad8x16x4d_bits12) | 1352 vpx_highbd_sad8x16x4d_bits12) |
| 1348 | 1353 |
| 1349 HIGHBD_BFP(BLOCK_8X8, | 1354 HIGHBD_BFP(BLOCK_8X8, |
| 1350 vpx_highbd_sad8x8_bits12, | 1355 vpx_highbd_sad8x8_bits12, |
| 1351 vpx_highbd_sad8x8_avg_bits12, | 1356 vpx_highbd_sad8x8_avg_bits12, |
| 1352 vp9_highbd_12_variance8x8, | 1357 vpx_highbd_12_variance8x8, |
| 1353 vp9_highbd_12_sub_pixel_variance8x8, | 1358 vp9_highbd_12_sub_pixel_variance8x8, |
| 1354 vp9_highbd_12_sub_pixel_avg_variance8x8, | 1359 vp9_highbd_12_sub_pixel_avg_variance8x8, |
| 1355 vpx_highbd_sad8x8x3_bits12, | 1360 vpx_highbd_sad8x8x3_bits12, |
| 1356 vpx_highbd_sad8x8x8_bits12, | 1361 vpx_highbd_sad8x8x8_bits12, |
| 1357 vpx_highbd_sad8x8x4d_bits12) | 1362 vpx_highbd_sad8x8x4d_bits12) |
| 1358 | 1363 |
| 1359 HIGHBD_BFP(BLOCK_8X4, | 1364 HIGHBD_BFP(BLOCK_8X4, |
| 1360 vpx_highbd_sad8x4_bits12, | 1365 vpx_highbd_sad8x4_bits12, |
| 1361 vpx_highbd_sad8x4_avg_bits12, | 1366 vpx_highbd_sad8x4_avg_bits12, |
| 1362 vp9_highbd_12_variance8x4, | 1367 vpx_highbd_12_variance8x4, |
| 1363 vp9_highbd_12_sub_pixel_variance8x4, | 1368 vp9_highbd_12_sub_pixel_variance8x4, |
| 1364 vp9_highbd_12_sub_pixel_avg_variance8x4, | 1369 vp9_highbd_12_sub_pixel_avg_variance8x4, |
| 1365 NULL, | 1370 NULL, |
| 1366 vpx_highbd_sad8x4x8_bits12, | 1371 vpx_highbd_sad8x4x8_bits12, |
| 1367 vpx_highbd_sad8x4x4d_bits12) | 1372 vpx_highbd_sad8x4x4d_bits12) |
| 1368 | 1373 |
| 1369 HIGHBD_BFP(BLOCK_4X8, | 1374 HIGHBD_BFP(BLOCK_4X8, |
| 1370 vpx_highbd_sad4x8_bits12, | 1375 vpx_highbd_sad4x8_bits12, |
| 1371 vpx_highbd_sad4x8_avg_bits12, | 1376 vpx_highbd_sad4x8_avg_bits12, |
| 1372 vp9_highbd_12_variance4x8, | 1377 vpx_highbd_12_variance4x8, |
| 1373 vp9_highbd_12_sub_pixel_variance4x8, | 1378 vp9_highbd_12_sub_pixel_variance4x8, |
| 1374 vp9_highbd_12_sub_pixel_avg_variance4x8, | 1379 vp9_highbd_12_sub_pixel_avg_variance4x8, |
| 1375 NULL, | 1380 NULL, |
| 1376 vpx_highbd_sad4x8x8_bits12, | 1381 vpx_highbd_sad4x8x8_bits12, |
| 1377 vpx_highbd_sad4x8x4d_bits12) | 1382 vpx_highbd_sad4x8x4d_bits12) |
| 1378 | 1383 |
| 1379 HIGHBD_BFP(BLOCK_4X4, | 1384 HIGHBD_BFP(BLOCK_4X4, |
| 1380 vpx_highbd_sad4x4_bits12, | 1385 vpx_highbd_sad4x4_bits12, |
| 1381 vpx_highbd_sad4x4_avg_bits12, | 1386 vpx_highbd_sad4x4_avg_bits12, |
| 1382 vp9_highbd_12_variance4x4, | 1387 vpx_highbd_12_variance4x4, |
| 1383 vp9_highbd_12_sub_pixel_variance4x4, | 1388 vp9_highbd_12_sub_pixel_variance4x4, |
| 1384 vp9_highbd_12_sub_pixel_avg_variance4x4, | 1389 vp9_highbd_12_sub_pixel_avg_variance4x4, |
| 1385 vpx_highbd_sad4x4x3_bits12, | 1390 vpx_highbd_sad4x4x3_bits12, |
| 1386 vpx_highbd_sad4x4x8_bits12, | 1391 vpx_highbd_sad4x4x8_bits12, |
| 1387 vpx_highbd_sad4x4x4d_bits12) | 1392 vpx_highbd_sad4x4x4d_bits12) |
| 1388 break; | 1393 break; |
| 1389 | 1394 |
| 1390 default: | 1395 default: |
| 1391 assert(0 && "cm->bit_depth should be VPX_BITS_8, " | 1396 assert(0 && "cm->bit_depth should be VPX_BITS_8, " |
| 1392 "VPX_BITS_10 or VPX_BITS_12"); | 1397 "VPX_BITS_10 or VPX_BITS_12"); |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1795 cpi->fn_ptr[BT].sdf = SDF; \ | 1800 cpi->fn_ptr[BT].sdf = SDF; \ |
| 1796 cpi->fn_ptr[BT].sdaf = SDAF; \ | 1801 cpi->fn_ptr[BT].sdaf = SDAF; \ |
| 1797 cpi->fn_ptr[BT].vf = VF; \ | 1802 cpi->fn_ptr[BT].vf = VF; \ |
| 1798 cpi->fn_ptr[BT].svf = SVF; \ | 1803 cpi->fn_ptr[BT].svf = SVF; \ |
| 1799 cpi->fn_ptr[BT].svaf = SVAF; \ | 1804 cpi->fn_ptr[BT].svaf = SVAF; \ |
| 1800 cpi->fn_ptr[BT].sdx3f = SDX3F; \ | 1805 cpi->fn_ptr[BT].sdx3f = SDX3F; \ |
| 1801 cpi->fn_ptr[BT].sdx8f = SDX8F; \ | 1806 cpi->fn_ptr[BT].sdx8f = SDX8F; \ |
| 1802 cpi->fn_ptr[BT].sdx4df = SDX4DF; | 1807 cpi->fn_ptr[BT].sdx4df = SDX4DF; |
| 1803 | 1808 |
| 1804 BFP(BLOCK_32X16, vpx_sad32x16, vpx_sad32x16_avg, | 1809 BFP(BLOCK_32X16, vpx_sad32x16, vpx_sad32x16_avg, |
| 1805 vp9_variance32x16, vp9_sub_pixel_variance32x16, | 1810 vpx_variance32x16, vp9_sub_pixel_variance32x16, |
| 1806 vp9_sub_pixel_avg_variance32x16, NULL, NULL, vpx_sad32x16x4d) | 1811 vp9_sub_pixel_avg_variance32x16, NULL, NULL, vpx_sad32x16x4d) |
| 1807 | 1812 |
| 1808 BFP(BLOCK_16X32, vpx_sad16x32, vpx_sad16x32_avg, | 1813 BFP(BLOCK_16X32, vpx_sad16x32, vpx_sad16x32_avg, |
| 1809 vp9_variance16x32, vp9_sub_pixel_variance16x32, | 1814 vpx_variance16x32, vp9_sub_pixel_variance16x32, |
| 1810 vp9_sub_pixel_avg_variance16x32, NULL, NULL, vpx_sad16x32x4d) | 1815 vp9_sub_pixel_avg_variance16x32, NULL, NULL, vpx_sad16x32x4d) |
| 1811 | 1816 |
| 1812 BFP(BLOCK_64X32, vpx_sad64x32, vpx_sad64x32_avg, | 1817 BFP(BLOCK_64X32, vpx_sad64x32, vpx_sad64x32_avg, |
| 1813 vp9_variance64x32, vp9_sub_pixel_variance64x32, | 1818 vpx_variance64x32, vp9_sub_pixel_variance64x32, |
| 1814 vp9_sub_pixel_avg_variance64x32, NULL, NULL, vpx_sad64x32x4d) | 1819 vp9_sub_pixel_avg_variance64x32, NULL, NULL, vpx_sad64x32x4d) |
| 1815 | 1820 |
| 1816 BFP(BLOCK_32X64, vpx_sad32x64, vpx_sad32x64_avg, | 1821 BFP(BLOCK_32X64, vpx_sad32x64, vpx_sad32x64_avg, |
| 1817 vp9_variance32x64, vp9_sub_pixel_variance32x64, | 1822 vpx_variance32x64, vp9_sub_pixel_variance32x64, |
| 1818 vp9_sub_pixel_avg_variance32x64, NULL, NULL, vpx_sad32x64x4d) | 1823 vp9_sub_pixel_avg_variance32x64, NULL, NULL, vpx_sad32x64x4d) |
| 1819 | 1824 |
| 1820 BFP(BLOCK_32X32, vpx_sad32x32, vpx_sad32x32_avg, | 1825 BFP(BLOCK_32X32, vpx_sad32x32, vpx_sad32x32_avg, |
| 1821 vp9_variance32x32, vp9_sub_pixel_variance32x32, | 1826 vpx_variance32x32, vp9_sub_pixel_variance32x32, |
| 1822 vp9_sub_pixel_avg_variance32x32, vpx_sad32x32x3, vpx_sad32x32x8, | 1827 vp9_sub_pixel_avg_variance32x32, vpx_sad32x32x3, vpx_sad32x32x8, |
| 1823 vpx_sad32x32x4d) | 1828 vpx_sad32x32x4d) |
| 1824 | 1829 |
| 1825 BFP(BLOCK_64X64, vpx_sad64x64, vpx_sad64x64_avg, | 1830 BFP(BLOCK_64X64, vpx_sad64x64, vpx_sad64x64_avg, |
| 1826 vp9_variance64x64, vp9_sub_pixel_variance64x64, | 1831 vpx_variance64x64, vp9_sub_pixel_variance64x64, |
| 1827 vp9_sub_pixel_avg_variance64x64, vpx_sad64x64x3, vpx_sad64x64x8, | 1832 vp9_sub_pixel_avg_variance64x64, vpx_sad64x64x3, vpx_sad64x64x8, |
| 1828 vpx_sad64x64x4d) | 1833 vpx_sad64x64x4d) |
| 1829 | 1834 |
| 1830 BFP(BLOCK_16X16, vpx_sad16x16, vpx_sad16x16_avg, | 1835 BFP(BLOCK_16X16, vpx_sad16x16, vpx_sad16x16_avg, |
| 1831 vp9_variance16x16, vp9_sub_pixel_variance16x16, | 1836 vpx_variance16x16, vp9_sub_pixel_variance16x16, |
| 1832 vp9_sub_pixel_avg_variance16x16, vpx_sad16x16x3, vpx_sad16x16x8, | 1837 vp9_sub_pixel_avg_variance16x16, vpx_sad16x16x3, vpx_sad16x16x8, |
| 1833 vpx_sad16x16x4d) | 1838 vpx_sad16x16x4d) |
| 1834 | 1839 |
| 1835 BFP(BLOCK_16X8, vpx_sad16x8, vpx_sad16x8_avg, | 1840 BFP(BLOCK_16X8, vpx_sad16x8, vpx_sad16x8_avg, |
| 1836 vp9_variance16x8, vp9_sub_pixel_variance16x8, | 1841 vpx_variance16x8, vp9_sub_pixel_variance16x8, |
| 1837 vp9_sub_pixel_avg_variance16x8, | 1842 vp9_sub_pixel_avg_variance16x8, |
| 1838 vpx_sad16x8x3, vpx_sad16x8x8, vpx_sad16x8x4d) | 1843 vpx_sad16x8x3, vpx_sad16x8x8, vpx_sad16x8x4d) |
| 1839 | 1844 |
| 1840 BFP(BLOCK_8X16, vpx_sad8x16, vpx_sad8x16_avg, | 1845 BFP(BLOCK_8X16, vpx_sad8x16, vpx_sad8x16_avg, |
| 1841 vp9_variance8x16, vp9_sub_pixel_variance8x16, | 1846 vpx_variance8x16, vp9_sub_pixel_variance8x16, |
| 1842 vp9_sub_pixel_avg_variance8x16, | 1847 vp9_sub_pixel_avg_variance8x16, |
| 1843 vpx_sad8x16x3, vpx_sad8x16x8, vpx_sad8x16x4d) | 1848 vpx_sad8x16x3, vpx_sad8x16x8, vpx_sad8x16x4d) |
| 1844 | 1849 |
| 1845 BFP(BLOCK_8X8, vpx_sad8x8, vpx_sad8x8_avg, | 1850 BFP(BLOCK_8X8, vpx_sad8x8, vpx_sad8x8_avg, |
| 1846 vp9_variance8x8, vp9_sub_pixel_variance8x8, | 1851 vpx_variance8x8, vp9_sub_pixel_variance8x8, |
| 1847 vp9_sub_pixel_avg_variance8x8, | 1852 vp9_sub_pixel_avg_variance8x8, |
| 1848 vpx_sad8x8x3, vpx_sad8x8x8, vpx_sad8x8x4d) | 1853 vpx_sad8x8x3, vpx_sad8x8x8, vpx_sad8x8x4d) |
| 1849 | 1854 |
| 1850 BFP(BLOCK_8X4, vpx_sad8x4, vpx_sad8x4_avg, | 1855 BFP(BLOCK_8X4, vpx_sad8x4, vpx_sad8x4_avg, |
| 1851 vp9_variance8x4, vp9_sub_pixel_variance8x4, | 1856 vpx_variance8x4, vp9_sub_pixel_variance8x4, |
| 1852 vp9_sub_pixel_avg_variance8x4, NULL, vpx_sad8x4x8, vpx_sad8x4x4d) | 1857 vp9_sub_pixel_avg_variance8x4, NULL, vpx_sad8x4x8, vpx_sad8x4x4d) |
| 1853 | 1858 |
| 1854 BFP(BLOCK_4X8, vpx_sad4x8, vpx_sad4x8_avg, | 1859 BFP(BLOCK_4X8, vpx_sad4x8, vpx_sad4x8_avg, |
| 1855 vp9_variance4x8, vp9_sub_pixel_variance4x8, | 1860 vpx_variance4x8, vp9_sub_pixel_variance4x8, |
| 1856 vp9_sub_pixel_avg_variance4x8, NULL, vpx_sad4x8x8, vpx_sad4x8x4d) | 1861 vp9_sub_pixel_avg_variance4x8, NULL, vpx_sad4x8x8, vpx_sad4x8x4d) |
| 1857 | 1862 |
| 1858 BFP(BLOCK_4X4, vpx_sad4x4, vpx_sad4x4_avg, | 1863 BFP(BLOCK_4X4, vpx_sad4x4, vpx_sad4x4_avg, |
| 1859 vp9_variance4x4, vp9_sub_pixel_variance4x4, | 1864 vpx_variance4x4, vp9_sub_pixel_variance4x4, |
| 1860 vp9_sub_pixel_avg_variance4x4, | 1865 vp9_sub_pixel_avg_variance4x4, |
| 1861 vpx_sad4x4x3, vpx_sad4x4x8, vpx_sad4x4x4d) | 1866 vpx_sad4x4x3, vpx_sad4x4x8, vpx_sad4x4x4d) |
| 1862 | 1867 |
| 1863 #if CONFIG_VP9_HIGHBITDEPTH | 1868 #if CONFIG_VP9_HIGHBITDEPTH |
| 1864 highbd_set_var_fns(cpi); | 1869 highbd_set_var_fns(cpi); |
| 1865 #endif | 1870 #endif |
| 1866 | 1871 |
| 1867 /* vp9_init_quantizer() is first called here. Add check in | 1872 /* vp9_init_quantizer() is first called here. Add check in |
| 1868 * vp9_frame_init_quantizer() so that vp9_init_quantizer is only | 1873 * vp9_frame_init_quantizer() so that vp9_init_quantizer is only |
| 1869 * called later when needed. This will avoid unnecessary calls of | 1874 * called later when needed. This will avoid unnecessary calls of |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2069 variance(&a[(height - dh) * a_stride], a_stride, | 2074 variance(&a[(height - dh) * a_stride], a_stride, |
| 2070 &b[(height - dh) * b_stride], b_stride, | 2075 &b[(height - dh) * b_stride], b_stride, |
| 2071 width - dw, dh, &sse, &sum); | 2076 width - dw, dh, &sse, &sum); |
| 2072 total_sse += sse; | 2077 total_sse += sse; |
| 2073 } | 2078 } |
| 2074 | 2079 |
| 2075 for (y = 0; y < height / 16; ++y) { | 2080 for (y = 0; y < height / 16; ++y) { |
| 2076 const uint8_t *pa = a; | 2081 const uint8_t *pa = a; |
| 2077 const uint8_t *pb = b; | 2082 const uint8_t *pb = b; |
| 2078 for (x = 0; x < width / 16; ++x) { | 2083 for (x = 0; x < width / 16; ++x) { |
| 2079 vp9_mse16x16(pa, a_stride, pb, b_stride, &sse); | 2084 vpx_mse16x16(pa, a_stride, pb, b_stride, &sse); |
| 2080 total_sse += sse; | 2085 total_sse += sse; |
| 2081 | 2086 |
| 2082 pa += 16; | 2087 pa += 16; |
| 2083 pb += 16; | 2088 pb += 16; |
| 2084 } | 2089 } |
| 2085 | 2090 |
| 2086 a += 16 * a_stride; | 2091 a += 16 * a_stride; |
| 2087 b += 16 * b_stride; | 2092 b += 16 * b_stride; |
| 2088 } | 2093 } |
| 2089 | 2094 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2114 static int64_t highbd_get_sse(const uint8_t *a, int a_stride, | 2119 static int64_t highbd_get_sse(const uint8_t *a, int a_stride, |
| 2115 const uint8_t *b, int b_stride, | 2120 const uint8_t *b, int b_stride, |
| 2116 int width, int height) { | 2121 int width, int height) { |
| 2117 int64_t total_sse = 0; | 2122 int64_t total_sse = 0; |
| 2118 int x, y; | 2123 int x, y; |
| 2119 const int dw = width % 16; | 2124 const int dw = width % 16; |
| 2120 const int dh = height % 16; | 2125 const int dh = height % 16; |
| 2121 unsigned int sse = 0; | 2126 unsigned int sse = 0; |
| 2122 int sum = 0; | 2127 int sum = 0; |
| 2123 if (dw > 0) { | 2128 if (dw > 0) { |
| 2124 highbd_variance(&a[width - dw], a_stride, &b[width - dw], b_stride, | 2129 highbd_8_variance(&a[width - dw], a_stride, &b[width - dw], b_stride, |
| 2125 dw, height, &sse, &sum); | 2130 dw, height, &sse, &sum); |
| 2126 total_sse += sse; | 2131 total_sse += sse; |
| 2127 } | 2132 } |
| 2128 if (dh > 0) { | 2133 if (dh > 0) { |
| 2129 highbd_variance(&a[(height - dh) * a_stride], a_stride, | 2134 highbd_8_variance(&a[(height - dh) * a_stride], a_stride, |
| 2130 &b[(height - dh) * b_stride], b_stride, | 2135 &b[(height - dh) * b_stride], b_stride, |
| 2131 width - dw, dh, &sse, &sum); | 2136 width - dw, dh, &sse, &sum); |
| 2132 total_sse += sse; | 2137 total_sse += sse; |
| 2133 } | 2138 } |
| 2134 for (y = 0; y < height / 16; ++y) { | 2139 for (y = 0; y < height / 16; ++y) { |
| 2135 const uint8_t *pa = a; | 2140 const uint8_t *pa = a; |
| 2136 const uint8_t *pb = b; | 2141 const uint8_t *pb = b; |
| 2137 for (x = 0; x < width / 16; ++x) { | 2142 for (x = 0; x < width / 16; ++x) { |
| 2138 vp9_highbd_mse16x16(pa, a_stride, pb, b_stride, &sse); | 2143 vpx_highbd_8_mse16x16(pa, a_stride, pb, b_stride, &sse); |
| 2139 total_sse += sse; | 2144 total_sse += sse; |
| 2140 pa += 16; | 2145 pa += 16; |
| 2141 pb += 16; | 2146 pb += 16; |
| 2142 } | 2147 } |
| 2143 a += 16 * a_stride; | 2148 a += 16 * a_stride; |
| 2144 b += 16 * b_stride; | 2149 b += 16 * b_stride; |
| 2145 } | 2150 } |
| 2146 return total_sse; | 2151 return total_sse; |
| 2147 } | 2152 } |
| 2148 #endif // CONFIG_VP9_HIGHBITDEPTH | 2153 #endif // CONFIG_VP9_HIGHBITDEPTH |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2704 ref_frame); | 2709 ref_frame); |
| 2705 | 2710 |
| 2706 if (ref == NULL) { | 2711 if (ref == NULL) { |
| 2707 cpi->scaled_ref_idx[ref_frame - 1] = INVALID_IDX; | 2712 cpi->scaled_ref_idx[ref_frame - 1] = INVALID_IDX; |
| 2708 continue; | 2713 continue; |
| 2709 } | 2714 } |
| 2710 | 2715 |
| 2711 #if CONFIG_VP9_HIGHBITDEPTH | 2716 #if CONFIG_VP9_HIGHBITDEPTH |
| 2712 if (ref->y_crop_width != cm->width || ref->y_crop_height != cm->height) { | 2717 if (ref->y_crop_width != cm->width || ref->y_crop_height != cm->height) { |
| 2713 const int new_fb = get_free_fb(cm); | 2718 const int new_fb = get_free_fb(cm); |
| 2714 RefCntBuffer *const new_fb_ptr = &pool->frame_bufs[new_fb]; | 2719 RefCntBuffer *new_fb_ptr = NULL; |
| 2720 if (cm->new_fb_idx == INVALID_IDX) |
| 2721 return; |
| 2722 new_fb_ptr = &pool->frame_bufs[new_fb]; |
| 2715 cm->cur_frame = &pool->frame_bufs[new_fb]; | 2723 cm->cur_frame = &pool->frame_bufs[new_fb]; |
| 2716 vp9_realloc_frame_buffer(&pool->frame_bufs[new_fb].buf, | 2724 vp9_realloc_frame_buffer(&pool->frame_bufs[new_fb].buf, |
| 2717 cm->width, cm->height, | 2725 cm->width, cm->height, |
| 2718 cm->subsampling_x, cm->subsampling_y, | 2726 cm->subsampling_x, cm->subsampling_y, |
| 2719 cm->use_highbitdepth, | 2727 cm->use_highbitdepth, |
| 2720 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, | 2728 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, |
| 2721 NULL, NULL, NULL); | 2729 NULL, NULL, NULL); |
| 2722 scale_and_extend_frame(ref, &new_fb_ptr->buf, (int)cm->bit_depth); | 2730 scale_and_extend_frame(ref, &new_fb_ptr->buf, (int)cm->bit_depth); |
| 2723 #else | 2731 #else |
| 2724 if (ref->y_crop_width != cm->width || ref->y_crop_height != cm->height) { | 2732 if (ref->y_crop_width != cm->width || ref->y_crop_height != cm->height) { |
| 2725 const int new_fb = get_free_fb(cm); | 2733 const int new_fb = get_free_fb(cm); |
| 2726 RefCntBuffer *const new_fb_ptr = &pool->frame_bufs[new_fb]; | 2734 RefCntBuffer *new_fb_ptr = NULL; |
| 2735 if (cm->new_fb_idx == INVALID_IDX) |
| 2736 return; |
| 2737 new_fb_ptr = &pool->frame_bufs[new_fb]; |
| 2727 vp9_realloc_frame_buffer(&new_fb_ptr->buf, | 2738 vp9_realloc_frame_buffer(&new_fb_ptr->buf, |
| 2728 cm->width, cm->height, | 2739 cm->width, cm->height, |
| 2729 cm->subsampling_x, cm->subsampling_y, | 2740 cm->subsampling_x, cm->subsampling_y, |
| 2730 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, | 2741 VP9_ENC_BORDER_IN_PIXELS, cm->byte_alignment, |
| 2731 NULL, NULL, NULL); | 2742 NULL, NULL, NULL); |
| 2732 scale_and_extend_frame(ref, &new_fb_ptr->buf); | 2743 scale_and_extend_frame(ref, &new_fb_ptr->buf); |
| 2733 #endif // CONFIG_VP9_HIGHBITDEPTH | 2744 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 2734 cpi->scaled_ref_idx[ref_frame - 1] = new_fb; | 2745 cpi->scaled_ref_idx[ref_frame - 1] = new_fb; |
| 2735 | 2746 |
| 2736 alloc_frame_mvs(cm, new_fb); | 2747 alloc_frame_mvs(cm, new_fb); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2785 static void output_frame_level_debug_stats(VP9_COMP *cpi) { | 2796 static void output_frame_level_debug_stats(VP9_COMP *cpi) { |
| 2786 VP9_COMMON *const cm = &cpi->common; | 2797 VP9_COMMON *const cm = &cpi->common; |
| 2787 FILE *const f = fopen("tmp.stt", cm->current_video_frame ? "a" : "w"); | 2798 FILE *const f = fopen("tmp.stt", cm->current_video_frame ? "a" : "w"); |
| 2788 int64_t recon_err; | 2799 int64_t recon_err; |
| 2789 | 2800 |
| 2790 vp9_clear_system_state(); | 2801 vp9_clear_system_state(); |
| 2791 | 2802 |
| 2792 recon_err = vp9_get_y_sse(cpi->Source, get_frame_new_buffer(cm)); | 2803 recon_err = vp9_get_y_sse(cpi->Source, get_frame_new_buffer(cm)); |
| 2793 | 2804 |
| 2794 if (cpi->twopass.total_left_stats.coded_error != 0.0) | 2805 if (cpi->twopass.total_left_stats.coded_error != 0.0) |
| 2795 fprintf(f, "%10u %dx%d %10d %10d %10d %10d" | 2806 fprintf(f, "%10u %dx%d %d %d %10d %10d %10d %10d" |
| 2796 "%10"PRId64" %10"PRId64" %10"PRId64" %10"PRId64" %10d " | 2807 "%10"PRId64" %10"PRId64" %5d %5d %10"PRId64" " |
| 2797 "%7.2lf %7.2lf %7.2lf %7.2lf %7.2lf" | 2808 "%10"PRId64" %10"PRId64" %10d " |
| 2809 "%7.2lf %7.2lf %7.2lf %7.2lf %7.2lf" |
| 2798 "%6d %6d %5d %5d %5d " | 2810 "%6d %6d %5d %5d %5d " |
| 2799 "%10"PRId64" %10.3lf" | 2811 "%10"PRId64" %10.3lf" |
| 2800 "%10lf %8u %10"PRId64" %10d %10d\n", | 2812 "%10lf %8u %10"PRId64" %10d %10d\n", |
| 2801 cpi->common.current_video_frame, | 2813 cpi->common.current_video_frame, |
| 2802 cm->width, cm->height, | 2814 cm->width, cm->height, |
| 2815 cpi->rc.source_alt_ref_pending, |
| 2816 cpi->rc.source_alt_ref_active, |
| 2803 cpi->rc.this_frame_target, | 2817 cpi->rc.this_frame_target, |
| 2804 cpi->rc.projected_frame_size, | 2818 cpi->rc.projected_frame_size, |
| 2805 cpi->rc.projected_frame_size / cpi->common.MBs, | 2819 cpi->rc.projected_frame_size / cpi->common.MBs, |
| 2806 (cpi->rc.projected_frame_size - cpi->rc.this_frame_target), | 2820 (cpi->rc.projected_frame_size - cpi->rc.this_frame_target), |
| 2807 cpi->rc.vbr_bits_off_target, | 2821 cpi->rc.vbr_bits_off_target, |
| 2822 cpi->rc.vbr_bits_off_target_fast, |
| 2823 cpi->twopass.extend_minq, |
| 2824 cpi->twopass.extend_minq_fast, |
| 2808 cpi->rc.total_target_vs_actual, | 2825 cpi->rc.total_target_vs_actual, |
| 2809 (cpi->rc.starting_buffer_level - cpi->rc.bits_off_target), | 2826 (cpi->rc.starting_buffer_level - cpi->rc.bits_off_target), |
| 2810 cpi->rc.total_actual_bits, cm->base_qindex, | 2827 cpi->rc.total_actual_bits, cm->base_qindex, |
| 2811 vp9_convert_qindex_to_q(cm->base_qindex, cm->bit_depth), | 2828 vp9_convert_qindex_to_q(cm->base_qindex, cm->bit_depth), |
| 2812 (double)vp9_dc_quant(cm->base_qindex, 0, cm->bit_depth) / 4.0, | 2829 (double)vp9_dc_quant(cm->base_qindex, 0, cm->bit_depth) / 4.0, |
| 2813 vp9_convert_qindex_to_q(cpi->twopass.active_worst_quality, | 2830 vp9_convert_qindex_to_q(cpi->twopass.active_worst_quality, |
| 2814 cm->bit_depth), | 2831 cm->bit_depth), |
| 2815 cpi->rc.avg_q, | 2832 cpi->rc.avg_q, |
| 2816 vp9_convert_qindex_to_q(cpi->oxcf.cq_level, cm->bit_depth), | 2833 vp9_convert_qindex_to_q(cpi->oxcf.cq_level, cm->bit_depth), |
| 2817 cpi->refresh_last_frame, cpi->refresh_golden_frame, | 2834 cpi->refresh_last_frame, cpi->refresh_golden_frame, |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2926 static void init_motion_estimation(VP9_COMP *cpi) { | 2943 static void init_motion_estimation(VP9_COMP *cpi) { |
| 2927 int y_stride = cpi->scaled_source.y_stride; | 2944 int y_stride = cpi->scaled_source.y_stride; |
| 2928 | 2945 |
| 2929 if (cpi->sf.mv.search_method == NSTEP) { | 2946 if (cpi->sf.mv.search_method == NSTEP) { |
| 2930 vp9_init3smotion_compensation(&cpi->ss_cfg, y_stride); | 2947 vp9_init3smotion_compensation(&cpi->ss_cfg, y_stride); |
| 2931 } else if (cpi->sf.mv.search_method == DIAMOND) { | 2948 } else if (cpi->sf.mv.search_method == DIAMOND) { |
| 2932 vp9_init_dsmotion_compensation(&cpi->ss_cfg, y_stride); | 2949 vp9_init_dsmotion_compensation(&cpi->ss_cfg, y_stride); |
| 2933 } | 2950 } |
| 2934 } | 2951 } |
| 2935 | 2952 |
| 2936 void set_frame_size(VP9_COMP *cpi) { | 2953 static void set_frame_size(VP9_COMP *cpi) { |
| 2937 int ref_frame; | 2954 int ref_frame; |
| 2938 VP9_COMMON *const cm = &cpi->common; | 2955 VP9_COMMON *const cm = &cpi->common; |
| 2939 VP9EncoderConfig *const oxcf = &cpi->oxcf; | 2956 VP9EncoderConfig *const oxcf = &cpi->oxcf; |
| 2940 MACROBLOCKD *const xd = &cpi->td.mb.e_mbd; | 2957 MACROBLOCKD *const xd = &cpi->td.mb.e_mbd; |
| 2941 | 2958 |
| 2942 if (oxcf->pass == 2 && | 2959 if (oxcf->pass == 2 && |
| 2943 oxcf->rc_mode == VPX_VBR && | 2960 oxcf->rc_mode == VPX_VBR && |
| 2944 ((oxcf->resize_mode == RESIZE_FIXED && cm->current_video_frame == 0) || | 2961 ((oxcf->resize_mode == RESIZE_FIXED && cm->current_video_frame == 0) || |
| 2945 (oxcf->resize_mode == RESIZE_DYNAMIC && cpi->resize_pending))) { | 2962 (oxcf->resize_mode == RESIZE_DYNAMIC && cpi->resize_pending))) { |
| 2946 calculate_coded_size( | 2963 calculate_coded_size( |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3019 &cpi->scaled_last_source); | 3036 &cpi->scaled_last_source); |
| 3020 | 3037 |
| 3021 if (frame_is_intra_only(cm) == 0) { | 3038 if (frame_is_intra_only(cm) == 0) { |
| 3022 vp9_scale_references(cpi); | 3039 vp9_scale_references(cpi); |
| 3023 } | 3040 } |
| 3024 | 3041 |
| 3025 set_size_independent_vars(cpi); | 3042 set_size_independent_vars(cpi); |
| 3026 set_size_dependent_vars(cpi, &q, &bottom_index, &top_index); | 3043 set_size_dependent_vars(cpi, &q, &bottom_index, &top_index); |
| 3027 | 3044 |
| 3028 vp9_set_quantizer(cm, q); | 3045 vp9_set_quantizer(cm, q); |
| 3029 vp9_set_vbp_thresholds(cpi, q); | 3046 vp9_set_variance_partition_thresholds(cpi, q); |
| 3030 | 3047 |
| 3031 setup_frame(cpi); | 3048 setup_frame(cpi); |
| 3032 | 3049 |
| 3033 vp9_suppress_active_map(cpi); | 3050 suppress_active_map(cpi); |
| 3034 // Variance adaptive and in frame q adjustment experiments are mutually | 3051 // Variance adaptive and in frame q adjustment experiments are mutually |
| 3035 // exclusive. | 3052 // exclusive. |
| 3036 if (cpi->oxcf.aq_mode == VARIANCE_AQ) { | 3053 if (cpi->oxcf.aq_mode == VARIANCE_AQ) { |
| 3037 vp9_vaq_frame_setup(cpi); | 3054 vp9_vaq_frame_setup(cpi); |
| 3038 } else if (cpi->oxcf.aq_mode == COMPLEXITY_AQ) { | 3055 } else if (cpi->oxcf.aq_mode == COMPLEXITY_AQ) { |
| 3039 vp9_setup_in_frame_q_adj(cpi); | 3056 vp9_setup_in_frame_q_adj(cpi); |
| 3040 } else if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) { | 3057 } else if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ) { |
| 3041 vp9_cyclic_refresh_setup(cpi); | 3058 vp9_cyclic_refresh_setup(cpi); |
| 3042 } | 3059 } |
| 3043 vp9_apply_active_map(cpi); | 3060 apply_active_map(cpi); |
| 3044 | 3061 |
| 3045 // transform / motion compensation build reconstruction frame | 3062 // transform / motion compensation build reconstruction frame |
| 3046 vp9_encode_frame(cpi); | 3063 vp9_encode_frame(cpi); |
| 3047 | 3064 |
| 3048 // Update some stats from cyclic refresh, and check if we should not update | 3065 // Update some stats from cyclic refresh, and check if we should not update |
| 3049 // golden reference, for non-SVC 1 pass CBR. | 3066 // golden reference, for non-SVC 1 pass CBR. |
| 3050 if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ && | 3067 if (cpi->oxcf.aq_mode == CYCLIC_REFRESH_AQ && |
| 3051 cm->frame_type != KEY_FRAME && | 3068 cm->frame_type != KEY_FRAME && |
| 3052 !cpi->use_svc && | 3069 !cpi->use_svc && |
| 3053 (cpi->oxcf.pass == 0 && cpi->oxcf.rc_mode == VPX_CBR)) | 3070 (cpi->oxcf.pass == 0 && cpi->oxcf.rc_mode == VPX_CBR)) |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3387 arf_sign_bias = cpi->rc.source_alt_ref_active && | 3404 arf_sign_bias = cpi->rc.source_alt_ref_active && |
| 3388 (!cpi->refresh_alt_ref_frame || | 3405 (!cpi->refresh_alt_ref_frame || |
| 3389 (gf_group->rf_level[gf_group->index] == GF_ARF_LOW)); | 3406 (gf_group->rf_level[gf_group->index] == GF_ARF_LOW)); |
| 3390 } else { | 3407 } else { |
| 3391 arf_sign_bias = | 3408 arf_sign_bias = |
| 3392 (cpi->rc.source_alt_ref_active && !cpi->refresh_alt_ref_frame); | 3409 (cpi->rc.source_alt_ref_active && !cpi->refresh_alt_ref_frame); |
| 3393 } | 3410 } |
| 3394 cm->ref_frame_sign_bias[ALTREF_FRAME] = arf_sign_bias; | 3411 cm->ref_frame_sign_bias[ALTREF_FRAME] = arf_sign_bias; |
| 3395 } | 3412 } |
| 3396 | 3413 |
| 3397 int setup_interp_filter_search_mask(VP9_COMP *cpi) { | 3414 static int setup_interp_filter_search_mask(VP9_COMP *cpi) { |
| 3398 INTERP_FILTER ifilter; | 3415 INTERP_FILTER ifilter; |
| 3399 int ref_total[MAX_REF_FRAMES] = {0}; | 3416 int ref_total[MAX_REF_FRAMES] = {0}; |
| 3400 MV_REFERENCE_FRAME ref; | 3417 MV_REFERENCE_FRAME ref; |
| 3401 int mask = 0; | 3418 int mask = 0; |
| 3402 if (cpi->common.last_frame_type == KEY_FRAME || | 3419 if (cpi->common.last_frame_type == KEY_FRAME || |
| 3403 cpi->refresh_alt_ref_frame) | 3420 cpi->refresh_alt_ref_frame) |
| 3404 return mask; | 3421 return mask; |
| 3405 for (ref = LAST_FRAME; ref <= ALTREF_FRAME; ++ref) | 3422 for (ref = LAST_FRAME; ref <= ALTREF_FRAME; ++ref) |
| 3406 for (ifilter = EIGHTTAP; ifilter <= EIGHTTAP_SHARP; ++ifilter) | 3423 for (ifilter = EIGHTTAP; ifilter <= EIGHTTAP_SHARP; ++ifilter) |
| 3407 ref_total[ref] += cpi->interp_filter_selected[ref][ifilter]; | 3424 ref_total[ref] += cpi->interp_filter_selected[ref][ifilter]; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3464 if (cm->error_resilient_mode) { | 3481 if (cm->error_resilient_mode) { |
| 3465 cm->frame_parallel_decoding_mode = 1; | 3482 cm->frame_parallel_decoding_mode = 1; |
| 3466 cm->reset_frame_context = 0; | 3483 cm->reset_frame_context = 0; |
| 3467 cm->refresh_frame_context = 0; | 3484 cm->refresh_frame_context = 0; |
| 3468 } else if (cm->intra_only) { | 3485 } else if (cm->intra_only) { |
| 3469 // Only reset the current context. | 3486 // Only reset the current context. |
| 3470 cm->reset_frame_context = 2; | 3487 cm->reset_frame_context = 2; |
| 3471 } | 3488 } |
| 3472 } | 3489 } |
| 3473 if (is_two_pass_svc(cpi) && cm->error_resilient_mode == 0) { | 3490 if (is_two_pass_svc(cpi) && cm->error_resilient_mode == 0) { |
| 3474 // Use the last frame context for the empty frame. | 3491 // Use context 0 for intra only empty frame, but the last frame context |
| 3492 // for other empty frames. |
| 3493 if (cpi->svc.encode_empty_frame_state == ENCODING) { |
| 3494 if (cpi->svc.encode_intra_empty_frame != 0) |
| 3495 cm->frame_context_idx = 0; |
| 3496 else |
| 3497 cm->frame_context_idx = FRAME_CONTEXTS - 1; |
| 3498 } else { |
| 3475 cm->frame_context_idx = | 3499 cm->frame_context_idx = |
| 3476 (cpi->svc.encode_empty_frame_state == ENCODING) ? FRAME_CONTEXTS - 1 : | |
| 3477 cpi->svc.spatial_layer_id * cpi->svc.number_temporal_layers + | 3500 cpi->svc.spatial_layer_id * cpi->svc.number_temporal_layers + |
| 3478 cpi->svc.temporal_layer_id; | 3501 cpi->svc.temporal_layer_id; |
| 3502 } |
| 3503 |
| 3504 cm->frame_parallel_decoding_mode = oxcf->frame_parallel_decoding_mode; |
| 3479 | 3505 |
| 3480 // The probs will be updated based on the frame type of its previous | 3506 // The probs will be updated based on the frame type of its previous |
| 3481 // frame if frame_parallel_decoding_mode is 0. The type may vary for | 3507 // frame if frame_parallel_decoding_mode is 0. The type may vary for |
| 3482 // the frame after a key frame in base layer since we may drop enhancement | 3508 // the frame after a key frame in base layer since we may drop enhancement |
| 3483 // layers. So set frame_parallel_decoding_mode to 1 in this case. | 3509 // layers. So set frame_parallel_decoding_mode to 1 in this case. |
| 3484 if (cpi->svc.number_temporal_layers == 1) { | 3510 if (cm->frame_parallel_decoding_mode == 0) { |
| 3485 if (cpi->svc.spatial_layer_id == 0 && | 3511 if (cpi->svc.number_temporal_layers == 1) { |
| 3486 cpi->svc.layer_context[0].last_frame_type == KEY_FRAME) | 3512 if (cpi->svc.spatial_layer_id == 0 && |
| 3487 cm->frame_parallel_decoding_mode = 1; | 3513 cpi->svc.layer_context[0].last_frame_type == KEY_FRAME) |
| 3488 else | |
| 3489 cm->frame_parallel_decoding_mode = 0; | |
| 3490 } else if (cpi->svc.spatial_layer_id == 0) { | |
| 3491 // Find the 2nd frame in temporal base layer and 1st frame in temporal | |
| 3492 // enhancement layers from the key frame. | |
| 3493 int i; | |
| 3494 for (i = 0; i < cpi->svc.number_temporal_layers; ++i) { | |
| 3495 if (cpi->svc.layer_context[0].frames_from_key_frame == 1 << i) { | |
| 3496 cm->frame_parallel_decoding_mode = 1; | 3514 cm->frame_parallel_decoding_mode = 1; |
| 3497 break; | 3515 } else if (cpi->svc.spatial_layer_id == 0) { |
| 3516 // Find the 2nd frame in temporal base layer and 1st frame in temporal |
| 3517 // enhancement layers from the key frame. |
| 3518 int i; |
| 3519 for (i = 0; i < cpi->svc.number_temporal_layers; ++i) { |
| 3520 if (cpi->svc.layer_context[0].frames_from_key_frame == 1 << i) { |
| 3521 cm->frame_parallel_decoding_mode = 1; |
| 3522 break; |
| 3523 } |
| 3498 } | 3524 } |
| 3499 } | 3525 } |
| 3500 if (i == cpi->svc.number_temporal_layers) | |
| 3501 cm->frame_parallel_decoding_mode = 0; | |
| 3502 } | 3526 } |
| 3503 } | 3527 } |
| 3504 | 3528 |
| 3505 // For 1 pass CBR, check if we are dropping this frame. | 3529 // For 1 pass CBR, check if we are dropping this frame. |
| 3506 // Never drop on key frame. | 3530 // Never drop on key frame. |
| 3507 if (oxcf->pass == 0 && | 3531 if (oxcf->pass == 0 && |
| 3508 oxcf->rc_mode == VPX_CBR && | 3532 oxcf->rc_mode == VPX_CBR && |
| 3509 cm->frame_type != KEY_FRAME) { | 3533 cm->frame_type != KEY_FRAME) { |
| 3510 if (vp9_rc_drop_frame(cpi)) { | 3534 if (vp9_rc_drop_frame(cpi)) { |
| 3511 vp9_rc_postencode_update_drop_frame(cpi); | 3535 vp9_rc_postencode_update_drop_frame(cpi); |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3781 return cm->frame_type == KEY_FRAME || | 3805 return cm->frame_type == KEY_FRAME || |
| 3782 cpi->refresh_last_frame || | 3806 cpi->refresh_last_frame || |
| 3783 cpi->refresh_golden_frame || | 3807 cpi->refresh_golden_frame || |
| 3784 cpi->refresh_alt_ref_frame || | 3808 cpi->refresh_alt_ref_frame || |
| 3785 cm->refresh_frame_context || | 3809 cm->refresh_frame_context || |
| 3786 cm->lf.mode_ref_delta_update || | 3810 cm->lf.mode_ref_delta_update || |
| 3787 cm->seg.update_map || | 3811 cm->seg.update_map || |
| 3788 cm->seg.update_data; | 3812 cm->seg.update_data; |
| 3789 } | 3813 } |
| 3790 | 3814 |
| 3791 void adjust_frame_rate(VP9_COMP *cpi, | 3815 static void adjust_frame_rate(VP9_COMP *cpi, |
| 3792 const struct lookahead_entry *source) { | 3816 const struct lookahead_entry *source) { |
| 3793 int64_t this_duration; | 3817 int64_t this_duration; |
| 3794 int step = 0; | 3818 int step = 0; |
| 3795 | 3819 |
| 3796 if (source->ts_start == cpi->first_time_stamp_ever) { | 3820 if (source->ts_start == cpi->first_time_stamp_ever) { |
| 3797 this_duration = source->ts_end - source->ts_start; | 3821 this_duration = source->ts_end - source->ts_start; |
| 3798 step = 1; | 3822 step = 1; |
| 3799 } else { | 3823 } else { |
| 3800 int64_t last_duration = cpi->last_end_time_stamp_seen | 3824 int64_t last_duration = cpi->last_end_time_stamp_seen |
| 3801 - cpi->last_time_stamp_seen; | 3825 - cpi->last_time_stamp_seen; |
| 3802 | 3826 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3867 cpi->refresh_last_frame = 0; | 3891 cpi->refresh_last_frame = 0; |
| 3868 } | 3892 } |
| 3869 } | 3893 } |
| 3870 | 3894 |
| 3871 #if CONFIG_INTERNAL_STATS | 3895 #if CONFIG_INTERNAL_STATS |
| 3872 extern double vp9_get_blockiness(const unsigned char *img1, int img1_pitch, | 3896 extern double vp9_get_blockiness(const unsigned char *img1, int img1_pitch, |
| 3873 const unsigned char *img2, int img2_pitch, | 3897 const unsigned char *img2, int img2_pitch, |
| 3874 int width, int height); | 3898 int width, int height); |
| 3875 #endif | 3899 #endif |
| 3876 | 3900 |
| 3877 void adjust_image_stat(double y, double u, double v, double all, ImageStat *s) { | 3901 static void adjust_image_stat(double y, double u, double v, double all, |
| 3902 ImageStat *s) { |
| 3878 s->stat[Y] += y; | 3903 s->stat[Y] += y; |
| 3879 s->stat[U] += u; | 3904 s->stat[U] += u; |
| 3880 s->stat[V] += v; | 3905 s->stat[V] += v; |
| 3881 s->stat[ALL] += all; | 3906 s->stat[ALL] += all; |
| 3882 s->worst = MIN(s->worst, all); | 3907 s->worst = MIN(s->worst, all); |
| 3883 } | 3908 } |
| 3884 | 3909 |
| 3885 int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags, | 3910 int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags, |
| 3886 size_t *size, uint8_t *dest, | 3911 size_t *size, uint8_t *dest, |
| 3887 int64_t *time_stamp, int64_t *time_end, int flush) { | 3912 int64_t *time_stamp, int64_t *time_end, int flush) { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3955 #endif | 3980 #endif |
| 3956 | 3981 |
| 3957 if (oxcf->arnr_max_frames > 0) { | 3982 if (oxcf->arnr_max_frames > 0) { |
| 3958 // Produce the filtered ARF frame. | 3983 // Produce the filtered ARF frame. |
| 3959 vp9_temporal_filter(cpi, arf_src_index); | 3984 vp9_temporal_filter(cpi, arf_src_index); |
| 3960 vp9_extend_frame_borders(&cpi->alt_ref_buffer); | 3985 vp9_extend_frame_borders(&cpi->alt_ref_buffer); |
| 3961 force_src_buffer = &cpi->alt_ref_buffer; | 3986 force_src_buffer = &cpi->alt_ref_buffer; |
| 3962 } | 3987 } |
| 3963 | 3988 |
| 3964 cm->show_frame = 0; | 3989 cm->show_frame = 0; |
| 3990 cm->intra_only = 0; |
| 3965 cpi->refresh_alt_ref_frame = 1; | 3991 cpi->refresh_alt_ref_frame = 1; |
| 3966 cpi->refresh_golden_frame = 0; | 3992 cpi->refresh_golden_frame = 0; |
| 3967 cpi->refresh_last_frame = 0; | 3993 cpi->refresh_last_frame = 0; |
| 3968 rc->is_src_frame_alt_ref = 0; | 3994 rc->is_src_frame_alt_ref = 0; |
| 3969 rc->source_alt_ref_pending = 0; | 3995 rc->source_alt_ref_pending = 0; |
| 3970 } else { | 3996 } else { |
| 3971 rc->source_alt_ref_pending = 0; | 3997 rc->source_alt_ref_pending = 0; |
| 3972 } | 3998 } |
| 3973 } | 3999 } |
| 3974 | 4000 |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4173 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, | 4199 vpx_internal_error(&cm->error, VPX_CODEC_MEM_ERROR, |
| 4174 "Failed to allocate post processing buffer"); | 4200 "Failed to allocate post processing buffer"); |
| 4175 } | 4201 } |
| 4176 | 4202 |
| 4177 vp9_deblock(cm->frame_to_show, &cm->post_proc_buffer, | 4203 vp9_deblock(cm->frame_to_show, &cm->post_proc_buffer, |
| 4178 cm->lf.filter_level * 10 / 6); | 4204 cm->lf.filter_level * 10 / 6); |
| 4179 #endif | 4205 #endif |
| 4180 vp9_clear_system_state(); | 4206 vp9_clear_system_state(); |
| 4181 | 4207 |
| 4182 #if CONFIG_VP9_HIGHBITDEPTH | 4208 #if CONFIG_VP9_HIGHBITDEPTH |
| 4183 calc_highbd_psnr(orig, pp, &psnr, cpi->td.mb.e_mbd.bd, | 4209 calc_highbd_psnr(orig, pp, &psnr2, cpi->td.mb.e_mbd.bd, |
| 4184 cpi->oxcf.input_bit_depth); | 4210 cpi->oxcf.input_bit_depth); |
| 4185 #else | 4211 #else |
| 4186 calc_psnr(orig, pp, &psnr2); | 4212 calc_psnr(orig, pp, &psnr2); |
| 4187 #endif // CONFIG_VP9_HIGHBITDEPTH | 4213 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 4188 | 4214 |
| 4189 cpi->totalp_sq_error += psnr2.sse[0]; | 4215 cpi->totalp_sq_error += psnr2.sse[0]; |
| 4190 cpi->totalp_samples += psnr2.samples[0]; | 4216 cpi->totalp_samples += psnr2.samples[0]; |
| 4191 adjust_image_stat(psnr2.psnr[1], psnr2.psnr[2], psnr2.psnr[3], | 4217 adjust_image_stat(psnr2.psnr[1], psnr2.psnr[2], psnr2.psnr[3], |
| 4192 psnr2.psnr[0], &cpi->psnrp); | 4218 psnr2.psnr[0], &cpi->psnrp); |
| 4193 | 4219 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 4224 FILE *f = fopen("q_used.stt", "a"); | 4250 FILE *f = fopen("q_used.stt", "a"); |
| 4225 fprintf(f, "%5d : Y%f7.3:U%f7.3:V%f7.3:F%f7.3:S%7.3f\n", | 4251 fprintf(f, "%5d : Y%f7.3:U%f7.3:V%f7.3:F%f7.3:S%7.3f\n", |
| 4226 cpi->common.current_video_frame, y2, u2, v2, | 4252 cpi->common.current_video_frame, y2, u2, v2, |
| 4227 frame_psnr2, frame_ssim2); | 4253 frame_psnr2, frame_ssim2); |
| 4228 fclose(f); | 4254 fclose(f); |
| 4229 } | 4255 } |
| 4230 #endif | 4256 #endif |
| 4231 } | 4257 } |
| 4232 } | 4258 } |
| 4233 if (cpi->b_calculate_blockiness) { | 4259 if (cpi->b_calculate_blockiness) { |
| 4234 double frame_blockiness = vp9_get_blockiness( | 4260 #if CONFIG_VP9_HIGHBITDEPTH |
| 4235 cpi->Source->y_buffer, cpi->Source->y_stride, | 4261 if (!cm->use_highbitdepth) |
| 4236 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride, | 4262 #endif |
| 4237 cpi->Source->y_width, cpi->Source->y_height); | 4263 { |
| 4238 cpi->worst_blockiness = MAX(cpi->worst_blockiness, frame_blockiness); | 4264 double frame_blockiness = vp9_get_blockiness( |
| 4239 cpi->total_blockiness += frame_blockiness; | 4265 cpi->Source->y_buffer, cpi->Source->y_stride, |
| 4266 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride, |
| 4267 cpi->Source->y_width, cpi->Source->y_height); |
| 4268 cpi->worst_blockiness = MAX(cpi->worst_blockiness, frame_blockiness); |
| 4269 cpi->total_blockiness += frame_blockiness; |
| 4270 } |
| 4240 } | 4271 } |
| 4241 | 4272 |
| 4242 if (cpi->b_calculate_consistency) { | 4273 if (cpi->b_calculate_consistency) { |
| 4243 double this_inconsistency = vp9_get_ssim_metrics( | 4274 #if CONFIG_VP9_HIGHBITDEPTH |
| 4244 cpi->Source->y_buffer, cpi->Source->y_stride, | 4275 if (!cm->use_highbitdepth) |
| 4245 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride, | 4276 #endif |
| 4246 cpi->Source->y_width, cpi->Source->y_height, cpi->ssim_vars, | 4277 { |
| 4247 &cpi->metrics, 1); | 4278 double this_inconsistency = vp9_get_ssim_metrics( |
| 4279 cpi->Source->y_buffer, cpi->Source->y_stride, |
| 4280 cm->frame_to_show->y_buffer, cm->frame_to_show->y_stride, |
| 4281 cpi->Source->y_width, cpi->Source->y_height, cpi->ssim_vars, |
| 4282 &cpi->metrics, 1); |
| 4248 | 4283 |
| 4249 const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1); | 4284 const double peak = (double)((1 << cpi->oxcf.input_bit_depth) - 1); |
| 4250 | 4285 double consistency = vpx_sse_to_psnr(samples, peak, |
| 4251 | |
| 4252 double consistency = vpx_sse_to_psnr(samples, peak, | |
| 4253 (double)cpi->total_inconsistency); | 4286 (double)cpi->total_inconsistency); |
| 4254 | 4287 if (consistency > 0.0) |
| 4255 if (consistency > 0.0) | 4288 cpi->worst_consistency = MIN(cpi->worst_consistency, |
| 4256 cpi->worst_consistency = MIN(cpi->worst_consistency, | 4289 consistency); |
| 4257 consistency); | 4290 cpi->total_inconsistency += this_inconsistency; |
| 4258 cpi->total_inconsistency += this_inconsistency; | 4291 } |
| 4259 } | 4292 } |
| 4260 | 4293 |
| 4261 if (cpi->b_calculate_ssimg) { | 4294 if (cpi->b_calculate_ssimg) { |
| 4262 double y, u, v, frame_all; | 4295 double y, u, v, frame_all; |
| 4263 #if CONFIG_VP9_HIGHBITDEPTH | 4296 #if CONFIG_VP9_HIGHBITDEPTH |
| 4264 if (cm->use_highbitdepth) { | 4297 if (cm->use_highbitdepth) { |
| 4265 frame_all = vp9_highbd_calc_ssimg(cpi->Source, cm->frame_to_show, &y, | 4298 frame_all = vp9_highbd_calc_ssimg(cpi->Source, cm->frame_to_show, &y, |
| 4266 &u, &v, (int)cm->bit_depth); | 4299 &u, &v, (int)cm->bit_depth); |
| 4267 } else { | 4300 } else { |
| 4268 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, | 4301 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, |
| 4269 &v); | 4302 &v); |
| 4270 } | 4303 } |
| 4271 #else | 4304 #else |
| 4272 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, &v); | 4305 frame_all = vp9_calc_ssimg(cpi->Source, cm->frame_to_show, &y, &u, &v); |
| 4273 #endif // CONFIG_VP9_HIGHBITDEPTH | 4306 #endif // CONFIG_VP9_HIGHBITDEPTH |
| 4274 adjust_image_stat(y, u, v, frame_all, &cpi->ssimg); | 4307 adjust_image_stat(y, u, v, frame_all, &cpi->ssimg); |
| 4275 } | 4308 } |
| 4309 #if CONFIG_VP9_HIGHBITDEPTH |
| 4310 if (!cm->use_highbitdepth) |
| 4311 #endif |
| 4276 { | 4312 { |
| 4277 double y, u, v, frame_all; | 4313 double y, u, v, frame_all; |
| 4278 frame_all = vp9_calc_fastssim(cpi->Source, cm->frame_to_show, &y, &u, | 4314 frame_all = vp9_calc_fastssim(cpi->Source, cm->frame_to_show, &y, &u, |
| 4279 &v); | 4315 &v); |
| 4280 adjust_image_stat(y, u, v, frame_all, &cpi->fastssim); | 4316 adjust_image_stat(y, u, v, frame_all, &cpi->fastssim); |
| 4281 /* TODO(JBB): add 10/12 bit support */ | 4317 /* TODO(JBB): add 10/12 bit support */ |
| 4282 } | 4318 } |
| 4319 #if CONFIG_VP9_HIGHBITDEPTH |
| 4320 if (!cm->use_highbitdepth) |
| 4321 #endif |
| 4283 { | 4322 { |
| 4284 double y, u, v, frame_all; | 4323 double y, u, v, frame_all; |
| 4285 frame_all = vp9_psnrhvs(cpi->Source, cm->frame_to_show, &y, &u, &v); | 4324 frame_all = vp9_psnrhvs(cpi->Source, cm->frame_to_show, &y, &u, &v); |
| 4286 adjust_image_stat(y, u, v, frame_all, &cpi->psnrhvs); | 4325 adjust_image_stat(y, u, v, frame_all, &cpi->psnrhvs); |
| 4287 } | 4326 } |
| 4288 } | 4327 } |
| 4289 } | 4328 } |
| 4290 | 4329 |
| 4291 #endif | 4330 #endif |
| 4292 | 4331 |
| 4293 if (is_two_pass_svc(cpi)) { | 4332 if (is_two_pass_svc(cpi)) { |
| 4294 if (cpi->svc.encode_empty_frame_state == ENCODING) | 4333 if (cpi->svc.encode_empty_frame_state == ENCODING) { |
| 4295 cpi->svc.encode_empty_frame_state = ENCODED; | 4334 cpi->svc.encode_empty_frame_state = ENCODED; |
| 4335 cpi->svc.encode_intra_empty_frame = 0; |
| 4336 } |
| 4296 | 4337 |
| 4297 if (cm->show_frame) { | 4338 if (cm->show_frame) { |
| 4298 ++cpi->svc.spatial_layer_to_encode; | 4339 ++cpi->svc.spatial_layer_to_encode; |
| 4299 if (cpi->svc.spatial_layer_to_encode >= cpi->svc.number_spatial_layers) | 4340 if (cpi->svc.spatial_layer_to_encode >= cpi->svc.number_spatial_layers) |
| 4300 cpi->svc.spatial_layer_to_encode = 0; | 4341 cpi->svc.spatial_layer_to_encode = 0; |
| 4301 | 4342 |
| 4302 // May need the empty frame after an visible frame. | 4343 // May need the empty frame after an visible frame. |
| 4303 cpi->svc.encode_empty_frame_state = NEED_TO_ENCODE; | 4344 cpi->svc.encode_empty_frame_state = NEED_TO_ENCODE; |
| 4304 } | 4345 } |
| 4305 } | 4346 } |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4456 if (flags & VP8_EFLAG_NO_UPD_ARF) | 4497 if (flags & VP8_EFLAG_NO_UPD_ARF) |
| 4457 upd ^= VP9_ALT_FLAG; | 4498 upd ^= VP9_ALT_FLAG; |
| 4458 | 4499 |
| 4459 vp9_update_reference(cpi, upd); | 4500 vp9_update_reference(cpi, upd); |
| 4460 } | 4501 } |
| 4461 | 4502 |
| 4462 if (flags & VP8_EFLAG_NO_UPD_ENTROPY) { | 4503 if (flags & VP8_EFLAG_NO_UPD_ENTROPY) { |
| 4463 vp9_update_entropy(cpi, 0); | 4504 vp9_update_entropy(cpi, 0); |
| 4464 } | 4505 } |
| 4465 } | 4506 } |
| OLD | NEW |