27 #define AES_BLOCK_SIZE (16) 
   96     for (cur_pos = counter + 7; cur_pos >= 
counter; cur_pos--) {
 
  115     uint8_t* encrypted_counter_pos;
 
  117     while (src < src_end) {
 
  126         cur_end_pos = 
FFMIN(cur_end_pos, src_end);
 
  131         while (src < cur_end_pos) {
 
  132             *dst++ = *src++ ^ *encrypted_counter_pos++;
 
uint8_t counter[AES_BLOCK_SIZE]
 
static void av_aes_ctr_increment_be64(uint8_t *counter)
 
void av_aes_crypt(AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt)
Encrypt or decrypt a buffer using a previously initialized context. 
 
void av_aes_ctr_increment_iv(struct AVAESCTR *a)
Increment the top 64 bit of the iv (performed after each frame) 
 
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
 
uint8_t encrypted_counter[AES_BLOCK_SIZE]
 
void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int count)
Process a buffer using a previously initialized context. 
 
void av_aes_ctr_free(struct AVAESCTR *a)
Release an AVAESCTR context. 
 
struct AVAES * av_aes_alloc(void)
Allocate an AVAES context. 
 
struct AVAESCTR * av_aes_ctr_alloc(void)
Allocate an AVAESCTR context. 
 
void av_aes_ctr_set_random_iv(struct AVAESCTR *a)
Generate a random iv. 
 
int av_aes_init(AVAES *a, const uint8_t *key, int key_bits, int decrypt)
Initialize an AVAES context. 
 
void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t *iv)
Forcefully change the 8-byte iv. 
 
common internal and external API header 
 
int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key)
Initialize an AVAESCTR context. 
 
uint32_t av_get_random_seed(void)
Get a seed to use in conjunction with random functions. 
 
void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t *iv)
Forcefully change the "full" 16-byte iv, including the counter. 
 
const uint8_t * av_aes_ctr_get_iv(struct AVAESCTR *a)
Get the current iv.