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

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

Issue 232133009: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 8 months 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_entropy.h ('k') | source/libvpx/vp9/common/vp9_entropymode.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) 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 #ifndef VP9_COMMON_VP9_ENTROPYMODE_H_ 11 #ifndef VP9_COMMON_VP9_ENTROPYMODE_H_
12 #define VP9_COMMON_VP9_ENTROPYMODE_H_ 12 #define VP9_COMMON_VP9_ENTROPYMODE_H_
13 13
14 #include "vp9/common/vp9_blockd.h" 14 #include "vp9/common/vp9_blockd.h"
15 #include "vp9/common/vp9_entropy.h"
16 #include "vp9/common/vp9_entropymv.h"
15 17
16 #ifdef __cplusplus 18 #ifdef __cplusplus
17 extern "C" { 19 extern "C" {
18 #endif 20 #endif
19 21
20 #define TX_SIZE_CONTEXTS 2 22 #define TX_SIZE_CONTEXTS 2
21 #define SWITCHABLE_FILTERS 3 // number of switchable filters 23 #define SWITCHABLE_FILTERS 3 // number of switchable filters
22 #define SWITCHABLE_FILTER_CONTEXTS (SWITCHABLE_FILTERS + 1) 24 #define SWITCHABLE_FILTER_CONTEXTS (SWITCHABLE_FILTERS + 1)
23 25
24 struct VP9Common; 26 struct VP9Common;
25 27
26 struct tx_probs { 28 struct tx_probs {
27 vp9_prob p32x32[TX_SIZE_CONTEXTS][TX_SIZES - 1]; 29 vp9_prob p32x32[TX_SIZE_CONTEXTS][TX_SIZES - 1];
28 vp9_prob p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 2]; 30 vp9_prob p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 2];
29 vp9_prob p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 3]; 31 vp9_prob p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 3];
30 }; 32 };
31 33
32 struct tx_counts { 34 struct tx_counts {
33 unsigned int p32x32[TX_SIZE_CONTEXTS][TX_SIZES]; 35 unsigned int p32x32[TX_SIZE_CONTEXTS][TX_SIZES];
34 unsigned int p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 1]; 36 unsigned int p16x16[TX_SIZE_CONTEXTS][TX_SIZES - 1];
35 unsigned int p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 2]; 37 unsigned int p8x8[TX_SIZE_CONTEXTS][TX_SIZES - 2];
36 }; 38 };
37 39
40 typedef struct frame_contexts {
41 vp9_prob y_mode_prob[BLOCK_SIZE_GROUPS][INTRA_MODES - 1];
42 vp9_prob uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
43 vp9_prob partition_prob[PARTITION_CONTEXTS][PARTITION_TYPES - 1];
44 vp9_coeff_probs_model coef_probs[TX_SIZES][PLANE_TYPES];
45 vp9_prob switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS]
46 [SWITCHABLE_FILTERS - 1];
47 vp9_prob inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1];
48 vp9_prob intra_inter_prob[INTRA_INTER_CONTEXTS];
49 vp9_prob comp_inter_prob[COMP_INTER_CONTEXTS];
50 vp9_prob single_ref_prob[REF_CONTEXTS][2];
51 vp9_prob comp_ref_prob[REF_CONTEXTS];
52 struct tx_probs tx_probs;
53 vp9_prob skip_probs[SKIP_CONTEXTS];
54 nmv_context nmvc;
55 } FRAME_CONTEXT;
56
57 typedef struct {
58 unsigned int y_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
59 unsigned int uv_mode[INTRA_MODES][INTRA_MODES];
60 unsigned int partition[PARTITION_CONTEXTS][PARTITION_TYPES];
61 vp9_coeff_count_model coef[TX_SIZES][PLANE_TYPES];
62 unsigned int eob_branch[TX_SIZES][PLANE_TYPES][REF_TYPES]
63 [COEF_BANDS][COEFF_CONTEXTS];
64 unsigned int switchable_interp[SWITCHABLE_FILTER_CONTEXTS]
65 [SWITCHABLE_FILTERS];
66 unsigned int inter_mode[INTER_MODE_CONTEXTS][INTER_MODES];
67 unsigned int intra_inter[INTRA_INTER_CONTEXTS][2];
68 unsigned int comp_inter[COMP_INTER_CONTEXTS][2];
69 unsigned int single_ref[REF_CONTEXTS][2][2];
70 unsigned int comp_ref[REF_CONTEXTS][2];
71 struct tx_counts tx;
72 unsigned int skip[SKIP_CONTEXTS][2];
73 nmv_context_counts mv;
74 } FRAME_COUNTS;
75
38 extern const vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1]; 76 extern const vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1];
39 extern const vp9_prob vp9_kf_y_mode_prob[INTRA_MODES][INTRA_MODES] 77 extern const vp9_prob vp9_kf_y_mode_prob[INTRA_MODES][INTRA_MODES]
40 [INTRA_MODES - 1]; 78 [INTRA_MODES - 1];
41 extern const vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS] 79 extern const vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS]
42 [PARTITION_TYPES - 1]; 80 [PARTITION_TYPES - 1];
43 extern const vp9_tree_index vp9_intra_mode_tree[TREE_SIZE(INTRA_MODES)]; 81 extern const vp9_tree_index vp9_intra_mode_tree[TREE_SIZE(INTRA_MODES)];
44 extern const vp9_tree_index vp9_inter_mode_tree[TREE_SIZE(INTER_MODES)]; 82 extern const vp9_tree_index vp9_inter_mode_tree[TREE_SIZE(INTER_MODES)];
45 extern const vp9_tree_index vp9_partition_tree[TREE_SIZE(PARTITION_TYPES)]; 83 extern const vp9_tree_index vp9_partition_tree[TREE_SIZE(PARTITION_TYPES)];
46 extern const vp9_tree_index vp9_switchable_interp_tree 84 extern const vp9_tree_index vp9_switchable_interp_tree
47 [TREE_SIZE(SWITCHABLE_FILTERS)]; 85 [TREE_SIZE(SWITCHABLE_FILTERS)];
48 86
49 void vp9_setup_past_independence(struct VP9Common *cm); 87 void vp9_setup_past_independence(struct VP9Common *cm);
50 88
51 void vp9_init_mbmode_probs(struct VP9Common *cm); 89 void vp9_init_mode_probs(FRAME_CONTEXT *fc);
52 90
53 void vp9_adapt_mode_probs(struct VP9Common *cm); 91 void vp9_adapt_mode_probs(struct VP9Common *cm);
54 92
55 void tx_counts_to_branch_counts_32x32(const unsigned int *tx_count_32x32p, 93 void tx_counts_to_branch_counts_32x32(const unsigned int *tx_count_32x32p,
56 unsigned int (*ct_32x32p)[2]); 94 unsigned int (*ct_32x32p)[2]);
57 void tx_counts_to_branch_counts_16x16(const unsigned int *tx_count_16x16p, 95 void tx_counts_to_branch_counts_16x16(const unsigned int *tx_count_16x16p,
58 unsigned int (*ct_16x16p)[2]); 96 unsigned int (*ct_16x16p)[2]);
59 void tx_counts_to_branch_counts_8x8(const unsigned int *tx_count_8x8p, 97 void tx_counts_to_branch_counts_8x8(const unsigned int *tx_count_8x8p,
60 unsigned int (*ct_8x8p)[2]); 98 unsigned int (*ct_8x8p)[2]);
61 99
100 static INLINE const vp9_prob *get_y_mode_probs(const MODE_INFO *mi,
101 const MODE_INFO *above_mi,
102 const MODE_INFO *left_mi,
103 int block) {
104 const MB_PREDICTION_MODE above = vp9_above_block_mode(mi, above_mi, block);
105 const MB_PREDICTION_MODE left = vp9_left_block_mode(mi, left_mi, block);
106 return vp9_kf_y_mode_prob[above][left];
107 }
108
62 #ifdef __cplusplus 109 #ifdef __cplusplus
63 } // extern "C" 110 } // extern "C"
64 #endif 111 #endif
65 112
66 #endif // VP9_COMMON_VP9_ENTROPYMODE_H_ 113 #endif // VP9_COMMON_VP9_ENTROPYMODE_H_
OLDNEW
« no previous file with comments | « source/libvpx/vp9/common/vp9_entropy.h ('k') | source/libvpx/vp9/common/vp9_entropymode.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698