ans: Move buf_ans_flush to the .c file
It is called relatively rarely and doesn't need to be inlined.
Change-Id: I4ee7f95548f008f2ee29da807aaca54b9a25aecd
diff --git a/aom_dsp/buf_ans.c b/aom_dsp/buf_ans.c
index 1386722..33db080 100644
--- a/aom_dsp/buf_ans.c
+++ b/aom_dsp/buf_ans.c
@@ -40,3 +40,20 @@
c->buf = new_buf;
c->size = new_size;
}
+
+void aom_buf_ans_flush(struct BufAnsCoder *const c) {
+ int offset;
+ for (offset = c->offset - 1; offset >= 0; --offset) {
+ if (c->buf[offset].method == ANS_METHOD_RANS) {
+ struct rans_sym sym;
+ sym.prob = c->buf[offset].prob;
+ sym.cum_prob = c->buf[offset].val_start;
+ rans_write(&c->ans, &sym);
+ } else {
+ uabs_write(&c->ans, (uint8_t)c->buf[offset].val_start,
+ (AnsP8)c->buf[offset].prob);
+ }
+ }
+ c->offset = 0;
+ c->output_bytes += ans_write_end(&c->ans);
+}
diff --git a/aom_dsp/buf_ans.h b/aom_dsp/buf_ans.h
index 0a1de1a..f670112 100644
--- a/aom_dsp/buf_ans.h
+++ b/aom_dsp/buf_ans.h
@@ -52,6 +52,8 @@
void aom_buf_ans_grow(struct BufAnsCoder *c);
+void aom_buf_ans_flush(struct BufAnsCoder *const c);
+
static INLINE void buf_ans_write_init(struct BufAnsCoder *const c,
uint8_t *const output_buffer) {
c->offset = 0;
@@ -83,23 +85,6 @@
++c->offset;
}
-static INLINE void buf_ans_flush(struct BufAnsCoder *const c) {
- int offset;
- for (offset = c->offset - 1; offset >= 0; --offset) {
- if (c->buf[offset].method == ANS_METHOD_RANS) {
- struct rans_sym sym;
- sym.prob = c->buf[offset].prob;
- sym.cum_prob = c->buf[offset].val_start;
- rans_write(&c->ans, &sym);
- } else {
- uabs_write(&c->ans, (uint8_t)c->buf[offset].val_start,
- (AnsP8)c->buf[offset].prob);
- }
- }
- c->offset = 0;
- c->output_bytes += ans_write_end(&c->ans);
-}
-
static INLINE void buf_uabs_write_bit(struct BufAnsCoder *c, int bit) {
buf_uabs_write(c, bit, 128);
}
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 1bed65c..7817204 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -3536,7 +3536,7 @@
buf_ans_write_init(buf_ans, buf->data + data_offset);
write_modes(cpi, &tile_info, buf_ans, &tok, tok_end);
assert(tok == tok_end);
- buf_ans_flush(buf_ans);
+ aom_buf_ans_flush(buf_ans);
tile_size = buf_ans_write_end(buf_ans);
#endif // !CONFIG_ANS
@@ -3685,7 +3685,7 @@
buf_ans_write_init(buf_ans, dst + total_size);
write_modes(cpi, &tile_info, buf_ans, &tok, tok_end);
assert(tok == tok_end);
- buf_ans_flush(buf_ans);
+ aom_buf_ans_flush(buf_ans);
tile_size = buf_ans_write_end(buf_ans);
#else
aom_start_encode(&mode_bc, dst + total_size);
@@ -4327,7 +4327,7 @@
#endif
#endif
#if CONFIG_ANS
- buf_ans_flush(header_bc);
+ aom_buf_ans_flush(header_bc);
header_size = buf_ans_write_end(header_bc);
assert(header_size <= 0xffff);
return header_size;
diff --git a/test/ans_test.cc b/test/ans_test.cc
index e3ea14a..4c63352 100644
--- a/test/ans_test.cc
+++ b/test/ans_test.cc
@@ -56,7 +56,7 @@
for (PvVec::const_iterator it = pv_vec.begin(); it != pv_vec.end(); ++it) {
buf_uabs_write(&a, it->second, 256 - it->first);
}
- buf_ans_flush(&a);
+ aom_buf_ans_flush(&a);
std::clock_t enc_time = std::clock() - start;
int offset = buf_ans_write_end(&a);
aom_buf_ans_free(&a);
@@ -125,7 +125,7 @@
it != sym_vec.end(); ++it) {
buf_rans_write(&a, &tab[*it]);
}
- buf_ans_flush(&a);
+ aom_buf_ans_flush(&a);
std::clock_t enc_time = std::clock() - start;
int offset = buf_ans_write_end(&a);
aom_buf_ans_free(&a);