/src/libvpx/vpx_dsp/bitwriter.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2010 The WebM project authors. All Rights Reserved. |
3 | | * |
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 |
6 | | * tree. An additional intellectual property rights grant can be found |
7 | | * in the file PATENTS. All contributing project authors may |
8 | | * be found in the AUTHORS file in the root of the source tree. |
9 | | */ |
10 | | |
11 | | #ifndef VPX_VPX_DSP_BITWRITER_H_ |
12 | | #define VPX_VPX_DSP_BITWRITER_H_ |
13 | | |
14 | | #include <stdio.h> |
15 | | |
16 | | #include "vpx_ports/compiler_attributes.h" |
17 | | #include "vpx_ports/mem.h" |
18 | | |
19 | | #include "vpx_dsp/prob.h" |
20 | | #if CONFIG_BITSTREAM_DEBUG |
21 | | #include "vpx_util/vpx_debug_util.h" |
22 | | #endif // CONFIG_BITSTREAM_DEBUG |
23 | | |
24 | | #ifdef __cplusplus |
25 | | extern "C" { |
26 | | #endif |
27 | | |
28 | | typedef struct vpx_writer { |
29 | | unsigned int lowvalue; |
30 | | unsigned int range; |
31 | | int count; |
32 | | // Whether there has been an error. |
33 | | int error; |
34 | | // We maintain the invariant that pos <= size, i.e., we never write beyond |
35 | | // the end of the buffer. If pos would be incremented to be greater than |
36 | | // size, leave pos unchanged and set error to 1. |
37 | | unsigned int pos; |
38 | | unsigned int size; |
39 | | uint8_t *buffer; |
40 | | } vpx_writer; |
41 | | |
42 | | void vpx_start_encode(vpx_writer *br, uint8_t *source, size_t size); |
43 | | // Returns 0 on success and returns -1 in case of error. |
44 | | int vpx_stop_encode(vpx_writer *br); |
45 | | |
46 | | static INLINE VPX_NO_UNSIGNED_SHIFT_CHECK void vpx_write(vpx_writer *br, |
47 | | int bit, |
48 | 878M | int probability) { |
49 | 878M | unsigned int split; |
50 | 878M | int count = br->count; |
51 | 878M | unsigned int range = br->range; |
52 | 878M | unsigned int lowvalue = br->lowvalue; |
53 | 878M | int shift; |
54 | | |
55 | | #if CONFIG_BITSTREAM_DEBUG |
56 | | /* |
57 | | int queue_r = 0; |
58 | | int frame_idx_r = 0; |
59 | | int queue_w = bitstream_queue_get_write(); |
60 | | int frame_idx_w = bitstream_queue_get_frame_write(); |
61 | | if (frame_idx_w == frame_idx_r && queue_w == queue_r) { |
62 | | fprintf(stderr, "\n *** bitstream queue at frame_idx_w %d queue_w %d\n", |
63 | | frame_idx_w, queue_w); |
64 | | assert(0); |
65 | | } |
66 | | */ |
67 | | bitstream_queue_push(bit, probability); |
68 | | #endif |
69 | | |
70 | 878M | split = 1 + (((range - 1) * probability) >> 8); |
71 | | |
72 | 878M | range = split; |
73 | | |
74 | 878M | if (bit) { |
75 | 520M | lowvalue += split; |
76 | 520M | range = br->range - split; |
77 | 520M | } |
78 | | |
79 | 878M | shift = vpx_norm[range]; |
80 | | |
81 | 878M | range <<= shift; |
82 | 878M | count += shift; |
83 | | |
84 | 878M | if (count >= 0) { |
85 | 76.0M | int offset = shift - count; |
86 | | |
87 | 76.0M | if (!br->error) { |
88 | 76.0M | if ((lowvalue << (offset - 1)) & 0x80000000) { |
89 | 459 | int x = (int)br->pos - 1; |
90 | | |
91 | 524 | while (x >= 0 && br->buffer[x] == 0xff) { |
92 | 65 | br->buffer[x] = 0; |
93 | 65 | x--; |
94 | 65 | } |
95 | | |
96 | | // TODO(wtc): How to prove x >= 0? |
97 | 459 | br->buffer[x] += 1; |
98 | 459 | } |
99 | | |
100 | 76.0M | if (br->pos < br->size) { |
101 | 76.0M | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; |
102 | 76.0M | } else { |
103 | 63 | br->error = 1; |
104 | 63 | } |
105 | 76.0M | } |
106 | 76.0M | lowvalue <<= offset; |
107 | 76.0M | shift = count; |
108 | 76.0M | lowvalue &= 0xffffff; |
109 | 76.0M | count -= 8; |
110 | 76.0M | } |
111 | | |
112 | 878M | lowvalue <<= shift; |
113 | 878M | br->count = count; |
114 | 878M | br->lowvalue = lowvalue; |
115 | 878M | br->range = range; |
116 | 878M | } Unexecuted instantiation: vp9_frame_scale.c:vpx_write Unexecuted instantiation: vp9_encoder.c:vpx_write Unexecuted instantiation: vp9_picklpf.c:vpx_write Unexecuted instantiation: vp9_quantize.c:vpx_write Unexecuted instantiation: vp9_ratectrl.c:vpx_write Unexecuted instantiation: vp9_rd.c:vpx_write Unexecuted instantiation: vp9_segmentation.c:vpx_write Unexecuted instantiation: vp9_speed_features.c:vpx_write Unexecuted instantiation: vp9_svc_layercontext.c:vpx_write Unexecuted instantiation: vp9_tokenize.c:vpx_write Unexecuted instantiation: vp9_aq_variance.c:vpx_write Unexecuted instantiation: vp9_aq_360.c:vpx_write Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vpx_write Unexecuted instantiation: vp9_aq_complexity.c:vpx_write Unexecuted instantiation: vp9_alt_ref_aq.c:vpx_write Unexecuted instantiation: vp9_skin_detection.c:vpx_write Unexecuted instantiation: vp9_noise_estimate.c:vpx_write Unexecuted instantiation: vp9_ext_ratectrl.c:vpx_write Unexecuted instantiation: vp9_temporal_filter.c:vpx_write Unexecuted instantiation: vp9_tpl_model.c:vpx_write Unexecuted instantiation: vp9_mbgraph.c:vpx_write Unexecuted instantiation: temporal_filter_sse4.c:vpx_write Unexecuted instantiation: highbd_temporal_filter_sse4.c:vpx_write Unexecuted instantiation: vp9_cx_iface.c:vpx_write vp9_bitstream.c:vpx_write Line | Count | Source | 48 | 856M | int probability) { | 49 | 856M | unsigned int split; | 50 | 856M | int count = br->count; | 51 | 856M | unsigned int range = br->range; | 52 | 856M | unsigned int lowvalue = br->lowvalue; | 53 | 856M | int shift; | 54 | | | 55 | | #if CONFIG_BITSTREAM_DEBUG | 56 | | /* | 57 | | int queue_r = 0; | 58 | | int frame_idx_r = 0; | 59 | | int queue_w = bitstream_queue_get_write(); | 60 | | int frame_idx_w = bitstream_queue_get_frame_write(); | 61 | | if (frame_idx_w == frame_idx_r && queue_w == queue_r) { | 62 | | fprintf(stderr, "\n *** bitstream queue at frame_idx_w %d queue_w %d\n", | 63 | | frame_idx_w, queue_w); | 64 | | assert(0); | 65 | | } | 66 | | */ | 67 | | bitstream_queue_push(bit, probability); | 68 | | #endif | 69 | | | 70 | 856M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 856M | range = split; | 73 | | | 74 | 856M | if (bit) { | 75 | 515M | lowvalue += split; | 76 | 515M | range = br->range - split; | 77 | 515M | } | 78 | | | 79 | 856M | shift = vpx_norm[range]; | 80 | | | 81 | 856M | range <<= shift; | 82 | 856M | count += shift; | 83 | | | 84 | 856M | if (count >= 0) { | 85 | 74.6M | int offset = shift - count; | 86 | | | 87 | 74.6M | if (!br->error) { | 88 | 74.6M | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 451 | int x = (int)br->pos - 1; | 90 | | | 91 | 516 | while (x >= 0 && br->buffer[x] == 0xff) { | 92 | 65 | br->buffer[x] = 0; | 93 | 65 | x--; | 94 | 65 | } | 95 | | | 96 | | // TODO(wtc): How to prove x >= 0? | 97 | 451 | br->buffer[x] += 1; | 98 | 451 | } | 99 | | | 100 | 74.6M | if (br->pos < br->size) { | 101 | 74.6M | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 74.6M | } else { | 103 | 61 | br->error = 1; | 104 | 61 | } | 105 | 74.6M | } | 106 | 74.6M | lowvalue <<= offset; | 107 | 74.6M | shift = count; | 108 | 74.6M | lowvalue &= 0xffffff; | 109 | 74.6M | count -= 8; | 110 | 74.6M | } | 111 | | | 112 | 856M | lowvalue <<= shift; | 113 | 856M | br->count = count; | 114 | 856M | br->lowvalue = lowvalue; | 115 | 856M | br->range = range; | 116 | 856M | } |
Unexecuted instantiation: vp9_context_tree.c:vpx_write Unexecuted instantiation: vp9_encodeframe.c:vpx_write Unexecuted instantiation: vp9_encodemb.c:vpx_write Line | Count | Source | 48 | 8.73M | int probability) { | 49 | 8.73M | unsigned int split; | 50 | 8.73M | int count = br->count; | 51 | 8.73M | unsigned int range = br->range; | 52 | 8.73M | unsigned int lowvalue = br->lowvalue; | 53 | 8.73M | int shift; | 54 | | | 55 | | #if CONFIG_BITSTREAM_DEBUG | 56 | | /* | 57 | | int queue_r = 0; | 58 | | int frame_idx_r = 0; | 59 | | int queue_w = bitstream_queue_get_write(); | 60 | | int frame_idx_w = bitstream_queue_get_frame_write(); | 61 | | if (frame_idx_w == frame_idx_r && queue_w == queue_r) { | 62 | | fprintf(stderr, "\n *** bitstream queue at frame_idx_w %d queue_w %d\n", | 63 | | frame_idx_w, queue_w); | 64 | | assert(0); | 65 | | } | 66 | | */ | 67 | | bitstream_queue_push(bit, probability); | 68 | | #endif | 69 | | | 70 | 8.73M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 8.73M | range = split; | 73 | | | 74 | 8.73M | if (bit) { | 75 | 3.81M | lowvalue += split; | 76 | 3.81M | range = br->range - split; | 77 | 3.81M | } | 78 | | | 79 | 8.73M | shift = vpx_norm[range]; | 80 | | | 81 | 8.73M | range <<= shift; | 82 | 8.73M | count += shift; | 83 | | | 84 | 8.73M | if (count >= 0) { | 85 | 518k | int offset = shift - count; | 86 | | | 87 | 518k | if (!br->error) { | 88 | 518k | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 7 | int x = (int)br->pos - 1; | 90 | | | 91 | 7 | while (x >= 0 && br->buffer[x] == 0xff) { | 92 | 0 | br->buffer[x] = 0; | 93 | 0 | x--; | 94 | 0 | } | 95 | | | 96 | | // TODO(wtc): How to prove x >= 0? | 97 | 7 | br->buffer[x] += 1; | 98 | 7 | } | 99 | | | 100 | 518k | if (br->pos < br->size) { | 101 | 518k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 518k | } else { | 103 | 0 | br->error = 1; | 104 | 0 | } | 105 | 518k | } | 106 | 518k | lowvalue <<= offset; | 107 | 518k | shift = count; | 108 | 518k | lowvalue &= 0xffffff; | 109 | 518k | count -= 8; | 110 | 518k | } | 111 | | | 112 | 8.73M | lowvalue <<= shift; | 113 | 8.73M | br->count = count; | 114 | 8.73M | br->lowvalue = lowvalue; | 115 | 8.73M | br->range = range; | 116 | 8.73M | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write Unexecuted instantiation: vp9_firstpass.c:vpx_write Unexecuted instantiation: vp9_lookahead.c:vpx_write Unexecuted instantiation: vp9_multi_thread.c:vpx_write Unexecuted instantiation: vp9_mcomp.c:vpx_write Unexecuted instantiation: vp9_rdopt.c:vpx_write Unexecuted instantiation: vp9_pickmode.c:vpx_write Line | Count | Source | 48 | 9.35M | int probability) { | 49 | 9.35M | unsigned int split; | 50 | 9.35M | int count = br->count; | 51 | 9.35M | unsigned int range = br->range; | 52 | 9.35M | unsigned int lowvalue = br->lowvalue; | 53 | 9.35M | int shift; | 54 | | | 55 | | #if CONFIG_BITSTREAM_DEBUG | 56 | | /* | 57 | | int queue_r = 0; | 58 | | int frame_idx_r = 0; | 59 | | int queue_w = bitstream_queue_get_write(); | 60 | | int frame_idx_w = bitstream_queue_get_frame_write(); | 61 | | if (frame_idx_w == frame_idx_r && queue_w == queue_r) { | 62 | | fprintf(stderr, "\n *** bitstream queue at frame_idx_w %d queue_w %d\n", | 63 | | frame_idx_w, queue_w); | 64 | | assert(0); | 65 | | } | 66 | | */ | 67 | | bitstream_queue_push(bit, probability); | 68 | | #endif | 69 | | | 70 | 9.35M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 9.35M | range = split; | 73 | | | 74 | 9.35M | if (bit) { | 75 | 1.53M | lowvalue += split; | 76 | 1.53M | range = br->range - split; | 77 | 1.53M | } | 78 | | | 79 | 9.35M | shift = vpx_norm[range]; | 80 | | | 81 | 9.35M | range <<= shift; | 82 | 9.35M | count += shift; | 83 | | | 84 | 9.35M | if (count >= 0) { | 85 | 414k | int offset = shift - count; | 86 | | | 87 | 414k | if (!br->error) { | 88 | 414k | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 0 | int x = (int)br->pos - 1; | 90 | |
| 91 | 0 | while (x >= 0 && br->buffer[x] == 0xff) { | 92 | 0 | br->buffer[x] = 0; | 93 | 0 | x--; | 94 | 0 | } | 95 | | | 96 | | // TODO(wtc): How to prove x >= 0? | 97 | 0 | br->buffer[x] += 1; | 98 | 0 | } | 99 | | | 100 | 414k | if (br->pos < br->size) { | 101 | 414k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 414k | } else { | 103 | 0 | br->error = 1; | 104 | 0 | } | 105 | 414k | } | 106 | 414k | lowvalue <<= offset; | 107 | 414k | shift = count; | 108 | 414k | lowvalue &= 0xffffff; | 109 | 414k | count -= 8; | 110 | 414k | } | 111 | | | 112 | 9.35M | lowvalue <<= shift; | 113 | 9.35M | br->count = count; | 114 | 9.35M | br->lowvalue = lowvalue; | 115 | 9.35M | br->range = range; | 116 | 9.35M | } |
Unexecuted instantiation: vp9_treewriter.c:vpx_write Line | Count | Source | 48 | 4.19M | int probability) { | 49 | 4.19M | unsigned int split; | 50 | 4.19M | int count = br->count; | 51 | 4.19M | unsigned int range = br->range; | 52 | 4.19M | unsigned int lowvalue = br->lowvalue; | 53 | 4.19M | int shift; | 54 | | | 55 | | #if CONFIG_BITSTREAM_DEBUG | 56 | | /* | 57 | | int queue_r = 0; | 58 | | int frame_idx_r = 0; | 59 | | int queue_w = bitstream_queue_get_write(); | 60 | | int frame_idx_w = bitstream_queue_get_frame_write(); | 61 | | if (frame_idx_w == frame_idx_r && queue_w == queue_r) { | 62 | | fprintf(stderr, "\n *** bitstream queue at frame_idx_w %d queue_w %d\n", | 63 | | frame_idx_w, queue_w); | 64 | | assert(0); | 65 | | } | 66 | | */ | 67 | | bitstream_queue_push(bit, probability); | 68 | | #endif | 69 | | | 70 | 4.19M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 4.19M | range = split; | 73 | | | 74 | 4.19M | if (bit) { | 75 | 0 | lowvalue += split; | 76 | 0 | range = br->range - split; | 77 | 0 | } | 78 | | | 79 | 4.19M | shift = vpx_norm[range]; | 80 | | | 81 | 4.19M | range <<= shift; | 82 | 4.19M | count += shift; | 83 | | | 84 | 4.19M | if (count >= 0) { | 85 | 448k | int offset = shift - count; | 86 | | | 87 | 448k | if (!br->error) { | 88 | 448k | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 1 | int x = (int)br->pos - 1; | 90 | | | 91 | 1 | while (x >= 0 && br->buffer[x] == 0xff) { | 92 | 0 | br->buffer[x] = 0; | 93 | 0 | x--; | 94 | 0 | } | 95 | | | 96 | | // TODO(wtc): How to prove x >= 0? | 97 | 1 | br->buffer[x] += 1; | 98 | 1 | } | 99 | | | 100 | 448k | if (br->pos < br->size) { | 101 | 448k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 448k | } else { | 103 | 2 | br->error = 1; | 104 | 2 | } | 105 | 448k | } | 106 | 448k | lowvalue <<= offset; | 107 | 448k | shift = count; | 108 | 448k | lowvalue &= 0xffffff; | 109 | 448k | count -= 8; | 110 | 448k | } | 111 | | | 112 | 4.19M | lowvalue <<= shift; | 113 | 4.19M | br->count = count; | 114 | 4.19M | br->lowvalue = lowvalue; | 115 | 4.19M | br->range = range; | 116 | 4.19M | } |
|
117 | | |
118 | 98.0M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { |
119 | 98.0M | vpx_write(w, bit, 128); // vpx_prob_half |
120 | 98.0M | } Unexecuted instantiation: vp9_frame_scale.c:vpx_write_bit Unexecuted instantiation: vp9_encoder.c:vpx_write_bit Unexecuted instantiation: vp9_picklpf.c:vpx_write_bit Unexecuted instantiation: vp9_quantize.c:vpx_write_bit Unexecuted instantiation: vp9_ratectrl.c:vpx_write_bit Unexecuted instantiation: vp9_rd.c:vpx_write_bit Unexecuted instantiation: vp9_segmentation.c:vpx_write_bit Unexecuted instantiation: vp9_speed_features.c:vpx_write_bit Unexecuted instantiation: vp9_svc_layercontext.c:vpx_write_bit Unexecuted instantiation: vp9_tokenize.c:vpx_write_bit Unexecuted instantiation: vp9_aq_variance.c:vpx_write_bit Unexecuted instantiation: vp9_aq_360.c:vpx_write_bit Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vpx_write_bit Unexecuted instantiation: vp9_aq_complexity.c:vpx_write_bit Unexecuted instantiation: vp9_alt_ref_aq.c:vpx_write_bit Unexecuted instantiation: vp9_skin_detection.c:vpx_write_bit Unexecuted instantiation: vp9_noise_estimate.c:vpx_write_bit Unexecuted instantiation: vp9_ext_ratectrl.c:vpx_write_bit Unexecuted instantiation: vp9_temporal_filter.c:vpx_write_bit Unexecuted instantiation: vp9_tpl_model.c:vpx_write_bit Unexecuted instantiation: vp9_mbgraph.c:vpx_write_bit Unexecuted instantiation: temporal_filter_sse4.c:vpx_write_bit Unexecuted instantiation: highbd_temporal_filter_sse4.c:vpx_write_bit Unexecuted instantiation: vp9_cx_iface.c:vpx_write_bit vp9_bitstream.c:vpx_write_bit Line | Count | Source | 118 | 90.5M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 90.5M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 90.5M | } |
Unexecuted instantiation: vp9_context_tree.c:vpx_write_bit Unexecuted instantiation: vp9_encodeframe.c:vpx_write_bit Unexecuted instantiation: vp9_encodemb.c:vpx_write_bit vp9_encodemv.c:vpx_write_bit Line | Count | Source | 118 | 59.3k | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 59.3k | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 59.3k | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write_bit Unexecuted instantiation: vp9_firstpass.c:vpx_write_bit Unexecuted instantiation: vp9_lookahead.c:vpx_write_bit Unexecuted instantiation: vp9_multi_thread.c:vpx_write_bit Unexecuted instantiation: vp9_mcomp.c:vpx_write_bit Unexecuted instantiation: vp9_rdopt.c:vpx_write_bit Unexecuted instantiation: vp9_pickmode.c:vpx_write_bit vp9_subexp.c:vpx_write_bit Line | Count | Source | 118 | 3.23M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 3.23M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 3.23M | } |
Unexecuted instantiation: vp9_treewriter.c:vpx_write_bit bitwriter.c:vpx_write_bit Line | Count | Source | 118 | 4.19M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 4.19M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 4.19M | } |
|
121 | | |
122 | 1.45M | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { |
123 | 1.45M | int bit; |
124 | | |
125 | 4.84M | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); |
126 | 1.45M | } Unexecuted instantiation: vp9_frame_scale.c:vpx_write_literal Unexecuted instantiation: vp9_encoder.c:vpx_write_literal Unexecuted instantiation: vp9_picklpf.c:vpx_write_literal Unexecuted instantiation: vp9_quantize.c:vpx_write_literal Unexecuted instantiation: vp9_ratectrl.c:vpx_write_literal Unexecuted instantiation: vp9_rd.c:vpx_write_literal Unexecuted instantiation: vp9_segmentation.c:vpx_write_literal Unexecuted instantiation: vp9_speed_features.c:vpx_write_literal Unexecuted instantiation: vp9_svc_layercontext.c:vpx_write_literal Unexecuted instantiation: vp9_tokenize.c:vpx_write_literal Unexecuted instantiation: vp9_aq_variance.c:vpx_write_literal Unexecuted instantiation: vp9_aq_360.c:vpx_write_literal Unexecuted instantiation: vp9_aq_cyclicrefresh.c:vpx_write_literal Unexecuted instantiation: vp9_aq_complexity.c:vpx_write_literal Unexecuted instantiation: vp9_alt_ref_aq.c:vpx_write_literal Unexecuted instantiation: vp9_skin_detection.c:vpx_write_literal Unexecuted instantiation: vp9_noise_estimate.c:vpx_write_literal Unexecuted instantiation: vp9_ext_ratectrl.c:vpx_write_literal Unexecuted instantiation: vp9_temporal_filter.c:vpx_write_literal Unexecuted instantiation: vp9_tpl_model.c:vpx_write_literal Unexecuted instantiation: vp9_mbgraph.c:vpx_write_literal Unexecuted instantiation: temporal_filter_sse4.c:vpx_write_literal Unexecuted instantiation: highbd_temporal_filter_sse4.c:vpx_write_literal Unexecuted instantiation: vp9_cx_iface.c:vpx_write_literal vp9_bitstream.c:vpx_write_literal Line | Count | Source | 122 | 50.5k | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { | 123 | 50.5k | int bit; | 124 | | | 125 | 151k | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); | 126 | 50.5k | } |
Unexecuted instantiation: vp9_context_tree.c:vpx_write_literal Unexecuted instantiation: vp9_encodeframe.c:vpx_write_literal Unexecuted instantiation: vp9_encodemb.c:vpx_write_literal vp9_encodemv.c:vpx_write_literal Line | Count | Source | 122 | 8.47k | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { | 123 | 8.47k | int bit; | 124 | | | 125 | 67.8k | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); | 126 | 8.47k | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write_literal Unexecuted instantiation: vp9_firstpass.c:vpx_write_literal Unexecuted instantiation: vp9_lookahead.c:vpx_write_literal Unexecuted instantiation: vp9_multi_thread.c:vpx_write_literal Unexecuted instantiation: vp9_mcomp.c:vpx_write_literal Unexecuted instantiation: vp9_rdopt.c:vpx_write_literal Unexecuted instantiation: vp9_pickmode.c:vpx_write_literal vp9_subexp.c:vpx_write_literal Line | Count | Source | 122 | 1.39M | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { | 123 | 1.39M | int bit; | 124 | | | 125 | 4.63M | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); | 126 | 1.39M | } |
Unexecuted instantiation: vp9_treewriter.c:vpx_write_literal Unexecuted instantiation: bitwriter.c:vpx_write_literal |
127 | | |
128 | | #define vpx_write_prob(w, v) vpx_write_literal((w), (v), 8) |
129 | | |
130 | | #ifdef __cplusplus |
131 | | } // extern "C" |
132 | | #endif |
133 | | |
134 | | #endif // VPX_VPX_DSP_BITWRITER_H_ |