Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Side by Side Diff: source/libvpx/vp9/common/vp9_pred_common.h

Issue 54923004: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « source/libvpx/vp9/common/vp9_postproc.c ('k') | source/libvpx/vp9/common/vp9_pred_common.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 #ifndef VP9_COMMON_VP9_PRED_COMMON_H_ 11 #ifndef VP9_COMMON_VP9_PRED_COMMON_H_
12 #define VP9_COMMON_VP9_PRED_COMMON_H_ 12 #define VP9_COMMON_VP9_PRED_COMMON_H_
13 13
14 #include "vp9/common/vp9_blockd.h" 14 #include "vp9/common/vp9_blockd.h"
15 #include "vp9/common/vp9_onyxc_int.h" 15 #include "vp9/common/vp9_onyxc_int.h"
16 16
17 static INLINE const MODE_INFO *get_above_mi(const MACROBLOCKD *const xd) {
18 return xd->up_available ? xd->mi_8x8[-xd->mode_info_stride] : NULL;
19 }
20
21 static INLINE const MODE_INFO *get_left_mi(const MACROBLOCKD *const xd) {
22 return xd->left_available ? xd->mi_8x8[-1] : NULL;
23 }
24
17 int vp9_get_segment_id(VP9_COMMON *cm, const uint8_t *segment_ids, 25 int vp9_get_segment_id(VP9_COMMON *cm, const uint8_t *segment_ids,
18 BLOCK_SIZE bsize, int mi_row, int mi_col); 26 BLOCK_SIZE bsize, int mi_row, int mi_col);
19 27
28 static INLINE int vp9_get_pred_context_seg_id(const MACROBLOCKD *xd) {
29 const MODE_INFO *const above_mi = get_above_mi(xd);
30 const MODE_INFO *const left_mi = get_left_mi(xd);
31 const int above_sip = (above_mi != NULL) ?
32 above_mi->mbmi.seg_id_predicted : 0;
33 const int left_sip = (left_mi != NULL) ? left_mi->mbmi.seg_id_predicted : 0;
20 34
21 static INLINE int vp9_get_pred_context_seg_id(const MACROBLOCKD *xd) { 35 return above_sip + left_sip;
22 const MODE_INFO * const above_mi = xd->mi_8x8[-xd->mode_info_stride];
23 const MODE_INFO * const left_mi = xd->mi_8x8[-1];
24 const int above_sip = above_mi ? above_mi->mbmi.seg_id_predicted : 0;
25 const int left_sip = left_mi ? left_mi->mbmi.seg_id_predicted : 0;
26
27 return above_sip + (xd->left_available ? left_sip : 0);
28 } 36 }
29 37
30 static INLINE vp9_prob vp9_get_pred_prob_seg_id(struct segmentation *seg, 38 static INLINE vp9_prob vp9_get_pred_prob_seg_id(struct segmentation *seg,
31 const MACROBLOCKD *xd) { 39 const MACROBLOCKD *xd) {
32 return seg->pred_probs[vp9_get_pred_context_seg_id(xd)]; 40 return seg->pred_probs[vp9_get_pred_context_seg_id(xd)];
33 } 41 }
34 42
35 void vp9_set_pred_flag_seg_id(MACROBLOCKD *xd, uint8_t pred_flag); 43 void vp9_set_pred_flag_seg_id(MACROBLOCKD *xd, uint8_t pred_flag);
36 44
37 static INLINE int vp9_get_pred_context_mbskip(const MACROBLOCKD *xd) { 45 static INLINE int vp9_get_pred_context_mbskip(const MACROBLOCKD *xd) {
38 const MODE_INFO * const above_mi = xd->mi_8x8[-xd->mode_info_stride]; 46 const MODE_INFO *const above_mi = get_above_mi(xd);
39 const MODE_INFO * const left_mi = xd->mi_8x8[-1]; 47 const MODE_INFO *const left_mi = get_left_mi(xd);
40 const int above_skip_coeff = above_mi ? above_mi->mbmi.skip_coeff : 0; 48 const int above_skip_coeff = (above_mi != NULL) ?
41 const int left_skip_coeff = left_mi ? left_mi->mbmi.skip_coeff : 0; 49 above_mi->mbmi.skip_coeff : 0;
50 const int left_skip_coeff = (left_mi != NULL) ? left_mi->mbmi.skip_coeff : 0;
42 51
43 return above_skip_coeff + (xd->left_available ? left_skip_coeff : 0); 52 return above_skip_coeff + left_skip_coeff;
44 } 53 }
45 54
46 static INLINE vp9_prob vp9_get_pred_prob_mbskip(const VP9_COMMON *cm, 55 static INLINE vp9_prob vp9_get_pred_prob_mbskip(const VP9_COMMON *cm,
47 const MACROBLOCKD *xd) { 56 const MACROBLOCKD *xd) {
48 return cm->fc.mbskip_probs[vp9_get_pred_context_mbskip(xd)]; 57 return cm->fc.mbskip_probs[vp9_get_pred_context_mbskip(xd)];
49 } 58 }
50 59
51 static INLINE unsigned char vp9_get_pred_flag_mbskip(const MACROBLOCKD *xd) { 60 static INLINE unsigned char vp9_get_pred_flag_mbskip(const MACROBLOCKD *xd) {
52 return xd->this_mi->mbmi.skip_coeff; 61 return xd->mi_8x8[0]->mbmi.skip_coeff;
53 } 62 }
54 63
55 void vp9_set_pred_flag_mbskip(MACROBLOCKD *xd, BLOCK_SIZE bsize,
56 uint8_t pred_flag);
57
58 unsigned char vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd); 64 unsigned char vp9_get_pred_context_switchable_interp(const MACROBLOCKD *xd);
59 65
60 unsigned char vp9_get_pred_context_intra_inter(const MACROBLOCKD *xd); 66 unsigned char vp9_get_pred_context_intra_inter(const MACROBLOCKD *xd);
61 67
62 static INLINE vp9_prob vp9_get_pred_prob_intra_inter(const VP9_COMMON *cm, 68 static INLINE vp9_prob vp9_get_pred_prob_intra_inter(const VP9_COMMON *cm,
63 const MACROBLOCKD *xd) { 69 const MACROBLOCKD *xd) {
64 const int pred_context = vp9_get_pred_context_intra_inter(xd); 70 const int pred_context = vp9_get_pred_context_intra_inter(xd);
65 return cm->fc.intra_inter_prob[pred_context]; 71 return cm->fc.intra_inter_prob[pred_context];
66 } 72 }
67 73
68 unsigned char vp9_get_pred_context_comp_inter_inter(const VP9_COMMON *cm, 74 unsigned char vp9_get_pred_context_comp_inter_inter(const VP9_COMMON *cm,
69 const MACROBLOCKD *xd); 75 const MACROBLOCKD *xd);
70 76
71 77
72 static INLINE vp9_prob vp9_get_pred_prob_comp_inter_inter(const VP9_COMMON *cm, 78 static INLINE
73 const MACROBLOCKD *xd) { 79 vp9_prob vp9_get_pred_prob_comp_inter_inter(const VP9_COMMON *cm,
80 const MACROBLOCKD *xd) {
74 const int pred_context = vp9_get_pred_context_comp_inter_inter(cm, xd); 81 const int pred_context = vp9_get_pred_context_comp_inter_inter(cm, xd);
75 return cm->fc.comp_inter_prob[pred_context]; 82 return cm->fc.comp_inter_prob[pred_context];
76 } 83 }
77 84
78 unsigned char vp9_get_pred_context_comp_ref_p(const VP9_COMMON *cm, 85 unsigned char vp9_get_pred_context_comp_ref_p(const VP9_COMMON *cm,
79 const MACROBLOCKD *xd); 86 const MACROBLOCKD *xd);
80 87
81 static INLINE vp9_prob vp9_get_pred_prob_comp_ref_p(const VP9_COMMON *cm, 88 static INLINE vp9_prob vp9_get_pred_prob_comp_ref_p(const VP9_COMMON *cm,
82 const MACROBLOCKD *xd) { 89 const MACROBLOCKD *xd) {
83 const int pred_context = vp9_get_pred_context_comp_ref_p(cm, xd); 90 const int pred_context = vp9_get_pred_context_comp_ref_p(cm, xd);
(...skipping 29 matching lines...) Expand all
113 } 120 }
114 121
115 static const vp9_prob *get_tx_probs2(const MACROBLOCKD *xd, 122 static const vp9_prob *get_tx_probs2(const MACROBLOCKD *xd,
116 const struct tx_probs *tx_probs, 123 const struct tx_probs *tx_probs,
117 const MODE_INFO *m) { 124 const MODE_INFO *m) {
118 const BLOCK_SIZE bsize = m->mbmi.sb_type; 125 const BLOCK_SIZE bsize = m->mbmi.sb_type;
119 const int context = vp9_get_pred_context_tx_size(xd); 126 const int context = vp9_get_pred_context_tx_size(xd);
120 return get_tx_probs(bsize, context, tx_probs); 127 return get_tx_probs(bsize, context, tx_probs);
121 } 128 }
122 129
123 static void update_tx_counts(BLOCK_SIZE bsize, uint8_t context, 130 static unsigned int *get_tx_counts(BLOCK_SIZE bsize, uint8_t context,
124 TX_SIZE tx_size, struct tx_counts *tx_counts) { 131 struct tx_counts *tx_counts) {
125 if (bsize >= BLOCK_32X32) 132 if (bsize < BLOCK_16X16)
126 tx_counts->p32x32[context][tx_size]++; 133 return tx_counts->p8x8[context];
127 else if (bsize >= BLOCK_16X16) 134 else if (bsize < BLOCK_32X32)
128 tx_counts->p16x16[context][tx_size]++; 135 return tx_counts->p16x16[context];
129 else 136 else
130 tx_counts->p8x8[context][tx_size]++; 137 return tx_counts->p32x32[context];
131 } 138 }
132 139
133 #endif // VP9_COMMON_VP9_PRED_COMMON_H_ 140 #endif // VP9_COMMON_VP9_PRED_COMMON_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/vp9_postproc.c ('k') | source/libvpx/vp9/common/vp9_pred_common.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698