Lines Matching refs:info

41     AVEncryptionInfo *info;
43 info = av_mallocz(sizeof(*info));
44 if (!info)
47 info->key_id = av_mallocz(key_id_size);
48 info->key_id_size = key_id_size;
49 info->iv = av_mallocz(iv_size);
50 info->iv_size = iv_size;
51 info->subsamples = av_calloc(subsample_count, sizeof(*info->subsamples));
52 info->subsample_count = subsample_count;
54 // Allow info->subsamples to be NULL if there are no subsamples.
55 if (!info->key_id || !info->iv || (!info->subsamples && subsample_count)) {
56 av_encryption_info_free(info);
60 return info;
63 AVEncryptionInfo *av_encryption_info_clone(const AVEncryptionInfo *info)
67 ret = av_encryption_info_alloc(info->subsample_count, info->key_id_size, info->iv_size);
71 ret->scheme = info->scheme;
72 ret->crypt_byte_block = info->crypt_byte_block;
73 ret->skip_byte_block = info->skip_byte_block;
74 memcpy(ret->iv, info->iv, info->iv_size);
75 memcpy(ret->key_id, info->key_id, info->key_id_size);
76 memcpy(ret->subsamples, info->subsamples, sizeof(*info->subsamples) * info->subsample_count);
80 void av_encryption_info_free(AVEncryptionInfo *info)
82 if (info) {
83 av_free(info->key_id);
84 av_free(info->iv);
85 av_free(info->subsamples);
86 av_free(info);
92 AVEncryptionInfo *info;
105 info = av_encryption_info_alloc(subsample_count, key_id_size, iv_size);
106 if (!info)
109 info->scheme = AV_RB32(buffer);
110 info->crypt_byte_block = AV_RB32(buffer + 4);
111 info->skip_byte_block = AV_RB32(buffer + 8);
112 memcpy(info->key_id, buffer + 24, key_id_size);
113 memcpy(info->iv, buffer + key_id_size + 24, iv_size);
117 info->subsamples[i].bytes_of_clear_data = AV_RB32(buffer);
118 info->subsamples[i].bytes_of_protected_data = AV_RB32(buffer + 4);
122 return info;
125 uint8_t *av_encryption_info_add_side_data(const AVEncryptionInfo *info, size_t *size)
130 if (UINT32_MAX - FF_ENCRYPTION_INFO_EXTRA < info->key_id_size ||
131 UINT32_MAX - FF_ENCRYPTION_INFO_EXTRA - info->key_id_size < info->iv_size ||
132 (UINT32_MAX - FF_ENCRYPTION_INFO_EXTRA - info->key_id_size - info->iv_size) / 8 < info->subsample_count) {
136 *size = FF_ENCRYPTION_INFO_EXTRA + info->key_id_size + info->iv_size +
137 (info->subsample_count * 8);
142 AV_WB32(cur_buffer, info->scheme);
143 AV_WB32(cur_buffer + 4, info->crypt_byte_block);
144 AV_WB32(cur_buffer + 8, info->skip_byte_block);
145 AV_WB32(cur_buffer + 12, info->key_id_size);
146 AV_WB32(cur_buffer + 16, info->iv_size);
147 AV_WB32(cur_buffer + 20, info->subsample_count);
149 memcpy(cur_buffer, info->key_id, info->key_id_size);
150 cur_buffer += info->key_id_size;
151 memcpy(cur_buffer, info->iv, info->iv_size);
152 cur_buffer += info->iv_size;
153 for (i = 0; i < info->subsample_count; i++) {
154 AV_WB32(cur_buffer, info->subsamples[i].bytes_of_clear_data);
155 AV_WB32(cur_buffer + 4, info->subsamples[i].bytes_of_protected_data);
189 AV_DrmCencInfo *av_encryption_info_add_side_data_ex(const AVEncryptionInfo *info, size_t *side_data_size,
193 if ((info == NULL) || (info->key_id_size != AV_DRM_KEY_ID_SIZE) || (info->iv_size > AV_DRM_IV_SIZE) ||
194 (info->iv_size == 0) || (info->subsample_count > AV_DRM_MAX_SUB_SAMPLE_NUM) || (info->key_id == NULL) ||
195 (info->iv == NULL) || (info->subsamples == NULL) || (side_data_size == NULL)) {
204 av_encryption_info_set_drm_algo(info->scheme, cenc_info);
205 cenc_info->key_id_len = info->key_id_size;
206 memcpy(cenc_info->key_id, info->key_id, info->key_id_size);
207 cenc_info->iv_len = info->iv_size;
208 memcpy(cenc_info->iv, info->iv, info->iv_size);
210 cenc_info->encrypt_blocks = info->crypt_byte_block;
211 cenc_info->skip_blocks = info->skip_byte_block;
213 cenc_info->sub_sample_num = info->subsample_count;
216 cenc_info->sub_samples[i].clear_header_len = info->subsamples[i].bytes_of_clear_data;
217 cenc_info->sub_samples[i].pay_load_len = info->subsamples[i].bytes_of_protected_data;
219 if ((info->subsample_count == 0) && (info->crypt_byte_block == 0) && (info->skip_byte_block == 0) &&
220 ((info->scheme == MKBETAG('c','e','n','s')) || (info->scheme == MKBETAG('s','m','4','r')))) {
251 AVEncryptionInitInfo *info;
254 info = av_mallocz(sizeof(*info));
255 if (!info)
258 info->system_id = av_mallocz(system_id_size);
259 info->system_id_size = system_id_size;
260 info->key_ids = key_id_size ? av_calloc(num_key_ids, sizeof(*info->key_ids)) : NULL;
261 info->num_key_ids = num_key_ids;
262 info->key_id_size = key_id_size;
263 info->data = av_mallocz(data_size);
264 info->data_size = data_size;
267 if ((!info->system_id && system_id_size) || (!info->data && data_size) ||
268 (!info->key_ids && num_key_ids && key_id_size)) {
269 av_encryption_init_info_free(info);
275 info->key_ids[i] = av_mallocz(key_id_size);
276 if (!info->key_ids[i]) {
277 av_encryption_init_info_free(info);
283 return info;
286 void av_encryption_init_info_free(AVEncryptionInitInfo *info)
289 if (info) {
290 for (i = 0; i < info->num_key_ids; i++) {
291 av_free(info->key_ids[i]);
293 av_encryption_init_info_free(info->next);
294 av_free(info->system_id);
295 av_free(info->key_ids);
296 av_free(info->data);
297 av_free(info);
304 // |ret| tracks the front of the list, |info| tracks the back.
305 AVEncryptionInitInfo *ret = NULL, *info, *temp_info;
340 info = ret = temp_info;
342 info->next = temp_info;
343 info = temp_info;
346 memcpy(info->system_id, side_data, system_id_size);
350 memcpy(info->key_ids[j], side_data, key_id_size);
354 memcpy(info->data, side_data, data_size);
362 uint8_t *av_encryption_init_info_add_side_data(const AVEncryptionInitInfo *info, size_t *side_data_size)
371 for (cur_info = info; cur_info; cur_info = cur_info->next) {
393 for (cur_info = info; cur_info; cur_info = cur_info->next) {