static int gxf_write_umf_packet(ByteIOContext *pb, GXFContext *ctx) { int64_t pos = url_ftell(pb); gxf_write_packet_header(pb, PKT_UMF); /* preamble */ put_byte(pb, 3); /* first and last (only) packet */ put_be32(pb, ctx->umf_length); /* data length */ ctx->umf_start_offset = url_ftell(pb); gxf_write_umf_payload(pb, ctx); gxf_write_umf_material_description(pb, ctx); ctx->umf_track_size = gxf_write_umf_track_description(pb, ctx); ctx->umf_media_size = gxf_write_umf_media_description(pb, ctx); ctx->umf_user_data_size = gxf_write_umf_user_data(pb, ctx); ctx->umf_length = url_ftell(pb) - ctx->umf_start_offset; return updatePacketSize(pb, pos); }
static int gxf_write_umf_packet(AVFormatContext *s) { GXFContext *gxf = s->priv_data; AVIOContext *pb = s->pb; int64_t pos = avio_tell(pb); gxf_write_packet_header(pb, PKT_UMF); /* preamble */ avio_w8(pb, 3); /* first and last (only) packet */ avio_wb32(pb, gxf->umf_length); /* data length */ gxf->umf_start_offset = avio_tell(pb); gxf_write_umf_payload(s); gxf_write_umf_material_description(s); gxf->umf_track_size = gxf_write_umf_track_description(s); gxf->umf_media_size = gxf_write_umf_media_description(s); gxf->umf_length = avio_tell(pb) - gxf->umf_start_offset; return updatePacketSize(pb, pos); }