GF_EXPORT GF_HEVCConfig *gf_odf_hevc_cfg_read(char *dsi, u32 dsi_size, Bool is_shvc) { GF_BitStream *bs = gf_bs_new(dsi, dsi_size, GF_BITSTREAM_READ); GF_HEVCConfig *cfg = gf_odf_hevc_cfg_read_bs(bs, is_shvc); gf_bs_del(bs); return cfg; }
GF_Err hvcc_Read(GF_Box *s, GF_BitStream *bs) { u64 pos; GF_HEVCConfigurationBox *ptr = (GF_HEVCConfigurationBox *)s; if (ptr->config) gf_odf_hevc_cfg_del(ptr->config); pos = gf_bs_get_position(bs); ptr->config = gf_odf_hevc_cfg_read_bs(bs); pos = gf_bs_get_position(bs) - pos ; if (pos < ptr->size) ptr->size -= (u32) pos; return GF_OK; }
GF_HEVCConfig *HEVC_DuplicateConfig(GF_HEVCConfig *cfg) { char *data; u32 data_size; GF_HEVCConfig *new_cfg; GF_BitStream *bs; if (!cfg) return NULL; bs = gf_bs_new(NULL, 0, GF_BITSTREAM_WRITE); gf_odf_hevc_cfg_write_bs(cfg, bs); gf_bs_get_content(bs, &data, &data_size); gf_bs_del(bs); bs = gf_bs_new(data, data_size, GF_BITSTREAM_READ); new_cfg = gf_odf_hevc_cfg_read_bs(bs); gf_bs_del(bs); gf_free(data); return new_cfg; }