FFmpeg
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
mxfdec.c File Reference
#include <inttypes.h>
#include "libavutil/aes.h"
#include "libavutil/avassert.h"
#include "libavutil/mastering_display_metadata.h"
#include "libavutil/mathematics.h"
#include "libavcodec/bytestream.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/parseutils.h"
#include "libavutil/timecode.h"
#include "libavutil/opt.h"
#include "avformat.h"
#include "internal.h"
#include "mxf.h"

Go to the source code of this file.

Data Structures

struct  MXFPartition
 
struct  MXFCryptoContext
 
struct  MXFStructuralComponent
 
struct  MXFSequence
 
struct  MXFTimecodeComponent
 
struct  MXFPulldownComponent
 
struct  MXFEssenceGroup
 
struct  MXFTaggedValue
 
struct  MXFTrack
 
struct  MXFDescriptor
 
struct  MXFIndexTableSegment
 
struct  MXFPackage
 
struct  MXFEssenceContainerData
 
struct  MXFMetadataSet
 
struct  MXFIndexTable
 
struct  MXFContext
 
struct  MXFMetadataReadTableEntry
 

Macros

#define MXF_MAX_CHUNK_SIZE   (32 << 20)
 
#define MXF_FIELD_DOMINANCE_DEFAULT   0
 
#define MXF_FIELD_DOMINANCE_FF   1 /* coded first, displayed first */
 
#define MXF_FIELD_DOMINANCE_FL   2 /* coded first, displayed last */
 
#define IS_KLV_KEY(x, y)   (!memcmp(x, y, sizeof(y)))
 
#define READ_STR16(type, big_endian)
 
#define SET_STR_METADATA(pb, name, str)
 
#define SET_VERSION_METADATA(pb, name, major, minor, tertiary, patch, release, str)
 
#define SET_UID_METADATA(pb, name, var, str)
 
#define SET_TS_METADATA(pb, name, var, str)
 

Typedefs

typedef int MXFMetadataReadFunc(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 

Enumerations

enum  MXFPartitionType { Header, BodyPartition, Footer }
 
enum  MXFOP {
  OP1a = 1, OP1b, OP1c, OP2a,
  OP2b, OP2c, OP3a, OP3b,
  OP3c, OPAtom, OPSONYOpt
}
 
enum  MXFWrappingScheme { UnknownWrapped = 0, FrameWrapped, ClipWrapped }
 

Functions

static int mxf_read_close (AVFormatContext *s)
 
static void mxf_free_metadataset (MXFMetadataSet **ctx, int freectx)
 
static int64_t klv_decode_ber_length (AVIOContext *pb)
 
static int mxf_read_sync (AVIOContext *pb, const uint8_t *key, unsigned size)
 
static int klv_read_packet (KLVPacket *klv, AVIOContext *pb)
 
static int mxf_get_stream_index (AVFormatContext *s, KLVPacket *klv, int body_sid)
 
static int find_body_sid_by_absolute_offset (MXFContext *mxf, int64_t offset)
 
static int mxf_get_eia608_packet (AVFormatContext *s, AVStream *st, AVPacket *pkt, int64_t length)
 
static int mxf_get_d10_aes3_packet (AVIOContext *pb, AVStream *st, AVPacket *pkt, int64_t length)
 
static int mxf_decrypt_triplet (AVFormatContext *s, AVPacket *pkt, KLVPacket *klv)
 
static int mxf_read_primer_pack (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_partition_pack (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_add_metadata_set (MXFContext *mxf, MXFMetadataSet **metadata_set)
 
static int mxf_read_cryptographic_context (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_strong_ref_array (AVIOContext *pb, UID **refs, int *count)
 
static int mxf_read_utf16_string (AVIOContext *pb, int size, char **str, int be)
 
static int mxf_read_content_storage (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_source_clip (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_timecode_component (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_pulldown_component (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_track (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_sequence (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_essence_group (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_package (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_essence_container_data (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_index_entry_array (AVIOContext *pb, MXFIndexTableSegment *segment)
 
static int mxf_read_index_table_segment (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static void mxf_read_pixel_layout (AVIOContext *pb, MXFDescriptor *descriptor)
 
static int mxf_read_generic_descriptor (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_read_indirect_value (void *arg, AVIOContext *pb, int size)
 
static int mxf_read_tagged_value (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_match_uid (const UID key, const UID uid, int len)
 
static const MXFCodecULmxf_get_codec_ul (const MXFCodecUL *uls, UID *uid)
 
static void * mxf_resolve_strong_ref (MXFContext *mxf, UID *strong_ref, enum MXFMetadataSetType type)
 
static MXFWrappingScheme mxf_get_wrapping_kind (UID *essence_container_ul)
 
static int mxf_get_sorted_table_segments (MXFContext *mxf, int *nb_sorted_segments, MXFIndexTableSegment ***sorted_segments)
 
static int mxf_absolute_bodysid_offset (MXFContext *mxf, int body_sid, int64_t offset, int64_t *offset_out, MXFPartition **partition_out)
 Computes the absolute file offset of the given essence container offset. More...
 
static int64_t mxf_essence_container_end (MXFContext *mxf, int body_sid)
 Returns the end position of the essence container with given BodySID, or zero if unknown. More...
 
static int mxf_edit_unit_absolute_offset (MXFContext *mxf, MXFIndexTable *index_table, int64_t edit_unit, AVRational edit_rate, int64_t *edit_unit_out, int64_t *offset_out, MXFPartition **partition_out, int nag)
 
static int mxf_compute_ptses_fake_index (MXFContext *mxf, MXFIndexTable *index_table)
 
static int mxf_compute_index_tables (MXFContext *mxf)
 Sorts and collects index table segments into index tables. More...
 
static int mxf_is_intra_only (MXFDescriptor *descriptor)
 
static int mxf_uid_to_str (UID uid, char **str)
 
static int mxf_umid_to_str (UID ul, UID uid, char **str)
 
static int mxf_version_to_str (uint16_t major, uint16_t minor, uint16_t tertiary, uint16_t patch, uint16_t release, char **str)
 
static int mxf_add_umid_metadata (AVDictionary **pm, const char *key, MXFPackage *package)
 
static int mxf_add_timecode_metadata (AVDictionary **pm, const char *key, AVTimecode *tc)
 
static MXFTimecodeComponentmxf_resolve_timecode_component (MXFContext *mxf, UID *strong_ref)
 
static MXFPackagemxf_resolve_source_package (MXFContext *mxf, UID package_ul, UID package_uid)
 
static MXFDescriptormxf_resolve_multidescriptor (MXFContext *mxf, MXFDescriptor *descriptor, int track_id)
 
static MXFStructuralComponentmxf_resolve_essence_group_choice (MXFContext *mxf, MXFEssenceGroup *essence_group)
 
static MXFStructuralComponentmxf_resolve_sourceclip (MXFContext *mxf, UID *strong_ref)
 
static int mxf_parse_package_comments (MXFContext *mxf, AVDictionary **pm, MXFPackage *package)
 
static int mxf_parse_physical_source_package (MXFContext *mxf, MXFTrack *source_track, AVStream *st)
 
static int mxf_add_metadata_stream (MXFContext *mxf, MXFTrack *track)
 
static enum AVColorRange mxf_get_color_range (MXFContext *mxf, MXFDescriptor *descriptor)
 
static int mxf_parse_structural_metadata (MXFContext *mxf)
 
static int64_t mxf_timestamp_to_int64 (uint64_t timestamp)
 
static int mxf_read_identification_metadata (void *arg, AVIOContext *pb, int tag, int size, UID _uid, int64_t klv_offset)
 
static int mxf_read_preface_metadata (void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)
 
static int mxf_metadataset_init (MXFMetadataSet *ctx, enum MXFMetadataSetType type)
 
static int mxf_read_local_tags (MXFContext *mxf, KLVPacket *klv, MXFMetadataReadFunc *read_child, int ctx_size, enum MXFMetadataSetType type)
 
static int mxf_is_partition_pack_key (UID key)
 Matches any partition pack key, in other words: More...
 
static int mxf_parse_klv (MXFContext *mxf, KLVPacket klv, MXFMetadataReadFunc *read, int ctx_size, enum MXFMetadataSetType type)
 Parses a metadata KLV. More...
 
static int mxf_seek_to_previous_partition (MXFContext *mxf)
 Seeks to the previous partition and parses it, if possible. More...
 
static int mxf_parse_handle_essence (MXFContext *mxf)
 Called when essence is encountered. More...
 
static int mxf_parse_handle_partition_or_eof (MXFContext *mxf)
 Called when the next partition or EOF is encountered. More...
 
static MXFWrappingScheme mxf_get_wrapping_by_body_sid (AVFormatContext *s, int body_sid)
 
static void mxf_compute_essence_containers (AVFormatContext *s)
 Figures out the proper offset and length of the essence container in each partition. More...
 
static int is_pcm (enum AVCodecID codec_id)
 
static MXFIndexTablemxf_find_index_table (MXFContext *mxf, int index_sid)
 
static void mxf_compute_edit_units_per_packet (MXFContext *mxf, AVStream *st)
 Deal with the case where for some audio atoms EditUnitByteCount is very small (2, 4..). More...
 
static int mxf_handle_missing_index_segment (MXFContext *mxf, AVStream *st)
 Deal with the case where ClipWrapped essences does not have any IndexTableSegments. More...
 
static void mxf_read_random_index_pack (AVFormatContext *s)
 
static int mxf_read_header (AVFormatContext *s)
 
static int mxf_get_next_track_edit_unit (MXFContext *mxf, MXFTrack *track, int64_t current_offset, int64_t *edit_unit_out)
 
static int64_t mxf_compute_sample_count (MXFContext *mxf, AVStream *st, int64_t edit_unit)
 
static int64_t mxf_set_current_edit_unit (MXFContext *mxf, AVStream *st, int64_t current_offset, int resync)
 Make sure track->sample_count is correct based on what offset we're currently at. More...
 
static int mxf_set_audio_pts (MXFContext *mxf, AVCodecParameters *par, AVPacket *pkt)
 
static int mxf_set_pts (MXFContext *mxf, AVStream *st, AVPacket *pkt)
 
static int mxf_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int mxf_probe (const AVProbeData *p)
 
static int mxf_read_seek (AVFormatContext *s, int stream_index, int64_t sample_time, int flags)
 

Variables

static const uint8_t mxf_header_partition_pack_key [] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x02 }
 
static const uint8_t mxf_essence_element_key [] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01 }
 
static const uint8_t mxf_avid_essence_element_key [] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0e,0x04,0x03,0x01 }
 
static const uint8_t mxf_canopus_essence_element_key [] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x0a,0x0e,0x0f,0x03,0x01 }
 
static const uint8_t mxf_system_item_key_cp [] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x03,0x01,0x04 }
 
static const uint8_t mxf_system_item_key_gc [] = { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x03,0x01,0x14 }
 
static const uint8_t mxf_klv_key [] = { 0x06,0x0e,0x2b,0x34 }
 
static const uint8_t mxf_apple_coll_prefix [] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01 }
 
static const uint8_t mxf_crypto_source_container_ul [] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x02,0x02,0x00,0x00,0x00 }
 
static const uint8_t mxf_encrypted_triplet_key [] = { 0x06,0x0e,0x2b,0x34,0x02,0x04,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x7e,0x01,0x00 }
 
static const uint8_t mxf_encrypted_essence_container [] = { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0b,0x01,0x00 }
 
static const uint8_t mxf_sony_mpeg4_extradata [] = { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0e,0x06,0x06,0x02,0x02,0x01,0x00,0x00 }
 
static const uint8_t mxf_avid_project_name [] = { 0xa5,0xfb,0x7b,0x25,0xf6,0x15,0x94,0xb9,0x62,0xfc,0x37,0x17,0x49,0x2d,0x42,0xbf }
 
static const uint8_t mxf_jp2k_rsiz [] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x02,0x01,0x00 }
 
static const uint8_t mxf_indirect_value_utf16le [] = { 0x4c,0x00,0x02,0x10,0x01,0x00,0x00,0x00,0x00,0x06,0x0e,0x2b,0x34,0x01,0x04,0x01,0x01 }
 
static const uint8_t mxf_indirect_value_utf16be [] = { 0x42,0x01,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x06,0x0e,0x2b,0x34,0x01,0x04,0x01,0x01 }
 
static const uint8_t mxf_apple_coll_max_cll [] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01,0x01 }
 
static const uint8_t mxf_apple_coll_max_fall [] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01,0x02 }
 
static const uint8_t mxf_mastering_display_prefix [13] = { FF_MXF_MasteringDisplay_PREFIX }
 
static const uint8_t mxf_mastering_display_uls [4][16]
 
static const MXFCodecUL mxf_picture_essence_container_uls []
 
static const MXFCodecUL mxf_intra_only_essence_container_uls []
 
static const MXFCodecUL mxf_intra_only_picture_essence_coding_uls []
 
static const MXFCodecUL mxf_intra_only_picture_coded_width []
 
static const MXFCodecUL mxf_sound_essence_container_uls []
 
static const MXFCodecUL mxf_data_essence_container_uls []
 
static const MXFMetadataReadTableEntry mxf_metadata_read_table []
 
static const AVOption options []
 
static const AVClass demuxer_class
 
AVInputFormat ff_mxf_demuxer
 

Macro Definition Documentation

◆ MXF_MAX_CHUNK_SIZE

#define MXF_MAX_CHUNK_SIZE   (32 << 20)

Definition at line 62 of file mxfdec.c.

◆ MXF_FIELD_DOMINANCE_DEFAULT

#define MXF_FIELD_DOMINANCE_DEFAULT   0

Definition at line 196 of file mxfdec.c.

◆ MXF_FIELD_DOMINANCE_FF

#define MXF_FIELD_DOMINANCE_FF   1 /* coded first, displayed first */

Definition at line 197 of file mxfdec.c.

◆ MXF_FIELD_DOMINANCE_FL

#define MXF_FIELD_DOMINANCE_FL   2 /* coded first, displayed last */

Definition at line 198 of file mxfdec.c.

◆ IS_KLV_KEY

#define IS_KLV_KEY (   x,
 
)    (!memcmp(x, y, sizeof(y)))

Definition at line 347 of file mxfdec.c.

◆ READ_STR16

#define READ_STR16 (   type,
  big_endian 
)
Value:
static int mxf_read_utf16 ## type ##_string(AVIOContext *pb, int size, char** str) \
{ \
return mxf_read_utf16_string(pb, size, str, big_endian); \
}

Definition at line 929 of file mxfdec.c.

◆ SET_STR_METADATA

#define SET_STR_METADATA (   pb,
  name,
  str 
)
Value:
do { \
if ((ret = mxf_read_utf16be_string(pb, size, &str)) < 0) \
return ret; \
av_dict_set(&s->metadata, name, str, AV_DICT_DONT_STRDUP_VAL); \
} while (0)

Definition at line 2764 of file mxfdec.c.

◆ SET_VERSION_METADATA

#define SET_VERSION_METADATA (   pb,
  name,
  major,
  minor,
  tertiary,
  patch,
  release,
  str 
)
Value:
do { \
major = avio_rb16(pb); \
minor = avio_rb16(pb); \
tertiary = avio_rb16(pb); \
patch = avio_rb16(pb); \
release = avio_rb16(pb); \
if ((ret = mxf_version_to_str(major, minor, tertiary, patch, release, &str)) < 0) \
return ret; \
av_dict_set(&s->metadata, name, str, AV_DICT_DONT_STRDUP_VAL); \
} while (0)

Definition at line 2770 of file mxfdec.c.

◆ SET_UID_METADATA

#define SET_UID_METADATA (   pb,
  name,
  var,
  str 
)
Value:
do { \
avio_read(pb, var, 16); \
if ((ret = mxf_uid_to_str(var, &str)) < 0) \
return ret; \
av_dict_set(&s->metadata, name, str, AV_DICT_DONT_STRDUP_VAL); \
} while (0)

Definition at line 2781 of file mxfdec.c.

◆ SET_TS_METADATA

#define SET_TS_METADATA (   pb,
  name,
  var,
  str 
)
Value:
do { \
var = avio_rb64(pb); \
if (var && (ret = avpriv_dict_set_timestamp(&s->metadata, name, mxf_timestamp_to_int64(var))) < 0) \
return ret; \
} while (0)

Definition at line 2788 of file mxfdec.c.

Typedef Documentation

◆ MXFMetadataReadFunc

typedef int MXFMetadataReadFunc(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset)

Definition at line 307 of file mxfdec.c.

Enumeration Type Documentation

◆ MXFPartitionType

Enumerator
Header 
BodyPartition 
Footer 

Definition at line 64 of file mxfdec.c.

◆ MXFOP

enum MXFOP
Enumerator
OP1a 
OP1b 
OP1c 
OP2a 
OP2b 
OP2c 
OP3a 
OP3b 
OP3c 
OPAtom 
OPSONYOpt 

Definition at line 70 of file mxfdec.c.

◆ MXFWrappingScheme

Enumerator
UnknownWrapped 
FrameWrapped 
ClipWrapped 

Definition at line 84 of file mxfdec.c.

Function Documentation

◆ mxf_read_close()

static int mxf_read_close ( AVFormatContext s)
static

Definition at line 3748 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_free_metadataset()

static void mxf_free_metadataset ( MXFMetadataSet **  ctx,
int  freectx 
)
static

Definition at line 349 of file mxfdec.c.

Referenced by mxf_add_metadata_set(), mxf_read_close(), and mxf_read_local_tags().

◆ klv_decode_ber_length()

static int64_t klv_decode_ber_length ( AVIOContext pb)
static

Definition at line 392 of file mxfdec.c.

Referenced by klv_read_packet(), and mxf_decrypt_triplet().

◆ mxf_read_sync()

static int mxf_read_sync ( AVIOContext pb,
const uint8_t key,
unsigned  size 
)
static

Definition at line 409 of file mxfdec.c.

Referenced by klv_read_packet(), and mxf_read_header().

◆ klv_read_packet()

static int klv_read_packet ( KLVPacket klv,
AVIOContext pb 
)
static

◆ mxf_get_stream_index()

static int mxf_get_stream_index ( AVFormatContext s,
KLVPacket klv,
int  body_sid 
)
static

Definition at line 441 of file mxfdec.c.

Referenced by mxf_decrypt_triplet(), and mxf_read_packet().

◆ find_body_sid_by_absolute_offset()

static int find_body_sid_by_absolute_offset ( MXFContext mxf,
int64_t  offset 
)
static

Definition at line 455 of file mxfdec.c.

Referenced by mxf_decrypt_triplet(), and mxf_read_packet().

◆ mxf_get_eia608_packet()

static int mxf_get_eia608_packet ( AVFormatContext s,
AVStream st,
AVPacket pkt,
int64_t  length 
)
static

Definition at line 478 of file mxfdec.c.

Referenced by mxf_read_packet().

◆ mxf_get_d10_aes3_packet()

static int mxf_get_d10_aes3_packet ( AVIOContext pb,
AVStream st,
AVPacket pkt,
int64_t  length 
)
static

Definition at line 554 of file mxfdec.c.

Referenced by mxf_read_packet().

◆ mxf_decrypt_triplet()

static int mxf_decrypt_triplet ( AVFormatContext s,
AVPacket pkt,
KLVPacket klv 
)
static

Definition at line 586 of file mxfdec.c.

Referenced by mxf_read_packet().

◆ mxf_read_primer_pack()

static int mxf_read_primer_pack ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 655 of file mxfdec.c.

◆ mxf_read_partition_pack()

static int mxf_read_partition_pack ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 681 of file mxfdec.c.

Referenced by mxf_seek_to_previous_partition().

◆ mxf_add_metadata_set()

static int mxf_add_metadata_set ( MXFContext mxf,
MXFMetadataSet **  metadata_set 
)
static

Definition at line 851 of file mxfdec.c.

Referenced by mxf_handle_missing_index_segment(), and mxf_read_local_tags().

◆ mxf_read_cryptographic_context()

static int mxf_read_cryptographic_context ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 866 of file mxfdec.c.

◆ mxf_read_strong_ref_array()

static int mxf_read_strong_ref_array ( AVIOContext pb,
UID **  refs,
int count 
)
static

◆ mxf_read_utf16_string()

static int mxf_read_utf16_string ( AVIOContext pb,
int  size,
char **  str,
int  be 
)
inlinestatic

Definition at line 902 of file mxfdec.c.

◆ mxf_read_content_storage()

static int mxf_read_content_storage ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 938 of file mxfdec.c.

◆ mxf_read_source_clip()

static int mxf_read_source_clip ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 952 of file mxfdec.c.

◆ mxf_read_timecode_component()

static int mxf_read_timecode_component ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 974 of file mxfdec.c.

◆ mxf_read_pulldown_component()

static int mxf_read_pulldown_component ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 991 of file mxfdec.c.

◆ mxf_read_track()

static int mxf_read_track ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1002 of file mxfdec.c.

◆ mxf_read_sequence()

static int mxf_read_sequence ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1026 of file mxfdec.c.

◆ mxf_read_essence_group()

static int mxf_read_essence_group ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1046 of file mxfdec.c.

◆ mxf_read_package()

static int mxf_read_package ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1060 of file mxfdec.c.

◆ mxf_read_essence_container_data()

static int mxf_read_essence_container_data ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1084 of file mxfdec.c.

◆ mxf_read_index_entry_array()

static int mxf_read_index_entry_array ( AVIOContext pb,
MXFIndexTableSegment segment 
)
static

Definition at line 1103 of file mxfdec.c.

Referenced by mxf_read_index_table_segment().

◆ mxf_read_index_table_segment()

static int mxf_read_index_table_segment ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1136 of file mxfdec.c.

◆ mxf_read_pixel_layout()

static void mxf_read_pixel_layout ( AVIOContext pb,
MXFDescriptor descriptor 
)
static

Definition at line 1173 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_read_generic_descriptor()

static int mxf_read_generic_descriptor ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1193 of file mxfdec.c.

◆ mxf_read_indirect_value()

static int mxf_read_indirect_value ( void *  arg,
AVIOContext pb,
int  size 
)
static

Definition at line 1364 of file mxfdec.c.

Referenced by mxf_read_tagged_value().

◆ mxf_read_tagged_value()

static int mxf_read_tagged_value ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 1382 of file mxfdec.c.

◆ mxf_match_uid()

static int mxf_match_uid ( const UID  key,
const UID  uid,
int  len 
)
static

Definition at line 1398 of file mxfdec.c.

Referenced by mxf_get_codec_ul().

◆ mxf_get_codec_ul()

static const MXFCodecUL* mxf_get_codec_ul ( const MXFCodecUL uls,
UID uid 
)
static

◆ mxf_resolve_strong_ref()

static void* mxf_resolve_strong_ref ( MXFContext mxf,
UID strong_ref,
enum MXFMetadataSetType  type 
)
static

◆ mxf_get_wrapping_kind()

static MXFWrappingScheme mxf_get_wrapping_kind ( UID essence_container_ul)
static

Definition at line 1493 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_get_sorted_table_segments()

static int mxf_get_sorted_table_segments ( MXFContext mxf,
int nb_sorted_segments,
MXFIndexTableSegment ***  sorted_segments 
)
static

Definition at line 1527 of file mxfdec.c.

Referenced by mxf_compute_index_tables().

◆ mxf_absolute_bodysid_offset()

static int mxf_absolute_bodysid_offset ( MXFContext mxf,
int  body_sid,
int64_t  offset,
int64_t *  offset_out,
MXFPartition **  partition_out 
)
static

Computes the absolute file offset of the given essence container offset.

Definition at line 1614 of file mxfdec.c.

Referenced by mxf_edit_unit_absolute_offset().

◆ mxf_essence_container_end()

static int64_t mxf_essence_container_end ( MXFContext mxf,
int  body_sid 
)
static

Returns the end position of the essence container with given BodySID, or zero if unknown.

Definition at line 1657 of file mxfdec.c.

Referenced by mxf_set_current_edit_unit().

◆ mxf_edit_unit_absolute_offset()

static int mxf_edit_unit_absolute_offset ( MXFContext mxf,
MXFIndexTable index_table,
int64_t  edit_unit,
AVRational  edit_rate,
int64_t *  edit_unit_out,
int64_t *  offset_out,
MXFPartition **  partition_out,
int  nag 
)
static

◆ mxf_compute_ptses_fake_index()

static int mxf_compute_ptses_fake_index ( MXFContext mxf,
MXFIndexTable index_table 
)
static

We have this:

x TemporalOffset 0: 0 1: 1 2: 1 3: -2 4: 1 5: 1 6: -2

We want to transform it into this:

x DTS PTS 0: -1 0 1: 0 3 2: 1 1 3: 2 2 4: 3 6 5: 4 4 6: 5 5

We do this by bucket sorting x by x+TemporalOffset[x] into mxf->ptses, then settings mxf->first_dts = -max(TemporalOffset[x]). The latter makes DTS <= PTS.

Definition at line 1721 of file mxfdec.c.

Referenced by mxf_compute_index_tables().

◆ mxf_compute_index_tables()

static int mxf_compute_index_tables ( MXFContext mxf)
static

Sorts and collects index table segments into index tables.

Also computes PTSes if possible.

Definition at line 1845 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_is_intra_only()

static int mxf_is_intra_only ( MXFDescriptor descriptor)
static

Definition at line 1953 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_uid_to_str()

static int mxf_uid_to_str ( UID  uid,
char **  str 
)
static

Definition at line 1961 of file mxfdec.c.

◆ mxf_umid_to_str()

static int mxf_umid_to_str ( UID  ul,
UID  uid,
char **  str 
)
static

Definition at line 1979 of file mxfdec.c.

Referenced by mxf_add_umid_metadata().

◆ mxf_version_to_str()

static int mxf_version_to_str ( uint16_t  major,
uint16_t  minor,
uint16_t  tertiary,
uint16_t  patch,
uint16_t  release,
char **  str 
)
static

Definition at line 2000 of file mxfdec.c.

◆ mxf_add_umid_metadata()

static int mxf_add_umid_metadata ( AVDictionary **  pm,
const char *  key,
MXFPackage package 
)
static

◆ mxf_add_timecode_metadata()

static int mxf_add_timecode_metadata ( AVDictionary **  pm,
const char *  key,
AVTimecode tc 
)
static

Definition at line 2021 of file mxfdec.c.

Referenced by mxf_parse_physical_source_package(), and mxf_parse_structural_metadata().

◆ mxf_resolve_timecode_component()

static MXFTimecodeComponent* mxf_resolve_timecode_component ( MXFContext mxf,
UID strong_ref 
)
static

Definition at line 2029 of file mxfdec.c.

Referenced by mxf_parse_physical_source_package().

◆ mxf_resolve_source_package()

static MXFPackage* mxf_resolve_source_package ( MXFContext mxf,
UID  package_ul,
UID  package_uid 
)
static

◆ mxf_resolve_multidescriptor()

static MXFDescriptor* mxf_resolve_multidescriptor ( MXFContext mxf,
MXFDescriptor descriptor,
int  track_id 
)
static

Definition at line 2066 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_resolve_essence_group_choice()

static MXFStructuralComponent* mxf_resolve_essence_group_choice ( MXFContext mxf,
MXFEssenceGroup essence_group 
)
static

Definition at line 2092 of file mxfdec.c.

Referenced by mxf_resolve_sourceclip().

◆ mxf_resolve_sourceclip()

static MXFStructuralComponent* mxf_resolve_sourceclip ( MXFContext mxf,
UID strong_ref 
)
static

Definition at line 2119 of file mxfdec.c.

Referenced by mxf_add_metadata_stream(), and mxf_parse_structural_metadata().

◆ mxf_parse_package_comments()

static int mxf_parse_package_comments ( MXFContext mxf,
AVDictionary **  pm,
MXFPackage package 
)
static

Definition at line 2137 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_parse_physical_source_package()

static int mxf_parse_physical_source_package ( MXFContext mxf,
MXFTrack source_track,
AVStream st 
)
static

Definition at line 2157 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_add_metadata_stream()

static int mxf_add_metadata_stream ( MXFContext mxf,
MXFTrack track 
)
static

Definition at line 2227 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_get_color_range()

static enum AVColorRange mxf_get_color_range ( MXFContext mxf,
MXFDescriptor descriptor 
)
static

Definition at line 2265 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_parse_structural_metadata()

static int mxf_parse_structural_metadata ( MXFContext mxf)
static

Definition at line 2289 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_timestamp_to_int64()

static int64_t mxf_timestamp_to_int64 ( uint64_t  timestamp)
static

Definition at line 2741 of file mxfdec.c.

◆ mxf_read_identification_metadata()

static int mxf_read_identification_metadata ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  _uid,
int64_t  klv_offset 
)
static

Definition at line 2794 of file mxfdec.c.

◆ mxf_read_preface_metadata()

static int mxf_read_preface_metadata ( void *  arg,
AVIOContext pb,
int  tag,
int  size,
UID  uid,
int64_t  klv_offset 
)
static

Definition at line 2838 of file mxfdec.c.

◆ mxf_metadataset_init()

static int mxf_metadataset_init ( MXFMetadataSet ctx,
enum MXFMetadataSetType  type 
)
static

Definition at line 2893 of file mxfdec.c.

Referenced by mxf_read_local_tags().

◆ mxf_read_local_tags()

static int mxf_read_local_tags ( MXFContext mxf,
KLVPacket klv,
MXFMetadataReadFunc read_child,
int  ctx_size,
enum MXFMetadataSetType  type 
)
static

Definition at line 2908 of file mxfdec.c.

Referenced by mxf_parse_klv().

◆ mxf_is_partition_pack_key()

static int mxf_is_partition_pack_key ( UID  key)
static

Matches any partition pack key, in other words:

  • HeaderPartition
  • BodyPartition
  • FooterPartition
    Returns
    non-zero if the key is a partition pack key, zero otherwise

Definition at line 2988 of file mxfdec.c.

Referenced by mxf_read_header(), and mxf_seek_to_previous_partition().

◆ mxf_parse_klv()

static int mxf_parse_klv ( MXFContext mxf,
KLVPacket  klv,
MXFMetadataReadFunc read,
int  ctx_size,
enum MXFMetadataSetType  type 
)
static

Parses a metadata KLV.

Returns
<0 on error, 0 otherwise

Definition at line 2999 of file mxfdec.c.

Referenced by mxf_read_header(), and mxf_seek_to_previous_partition().

◆ mxf_seek_to_previous_partition()

static int mxf_seek_to_previous_partition ( MXFContext mxf)
static

Seeks to the previous partition and parses it, if possible.

Returns
<= 0 if we should stop parsing, > 0 if we should keep going

Definition at line 3030 of file mxfdec.c.

Referenced by mxf_parse_handle_essence(), and mxf_parse_handle_partition_or_eof().

◆ mxf_parse_handle_essence()

static int mxf_parse_handle_essence ( MXFContext mxf)
static

Called when essence is encountered.

Returns
<= 0 if we should stop parsing, > 0 if we should keep going

Definition at line 3081 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_parse_handle_partition_or_eof()

static int mxf_parse_handle_partition_or_eof ( MXFContext mxf)
static

Called when the next partition or EOF is encountered.

Returns
<= 0 if we should stop parsing, > 0 if we should keep going

Definition at line 3124 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_get_wrapping_by_body_sid()

static MXFWrappingScheme mxf_get_wrapping_by_body_sid ( AVFormatContext s,
int  body_sid 
)
static

Definition at line 3129 of file mxfdec.c.

Referenced by mxf_compute_essence_containers().

◆ mxf_compute_essence_containers()

static void mxf_compute_essence_containers ( AVFormatContext s)
static

Figures out the proper offset and length of the essence container in each partition.

Definition at line 3142 of file mxfdec.c.

Referenced by mxf_read_header().

◆ is_pcm()

static int is_pcm ( enum AVCodecID  codec_id)
static

◆ mxf_find_index_table()

static MXFIndexTable* mxf_find_index_table ( MXFContext mxf,
int  index_sid 
)
static

◆ mxf_compute_edit_units_per_packet()

static void mxf_compute_edit_units_per_packet ( MXFContext mxf,
AVStream st 
)
static

Deal with the case where for some audio atoms EditUnitByteCount is very small (2, 4..).

In those cases we should read more than one sample per call to mxf_read_packet().

Definition at line 3201 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_handle_missing_index_segment()

static int mxf_handle_missing_index_segment ( MXFContext mxf,
AVStream st 
)
static

Deal with the case where ClipWrapped essences does not have any IndexTableSegments.

Definition at line 3232 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_read_random_index_pack()

static void mxf_read_random_index_pack ( AVFormatContext s)
static

Definition at line 3300 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_read_header()

static int mxf_read_header ( AVFormatContext s)
static

Definition at line 3354 of file mxfdec.c.

◆ mxf_get_next_track_edit_unit()

static int mxf_get_next_track_edit_unit ( MXFContext mxf,
MXFTrack track,
int64_t  current_offset,
int64_t *  edit_unit_out 
)
static

Definition at line 3474 of file mxfdec.c.

Referenced by mxf_read_seek(), and mxf_set_current_edit_unit().

◆ mxf_compute_sample_count()

static int64_t mxf_compute_sample_count ( MXFContext mxf,
AVStream st,
int64_t  edit_unit 
)
static

Definition at line 3500 of file mxfdec.c.

Referenced by mxf_read_seek(), mxf_set_audio_pts(), and mxf_set_current_edit_unit().

◆ mxf_set_current_edit_unit()

static int64_t mxf_set_current_edit_unit ( MXFContext mxf,
AVStream st,
int64_t  current_offset,
int  resync 
)
static

Make sure track->sample_count is correct based on what offset we're currently at.

Also determine the next edit unit (or packet) offset.

Returns
next_ofs if OK, <0 on error

Definition at line 3531 of file mxfdec.c.

Referenced by mxf_read_packet().

◆ mxf_set_audio_pts()

static int mxf_set_audio_pts ( MXFContext mxf,
AVCodecParameters par,
AVPacket pkt 
)
static

Definition at line 3569 of file mxfdec.c.

Referenced by mxf_set_pts().

◆ mxf_set_pts()

static int mxf_set_pts ( MXFContext mxf,
AVStream st,
AVPacket pkt 
)
static

Definition at line 3591 of file mxfdec.c.

Referenced by mxf_read_packet().

◆ mxf_read_packet()

static int mxf_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 3621 of file mxfdec.c.

◆ mxf_probe()

static int mxf_probe ( const AVProbeData p)
static

Definition at line 3781 of file mxfdec.c.

◆ mxf_read_seek()

static int mxf_read_seek ( AVFormatContext s,
int  stream_index,
int64_t  sample_time,
int  flags 
)
static

Definition at line 3808 of file mxfdec.c.

Variable Documentation

◆ mxf_header_partition_pack_key

const uint8_t mxf_header_partition_pack_key[] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x02 }
static

Definition at line 319 of file mxfdec.c.

Referenced by mxf_is_partition_pack_key(), mxf_probe(), and mxf_read_header().

◆ mxf_essence_element_key

const uint8_t mxf_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01 }
static

◆ mxf_avid_essence_element_key

const uint8_t mxf_avid_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0e,0x04,0x03,0x01 }
static

Definition at line 321 of file mxfdec.c.

Referenced by mxf_read_header(), and mxf_read_packet().

◆ mxf_canopus_essence_element_key

const uint8_t mxf_canopus_essence_element_key[] = { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x0a,0x0e,0x0f,0x03,0x01 }
static

Definition at line 322 of file mxfdec.c.

Referenced by mxf_read_header(), and mxf_read_packet().

◆ mxf_system_item_key_cp

const uint8_t mxf_system_item_key_cp[] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x03,0x01,0x04 }
static

Definition at line 323 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_system_item_key_gc

const uint8_t mxf_system_item_key_gc[] = { 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x03,0x01,0x14 }
static

Definition at line 324 of file mxfdec.c.

Referenced by mxf_read_header().

◆ mxf_klv_key

const uint8_t mxf_klv_key[] = { 0x06,0x0e,0x2b,0x34 }
static

Definition at line 325 of file mxfdec.c.

Referenced by klv_read_packet().

◆ mxf_apple_coll_prefix

const uint8_t mxf_apple_coll_prefix[] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01 }
static

Definition at line 326 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_crypto_source_container_ul

const uint8_t mxf_crypto_source_container_ul[] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x09,0x06,0x01,0x01,0x02,0x02,0x00,0x00,0x00 }
static

Definition at line 328 of file mxfdec.c.

Referenced by mxf_read_cryptographic_context().

◆ mxf_encrypted_triplet_key

const uint8_t mxf_encrypted_triplet_key[] = { 0x06,0x0e,0x2b,0x34,0x02,0x04,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x7e,0x01,0x00 }
static

Definition at line 329 of file mxfdec.c.

Referenced by mxf_read_header(), and mxf_read_packet().

◆ mxf_encrypted_essence_container

const uint8_t mxf_encrypted_essence_container[] = { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0b,0x01,0x00 }
static

Definition at line 330 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_sony_mpeg4_extradata

const uint8_t mxf_sony_mpeg4_extradata[] = { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0e,0x06,0x06,0x02,0x02,0x01,0x00,0x00 }
static

Definition at line 331 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_avid_project_name

const uint8_t mxf_avid_project_name[] = { 0xa5,0xfb,0x7b,0x25,0xf6,0x15,0x94,0xb9,0x62,0xfc,0x37,0x17,0x49,0x2d,0x42,0xbf }
static

Definition at line 332 of file mxfdec.c.

Referenced by mxf_read_preface_metadata().

◆ mxf_jp2k_rsiz

const uint8_t mxf_jp2k_rsiz[] = { 0x06,0x0e,0x2b,0x34,0x02,0x05,0x01,0x01,0x0d,0x01,0x02,0x01,0x01,0x02,0x01,0x00 }
static

Definition at line 333 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_indirect_value_utf16le

const uint8_t mxf_indirect_value_utf16le[] = { 0x4c,0x00,0x02,0x10,0x01,0x00,0x00,0x00,0x00,0x06,0x0e,0x2b,0x34,0x01,0x04,0x01,0x01 }
static

Definition at line 334 of file mxfdec.c.

Referenced by mxf_read_indirect_value().

◆ mxf_indirect_value_utf16be

const uint8_t mxf_indirect_value_utf16be[] = { 0x42,0x01,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x06,0x0e,0x2b,0x34,0x01,0x04,0x01,0x01 }
static

Definition at line 335 of file mxfdec.c.

Referenced by mxf_read_indirect_value().

◆ mxf_apple_coll_max_cll

const uint8_t mxf_apple_coll_max_cll[] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01,0x01 }
static

Definition at line 336 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_apple_coll_max_fall

const uint8_t mxf_apple_coll_max_fall[] = { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0x0e,0x0e,0x20,0x04,0x01,0x05,0x03,0x01,0x02 }
static

Definition at line 337 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_mastering_display_prefix

const uint8_t mxf_mastering_display_prefix[13] = { FF_MXF_MasteringDisplay_PREFIX }
static

Definition at line 339 of file mxfdec.c.

Referenced by mxf_read_generic_descriptor().

◆ mxf_mastering_display_uls

const uint8_t mxf_mastering_display_uls[4][16]
static

◆ mxf_picture_essence_container_uls

const MXFCodecUL mxf_picture_essence_container_uls[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264, NULL, 15 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x14,0x01,0x00 }, 14, AV_CODEC_ID_TIFF, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x15,0x01,0x00 }, 14, AV_CODEC_ID_DIRAC, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x1b,0x01,0x00 }, 14, AV_CODEC_ID_CFHD, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x1c,0x01,0x00 }, 14, AV_CODEC_ID_PRORES, NULL, 14 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x60,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO, NULL, 15 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x04,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO, NULL, 15, D10D11Wrap },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x02,0x41,0x01 }, 14, AV_CODEC_ID_DVVIDEO, NULL, 15 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x05,0x00,0x00 }, 14, AV_CODEC_ID_RAWVIDEO, NULL, 15, RawVWrap },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0a,0x0e,0x0f,0x03,0x01,0x02,0x20,0x01,0x01 }, 15, AV_CODEC_ID_HQ_HQA },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0a,0x0e,0x0f,0x03,0x01,0x02,0x20,0x02,0x01 }, 15, AV_CODEC_ID_HQX },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0a,0x0e,0x15,0x00,0x04,0x02,0x10,0x00,0x01 }, 16, AV_CODEC_ID_HEVC, NULL, 15 },
{ { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4f }, 14, AV_CODEC_ID_RAWVIDEO },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
}

Definition at line 1433 of file mxfdec.c.

Referenced by mxf_get_wrapping_kind(), and mxf_parse_structural_metadata().

◆ mxf_intra_only_essence_container_uls

const MXFCodecUL mxf_intra_only_essence_container_uls[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x00,0x00 }, 14, AV_CODEC_ID_MPEG2VIDEO },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
}

Definition at line 1455 of file mxfdec.c.

Referenced by mxf_is_intra_only().

◆ mxf_intra_only_picture_essence_coding_uls

const MXFCodecUL mxf_intra_only_picture_essence_coding_uls[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x00,0x00 }, 14, AV_CODEC_ID_H264 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000 },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
}

Definition at line 1461 of file mxfdec.c.

Referenced by mxf_is_intra_only().

◆ mxf_intra_only_picture_coded_width

const MXFCodecUL mxf_intra_only_picture_coded_width[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x01 }, 16, 1440 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x02 }, 16, 1440 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x03 }, 16, 1440 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0A,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x04 }, 16, 1440 },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, 0 },
}

Definition at line 1468 of file mxfdec.c.

Referenced by mxf_parse_structural_metadata().

◆ mxf_sound_essence_container_uls

const MXFCodecUL mxf_sound_essence_container_uls[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x06,0x01,0x00 }, 14, AV_CODEC_ID_PCM_S16LE, NULL, 14, RawAWrap },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x40,0x01 }, 14, AV_CODEC_ID_MP2, NULL, 15 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE, NULL, 13 },
{ { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4F }, 14, AV_CODEC_ID_PCM_S16LE },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14, AV_CODEC_ID_AAC },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
}

Definition at line 1476 of file mxfdec.c.

Referenced by mxf_get_wrapping_kind(), and mxf_parse_structural_metadata().

◆ mxf_data_essence_container_uls

const MXFCodecUL mxf_data_essence_container_uls[]
static
Initial value:
= {
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0d,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_smpte_436M", 11 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0e,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_vanc_smpte_436M", 11 },
{ { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x13,0x01,0x01 }, 16, AV_CODEC_ID_TTML },
{ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE },
}

Definition at line 1486 of file mxfdec.c.

Referenced by mxf_get_wrapping_kind(), and mxf_parse_structural_metadata().

◆ mxf_metadata_read_table

const MXFMetadataReadTableEntry mxf_metadata_read_table[]
static

Definition at line 2851 of file mxfdec.c.

Referenced by mxf_read_header().

◆ options

const AVOption options[]
static
Initial value:
= {
{ "eia608_extract", "extract eia 608 captions from s436m track",
0x42, AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1,
{ NULL },
}

Definition at line 3918 of file mxfdec.c.

◆ demuxer_class

const AVClass demuxer_class
static
Initial value:
= {
.class_name = "mxf",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 3925 of file mxfdec.c.

◆ ff_mxf_demuxer

AVInputFormat ff_mxf_demuxer
Initial value:
= {
.name = "mxf",
.long_name = NULL_IF_CONFIG_SMALL("MXF (Material eXchange Format)"),
.priv_data_size = sizeof(MXFContext),
.priv_class = &demuxer_class,
}

Definition at line 3933 of file mxfdec.c.

AV_CODEC_ID_PCM_S16LE
@ AV_CODEC_ID_PCM_S16LE
Definition: codec_id.h:313
mxf_read_header
static int mxf_read_header(AVFormatContext *s)
Definition: mxfdec.c:3354
name
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
FF_MXF_MasteringDisplayMinimumLuminance
#define FF_MXF_MasteringDisplayMinimumLuminance
Definition: mxf.h:92
RawVWrap
@ RawVWrap
Definition: mxf.h:78
AV_CODEC_ID_DIRAC
@ AV_CODEC_ID_DIRAC
Definition: codec_id.h:165
AV_CODEC_ID_RAWVIDEO
@ AV_CODEC_ID_RAWVIDEO
Definition: codec_id.h:62
FF_MXF_MasteringDisplayPrimaries
#define FF_MXF_MasteringDisplayPrimaries
Definition: mxf.h:89
MXFContext
Definition: mxfdec.c:279
AVFMT_SEEK_TO_PTS
#define AVFMT_SEEK_TO_PTS
Seeking is based on PTS.
Definition: avformat.h:484
read_seek
static int read_seek(AVFormatContext *ctx, int stream_index, int64_t timestamp, int flags)
Definition: libcdio.c:153
read_close
static av_cold int read_close(AVFormatContext *ctx)
Definition: libcdio.c:145
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
AV_DICT_DONT_STRDUP_VAL
#define AV_DICT_DONT_STRDUP_VAL
Take ownership of a value that's been allocated with av_malloc() or another memory allocation functio...
Definition: dict.h:74
mxf_version_to_str
static int mxf_version_to_str(uint16_t major, uint16_t minor, uint16_t tertiary, uint16_t patch, uint16_t release, char **str)
Definition: mxfdec.c:2000
mxf_timestamp_to_int64
static int64_t mxf_timestamp_to_int64(uint64_t timestamp)
Definition: mxfdec.c:2741
mxf_probe
static int mxf_probe(const AVProbeData *p)
Definition: mxfdec.c:3781
AV_CODEC_ID_CFHD
@ AV_CODEC_ID_CFHD
Definition: codec_id.h:266
s
#define s(width, name)
Definition: cbs_vp9.c:257
AV_CODEC_ID_MP2
@ AV_CODEC_ID_MP2
Definition: codec_id.h:424
mxf_read_seek
static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_time, int flags)
Definition: mxfdec.c:3808
mxf_uid_to_str
static int mxf_uid_to_str(UID uid, char **str)
Definition: mxfdec.c:1961
AV_CODEC_ID_H264
@ AV_CODEC_ID_H264
Definition: codec_id.h:76
AV_CLASS_CATEGORY_DEMUXER
@ AV_CLASS_CATEGORY_DEMUXER
Definition: log.h:34
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
read_header
static int read_header(FFV1Context *f)
Definition: ffv1dec.c:527
NULL
#define NULL
Definition: coverity.c:32
read_probe
static int read_probe(const AVProbeData *pd)
Definition: jvdec.c:55
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:235
avio_rb64
uint64_t avio_rb64(AVIOContext *s)
Definition: aviobuf.c:902
RawAWrap
@ RawAWrap
Definition: mxf.h:77
convert_header.major
int major
Definition: convert_header.py:23
AV_CODEC_ID_AAC
@ AV_CODEC_ID_AAC
Definition: codec_id.h:426
FF_MXF_MasteringDisplayWhitePointChromaticity
#define FF_MXF_MasteringDisplayWhitePointChromaticity
Definition: mxf.h:90
AVIOContext
Bytestream IO Context.
Definition: avio.h:161
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:117
size
int size
Definition: twinvq_data.h:10344
mxf_read_packet
static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
Definition: mxfdec.c:3621
AV_CODEC_ID_HQ_HQA
@ AV_CODEC_ID_HQ_HQA
Definition: codec_id.h:237
convert_header.minor
int minor
Definition: convert_header.py:26
AV_CODEC_ID_HQX
@ AV_CODEC_ID_HQX
Definition: codec_id.h:235
mxf_read_utf16_string
static int mxf_read_utf16_string(AVIOContext *pb, int size, char **str, int be)
Definition: mxfdec.c:902
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:47
AV_CODEC_ID_TTML
@ AV_CODEC_ID_TTML
Definition: codec_id.h:548
AV_CODEC_ID_HEVC
@ AV_CODEC_ID_HEVC
Definition: codec_id.h:223
AV_OPT_FLAG_DECODING_PARAM
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
Definition: opt.h:279
AV_CODEC_ID_DVVIDEO
@ AV_CODEC_ID_DVVIDEO
Definition: codec_id.h:73
AV_CODEC_ID_VC1
@ AV_CODEC_ID_VC1
Definition: codec_id.h:119
AV_CODEC_ID_JPEG2000
@ AV_CODEC_ID_JPEG2000
Definition: codec_id.h:137
ret
ret
Definition: filter_design.txt:187
read_packet
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: avio_reading.c:42
avio_rb16
unsigned int avio_rb16(AVIOContext *s)
Definition: aviobuf.c:766
FF_MXF_MasteringDisplayMaximumLuminance
#define FF_MXF_MasteringDisplayMaximumLuminance
Definition: mxf.h:91
demuxer_class
static const AVClass demuxer_class
Definition: mxfdec.c:3925
options
static const AVOption options[]
Definition: mxfdec.c:3918
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:242
mxf_read_close
static int mxf_read_close(AVFormatContext *s)
Definition: mxfdec.c:3748
convert_header.str
string str
Definition: convert_header.py:20
D10D11Wrap
@ D10D11Wrap
Definition: mxf.h:76
AV_CODEC_ID_TIFF
@ AV_CODEC_ID_TIFF
Definition: codec_id.h:145
AV_CODEC_ID_MPEG2VIDEO
@ AV_CODEC_ID_MPEG2VIDEO
preferred ID for MPEG-1/2 video decoding
Definition: codec_id.h:51
avpriv_dict_set_timestamp
int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp)
Set a dictionary value to an ISO-8601 compliant timestamp string.
Definition: dict.c:258
AV_CODEC_ID_DNXHD
@ AV_CODEC_ID_DNXHD
Definition: codec_id.h:148
AV_CODEC_ID_PRORES
@ AV_CODEC_ID_PRORES
Definition: codec_id.h:197