/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 | 1.01G | int probability) { |
49 | 1.01G | unsigned int split; |
50 | 1.01G | int count = br->count; |
51 | 1.01G | unsigned int range = br->range; |
52 | 1.01G | unsigned int lowvalue = br->lowvalue; |
53 | 1.01G | 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 | 1.01G | split = 1 + (((range - 1) * probability) >> 8); |
71 | | |
72 | 1.01G | range = split; |
73 | | |
74 | 1.01G | if (bit) { |
75 | 608M | lowvalue += split; |
76 | 608M | range = br->range - split; |
77 | 608M | } |
78 | | |
79 | 1.01G | shift = vpx_norm[range]; |
80 | | |
81 | 1.01G | range <<= shift; |
82 | 1.01G | count += shift; |
83 | | |
84 | 1.01G | if (count >= 0) { |
85 | 85.6M | int offset = shift - count; |
86 | | |
87 | 85.6M | if (!br->error) { |
88 | 85.5M | if ((lowvalue << (offset - 1)) & 0x80000000) { |
89 | 400 | int x = (int)br->pos - 1; |
90 | | |
91 | 523 | while (x >= 0 && br->buffer[x] == 0xff) { |
92 | 123 | br->buffer[x] = 0; |
93 | 123 | x--; |
94 | 123 | } |
95 | | |
96 | | // TODO(wtc): How to prove x >= 0? |
97 | 400 | br->buffer[x] += 1; |
98 | 400 | } |
99 | | |
100 | 85.5M | if (br->pos < br->size) { |
101 | 85.5M | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; |
102 | 85.5M | } else { |
103 | 71 | br->error = 1; |
104 | 71 | } |
105 | 85.5M | } |
106 | 85.6M | lowvalue <<= offset; |
107 | 85.6M | shift = count; |
108 | 85.6M | lowvalue &= 0xffffff; |
109 | 85.6M | count -= 8; |
110 | 85.6M | } |
111 | | |
112 | 1.01G | lowvalue <<= shift; |
113 | 1.01G | br->count = count; |
114 | 1.01G | br->lowvalue = lowvalue; |
115 | 1.01G | br->range = range; |
116 | 1.01G | } Unexecuted instantiation: vp9_cx_iface.c:vpx_write Unexecuted instantiation: vp9_firstpass.c:vpx_write Unexecuted instantiation: vp9_mcomp.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 vp9_bitstream.c:vpx_write Line | Count | Source | 48 | 1.00G | int probability) { | 49 | 1.00G | unsigned int split; | 50 | 1.00G | int count = br->count; | 51 | 1.00G | unsigned int range = br->range; | 52 | 1.00G | unsigned int lowvalue = br->lowvalue; | 53 | 1.00G | 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 | 1.00G | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 1.00G | range = split; | 73 | | | 74 | 1.00G | if (bit) { | 75 | 603M | lowvalue += split; | 76 | 603M | range = br->range - split; | 77 | 603M | } | 78 | | | 79 | 1.00G | shift = vpx_norm[range]; | 80 | | | 81 | 1.00G | range <<= shift; | 82 | 1.00G | count += shift; | 83 | | | 84 | 1.00G | if (count >= 0) { | 85 | 84.4M | int offset = shift - count; | 86 | | | 87 | 84.4M | if (!br->error) { | 88 | 84.4M | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 394 | int x = (int)br->pos - 1; | 90 | | | 91 | 517 | while (x >= 0 && br->buffer[x] == 0xff) { | 92 | 123 | br->buffer[x] = 0; | 93 | 123 | x--; | 94 | 123 | } | 95 | | | 96 | | // TODO(wtc): How to prove x >= 0? | 97 | 394 | br->buffer[x] += 1; | 98 | 394 | } | 99 | | | 100 | 84.4M | if (br->pos < br->size) { | 101 | 84.4M | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 84.4M | } else { | 103 | 68 | br->error = 1; | 104 | 68 | } | 105 | 84.4M | } | 106 | 84.4M | lowvalue <<= offset; | 107 | 84.4M | shift = count; | 108 | 84.4M | lowvalue &= 0xffffff; | 109 | 84.4M | count -= 8; | 110 | 84.4M | } | 111 | | | 112 | 1.00G | lowvalue <<= shift; | 113 | 1.00G | br->count = count; | 114 | 1.00G | br->lowvalue = lowvalue; | 115 | 1.00G | br->range = range; | 116 | 1.00G | } |
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 | 7.15M | int probability) { | 49 | 7.15M | unsigned int split; | 50 | 7.15M | int count = br->count; | 51 | 7.15M | unsigned int range = br->range; | 52 | 7.15M | unsigned int lowvalue = br->lowvalue; | 53 | 7.15M | 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 | 7.15M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 7.15M | range = split; | 73 | | | 74 | 7.15M | if (bit) { | 75 | 3.34M | lowvalue += split; | 76 | 3.34M | range = br->range - split; | 77 | 3.34M | } | 78 | | | 79 | 7.15M | shift = vpx_norm[range]; | 80 | | | 81 | 7.15M | range <<= shift; | 82 | 7.15M | count += shift; | 83 | | | 84 | 7.15M | if (count >= 0) { | 85 | 457k | int offset = shift - count; | 86 | | | 87 | 457k | if (!br->error) { | 88 | 457k | if ((lowvalue << (offset - 1)) & 0x80000000) { | 89 | 5 | int x = (int)br->pos - 1; | 90 | | | 91 | 5 | 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 | 5 | br->buffer[x] += 1; | 98 | 5 | } | 99 | | | 100 | 457k | if (br->pos < br->size) { | 101 | 457k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 457k | } else { | 103 | 0 | br->error = 1; | 104 | 0 | } | 105 | 457k | } | 106 | 457k | lowvalue <<= offset; | 107 | 457k | shift = count; | 108 | 457k | lowvalue &= 0xffffff; | 109 | 457k | count -= 8; | 110 | 457k | } | 111 | | | 112 | 7.15M | lowvalue <<= shift; | 113 | 7.15M | br->count = count; | 114 | 7.15M | br->lowvalue = lowvalue; | 115 | 7.15M | br->range = range; | 116 | 7.15M | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write Unexecuted instantiation: vp9_frame_scale.c:vpx_write Unexecuted instantiation: vp9_lookahead.c:vpx_write Unexecuted instantiation: vp9_multi_thread.c:vpx_write Unexecuted instantiation: vp9_rdopt.c:vpx_write Unexecuted instantiation: vp9_pickmode.c:vpx_write Line | Count | Source | 48 | 7.69M | int probability) { | 49 | 7.69M | unsigned int split; | 50 | 7.69M | int count = br->count; | 51 | 7.69M | unsigned int range = br->range; | 52 | 7.69M | unsigned int lowvalue = br->lowvalue; | 53 | 7.69M | 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 | 7.69M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 7.69M | range = split; | 73 | | | 74 | 7.69M | if (bit) { | 75 | 1.51M | lowvalue += split; | 76 | 1.51M | range = br->range - split; | 77 | 1.51M | } | 78 | | | 79 | 7.69M | shift = vpx_norm[range]; | 80 | | | 81 | 7.69M | range <<= shift; | 82 | 7.69M | count += shift; | 83 | | | 84 | 7.69M | if (count >= 0) { | 85 | 411k | int offset = shift - count; | 86 | | | 87 | 411k | if (!br->error) { | 88 | 411k | 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 | 411k | if (br->pos < br->size) { | 101 | 411k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 411k | } else { | 103 | 0 | br->error = 1; | 104 | 0 | } | 105 | 411k | } | 106 | 411k | lowvalue <<= offset; | 107 | 411k | shift = count; | 108 | 411k | lowvalue &= 0xffffff; | 109 | 411k | count -= 8; | 110 | 411k | } | 111 | | | 112 | 7.69M | lowvalue <<= shift; | 113 | 7.69M | br->count = count; | 114 | 7.69M | br->lowvalue = lowvalue; | 115 | 7.69M | br->range = range; | 116 | 7.69M | } |
Unexecuted instantiation: vp9_treewriter.c:vpx_write Unexecuted instantiation: temporal_filter_sse4.c:vpx_write Unexecuted instantiation: highbd_temporal_filter_sse4.c:vpx_write Line | Count | Source | 48 | 2.87M | int probability) { | 49 | 2.87M | unsigned int split; | 50 | 2.87M | int count = br->count; | 51 | 2.87M | unsigned int range = br->range; | 52 | 2.87M | unsigned int lowvalue = br->lowvalue; | 53 | 2.87M | 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 | 2.87M | split = 1 + (((range - 1) * probability) >> 8); | 71 | | | 72 | 2.87M | range = split; | 73 | | | 74 | 2.87M | if (bit) { | 75 | 0 | lowvalue += split; | 76 | 0 | range = br->range - split; | 77 | 0 | } | 78 | | | 79 | 2.87M | shift = vpx_norm[range]; | 80 | | | 81 | 2.87M | range <<= shift; | 82 | 2.87M | count += shift; | 83 | | | 84 | 2.87M | if (count >= 0) { | 85 | 320k | int offset = shift - count; | 86 | | | 87 | 320k | if (!br->error) { | 88 | 319k | 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 | 319k | if (br->pos < br->size) { | 101 | 319k | br->buffer[br->pos++] = (lowvalue >> (24 - offset)) & 0xff; | 102 | 319k | } else { | 103 | 3 | br->error = 1; | 104 | 3 | } | 105 | 319k | } | 106 | 320k | lowvalue <<= offset; | 107 | 320k | shift = count; | 108 | 320k | lowvalue &= 0xffffff; | 109 | 320k | count -= 8; | 110 | 320k | } | 111 | | | 112 | 2.87M | lowvalue <<= shift; | 113 | 2.87M | br->count = count; | 114 | 2.87M | br->lowvalue = lowvalue; | 115 | 2.87M | br->range = range; | 116 | 2.87M | } |
|
117 | | |
118 | 105M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { |
119 | 105M | vpx_write(w, bit, 128); // vpx_prob_half |
120 | 105M | } Unexecuted instantiation: vp9_cx_iface.c:vpx_write_bit Unexecuted instantiation: vp9_firstpass.c:vpx_write_bit Unexecuted instantiation: vp9_mcomp.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 vp9_bitstream.c:vpx_write_bit Line | Count | Source | 118 | 99.4M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 99.4M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 99.4M | } |
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 | 53.5k | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 53.5k | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 53.5k | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write_bit Unexecuted instantiation: vp9_frame_scale.c:vpx_write_bit Unexecuted instantiation: vp9_lookahead.c:vpx_write_bit Unexecuted instantiation: vp9_multi_thread.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.22M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 3.22M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 3.22M | } |
Unexecuted instantiation: vp9_treewriter.c:vpx_write_bit Unexecuted instantiation: temporal_filter_sse4.c:vpx_write_bit Unexecuted instantiation: highbd_temporal_filter_sse4.c:vpx_write_bit bitwriter.c:vpx_write_bit Line | Count | Source | 118 | 2.87M | static INLINE void vpx_write_bit(vpx_writer *w, int bit) { | 119 | 2.87M | vpx_write(w, bit, 128); // vpx_prob_half | 120 | 2.87M | } |
|
121 | | |
122 | 1.43M | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { |
123 | 1.43M | int bit; |
124 | | |
125 | 4.78M | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); |
126 | 1.43M | } Unexecuted instantiation: vp9_cx_iface.c:vpx_write_literal Unexecuted instantiation: vp9_firstpass.c:vpx_write_literal Unexecuted instantiation: vp9_mcomp.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 vp9_bitstream.c:vpx_write_literal Line | Count | Source | 122 | 35.4k | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { | 123 | 35.4k | int bit; | 124 | | | 125 | 106k | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); | 126 | 35.4k | } |
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 | 7.65k | static INLINE void vpx_write_literal(vpx_writer *w, int data, int bits) { | 123 | 7.65k | int bit; | 124 | | | 125 | 61.2k | for (bit = bits - 1; bit >= 0; bit--) vpx_write_bit(w, 1 & (data >> bit)); | 126 | 7.65k | } |
Unexecuted instantiation: vp9_ethread.c:vpx_write_literal Unexecuted instantiation: vp9_frame_scale.c:vpx_write_literal Unexecuted instantiation: vp9_lookahead.c:vpx_write_literal Unexecuted instantiation: vp9_multi_thread.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.61M | 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: temporal_filter_sse4.c:vpx_write_literal Unexecuted instantiation: highbd_temporal_filter_sse4.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_ |