static int gxf_write_map_packet(AVFormatContext *s, int rewrite) { GXFContext *gxf = s->priv_data; AVIOContext *pb = s->pb; int64_t pos = avio_tell(pb); if (!rewrite) { if (!(gxf->map_offsets_nb % 30)) { gxf->map_offsets = av_realloc_f(gxf->map_offsets, sizeof(*gxf->map_offsets), gxf->map_offsets_nb+30); if (!gxf->map_offsets) { av_log(s, AV_LOG_ERROR, "could not realloc map offsets\n"); return -1; } } gxf->map_offsets[gxf->map_offsets_nb++] = pos; // do not increment here } gxf_write_packet_header(pb, PKT_MAP); /* preamble */ avio_w8(pb, 0xE0); /* version */ avio_w8(pb, 0xFF); /* reserved */ gxf_write_material_data_section(s); gxf_write_track_description_section(s); return updatePacketSize(pb, pos); }
static int gxf_write_map_packet(ByteIOContext *pb, GXFContext *ctx) { int64_t pos = url_ftell(pb); gxf_write_packet_header(pb, PKT_MAP); /* preamble */ put_byte(pb, 0xE0); /* version */ put_byte(pb, 0xFF); /* reserved */ gxf_write_material_data_section(pb, ctx); gxf_write_track_description_section(pb, ctx); return updatePacketSize(pb, pos); }