MultipleDescriptor,
Descriptor,
Track,
- EssenceContainerData,
CryptoContext,
};
-typedef struct MXFCryptoContext {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
UID context_uid;
UID source_container_ul;
} MXFCryptoContext;
-typedef struct MXFStructuralComponent {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
UID source_package_uid;
int source_track_id;
} MXFStructuralComponent;
-typedef struct MXFSequence {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
UID data_definition_ul;
int64_t duration;
} MXFSequence;
-typedef struct MXFTrack {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
MXFSequence *sequence; /* mandatory, and only one */
AVRational edit_rate;
} MXFTrack;
-typedef struct MXFDescriptor {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
UID essence_container_ul;
int extradata_size;
} MXFDescriptor;
-typedef struct MXFPackage {
+typedef struct {
UID uid;
enum MXFMetadataSetType type;
UID package_uid;
UID descriptor_ref;
} MXFPackage;
-typedef struct MXFEssenceContainerData {
- UID uid;
- enum MXFMetadataSetType type;
- UID linked_package_uid;
-} MXFEssenceContainerData;
-
typedef struct {
UID uid;
enum MXFMetadataSetType type;
} MXFMetadataSet;
-typedef struct MXFContext {
+typedef struct {
UID *packages_refs;
int packages_count;
MXFMetadataSet **metadata_sets;
struct AVAES *aesc;
} MXFContext;
-typedef struct KLVPacket {
+typedef struct {
UID key;
offset_t offset;
uint64_t length;
Clip,
};
-typedef struct MXFCodecUL {
+typedef struct {
UID uid;
enum CodecID id;
enum MXFWrappingScheme wrapping;
} MXFCodecUL;
-typedef struct MXFDataDefinitionUL {
+typedef struct {
UID uid;
enum CodecType type;
} MXFDataDefinitionUL;
-typedef struct MXFMetadataReadTableEntry {
+typedef struct {
const UID key;
int (*read)();
int ctx_size;
// source klv key
klv_decode_ber_length(pb);
get_buffer(pb, klv->key, 16);
- if (!IS_KLV_KEY(klv, mxf_essence_element_key)) goto err_out;
+ if (!IS_KLV_KEY(klv, mxf_essence_element_key))
+ return -1;
index = mxf_get_stream_index(s, klv);
- if (index < 0) goto err_out;
+ if (index < 0)
+ return -1;
// source size
klv_decode_ber_length(pb);
orig_size = get_be64(pb);
- if (orig_size < plaintext_size) goto err_out;
+ if (orig_size < plaintext_size)
+ return -1;
// enc. code
size = klv_decode_ber_length(pb);
- if (size < 32 || size - 32 < orig_size) goto err_out;
+ if (size < 32 || size - 32 < orig_size)
+ return -1;
get_buffer(pb, ivec, 16);
get_buffer(pb, tmpbuf, 16);
if (mxf->aesc)
pkt->stream_index = index;
url_fskip(pb, end - url_ftell(pb));
return 0;
-
-err_out:
- url_fskip(pb, end - url_ftell(pb));
- return -1;
}
static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
} else
url_fskip(&s->pb, klv.length);
}
- return AVERROR_IO;
+ return AVERROR(EIO);
}
static int mxf_add_metadata_set(MXFContext *mxf, void *metadata_set)