54 0xd79e8283acea4620, 0x7a9762f445afd0d8,
55 0x354d60a60b8c79f1, 0x584e1cde00b07aee,
56 0x1573cd93da7df623, 0x47f98d79620dd535
85 av_log(s, level,
"%s: %s\n", name, buf);
99 if (r_val != oc->
r_val) {
100 memset(oc->
r_val, 0, 24);
101 memcpy(oc->
r_val, r_val, len);
103 memcpy(&oc->
r_val[16], r_val, 8);
106 if (n_val != oc->
n_val) {
107 memset(oc->
n_val, 0, 24);
108 memcpy(oc->
n_val, n_val, len);
110 memcpy(&oc->
n_val[16], n_val, 8);
116 #define OMA_RPROBE_M_VAL 48 + 1
119 const uint8_t *r_val)
125 if (!enc_header || !r_val ||
126 size < OMA_ENC_HEADER_SIZE + oc->k_size + oc->
e_size + oc->
i_size ||
145 return memcmp(&enc_header[pos], oc->
sm_val, 8) ? -1 : 0;
149 const uint8_t *n_val)
153 uint32_t taglen, datalen;
156 if (!enc_header || !n_val ||
157 size < OMA_ENC_HEADER_SIZE + oc->k_size + 4)
161 if (!memcmp(&enc_header[pos],
"EKB ", 4))
170 taglen =
AV_RB32(&enc_header[pos+32]);
171 datalen =
AV_RB32(&enc_header[pos+36]) >> 4;
174 if (size - pos < taglen)
179 if (datalen << 4 > size - pos)
183 while (datalen-- > 0) {
205 if (!strcmp(em->
tag,
"GEOB") &&
237 oc->
rid =
AV_RB32(&gdata[OMA_ENC_HEADER_SIZE + 28]);
240 memcpy(oc->
iv, &header[0x58], 8);
248 if (!memcmp(oc->
r_val, (
const uint8_t[8]){0}, 8) ||
249 rprobe(s, gdata, geob->datasize, oc->r_val) < 0 &&
250 nprobe(s, gdata, geob->datasize, oc->n_val) < 0) {
256 kset(s, buf, buf, 16);
257 if (!
rprobe(s, gdata, geob->datasize, oc->r_val) ||
258 !
nprobe(s, gdata, geob->datasize, oc->n_val))
281 int ret, framesize, jsflag, samplerate;
282 uint32_t codec_params;
295 if (memcmp(buf, ((
const uint8_t[]){
'E',
'A',
'3'}),3) || buf[4] != 0 || buf[5] !=
EA3_HEADER_SIZE) {
304 if (eid != -1 && eid != -128 &&
decrypt_init(s, extra_meta, buf) < 0) {
311 codec_params =
AV_RB24(&buf[33]);
329 if (samplerate != 44100)
333 framesize = (codec_params & 0x3FF) * 8;
334 jsflag = (codec_params >> 17) & 1;
347 AV_WL32(&edata[2], samplerate);
357 framesize = ((codec_params & 0x3FF) * 8) + 8;
399 if (ret < packet_size)
410 if (ret == packet_size)
412 (packet_size >> 3), oc->
iv, 1);
414 memset(oc->
iv, 0, 8);
423 unsigned tag_len = 0;
470 memset(oc->
iv, 0, 8);
483 .extensions =
"oma,omg,aa3",