59 static const uint32_t
T[64] = {
60 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee,
61 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
62 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
63 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
65 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa,
66 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
67 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed,
68 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
70 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
71 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
72 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05,
73 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
75 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039,
76 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
77 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
78 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,
81 #define CORE(i, a, b, c, d) do { \ 82 t = S[i >> 4][i & 3]; \ 86 if (i < 16) a += (d ^ (b & (c ^ d))) + X[ i & 15]; \ 87 else a += (c ^ (d & (c ^ b))) + X[(1 + 5*i) & 15]; \ 89 if (i < 48) a += (b ^ c ^ d) + X[(5 + 3*i) & 15]; \ 90 else a += (c ^ (b | ~d)) + X[( 7*i) & 15]; \ 92 a = b + (a << t | a >> (32 - t)); \ 100 uint32_t
b = ABCD[2];
101 uint32_t
c = ABCD[1];
102 uint32_t
d = ABCD[0];
105 for (
i = 0;
i < 16;
i++)
110 for (i = 0; i < 64; i++) {
120 CORE( i, a,b,c,d); CORE((i+1),d,a,b,c); \ 121 CORE((i+2),c,d,a,b); CORE((i+3),b,c,d,a) 122 #define CORE4(i) CORE2(i); CORE2((i+4)); CORE2((i+8)); CORE2((i+12)) 136 ctx->
ABCD[0] = 0x10325476;
137 ctx->
ABCD[1] = 0x98badcfe;
138 ctx->
ABCD[2] = 0xefcdab89;
139 ctx->
ABCD[3] = 0x67452301;
149 for (i = 0; i <
len; i++) {
164 while ((ctx->
len & 63) != 56)
169 for (i = 0; i < 4; i++)
185 static void print_md5(
uint8_t *md5)
188 for (i = 0; i < 16; i++)
198 for (i = 0; i < 1000; i++)
200 av_md5_sum(md5val, in, 1000); print_md5(md5val);
201 av_md5_sum(md5val, in, 63); print_md5(md5val);
202 av_md5_sum(md5val, in, 64); print_md5(md5val);
203 av_md5_sum(md5val, in, 65); print_md5(md5val);
204 for (i = 0; i < 1000; i++)
206 av_md5_sum(md5val, in, 999); print_md5(md5val);
static const uint32_t T[64]
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
static const uint8_t S[4][4]
memory handling functions
About Git write you should know how to use GIT properly Luckily Git comes with excellent documentation git help man git shows you the available git< command > help man git< command > shows information about the subcommand< command > The most comprehensive manual is the website Git Reference visit they are quite exhaustive You do not need a special username or password All you need is to provide a ssh public key to the Git server admin What follows now is a basic introduction to Git and some FFmpeg specific guidelines Read it at least if you are granted commit privileges to the FFmpeg project you are expected to be familiar with these rules I if not You can get git from etc no matter how small Every one of them has been saved from looking like a fool by this many times It s very easy for stray debug output or cosmetic modifications to slip in
static void body(uint32_t ABCD[4], uint32_t X[16])
struct AVMD5 * av_md5_alloc(void)
void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len)
void av_md5_update(AVMD5 *ctx, const uint8_t *src, const int len)
void av_md5_init(AVMD5 *ctx)
synthesis window for stochastic i
#define CORE(i, a, b, c, d)
void av_md5_final(AVMD5 *ctx, uint8_t *dst)
printf("static const uint8_t my_array[100] = {\n")
else dst[i][x+y *dst_stride[i]]
int main(int argc, char **argv)