GF_Err hvcc_Write(GF_Box *s, GF_BitStream *bs) { GF_Err e; GF_HEVCConfigurationBox *ptr = (GF_HEVCConfigurationBox *) s; if (!s) return GF_BAD_PARAM; if (!ptr->config) return GF_OK; e = gf_isom_box_write_header(s, bs); if (e) return e; return gf_odf_hevc_cfg_write_bs(ptr->config, bs); }
GF_EXPORT GF_Err gf_odf_hevc_cfg_write(GF_HEVCConfig *cfg, char **outData, u32 *outSize) { GF_Err e; GF_BitStream *bs = gf_bs_new(NULL, 0, GF_BITSTREAM_WRITE); *outSize = 0; *outData = NULL; e = gf_odf_hevc_cfg_write_bs(cfg, bs); if (e==GF_OK) gf_bs_get_content(bs, outData, outSize); gf_bs_del(bs); return e; }
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; }