- Copy Brotli algorithm 3rd party source code for tool Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bell Song <binx.song@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright 2013 Google Inc. All Rights Reserved.
 | 
						|
 | 
						|
   Distributed under MIT license.
 | 
						|
   See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
 | 
						|
*/
 | 
						|
 | 
						|
/* Bit reading helpers */
 | 
						|
 | 
						|
#include "./bit_reader.h"
 | 
						|
 | 
						|
#include "../common/types.h"
 | 
						|
#include "./port.h"
 | 
						|
 | 
						|
#if defined(__cplusplus) || defined(c_plusplus)
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
void BrotliInitBitReader(BrotliBitReader* const br) {
 | 
						|
  br->val_ = 0;
 | 
						|
  br->bit_pos_ = sizeof(br->val_) << 3;
 | 
						|
}
 | 
						|
 | 
						|
BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {
 | 
						|
  size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
 | 
						|
  /* Fixing alignment after unaligned BrotliFillWindow would result accumulator
 | 
						|
     overflow. If unalignment is caused by BrotliSafeReadBits, then there is
 | 
						|
     enough space in accumulator to fix aligment. */
 | 
						|
  if (!BROTLI_ALIGNED_READ) {
 | 
						|
    aligned_read_mask = 0;
 | 
						|
  }
 | 
						|
  if (BrotliGetAvailableBits(br) == 0) {
 | 
						|
    if (!BrotliPullByte(br)) {
 | 
						|
      return BROTLI_FALSE;
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
 | 
						|
    if (!BrotliPullByte(br)) {
 | 
						|
      /* If we consumed all the input, we don't care about the alignment. */
 | 
						|
      return BROTLI_TRUE;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return BROTLI_TRUE;
 | 
						|
}
 | 
						|
 | 
						|
#if defined(__cplusplus) || defined(c_plusplus)
 | 
						|
}  /* extern "C" */
 | 
						|
#endif
 |