This minimize code differences between AOM master and nextgenv2 Change-Id: If144865bdf3ef0818e7aac11018b9e786444c550
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
 | 
						|
 *
 | 
						|
 * This source code is subject to the terms of the BSD 2 Clause License and
 | 
						|
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 | 
						|
 * was not distributed with this source code in the LICENSE file, you can
 | 
						|
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 | 
						|
 * Media Patent License 1.0 was not distributed with this source code in the
 | 
						|
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
 | 
						|
 */
 | 
						|
 | 
						|
#include <limits.h>
 | 
						|
#include <stdlib.h>
 | 
						|
 | 
						|
#include "./aom_config.h"
 | 
						|
#include "./bitwriter_buffer.h"
 | 
						|
 | 
						|
size_t aom_wb_bytes_written(const struct aom_write_bit_buffer *wb) {
 | 
						|
  return wb->bit_offset / CHAR_BIT + (wb->bit_offset % CHAR_BIT > 0);
 | 
						|
}
 | 
						|
 | 
						|
void aom_wb_write_bit(struct aom_write_bit_buffer *wb, int bit) {
 | 
						|
  const int off = (int)wb->bit_offset;
 | 
						|
  const int p = off / CHAR_BIT;
 | 
						|
  const int q = CHAR_BIT - 1 - off % CHAR_BIT;
 | 
						|
  if (q == CHAR_BIT - 1) {
 | 
						|
    wb->bit_buffer[p] = bit << q;
 | 
						|
  } else {
 | 
						|
    wb->bit_buffer[p] &= ~(1 << q);
 | 
						|
    wb->bit_buffer[p] |= bit << q;
 | 
						|
  }
 | 
						|
  wb->bit_offset = off + 1;
 | 
						|
}
 | 
						|
 | 
						|
void aom_wb_write_literal(struct aom_write_bit_buffer *wb, int data, int bits) {
 | 
						|
  int bit;
 | 
						|
  for (bit = bits - 1; bit >= 0; bit--) aom_wb_write_bit(wb, (data >> bit) & 1);
 | 
						|
}
 | 
						|
 | 
						|
void aom_wb_write_inv_signed_literal(struct aom_write_bit_buffer *wb, int data,
 | 
						|
                                     int bits) {
 | 
						|
  aom_wb_write_literal(wb, data, bits + 1);
 | 
						|
}
 |