Lines Matching refs:asset
23 static void parse_xll_parameters(DCAExssParser *s, DCAExssAsset *asset)
26 asset->xll_size = get_bits(&s->gb, s->exss_size_nbits) + 1;
29 if (asset->xll_sync_present = get_bits1(&s->gb)) {
39 asset->xll_delay_nframes = get_bits_long(&s->gb, xll_delay_nbits);
42 asset->xll_sync_offset = get_bits(&s->gb, s->exss_size_nbits);
44 asset->xll_delay_nframes = 0;
45 asset->xll_sync_offset = 0;
49 static void parse_lbr_parameters(DCAExssParser *s, DCAExssAsset *asset)
52 asset->lbr_size = get_bits(&s->gb, 14) + 1;
60 static int parse_descriptor(DCAExssParser *s, DCAExssAsset *asset)
64 // Size of audio asset descriptor in bytes
67 // Audio asset identifier
68 asset->asset_index = get_bits(&s->gb, 3);
99 asset->pcm_bit_res = get_bits(&s->gb, 5) + 1;
102 asset->max_sample_rate = ff_dca_sampling_freqs[get_bits(&s->gb, 4)];
105 asset->nchannels_total = get_bits(&s->gb, 8) + 1;
108 if (asset->one_to_one_map_ch_to_spkr = get_bits1(&s->gb)) {
114 asset->embedded_stereo = asset->nchannels_total > 2 && get_bits1(&s->gb);
117 asset->embedded_6ch = asset->nchannels_total > 6 && get_bits1(&s->gb);
120 if (asset->spkr_mask_enabled = get_bits1(&s->gb)) {
125 asset->spkr_mask = get_bits(&s->gb, spkr_mask_nbits);
152 asset->embedded_stereo = 0;
153 asset->embedded_6ch = 0;
154 asset->spkr_mask_enabled = 0;
155 asset->spkr_mask = 0;
158 asset->representation_type = get_bits(&s->gb, 3);
179 if (drc_present && asset->embedded_stereo)
208 nchannels_dmix = asset->nchannels_total;
209 if (asset->embedded_6ch)
211 if (asset->embedded_stereo)
234 // Coding mode for the asset
235 asset->coding_mode = get_bits(&s->gb, 2);
237 // Coding components used in asset
238 switch (asset->coding_mode) {
240 asset->extension_mask = get_bits(&s->gb, 12);
242 if (asset->extension_mask & DCA_EXSS_CORE) {
244 asset->core_size = get_bits(&s->gb, 14) + 1;
251 if (asset->extension_mask & DCA_EXSS_XBR)
253 asset->xbr_size = get_bits(&s->gb, 14) + 1;
255 if (asset->extension_mask & DCA_EXSS_XXCH)
257 asset->xxch_size = get_bits(&s->gb, 14) + 1;
259 if (asset->extension_mask & DCA_EXSS_X96)
261 asset->x96_size = get_bits(&s->gb, 12) + 1;
263 if (asset->extension_mask & DCA_EXSS_LBR)
264 parse_lbr_parameters(s, asset);
266 if (asset->extension_mask & DCA_EXSS_XLL)
267 parse_xll_parameters(s, asset);
269 if (asset->extension_mask & DCA_EXSS_RSV1)
272 if (asset->extension_mask & DCA_EXSS_RSV2)
277 asset->extension_mask = DCA_EXSS_XLL;
278 parse_xll_parameters(s, asset);
282 asset->extension_mask = DCA_EXSS_LBR;
283 parse_lbr_parameters(s, asset);
287 asset->extension_mask = 0;
302 if (asset->extension_mask & DCA_EXSS_XLL)
304 asset->hd_stream_id = get_bits(&s->gb, 3);
309 // Decode asset in secondary decoder flag
315 av_log(s->avctx, AV_LOG_ERROR, "Read past end of EXSS asset descriptor\n");
322 static int set_exss_offsets(DCAExssAsset *asset)
324 int offs = asset->asset_offset;
325 int size = asset->asset_size;
327 if (asset->extension_mask & DCA_EXSS_CORE) {
328 asset->core_offset = offs;
329 if (asset->core_size > size)
331 offs += asset->core_size;
332 size -= asset->core_size;
335 if (asset->extension_mask & DCA_EXSS_XBR) {
336 asset->xbr_offset = offs;
337 if (asset->xbr_size > size)
339 offs += asset->xbr_size;
340 size -= asset->xbr_size;
343 if (asset->extension_mask & DCA_EXSS_XXCH) {
344 asset->xxch_offset = offs;
345 if (asset->xxch_size > size)
347 offs += asset->xxch_size;
348 size -= asset->xxch_size;
351 if (asset->extension_mask & DCA_EXSS_X96) {
352 asset->x96_offset = offs;
353 if (asset->x96_size > size)
355 offs += asset->x96_size;
356 size -= asset->x96_size;
359 if (asset->extension_mask & DCA_EXSS_LBR) {
360 asset->lbr_offset = offs;
361 if (asset->lbr_size > size)
363 offs += asset->lbr_size;
364 size -= asset->lbr_size;
367 if (asset->extension_mask & DCA_EXSS_XLL) {
368 asset->xll_offset = offs;
369 if (asset->xll_size > size)
371 offs += asset->xll_size;
372 size -= asset->xll_size;
451 // Active audio asset mask
477 // Size of encoded asset data in bytes
485 av_log(s->avctx, AV_LOG_ERROR, "EXSS asset out of bounds\n");
490 // Audio asset descriptor
496 av_log(s->avctx, AV_LOG_ERROR, "Invalid extension size in EXSS asset descriptor\n");
503 // Backward compatible core asset index