一、LZO
一)、宏
#define | AV_LZO_INPUT_PADDING 8 |
#define | AV_LZO_OUTPUT_PADDING 12 |
二)、函数
int | av_lzo1x_decode (void *out, int *outlen, const void *in, int *inlen) |
参数:out:输出缓冲
outlen:输出缓冲区的大小,剩余的字节数在这里返回
in:输入缓冲
inlen:输入缓冲区的大小,此处返回的字节数
返回:0成功,否则上面的错误标志的组合
确保所有缓冲区都被适当填充,必须提供AV_LZO_INPUT_PADDING,必须提供AV_LZO_OUTPUT_PADDING附加字节。
三)、av_lzo1x_decode返回的错误标志
#define | AV_LZO_INPUT_DEPLETED 1 |
#define | AV_LZO_OUTPUT_FULL 2 |
#define | AV_LZO_INVALID_BACKPTR 4 |
#define | AV_LZO_ERROR 8 |
二、RC4
一)、数据结构
struct | AVRC4{ uint8_t state [256]; int x; int y; } |
二)、函数
AVRC4 * | av_rc4_alloc (void) |
int | av_rc4_init (struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt) |
参数:key_bits:必须是8的倍数
decrypt:0加密,1解密,目前没有任何效果
返回:成功为零,否则为负值
void | av_rc4_crypt (struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt) |
参数:count:字节数
dst:目标数组,可以等于src
src:源数组,可以等于dst,可能为NULL
iv:不用(还)用于RC4,应为NULL
decrypt:0用于加密,1用于解密,不(尚)使用
三、TEA
一)、函数
struct AVTEA * | av_tea_alloc (void) |
void | av_tea_init (struct AVTEA *ctx, const uint8_t key[16], int rounds) |
参数:ctx:AVTEA上下文
key:用于加密/解密的16字节的密钥
rounds:TEA的回合次数(64个是“标准”)
void | av_tea_crypt (struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt) |
参数:ctx:AVTEA上下文
dst:目标数组,可以等于src
src:源数组,可以等于dst
count:8字节块数
iv:CBC模式的初始化向量,如果NULL,则使用ECB
decrypt:0加密,1解密
二)、变量
const int | av_tea_size |