mxfwrap.cpp File Reference

Basic MXF essence wrapping utility. More...

#include <mxflib/mxflib.h>
#include <stdio.h>
#include <iostream>
#include <stdarg.h>

Classes

struct  BodyWrapping

Typedefs

typedef std::list< BodyWrappingBodyWrappingList
typedef SmartPtr< EssenceTrackInfo > EssenceTrackInfoPtr
 Smart pointer to an EssenceTrackInfo.
typedef std::list< EssenceTrackInfoPtrEssenceTrackInfoList
 List of Smart pointers to EssenceTrackInfo objects.

Functions

void warning (const char *Fmt,...)
 Display a warning message.
void error (const char *Fmt,...)
 Display an error message.
Int64 TCtoFrames (UInt16 FrameRate, bool DropFrame, UInt16 Hours, UInt16 Mins, UInt16 Secs, UInt16 Frames)
bool ParseCommandLine (int &argc, char **argv)
 Parse the command line options.
int Process (int OutFileNum, MXFFilePtr Out, EssenceParser::WrappingConfigList WrapCfgList, Rational EditRate, UMIDPtr *FPUMID)
 Process an output file.
void ClearStream (ULPtr &theUL)
void SetStream (ULPtr &theUL)
void SetUniTrack (ULPtr &theUL)
void SetMultiTrack (ULPtr &theUL)
int main_process (int argc, char *argv[])
 Do the main processing (less any pause before exit).
int main (int argc, char *argv[])
 Do the main processing and pause if required.
GCWriterPtr AddGCWriter (std::map< int, GCWriterPtr > &Map, MXFFilePtr &File, int BodySID)
 Short term hack to allow per-BodySID GCWriters.
void SetStreamIndex (BodyStreamPtr &ThisStream, bool isCBR)
 Set the index options for a given body stream.
void SetStreamWrapType (BodyStreamPtr &ThisStream, WrappingOption::WrapType Type)
 Set the wrapping type for a stream.

Variables

UInt8 ProductGUID_Data [16] = { 0x84, 0x66, 0x14, 0xf3, 0x27, 0x8d, 0xd3, 0x41, 0x86, 0xdc, 0xf0, 0x89, 0xad, 0xef, 0xd0, 0x53 }
string CompanyName = "freeMXF.org"
string ProductName = "mxfwrap file wrapper"
string ProductVersion = "Based on " + LibraryVersion()
string PlatformName = "MXFLib (" + OSName() + ")"
int Verbose = 0
 Debug flag for KLVLib.
static bool DebugMode = false
 Debug flag for MXFLib.
const bool HaveCompiledDict = false
MXFLIB_DICTIONARY_END typedef
list< std::string > 
DMFileList
 DM Dictionaries.
std::string OrthodoxDict = "dict.xml"
 Default filename of orthodox Dictionary.
DMFileList DMDicts
 DM Dictionaries.
DMFileList DMMaterialInstances
 DM Instance data files for Material Package.
DMFileList DMFileInstances
 DM Instance data files for File Package.
char InFilenameSet [512]
 The set of input filenames.
char InFilename [16][128]
 The list of input filenames.
int InFileGangSize
 The number of ganged files to process at a time.
int InFileGangCount
 The number of sets of ganged files to process.
char OutFilenameSet [512]
 The set of output filenames.
char OutFilename [16][128]
 The output filename.
int OutFileCount
 The number of files to output.
FileHandle InFile [16]
 File handles.
Int64 Duration [16]
 Duration of each ganged section of essence.
bool PutTCTrack = true
 If false suppresses the output or Timecode tracks.
bool OPAtom = false
 Is OP-Atom mode being forced?
bool OPAtom2Part = false
 Has a 2-partition OP-Atom file been requested (only works for VBR).
bool UpdateHeader = false
 Is the header going to be updated after writing the footer.
bool StreamMode = false
 Wrap in stream-mode.
bool EditAlign = false
 Start new body partitions only at the start of a GOP.
bool UseIndex = false
 Write complete index tables.
bool SparseIndex = false
 Write sparse index tables (one entry per partition).
bool SprinkledIndex = false
 Write segmented index tables (one set per partition).
bool IsolatedIndex = false
 Don't write essence and index in same partition.
bool VeryIsolatedIndex = false
 Don't write metadata and index in same partition.
int SelectedWrappingOption = -1
 Selected wrapping option number: -1 = auto, 0 = list choices (or use SelectedWrappingName).
std::string SelectedWrappingOptionText
 Selected wrapping option name.
Position LastEditUnit [128]
 Table of last edit units written in sparse index tables (per BodySID).
bool FrameGroup = false
 Group all as a frame-wrapped group (in one essence container).
Rational ForceEditRate
 Edit rate to try and force.
BodyWrapping::PartitionMode BodyMode = BodyWrapping::Body_None
 The mode of body partition insertion.
UInt32 BodyRate = 0
 The rate of body partition insertion.
UInt32 HeaderPadding = 0
 The (minimum) number of bytes of padding to leave in the header.
UInt32 KAGSize = 1
 The KAG Size for this file.
ULPtr OPUL
 The UL of the OP for this file.
UInt8 OPAtom_Data [16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }
ULPtr OPAtomUL = new UL(OPAtom_Data)
UInt8 OP1a_Data [16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00 }
ULPtr OP1aUL = new UL(OP1a_Data)
UInt8 OP1b_Data [16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x05, 0x00 }
ULPtr OP1bUL = new UL(OP1b_Data)
UInt8 OP2a_Data [16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x00 }
ULPtr OP2aUL = new UL(OP2a_Data)
UInt8 OP2b_Data [16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x02, 0x02, 0x05, 0x00 }
ULPtr OP2bUL = new UL(OP2b_Data)
bool PauseBeforeExit = false
 Should we pause before exit?


Detailed Description

Basic MXF essence wrapping utility.

Version:
Id
mxfwrap.cpp,v 1.40 2007/03/31 16:15:21 matt-beard Exp

Typedef Documentation

typedef std::list<BodyWrapping> BodyWrappingList

typedef std::list<EssenceTrackInfoPtr> EssenceTrackInfoList [static]

List of Smart pointers to EssenceTrackInfo objects.

typedef SmartPtr<EssenceTrackInfo> EssenceTrackInfoPtr [static]

Smart pointer to an EssenceTrackInfo.


Function Documentation

GCWriterPtr AddGCWriter ( std::map< int, GCWriterPtr > &  Map,
MXFFilePtr File,
int  BodySID 
)

Short term hack to allow per-BodySID GCWriters.

DRAGONS: This needs to be tidied a little when there is time!

void ClearStream ( ULPtr theUL  ) 

int main ( int  argc,
char *  argv[] 
)

Do the main processing and pause if required.

int main_process ( int  argc,
char *  argv[] 
)

Do the main processing (less any pause before exit).

bool ParseCommandLine ( int &  argc,
char **  argv 
)

Parse the command line options.

Returns:
true if all parsed ok, false if an error or none supplied

int Process ( int  OutFileNum,
MXFFilePtr  Out,
EssenceParser::WrappingConfigList  WrappingList,
Rational  EditRate,
UMIDPtr FPUMID 
)

Process an output file.

< List of all essence tracks

< BodyStream for each stream being built (master stream if frame-grouping)

< The current file package

< Timecode component in the file package

< Count of the number of MP or FP tracks in a complete gang (set once the first gang is written)

< Essence file index

The current descriptor

The sub-descriptor batch, if this is a multiple stream, else NULL

Iterator for scanning the sub-descriptor batch, if this is a multiple stream

The index number of the sub track within this multiple essence stream, zero for the first

Is this essense stream a multiplexed type

Body SID for this essence stream

Index SID for the index of this essence stream

Write the footer

void SetMultiTrack ( ULPtr theUL  ) 

void SetStream ( ULPtr theUL  ) 

void SetStreamIndex ( BodyStreamPtr ThisStream,
bool  isCBR 
)

Set the index options for a given body stream.

void SetStreamWrapType ( BodyStreamPtr ThisStream,
WrappingOption::WrapType  Type 
)

Set the wrapping type for a stream.

void SetUniTrack ( ULPtr theUL  ) 

Int64 TCtoFrames ( UInt16  FrameRate,
bool  DropFrame,
UInt16  Hours,
UInt16  Mins,
UInt16  Secs,
UInt16  Frames 
)


Variable Documentation

BodyWrapping::PartitionMode BodyMode = BodyWrapping::Body_None [static]

The mode of body partition insertion.

UInt32 BodyRate = 0 [static]

The rate of body partition insertion.

string CompanyName = "freeMXF.org"

bool DebugMode = false [static]

Debug flag for MXFLib.

DMFileList DMDicts [static]

DM Dictionaries.

DMFileList DMFileInstances [static]

DM Instance data files for File Package.

MXFLIB_DICTIONARY_END typedef list<std::string> DMFileList

DM Dictionaries.

DMFileList DMMaterialInstances [static]

DM Instance data files for Material Package.

Int64 Duration[16] [static]

Duration of each ganged section of essence.

bool EditAlign = false [static]

Start new body partitions only at the start of a GOP.

GCStreamID EssenceID

Essence stream ID.

Rational ForceEditRate [static]

Edit rate to try and force.

SourceClipPtr FPClip

File Package SourceClip.

TrackPtr FPTrack

File Package track.

bool FrameGroup = false [static]

Group all as a frame-wrapped group (in one essence container).

const bool HaveCompiledDict = false

UInt32 HeaderPadding = 0 [static]

The (minimum) number of bytes of padding to leave in the header.

FileHandle InFile[16] [static]

File handles.

int InFileGangCount [static]

The number of sets of ganged files to process.

int InFileGangSize [static]

The number of ganged files to process at a time.

char InFilename[16][128] [static]

The list of input filenames.

char InFilenameSet[512] [static]

The set of input filenames.

bool IsolatedIndex = false [static]

Don't write essence and index in same partition.

UInt32 KAGSize = 1 [static]

The KAG Size for this file.

Position LastEditUnit[128] [static]

Table of last edit units written in sparse index tables (per BodySID).

SourceClipPtr MPClip

Material Package SourceClip.

TrackPtr MPTrack

Material Package track.

UInt8 OP1a_Data[16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00 }

ULPtr OP1aUL = new UL(OP1a_Data)

UInt8 OP1b_Data[16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x01, 0x02, 0x05, 0x00 }

ULPtr OP1bUL = new UL(OP1b_Data)

UInt8 OP2a_Data[16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x02, 0x01, 0x01, 0x00 }

ULPtr OP2aUL = new UL(OP2a_Data)

UInt8 OP2b_Data[16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x0d, 0x01, 0x02, 0x01, 0x02, 0x02, 0x05, 0x00 }

ULPtr OP2bUL = new UL(OP2b_Data)

bool OPAtom = false [static]

Is OP-Atom mode being forced?

bool OPAtom2Part = false [static]

Has a 2-partition OP-Atom file been requested (only works for VBR).

UInt8 OPAtom_Data[16] = { 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02, 0x0d, 0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00 }

ULPtr OPAtomUL = new UL(OPAtom_Data)

ULPtr OPUL [static]

The UL of the OP for this file.

std::string OrthodoxDict = "dict.xml" [static]

Default filename of orthodox Dictionary.

int OutFileCount [static]

The number of files to output.

char OutFilename[16][128] [static]

The output filename.

char OutFilenameSet[512] [static]

The set of output filenames.

bool PauseBeforeExit = false

Should we pause before exit?

string PlatformName = "MXFLib (" + OSName() + ")"

UInt8 ProductGUID_Data[16] = { 0x84, 0x66, 0x14, 0xf3, 0x27, 0x8d, 0xd3, 0x41, 0x86, 0xdc, 0xf0, 0x89, 0xad, 0xef, 0xd0, 0x53 }

string ProductName = "mxfwrap file wrapper"

string ProductVersion = "Based on " + LibraryVersion()

bool PutTCTrack = true [static]

If false suppresses the output or Timecode tracks.

int SelectedWrappingOption = -1 [static]

Selected wrapping option number: -1 = auto, 0 = list choices (or use SelectedWrappingName).

std::string SelectedWrappingOptionText [static]

Selected wrapping option name.

bool SparseIndex = false [static]

Write sparse index tables (one entry per partition).

bool SprinkledIndex = false [static]

Write segmented index tables (one set per partition).

bool StreamMode = false [static]

Wrap in stream-mode.

bool UpdateHeader = false [static]

Is the header going to be updated after writing the footer.

bool UseIndex = false [static]

Write complete index tables.

int Verbose = 0

Debug flag for KLVLib.

bool VeryIsolatedIndex = false [static]

Don't write metadata and index in same partition.


Generated on Mon Apr 2 15:20:55 2007 for MXFLib by  doxygen 1.5.1-p1