Download as pdf or txt
Download as pdf or txt
You are on page 1of 298

MXFTk 2.

3 Documentation
Contents
Chapter 1

MXFTk
OpenCube Technologies SAS

9 Avenue de l'EuropeParc Technologique du Canal

31520 Ramonville St Agne FRANCE

Tel: +33 (0)561 285 606

Fax: +33 (0)561 285 635

E-mail contact@opencubetech.com
MXFTk Support: support_mxftk@opencubetech.com
Internet http://www.opencubetech.com
User Guide version 9.0 of MXFTk Application Programming Interface version 2.3
(draft version).
Copyright 2010 OpenCube Technologies SAS.

Software and user guides described in this document are protected by Copyright.

No reproduction, distribution or use in whole or in part of any content is permitted without prior
authorization of OpenCube Technologies SAS. Any use, for any purpose, not allowed in the terms
of the license is strictly forbidden.

OpenCube Technologies SAS uses reasonable eorts to include accurate, complete and current in-
formation in this document, however, OpenCube Technologies SAS does not warrant that the con-
tent herein is accurate, complete, current, or free of technical or typographical errors. OpenCube
Technologies SAS reserves the right to make changes and updates to any information contained
within this document without prior notice.

OpenCube Technologies SAS shall not be responsible for any errors or omissions contained in this
document, and in particular OpenCube Technologies SAS shall not be liable for special, indirect,
consequential, or incidental damages, or damages for lost prots, loss of revenue, or loss of use,
arising out of or related to the information contained in this document, whether such damages
arise in contract, negligence, tort, under statute, in equity, at law or otherwise.

[Linux is a registered trademark of Linus Torwald]

[Microsoft, MS DOS and Windows are registered trademarks of Microsoft Corporation.]

[Mac OS X is a registered trademark of Apple Computer, Inc.]

[CodeWarrior is a registered trademark of Metrowerks, a Motorola company.]


1.1 Preliminaries 2

[C Builder is a registered trademark of Borland Software Corporation.]

[eVTR and XDCam are registered trademarks of Sony Corporation.]

[P2 is a registered trademark of Panasonic Corporation.]

[K2 is a registered trademark of Thomson Grass Valley Corporation.]

[Spectrum is a registered trademark of Omneon Corporation.]

[AMT Avid Media Toolkit is an SDK licensed from Avid Technology, Inc]

This product includes software developed by the Apache Software Foundation


(http://www.apache.org/).

All other trademarks and copyrights are the properties of their respective owners.

1.1 Preliminaries
1.1.1 MXF File Format
MXF (standing for Material eXchange Format) is a le format aiming to improve data and meta-
data exchange. The targeted objective is the interoperability between content creation mainframes,
work stations and peripherals.

This wrapper le format was designed to make use of current and forthcoming data formats. Hence,
it not only allows exchange of contents in MPEG, DV or else but also improves interoperability
between editing systems. In the mean time, it also permits conveyance of metadata following
standardized schemes.

1.1.2 MXFTk
MXFTk is a C++ library for Linux, Mac OS X and Windows operating systems that enables
creation and reading of MXF les following the MXF norm from the SMPTE. The use of this
library is performed thanks to a set of classes and methods that constitutes an API (Application
Programming Interface). The main objective of MXFTk is to let developers manipulate MXF
les at will without prior knowledge of the complex mechanisms of this format. Nonetheless, a
basic understanding of the MXF le structure is mandatory to build and use these les. API
users referring to the MXF File Format glossary [377M] will nd denitions specic to the MXF
terminology. In order to get a rst insight over these requisites, it is advised to read the MXF
Engineering Guideline [EG41]. Metadata management also requires prociency with metadata
schemes covered by the SMPTE MXF Descriptive Metadata Engineering Guideline [EG42] and
the SMPTE MXF Descriptive Metadata Scheme [380M].

The MXF le format manipulates two distinguished types of metadata: structural and descriptive.
Structural metadata builds the architecture of an MXF le: it describes the structure and the
ordering of the le content. On the other hand, descriptive metadata corresponds to the metadata
set by the user (DMS1 or else).

The API MXFTk is built so that the descriptive metadata is freely and fully lled by the API
user while the structural metadata remains entirely controlled by the API. Therefore the API task
lies in the conversion of C++ objects into structural metadata and vice-versa.

The following table summarizes the main features of MXFTk :

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 3

MXFTk
Op1a to Op3c les Read/Write/Partial Restore
Avid OpAtom les Read/Write
SONY XDCam les SD/HD Read/Write/Partial Restore
SONY eVTR les Read/Write/Partial Restore
Panasonic P2 les Read/Write/Partial Restore
Omneon Mediagrid les Read/Write/Partial Restore
Thomson K2/Innity les Read/Write/Partial Restore
External References Supported
IMX, MPEG Long-GOP, AVC/H.264, Supported
AVC-Intra, DV, DVCPro
Uncompressed Images, JPEG2K, Supported
VC-3(DnxHD)
BWF, AES, 8-channel AES, A-law Supported
Active/Passive Streaming Supported
DCI Package Creation and AES Encryption Supported
Descriptive Metadata Read/Write/Update
Timecode Read/Write/Update
Random Access Supported
Partitioning Supported
Index Tables Supported
Reverse Play Supported
Avid Media Toolkit (AMT) Windows 32-bit only
Platforms Windows, Linux, Macintosh PPC & i386

Table 1.1: Tab. 1: MXFTk versions

1.1.3 MXFTk Overview


MXFTk library relies on three fundamental concepts:

ˆ les.

ˆ Audiovisual, metadata and timecode materials.

ˆ Tracks.

These three models are organized as follows:

An MXF le includes a given number of materials: more precisely, it holds at least one output
material and one embedded material. Hence, the simplest les embed no more than one audiovisual
material (for instance a DV clip) that is also the output material (it is played as is; no editing
of the source is performed). More intricate les may perform an edition by cutting and mixing
several audiovisual sources. It is even conceivable to create MXF les containing a large number
of materials and oering various output editions.

A material represents data. Four kinds of materials can be manipulated with the API MXFTk : au-
diovisual material (concrete_material ), metadata material , time positioning material (timecode_-
material ) and editing material (generic_material ). For instance, lets consider a material embody-
ing a multimedia le (an MPEG clip) containing both video and audio data to be played for a
given duration. In order to identify its content, the material carries an enumeration of tracks (in
our simple case, there will be one audio track and one video track in the material).

As stated just before, tracks represent the content of the materials. Each of them holds a specic
type of data (audio, video, etc.) as well as its time positioning and duration. The tracks of
a generic_material can even contain references to concrete_materials allowing editing of the

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 4

audiovisual sources. This would be the case of ageneric_material aiming to play sequentially two
concrete_material . The two resulting
video clips; each clip would be stored in the video track of a
materials would then be referenced one after the other by the output generic_material s tracks to
get the desired le play out.

MXF les complexity is depicted by their Operational Pattern (also called OP in the MXF termi-
nology). Nine operational patterns ranging from the simplest (Op1a) to the trickiest (Op3c) can
be distinguished as stated by the following table. Their precise and exhaustive description can
be found in the documents [EG41] and [377M]. Another particular operational pattern is called
OpAtom. MXF les following this pattern contain a single embedded audiovisual material but
still allow complex editing by referencing material from other OpAtom les.

Complexity
single play-list edit
Single OP1a OP2a OP3a
Material Ganged OP1b OP2b OP3b
Alternate OP1c OP2c OP3c

Table 1.2: Tab. 2: Operational Pattern

ˆ Op1a: the simplest and commonest operational pattern containing a single concrete_material
which is played as is by the unique generic_material . Files produced by the eVTR from
Sony are an extension of the Op1a .
ˆ Op2a: there is a single generic_material consisting in several concrete_materials played
sequentially.

ˆ Op3a: generic_material
there is a single consisting in playing sequentially some clips cut
from the concrete_materials .
ˆ Op1b: there is a single generic_material playing simultaneously the concrete_materials .
ˆ Op2b: this operational pattern extends the Op1b just as the Op2a was extending the Op1a:
it connects sequentially concrete_materials played simultaneously.

ˆ Op3b: this operational pattern extends the Op2b just as the Op3a was extending the Op2a:
it connects sequentially clips cut from concrete_materials played simultaneously.
ˆ Op1c: there is no restriction on the number of generic_materials . However, each of them
plays simultaneously one or more concrete_materials .
ˆ Op2c: there is no restriction on the number of generic_materials . However at least one of
them corresponds to an Op2b material package.
ˆ Op3c: the mostintricate operational pattern. It has no restriction on the number of generic_-
materials . However, at least one of them corresponds to an Op3b generic_material.
ˆ OpAtom: this operational pattern source package which consists in a sin-
embeds a single
gle source (only video or audio). However, the generic_material may allow building com-
plex editing (Op1a, Op1b, Op2a, andOp2b ) by referencing concrete_materials from other
OpAtom les. This pattern is heavily supported by manufacturers such as Panasonic.

MXFTk will let you read and write Op1a-3c and OpAtom les.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 5

1.1.3.1 MXF File Reading

The reading of an MXF le begins with the instantiation of an mxf_le object with the complete
path to the le to unwrap. There are several opening modes optimized depending on the task you
want to perform with the MXF le (read metadata only, access to the essence, random access to
the essence). This creation of the mxf_le object automatically launches the decoding process.
Upon completion the number of output materials ( generic_material ) and embedded materials
(concrete_material ) can be retrieved from that object. These materials can be questioned to nd
out which decoders are required to decipher the materials tracks content. Finally, the API grants
access to the binary data through reading methods. This scheme can be repeated whenever the
user wishes to read or play the audiovisual stream of a le.

Similarly, the descriptive metadata can be read as follows. The rst step consists in checking
the availability of metadata tracks in each material (this would be an I_track object which type
istimeline_metadata , event_metadata or static_metadata ). In the next step, the metadata_-
materials held by dm_segments are retrieved from these metadata tracks. To end with, each
metadata_material includes a metadata object conveying the descriptive metadata. The metadata
object is the root of an arborescence structure whose nodes contain properties (I_property). Each
property can be read separately. MXFTk also provide methods to directly output the metadata
in an XML le or buer.

1.1.3.2 MXF File Writing

Depending on the intricacy of the le to be written, the user chooses the operational pattern
that best matches its purpose. For instance, no editing will be allowed in a straightforward Op1a
pattern while imbricate materials and a wide range of le play outs will become possible in an
Op3c pattern. Once chosen, the appropriate object deriving from mxf_le can be instantiated
(an op1a_le for instance). Then, for each multimedia source (essence in the MXF terminology)
to embed in the le, a concrete_material must be created. These materials must be appended to
the mxf_le just built using the API methods available for this operational pattern. Newt it is
also possible to congure several properties of the le such as partitioning, index table creation,
header metadata repetition, etc. Finally the function I_mxf_le::ush() will launch the creation
process.

Descriptive metadata can be used to annotate output or embedded materials, either in their
entirety or only during a limited time scope. MXFTk leaves the option to perform an edition
of the descriptive metadata, stating for instance the new actors appearing while playing a video
clip. The descriptive metadata creation process is subdivided in several steps. First of all a new
metadata track must be created. Depending on the properties of the metadata to be added, the
user must opt for the most appropriate kind of metadata track. If the metadata annotates the
content of the material in a time-linear fashion, then a timeline_metadata track is required. On
the other hand, if the metadata documents the material with a set of non-adjacent or overlapping
events, then an event_metadata track suits. Finally, if the metadata does not contain time
references and documents the materials tracks as a whole, the user should pick a static_metadata
track.

Lets consider the simple case where MXFTk user wishes to annotate the output material of an
Op1a MXF le. To do so, he will be required to go through the following steps:

ˆ Create a metadata tree I_metadata from a valid XML le or step-by-step using the API
methods.

ˆ Link the resulting metadata tree to a new metadata material I_metadata_material

ˆ Create a new static_metadata track I_track in the I_generic_material to annotate.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 6

ˆ Append the I_metadata_material to the newly created track.

1.1.3.3 MXF File Update

When updating an MXF le the user may change the timecode and add or remove descriptive
metadata. In order to do so, an mxf_le interface is created, opening the MXF le to be updated.
Using the appropriate interfaces I_timecode_material and I_metadata_material you get access
to the function performing timecode and metadata update. Note that the changes made to the
le will only be performed when closing it using the function UpdateAndFreeMxfFileInterface.

Warning! If you update an MXF le from a given manufacturer, there is no guarantee that it
will remain compatible with the manufacturers device.

1.1.3.4 Partial Restore

MXF le format provides mechanisms to perform partial restore of MXF les. MXFTk lets you
perform this task in a single call to a C function. You simply need to specify the source MXF le
and the time span you wish to retrieve thanks to the timecode in and out values. The API will
create a new object mxf_le ready to be ushed on disk or streamed in a networked environment.
Please refer to the function NewPartialRestoreMxfFileInterface() from I_mxf_le class reference
for a complete overview.

1.1.3.5 External References

In some cases, you will need to decode or create MXF les without any embedded audiovisual
material. The source video and audio data will be stored in separate les either as raw media les
or as several MXF les. In that case, it will require a little bit more of processing.

ˆ When decoding an MXF le containing external references, the location of the referenced
les can be retrieved thanks to the function I_essence_type::external_references(). After
checking the validity of the references, they can be loaded using I_concrete_track::set_-
external_ref_le() Then, the mxf_le object can be manipulated seamlessly as if the au-
diovisual material was embedded in the le.

ˆ When creating an MXF le containing external references to raw media les, the function
NewExtConcreteMaterialInterface() will be called in place of NewConcreteMaterialInter-
face() but the creation process will remain similar.

ˆ When creating an MXF le containing external references to other MXF les, I_op1a_le
to I_op3c_le interfaces provide specic interface to append an external concrete_material
but the creation process will also remain similar.

ˆ When performing the partial restore of an MXF le containing external references, the
referenced raw or MXF les will not be involved in the process. It will create a single new
le referencing only the selected time span but the referenced les will remain untouched. If
the referenced MXF les need to be partly restored as well, a partial restore process should
be launched on each of them individually rst. Then the concrete_material from each newly
created le can be assembled in a new MXF le.

1.1.3.6 MXFTk Memory Management

The C++ classes of the API are pure virtual classes (interfaces) that can not be instantiated with
a "new". For that reason, memory allocation and deallocation are handled by "C" style functions

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 7

whose name usually starts with "New" or "Free". In terms of implementation on the applica-
tion side, the consequence is that you will exclusively manipulate pointers on MXFTk interfaces.
For optimal memory management reasons, any object allocated by the API must be freed using
MXFTk memory deallocation methods. Neither explicit nor implicit calls to constructors and
destructors via new , delete or even dynamic_cast should occur on MXFTk objects. Failure to
meet these requirements will invariably result in memory leaks and/or crashes in your code. For
the same reasons, MXFTk will never destroy objects or buers that were allocated on the librarys
client side; you will always remain responsible for the deletion of the memory you allocated.

Header les documentation clearly species the deletion responsibility for each parameter and
returned value.

1.1.3.7 MXFTk Error Handling

The class I_mxf_error helps managing, detecting and identifying MXFTk internal errors. It can
be useful to notice, for instance, wrong le paths or unrecognized property labels. When an error
arises, the API pushes it on an error stack that can be questioned thanks to an error manager
I_mxf_error_handler. Raised errors are sorted depending on their gravity and also return an
error identication helping to perform an advanced error processing. Finally, the error handler
includes support for internationalization by letting you specify the current active language for
error messages. MXFTk comes along with an English American dictionary but you may translate
the error messages in any language if required. See MXFTk Error management section for more
details

MXFTk user is encouraged to get used to MXFTk functionalities with the help of the numerous
examples accompanying the installation. These programs explore the most common scenarios: an
MXF le wrapper, an MXF File Unwrapper, an MXF to XML converter, an OpAtom wrapper, an
OpAtom unwrapper, an MXF le wrapper with import of XML metadata, an MXF le wrapper
with timecode redenition, an MXF le wrapper in streaming mode, an MXF le unwrapper in
streaming mode, etc. These examples are also particularly useful to apprehend MXFTk error
management.

See also:
Warnings and Errors

1.1.3.8 Windows Compilation

MXFTk interfaces do not contain dependencies on the C runtime library. In other words, the
dynamically linked library mxf_tk.dll should compile with the runtime library of your choice
(either static, multithreaded or dll multithreaded). Moreover, to address the maximum number of
compilers, import libraries following both the COFF and OMF name mangling rules can be found
in the lib directory of your installation. You should use the COFF library with Microsoft and
Metrowerks compilers while the OMF library is meant to be used with Borland compilers. Your
installation directory includes some projects ready to be compiled with Microsoft Visual C++ and
Borland C Builder.

1.1.3.9 A word about Unicode

Unicode UTF16 characters are manipulated thanks to the wchar_t data type within MXFTk
. However, you must be aware that depending on the platform the size of this data type is
dierent. On the Windows platform sizeof(wchar_t)= 2 while on the Linux and Mac platform
sizeof(wchar_t)= 4 . When writing portable code, you should not assume that the size of the
Unicode wchar_t characters returned by MXFTk will always be 2-byte long.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 8

1.1.4 Installation Procedure


1.1.4.1 Linux Platform

ˆ Insert your MXFTk installation CD in your player. Go to the directory MXFTk and ex-
ecute the shell command "install_mxftk_linux.run [installation_directory]" and "install_-
dcpcreator_linux.run [installation_directory]" if you also wish to use the DCP functions.
If the installation directory is not specifed MXFTk and DCPCreator will be installed in
/usr/local.

ˆ The following elements will be created during the installation procedure:

 prex_path/bin

 prex_path/lib/libmxf_tk.so.2.3.0

 prex_path/lib/libmxf_tk.so.2.3

 prex_path/lib/libmxf_tk.so.2

 prex_path/lib/libmxf_tk.so

 prex_path/include/mxf_tk

 prex_path/share/mxftk

ˆ And for the DCPCreator library:

 prex_path/bin

 prex_path/lib/libdcpcreator.so.1.0.0

 prex_path/lib/libdcpcreator.so.1.0

 prex_path/lib/libdcpcreator.so.1

 prex_path/lib/libdcpcreator.so

 prex_path/include/dcpcreator

 prex_path/share/dcpcreator

ˆ In the directories called "prex_path/include/mxf_tk" and "prex_-


path/include/dcpcreator" you will nd all the header les required to use the API.
The directory "prex_path/share/mxftk/dic" contains the default XML schema (dictio-
nary) loaded while using the API. You will be able to get an electronic version of this
user guide browsing down to the directory "prex_path/share/doc", Finally, you can
remove MXFTk by executing the script "prex_path/share/bin/unsintall_mxftk.run" and
DCPCreator with "prex_path/share/bin/uninstall_dcpcreator.run"

ˆ The libraries require one environment variable to work properly (MXF_HOME). MXF_-
HOME should point to the installation directory (for instance "prex_path") and LD_-
LIBRARY_PATH is the directory search list used by your linker. You may have to update
it to include $MXF_HOME/lib. It is possible to run MXFTk without setting the MXF_-
HOME environment variable, for more information on this possibility please refer to the
chapter "Deployment Procedure".

ˆ You will need a valid license key le in order to use MXFTk . You can get a license key
by registering to www.mxftk.com and then you simply need to load the license le you will
receive with OpenCubes license keys manager application. This product is part of your
installation package.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 9

ˆ After completing the previous steps, if you browse down to MXFTk/linux/bin, you will
nd a le called opencube.mxftk.license.lcs containing the licensing information for your
distribution of the API. It usually includes the name of your company and should always
remain in the bin folder.

ˆ Please be aware that if you wish to move the library libmxf_tk.so to another folder, you
must necessarily move the license le and update your environment variable accordingly.

ˆ The "examples" directory contains several shell executables ready to be compiled.

1.1.4.2 Mac OS X platform

ˆ Insert your MXFTk installation CD in your player and execute MXFTk and DCPCreator
MacOSX packages.

ˆ Two new frameworks will be installed in the directory "/Library/Frameworks". The names
of the framework are mxf_tk.framework and DCPCreator.framework.

ˆ In the installation directory you will nd all the binary and header les required to use the
API. The directory "dic" contains the default XML schema (dictionary) loaded while using
the API. Finally you will be able to get an electronic version of this user guide browsing
down to the directory "doc".

ˆ The libraries require one environment variable to work properly (MXF_HOME). MXF_-
HOME should point to your installation directory. If required, it is possible to run MXFTk
without setting the MXF_HOME environment variable, for more information on this pos-
sibility please refer to the chapter "Deployment Procedure".

ˆ You will need a valid license key le in order to use MXFTk . You can get a license key
by registering to www.mxftk.com and then you simply need to load the license le you will
receive with OpenCubes license keys manager.

ˆ After completing the previous steps, you will nd in your installation directory a le called
opencube.mxftk.license.lcs containing the licensing information for your distribution of the
API. It usually includes the name of your company if you and should always remain in the
bin folder.

1.1.4.3 Windows platform

ˆ Make sure to have administrator rights before performing this installation.

ˆ Note that during the installation, antivirus software may warn you about the activity of
shell commands. These commands are required to perform the installation and you should
ignore the antivirus warnings.

ˆ Insert your MXFTk installation CD in your player. The installation procedure should start
automatically. If not simply launch Setup.exe.

ˆ Follow the installation procedure. The application "KeyManager" will be installed. You will
be able to launch the installation of MXFTk from the application KeyManager.

ˆ In the installation directory you will nd all the binary and header les required to use the
API. The directory "dic" contains the default XML schema (dictionary) loaded while using
the API. Finally, you will be able to get an electronic version of this user guide by browsing
down to the directory "doc".

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 10

ˆ The library requires one environment variable to work properly (MXF_HOME). MXF_-
HOME should point to the installation directory (for instance /Projects/Dlls/MXFTk).
You can check that this variable was correctly set during the installation. It is possible to
run MXFTk without setting the MXF_HOME environment variable, for more information
on this possibility please refer to the chapter "Deployment Procedure".

ˆ Additionally, the path to mxftk.dll should be appended to your variable PATH to permit
dynamic linkage at runtime. This task is also automatically performed during the installa-
tion.

ˆ You will need a valid license key le in order to use MXFTk . You can get a license key
by registering to www.mxftk.com and then you simply need to load the license le you will
receive with OpenCubes license keys manager.

ˆ The directory MXFTk\lib contains two import libraries respectively in the COFF and OMF
format. You should use the COFF library if you compile with Microsoft Visual or Metrowerks
CodeWarrior compilers. Alternatively, the OMF library targets users of Borland C Builder
compilers.

ˆ The "examples" directory contains several examples ready to be compiled.

1.1.5 Deployment Procedure


This section describes the requirements to use MXFTk while using and installing it in a third-party
application.

1.1.5.1 Linux Platform

ˆ The following exhaustive list summarizes the les from your MXFTk installation that are
mandatory for a correct behavior of MFTk. All these les should be included while deploying
MXFTk :

 prex_path/bin/opencube.mxftk.license.lcs.

 prex_path/lib/libmxftk.so.2.3.0 (and sym links)

 prex_path/lib/libdcpcreator.so.1.0.0 (and sym links)

ˆ MXF_HOME should be set during the installation and should point to the directory con-
taining your installation of MXFTk . In your program, you will need to call the function
InitMXF_TK().

OR

ˆ MXF_HOME is not set during the installation. In your program you will need to call
InitMXF_TK2(). The parameter for this function should be the path to the directory
containing your installation of MXFTk .

1.1.5.2 Mac OS X platform

ˆ mxf_tk.framework and DCPCreator.framework (for DCP) are required in deployment. It is


possible to remove any component of these frameworks. Removable components:

 mxf_tk.framework/Headers

 mxf_tk.framework/Versions/A/Resources/doc

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


1.1 Preliminaries 11

 mxf_tk.framework/Versions/A/Resources/examples

 mxf_tk.framework/Versions/A/Resources/dic

 mxf_tk.framework/Versions/A/include

 mxf_tk.framework/Versions/A/Headers

ˆ MXF_HOME should be set during the installation and should point to the directory con-
taining your installation of MXFTk . In your program, you will need to call the function
InitMXF_TK().

OR

ˆ MXF_HOME is not set during the installation. In your program you will need to call
InitMXF_TK2(). The parameter for this function should be the path to the directory
containing your installation of MXFTk .

1.1.5.3 Windows platform

ˆ The following exhaustive list summarizes the les from your MXFTk installation that are
mandatory for a correct behaviour of MXFTk . All these les should be included while
deploying MXFTk :

 mxf_tk.dll

 opencube.mxftk.license.lcs

 dcpcreator.dll (only required if you use the DCP creation functions)

 msvcp71.dll (in Windows system directory)

 msvcr71.dll (in Windows system directory)

ˆ Note that the license le should be located next to mxf_tk.dll

ˆ MXF_HOME should be set during the installation and should point to the directory con-
taining your installation of MXFTk . In your program, you will need to call the function
InitMXF_TK().

OR

ˆ MXF_HOME is not set during the installation. In your program you will need to call
InitMXF_TK2(). The parameter for this function should be the path to the directory
containing your installation of MXFTk .

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 2

API conguration and error


management
13

Refer to MXFTk Error management reference to see how to manage errors with MXFtk.

The errors, warnings and notices are listed in the Warnings and Errors page.

For API conguration please refer to MXFTk API conguration page.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 3

Concrete Material
15

Concrete material and tracks enable the manipulation of audiovisual data. They grant access to
the "binary" video or audio streams of each track thanks to read functions. Concrete materials
have a UMID (SMPTE Unique Material Identier, see [330M]). MXFTk user can set its value
after creating the material or leave the default one automatically set by the API.

See also:
I_concrete_material, I_umid

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 4

Metadata Material
17

Metadata material enables the manipulation of descriptive metadata either built by MXFTk user
or read from an MXF le. In some cases, this structure is also used to read specic structural
metadata (such as descriptors from a concrete material or identication sets). Metadata (I_-
metadata) carries a set of properties. A property I_property is dened by a label_c, normalized
and validated thanks to a dictionary, and a value I_value. A label is a char∗ string and a value
is a memory pointer of a given type that can contain metadata (when the pointer is referencing
an I_metadata interface). Using this mechanism of metadata objects referencing other metadata
objects a tree structure can be easily built. Only MXFTk Advanced version will let you attach
descriptive metadata to your MXF les.

See also:
I_metadata, I_metadata_material

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 5

MXFTk Error Handling


19

The class I_mxf_error helps managing, detecting and identifying MXFTk internal errors. It can
be useful to notice, for instance, wrong le paths or unrecognized property labels. When an error
arises, the API pushes it on an error stack that can be questioned thanks to an error manager
I_mxf_error_handler. Raised errors are sorted depending on their gravity and also return an
error identication helping to perform an advanced error processing. Finally, the error handler
includes support for internationalization by letting you specify the current active language for
error messages. MXFTk comes along with an us-en dictionary but you may translate the error
messages in any language if required.

MXFTk user is encouraged to get used to MXFTk functionalities with the help of the numerous
examples accompanying the installation. These programs explore the most common scenarios: an
MXF le wrapper, an MXF File Unwrapper, an MXF to XML converter, an OpAtom wrapper, an
OpAtom unwrapper, an MXF le wrapper with import of XML metadata, an MXF le wrapper
with timecode redenition, an MXF le wrapper in streaming mode, an MXF le unwrapper in
streaming mode, etc. These examples are also particularly useful to apprehend MXFTk error
management.

See also:
The error_list section and <mxf_tk/errors.hpp> for a complete list of errors and warnings.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 6

Essence Descriptors
21

The following classes can be used to create the complete essence descriptors. Most of the time,
you will not need to implement this function because MXFTk can build them automatically by
analyzing the source les to be wrapped. However, in certain cases, this information can not be
retrieved from the source stream. In that case, the user should build these classes in order to
create a valid MXF le. In this manual we will not go through the denitions of all the properties
set in the descriptors but we invite the reader to refer to the corresponding norms for a complete
reference.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 7

MXF Files
23

This API release supports Op1a, Op1b, Op1c, Op2a, Op2b, Opc2c, Op3a, Op3b, Op3c and
OpAtom les. Currently MXFTk relies on C++ classes representing MXF les. Their utility is
determined by the task to be performed:

ˆ I_mxf_le, to read and update MXF les.

ˆ I_op1a_le, to write Op1a MXF les.

ˆ I_op1b_le, to write Op1b MXF les.

ˆ I_op1c_le, to write Op1c MXF les.

ˆ I_op2a_le, to write Op2a MXF les.

ˆ I_op2b_le, to write Op2b MXF les.

ˆ I_op2c_le, to write Op2c MXF les.

ˆ I_op3a_le, to write Op3a MXF les.

ˆ I_op3b_le, to write Op3b MXF les.

ˆ I_op3c_le, to write Op3c MXF les.

ˆ I_evtr_le, to write MXF les following the same attributes as those generated by the
SONY eVTR device.

ˆ I_xdcam_imx_le to write D10 MXF les following the same attributes as those generated
by the SONY XDCam camcorder.

ˆ I_xdcam_dv_le to write DVCam+AES MXF les following the same attributes as those
generated by the SONY XDCam camcorder.

ˆ I_xdcam_proxy_le to write MPEG4+A-law MXF les following the same attributes as


those generated by the SONY XDCam camcorder.

ˆ I_xdcam_hd_le to write MPEG Long-GOP HD + AES MXF les following the same
attributes as those generated vy the SONY XDCam HD camcorder.

ˆ I_opatom_le, to read and write OpAtom MXF les. Furthermore two functions called
NewP2Shot() and NewP2ShotFromStream() generate DVCPro+AES3 MXF les following
the same attributes as those generated by the Panasonic P2 camcorder.

ˆ I_avid_opatom_le to create Avid native OpAtom les (IMX, DV, DVCPro, DnxHD).
Furthermore use WaitEndNewAMTAvidOpAtomShot() or NewAMTAvidOpAtomShotFrom-
Stream() to generate Avid OpAtom les using AVID Media Toolkit (AMT).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 8

Timecode Material
25

Timecode material allows the denition of the timecode used while playing an I_generic_material
or an I_concrete_material. When added to an I_generic_material it corresponds to the le "play
out" and must be continuous (no timecode redenition while playing). When added to an I_-
concrete_material it corresponds to the le "play in" of the data embedded in the le and can be
discontinuous. MXFTk generates default timecode materials so that the user does not necessarily
need to dene them. Only MXFTk Advanced version will let you redene the timecode of your
MXF les.

See also:
I_timecode, I_timecode_material

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 9

Material
9.1 Edit Units 27

Two families of materials can be distinguished. On one side, we can nd the concrete materials
and on the other one the virtual materials. Concrete materials grant access to the audiovisual
data (a clip in a given format) whereas virtual materials provide tools to manage the edition of
the concrete materials, as well as their metadata and timecode.

Concrete materials:

ˆ I_concrete_material

Virtual materials:

ˆ I_metadata_material

ˆ I_timecode_material

ˆ I_generic_material

As seen in the preliminaries of this user guide, a material contains a given number of tracks.
These tracks are used to spot the nature of the data held by this material (video, audio, data
or metadata). In the following sections, we will rst go through the classes I_generic_material
and I_track (representing editing information), then we will examine the concrete material classes
I_concrete_material and I_concrete_track (representing audiovisual material) and nally we
will conclude with the metadata material I_metadata_material and timecode specication I_-
timecode_material.

9.1 Edit Units


According to the MXF terminology, an "edit unit" is the indivisible unit of an MXF track (generally
set to a frame or a eld on a video track). It is the smallest addressable data unit of a track.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 10

References
29

ˆ SMPTE 377M, 377M-1 2009: MXF File Format,

ˆ SMPTE EG41: MXF Engineering Guideline,

ˆ SMPTE EG42: MXF Descriptive Metadata Engineering Guideline,

ˆ SMPTE 378M: OP-1a,

ˆ SMPTE 390M: OP-Atom,

ˆ SMPTE 391M: OP-1b,

ˆ SMPTE 392M: OP-2a,

ˆ SMPTE 393M: OP-2b,

ˆ SMPTE 407M: OP-3a, OP-3b,

ˆ SMPTE 408M: OP-1c, OP-2c, OP-3c,

ˆ SMPTE 379M: Generic Container,

ˆ SMPTE 380M: MXF Descriptive Metadata Scheme 1,

ˆ SMPTE 330M: Unique Material Identiers,

ˆ SMPTE 379M: Generic Container,

ˆ SMPTE 381M: GC-MPEG (MPEG essence),

ˆ SMPTE 382M: GC-AESBWF (AES/EBU and Broadcast Wave audio essence),

ˆ SMPTE 383M: GC-DV (DV essence),

ˆ SMPTE 384M: GC-UP (Uncompressed Picture essence),

ˆ SMPTE 385M: GC-CP (SDTI-CP),

ˆ SMPTE 386M: GC-D10 (SMPTE D10 essence),

ˆ SMPTE 387M: GC-D11 (SMPTE D11 essence),

ˆ SMPTE 388M: GC-AA (A-law coded audio essence),

ˆ SMPTE 389M: Generic Container Reverse Play System Element,

ˆ SMPTE 422M: GC-JPEG2000 (JPEG 2000 essence),

ˆ SMPTE 2019-4: VC-3 essence,

ˆ SMPTE RP2008: AVC essence,

ˆ SMPTE 429-7: D-Cinema Packaging - Composition Playlist,

ˆ SMPTE 429-8: D-Cinema Packaging - Packing List,

ˆ SMPTE 429-9: D-Cinema Packaging - Asset Mapping and File Segmentation,

ˆ SMPTE 436M: MXF Mappings for VBI Lines and Ancillary Data Packets,

ˆ SMPTE RP210: Metadata Dictionary.

ˆ SMPTE RP224: Registry of SMPTE Universal Labels.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 11

Streaming
31

The following classes should be used when manipulating MXF les in a streaming environment
(IEEE 1394 port, videotape recorder, etc.):

ˆ I_essence_stream_task

ˆ I_crypted_essence_stream_task

ˆ I_input_metadata_stream_task

ˆ I_output_mxf_stream_task

ˆ I_input_mxf_stream_task

ˆ I_input_partial_mxf_stream_task

All these classes are pure virtual classes that the user must implement. They work as a set of func-
tions that MXFTk will call whenever he needs some information or data from the corresponding
streaming device. Therefore, MXFTk user is entitled to implement these classes to feed MXFTk
with data whenever it needs to.

MXFTk lets you stream the input audiovisual data, the descriptive metadata and the MXF les be-
ing generated or read. When wrapping an MXF le you may even receive the audiovisual data and
the descriptive metadata from several streams while outputting the MXF stream on the y. The
MXFTk user is strongly invited to refer to the examples "active_stream_wrapper", "passive_-
stream_wrapper", "mxf_stream_unwrapper", "op1a_stream_wrapper" and "p2_wrapper". It
is also best to feel comfortable with MXF le wrapping/unwrapping in a non-streaming environ-
ment before going through this chapter.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 12

MXFTk Versions History


12.1 MXFTk 2.3.0 33

12.1 MXFTk 2.3.0


ˆ Added: Frame-accurate Partial File Restore of LongGOP tracks, including XDCAM-HD
les.

ˆ Added: Speed up opening times and seeking times for MXF les, in particular XDCAM-HD.

ˆ Added: Load MXF index on demand.

ˆ Added: I_mxf_le::cancel() to cancel input tasks as well as output tasks.

ˆ Added: XFReader accepts and plays back VC-3/DNxHD tracks.

ˆ Added: XFReader handles up to 16 audio channels.

ˆ Fixed: Prerolling for MXF les with Precharge (Origin).

12.2 MXFTk 2.2.8


ˆ Fixed: Partial Restore AVC-Intra with input streaming task.

12.3 MXFTk 2.2.7


ˆ Fixed: In Avid OpAtom, seek_timecode does not work

ˆ Fixed: Improved AVC-Intra wrapping for Omneon compatibility

ˆ Fixed: Import of Avid OpAtom in Avid NLE (via the AMA or Import menu)

ˆ Fixed: Wrapping of AVC-Intra in Op1b external reference

ˆ Fixed: Duration in Op1a when tracks have dierent durations

12.4 MXFTk 2.2.6


ˆ Fixed: input streamTask updated_mxf_le callback is sometimes not called

ˆ Added: Support of Quantel les improved

ˆ Fixed: MPEG essence with no start code extension leads to MXFTk miswrapping (2 frames
wrapped per KLV)

12.5 MXFTk 2.2.5


ˆ Fixed: Long P2 le active streaming wrapping takes too long and causes 100% CPU

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.6 MXFTk 2.2.4 34

12.6 MXFTk 2.2.4


ˆ Fixed: Stream oset are going back to 0 for each index table segment when partial restoring

ˆ Fixed: Omneon partial restore loses some DMS1 linked KLV data

ˆ Fixed: DNxHD Avid active wrapping have unknown duration

ˆ Fixed: Audio tracks duration calculation is very high CPU consuming

ˆ Fixed: Duration can be forced to be updated when wrapping a le in "process while record"
context

ˆ Fixed: bit_rate() of I_essence_type on mpeg2 le is not returning MPEG Descriptor meta-
data value

ˆ Fixed: video_mxf_le_descriptor frame_layout and video_line_map aren't taken into ac-


count by MXFTk

12.7 MXFTk 2.2.3


ˆ Added: Support K2-HD MXF les.

12.8 MXFTk 2.2.2


ˆ Fixed: Can't unwrap AVid OpAtom les in stream mode.

ˆ Fixed: Multi-partitionned les (except Not Sony XDCAM HD) partial restored les get
empty body partitions

12.9 MXFTk 2.2.1


ˆ Fixed: wrapping Panasonic P2 in active mode sometimes hangs.

ˆ Fixed: Essence container in K2 compliant les.

ˆ Changed: Compute MPEG2 aspect ratio when default value.

ˆ Fixed: Fix Index table when KAG equals to 1.

ˆ Fixed: VBI/ANC packets were not always parsed correctly.

ˆ Fixed: The VBI/ANC edit rate value may be incorrect.

ˆ Added: Updated MXF dictionaries with ANC/VBI descriptors.

ˆ Fixed: Invalid REVERSE_PLAY system items

ˆ Fixed: Allow single-package Op1b le.

ˆ Fixed: Invalid stream oset values for the index tables of partitioned MXF les

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.10 MXFTk 2.2.0 35

12.10 MXFTk 2.2.0


ˆ Added: AVC/H.264 support

ˆ Added: AVC-Intra support

ˆ Added: XDCam HD support. Partial restore cuts at partitions.

ˆ Added: DNxHD support

ˆ Added: AMT integration

ˆ Added: DCP support

ˆ Added: Avid AirSpeed support

ˆ Added: Improved Interop support for K2

ˆ Changed: Adapted Essence Container Label process for better reading/writing of Doremi
les

ˆ Changed: Improved op1a_wrapper_and_timecode in order to be to able to create system


item

ˆ Changed: Wrong duration when origin not zero modied

ˆ Changed: AVID OpAtom Material Package no longer cut when "_" is found

ˆ Fixed: Encrypted BWF zombie frames

ˆ Fixed: Support of DNxHD Avid OpAtom in Media Composer 3.0.5

ˆ Fixed: System Item : invalid interface

ˆ Fixed: local tag 30.02 not present in primer pack

ˆ Fixed: "out of boundary" error on data_request when timecode pass midnight

ˆ Fixed: Crash when adding Event Metadata

ˆ Fixed: Essence container label in MXF DNxHD

ˆ Fixed: DNxHD: Compression ID 1244 not supported

ˆ Fixed: Random crashes when openning MXF les simultaneously

ˆ Fixed: AES3-8Channels from WAV conversion error

ˆ Fixed: Function BuildP2XMLBuer() data size error

ˆ Fixed: Wrapping performance issue on PAL or NTSC size

ˆ Fixed: Memory leak in system items

ˆ Fixed: Ambern File index table causes MXFTk extraction issue

ˆ Fixed: Avid opAtom DNxHD mxf le reading in streaming mode are not recognized

ˆ Fixed: Activeblocking XDCAM IMX / D10 wrapped les duration is not known

ˆ Fixed: xdcam_wrapping AES 4 mono 48khz 16bit tracks in active blocking mode wrapping
is not working

ˆ Fixed: Memory Exception when reading big les (more than 11GB)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.11 MXFTk 2.1 36

ˆ Fixed: Avid OpAtom: Start timecode not correctly reported

ˆ Fixed: AES frame size is not set properly

ˆ Fixed: Failed to unwrap MXF le where the video ller is not referenced in the index table

ˆ Fixed: gcc warning: non virtual destructor

ˆ Fixed: Crash when unwrapping MXF that does not have identication eld.

ˆ Fixed: hide internal compiler symbols.

ˆ Fixed: MPEG HD422 essence is wrapped too slow in passive mode.

ˆ Fixed: Invalid duration/edit rate when wrapping Op2b ref.ext.

ˆ Fixed: Crash when unwrapping avid opatom imx30 le in stream mode.

12.11 MXFTk 2.1


ˆ Added: Support of XDCam HD wrapping.

ˆ Added: Support of Avid OpAtom les.

ˆ Added: Improved support of P2 format (sequences recorded with pulldown and native
720p@24p/25p/30p).

ˆ Added: Support of timecode from system items when reading or creating an MXF le.

ˆ Added: Support of VBI wrapping as per SMPTE402M

ˆ Added: XFReader advanced deinterlace options.

ˆ Added: Added support for stills in the essence_extractor sample.

ˆ Added: support for Avid TRMG 2.97 les with AES audio track number.

ˆ Fixed: The essence_extractor sample program was trying to load Avid OpAtom external
references while it should not.

ˆ Fixed: Innite loop while decoding certain avours of Avid OpAtom les.

ˆ Fixed: Empty KLV when wrapping Jpeg2000 les.

ˆ Fixed: Invalid index tables when wrappping multiple essences with partitioning.

ˆ Fixed: Wrong duration for MXF les containing D10 essence with a discontinuous timecode
of unknown duration.

ˆ Fixed: Crash when wrapping BWF les with the same UMID.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.12 MXFTk 2.0 37

12.12 MXFTk 2.0


ˆ Added: Support of complete Digital Cinema Package creation.

ˆ Added: Support of external references to raw media.

ˆ Added: Support of external references to MXF les.

ˆ Added: Support of Omneon Mediagrid les with external references.

ˆ Added: Support of Thomson K2 les.

ˆ Added: Improved support of Panasonic P2 DVCProHD les.

ˆ Added: support of DNxHD.

ˆ Added: support of AIFF audio.

ˆ Added: D10 MXF les can now be wrapped/unwrapped using WAVE audio instead of 8-
channel AES.

ˆ Added: Mono and stereo Wave les can now be wrapped as AES audio.

ˆ Added: new progress function during MXF wrapping.

ˆ Added: new MXF les opening modes.

ˆ Changed: Simplied deployment procedure.

12.13 MXFTk 1.5


ˆ Added: Support of uncompressed images.

ˆ Added: Support of JPEG2K images.

ˆ Added: Support of AES encryption.

ˆ Added: compatibility with DCI (Digital Cinema Initiative).

ˆ Added: new streaming capabilities.

ˆ Added: new metadata dictionary following the latest norm.

ˆ Added: new function to the I_property class helping the creation of metadata trees.

12.14 MXFTk 1.4


ˆ Added: Support of MAC OS X platform.

ˆ Added: support of operational patterns 1b, 2a and 2b.

ˆ Changed: Improved le update (changes are now directly applied to the source).

ˆ Changed: Improved descriptive metadata manipulation (new functions to remove existing


metadata)

ˆ Changed: Panasonic P2 les can now be created with streamed essence sources.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.15 MXFTk 1.3 38

ˆ Added: Introduction of active and passive mode while wrapping MXF les in a streaming
environment.

ˆ Added: Mono and stereo AES3 sources embedded in an MXF le can now be extracted in
WAVE format.

ˆ Added: Wrapping of SONY XDCam DV and Panasonic P2 les can now be performed with
AES3 or WAV sources.

12.15 MXFTk 1.3


ˆ Added: the partial restore capability (between two timecode values).

ˆ Changed: Improved support of Panasonic P2 les (NTSC).

ˆ Changed: Improved support of SONY XDCam les (possibility to retrieve the embedded
XML le). See function I_mxf_le::get_embedded_xml().
ˆ Fixed: Clip wrapping of les larger than 2GB is now enabled.

ˆ Changed: The streaming interfaces can now be set as seekable.

ˆ Added: New functions for easier timecode manipulation.

12.16 MXFTk 1.2


ˆ Added: Support of Panasonic P2 les.

ˆ Added: Support of SONY XDCam les.

ˆ Changed: Improved data retrieval from the essence descriptors ( I_essence_type).


ˆ Added: A-law support.

ˆ Added: MPEG 4 support.

ˆ Added: support of the Reverse Play feature.

12.17 MXFTk 1.1


ˆ Changed:Improved compatibility with all the compilers. Removed all dependencies to the C
runtime library.

ˆ Changed: Improved Error Management with error identication, classication and error
messages internationalization.

ˆ Added: Complete streaming capability upon wrapping/unwrapping.

ˆ Added: Support of OpAtom 1-2/a-b les (Advanced version only).

ˆ Added: Random access to audiovisual data from the generic material (material package)
and concrete material (top level source package) (Advanced version only).

ˆ Added: Access to data from a given timecode value (Advanced version only).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


12.17 MXFTk 1.1 39

ˆ Added: Complete support of index tables (Advanced version only).

ˆ Added: New essences now fully supported: AES and MPEG 2 Transport Stream and Pro-
gram Stream.

ˆ Added: New class identifying the video/audio format of a track.

ˆ Changed: Improved management of generic containers.

ˆ Changed: Improved installation procedure on Windows platform.

ˆ Changed: Optimized le processing.

ˆ Changed: Improved support of large les (> 4 Gbytes).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 13

Deprecated List
41

Member opencube::MXFTK_NAMESPACE::I_mxf_le::ush_thread_cancel()
This method has been deprecated and replaced by cancel().

Member opencube::MXFTK_NAMESPACE::locators::add(const char ∗∗locator)=0


Please avoid using this method.

Member opencube::MXFTK_NAMESPACE::mxf_le_list::add(I_mxf_le ∗∗)=0

Member opencube::MXFTK_NAMESPACE::mxf_le_list::remove(I_mxf_le ∗∗)=0

Member mxf_opening_mode

Member METADATA_AND_RANDOM_ACCESS .

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 14

Module Index

14.1 Modules
Here is a list of all modules:

AMT Avid OpAtom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??


Avid OpAtom File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
Essence Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_MXF_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_concrete_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dcp1_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
MXFTk API conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
MXFTk Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
P2 OpAtom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
Chapter 15

Class Index

15.1 Class Hierarchy


This inheritance list is sorted roughly, but not completely, alphabetically:

I_dm_segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dm_source_clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_essence_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_crypted_essence_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_metadata_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_partial_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_object
concrete_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
crypted_locator_element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
crypted_locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
error_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
generic_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_essence_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_generic_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_concrete_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_metadata_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_error_handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_evtr_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_dv_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_hd_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_imx_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_proxy_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
15.1 Class Hierarchy 44

I_op3a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op3b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op3c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_opatom_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_avid_opatom_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dcp1_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_le_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_anc_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_vbi_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_cdci_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_mpeg2_video_descriptor . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_rgba_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_sound_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_wave_audio_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_aes3_audio_essence_descriptor . . . . . . . . . . . . . . . . . . . . ??
I_mxf_subdescriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_jpeg2000_picture_subdescriptor . . . . . . . . . . . . . . . . . . . . . . . ??
I_opatom_assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_system_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_concrete_track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_umid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_umid64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
metadata_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
mxf_le_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
ordered_timecode_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
ordered_track_item_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
properties_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
rational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
track_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_output_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_source_clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
mxf_parameter_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 16

Class Index

16.1 Class List


Here are the classes, structs, unions and interfaces with brief descriptions:

concrete_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
crypted_locator_element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
crypted_locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
error_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
generic_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_avid_opatom_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_concrete_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_concrete_track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_crypted_essence_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dcp1_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dm_segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_dm_source_clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_essence_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_essence_type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_evtr_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_generic_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_metadata_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_input_partial_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_metadata_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_aes3_audio_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_anc_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_cdci_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_error_handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_le_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_generic_sound_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_jpeg2000_picture_subdescriptor . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_mpeg2_video_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
16.1 Class List 46

I_mxf_rgba_picture_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_subdescriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_vbi_data_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_mxf_wave_audio_essence_descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op1c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op2c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op3a_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op3b_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_op3c_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_opatom_assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_opatom_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_output_mxf_stream_task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_source_clip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_system_item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_timecode_material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_umid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_umid64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_dv_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_hd_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_imx_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
I_xdcam_proxy_le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
metadata_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
mxf_le_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
mxf_parameter_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
ordered_timecode_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
ordered_track_item_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
properties_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
rational . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??
track_list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ??

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 17

Module Documentation

17.1 AMT Avid OpAtom


Functions
ˆ mxf_tk_API bool CancelNewAMTAvidOpAtomShot (uint32_t id)
ˆ mxf_tk_API bool IsRunningNewAMTAvidOpAtomShot (uint32_t id)
ˆ mxf_tk_API uint32_t NewAMTAvidOpAtomShot (locators ∗loc, const char ∗tempdir,
const char ∗outdir, const char ∗basename, char ∗∗&outname, uint8_t &number_of_-
outputs, I_timecode ∗start_tc=NULL, rational ∗edit_rate=NULL, bool multi_res=false)
ˆ mxf_tk_API uint32_t NewAMTAvidOpAtomShotFromStream (I_essence_stream_task
∗∗tasks, uint8_t nb_essence_stream_tasks, const char ∗tempdir, const char ∗outdir, const
char ∗basename, char ∗∗&outname, uint8_t &number_of_outputs, I_timecode ∗start_-
tc=NULL, rational ∗edit_rate=NULL, bool multi_res=false)
ˆ mxf_tk_API double ProgressNewAMTAvidOpAtomShot (uint32_t id)
ˆ mxf_tk_API bool WaitEndNewAMTAvidOpAtomShot (uint32_t id)

17.1.1 Detailed Description


Avid Media ToolKit (AMT) is an SDK licensed from Avid Technology, Inc.

Warning:
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2 Function Documentation


17.1.2.1 mxf_tk_API bool opencube::MXFTK_-
NAMESPACE::CancelNewAMTAvidOpAtomShot
(uint32_t id)

Cancel the current AMTAvidOpAtom creation process.

Warning:
You must still call WaitEndNewAMTAvidOpAtomShot() to terminate correctly the thread.
17.1 AMT Avid OpAtom 48

Parameters:
← id Identier returned by NewAMTAvidOpAtomShotFromStream() or NewAMTAvi-
dOpAtomShot()

Returns:
true if successful.

Warning:
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2.2 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::IsRunningNewAMTAvidOpAtomShot
(uint32_t id)

Indicate whether the AMTAvidOpAtom process with the specied identier is running ot not.

Parameters:
← id Identier returned by NewAMTAvidOpAtomShotFromStream() or NewAMTAvi-
dOpAtomShot()

Returns:
true if the conversion is processing, false if the conversion is not started or nished.

Warning:
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2.3 mxf_tk_API uint32_t opencube::MXFTK_-


NAMESPACE::NewAMTAvidOpAtomShot (locators ∗ loc, const char ∗
tempdir, const char ∗ outdir, const char ∗ basename, char ∗∗& outname,
uint8_t & number_of_outputs, I_timecode ∗ start_tc = NULL, rational
∗ edit_rate = NULL, bool multi_res = false)

This function produce a directory with Avid OpAtom le created by the AMT (Avid Media
ToolKit). AMT is an SDK licensed from Avid Technology, Inc. These les are compliant with the
AVID products (NewsCutter, Interplay, Assist).

Parameters:
← loc Listing the input les to be MXF wrapped (this should be one video track in DV, IMX
or DNxHD Format and some mono audio tracks in WAV format).

← tempdir The temporary directory.


← outdir The output directory.
← basename The basename for this set
→ outname Will contains the output lenames (output lenames are dened by AMT).
← number_of_outputs Numbers of output lenames.
← start_tc Denes the start timecode of the sequence. This is optional, pass NULL to let
the MXFTK generate a default value.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.1 AMT Avid OpAtom 49

← edit_rate Denes the video edit rate of the sequence. This is used by DNxHD. This is
optional, pass NULL to let the MXFTK generate a default value.

← multi_res Indicate whether the le must be prepared for multi resolution or not.

Returns:
an value identifying the process that can later on be passed to WaitEndNewAMTAvi-
dOpAtomShot(), CancelNewAMTAvidOpAtomShot() and ProgressNewAMTAvi-
dOpAtomShot(). Returns NULL if failed.

Warning:
You should call WaitEndNewAMTAvidOpAtomShot() after calling this function to make sure
the process is completed.
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2.4 mxf_tk_API uint32_t opencube::MXFTK_-


NAMESPACE::NewAMTAvidOpAtomShotFromStream
(I_essence_stream_task ∗∗ tasks, uint8_t nb_essence_stream_tasks,
const char ∗ tempdir, const char ∗ outdir, const char ∗ basename, char
∗∗& outname, uint8_t & number_of_outputs, I_timecode ∗ start_tc =
NULL, rational ∗ edit_rate = NULL, bool multi_res = false)

NewAMTAvidOpAtomShotFromStream This function produce a directory with Avid OpAtom le


created by the AMT (Avid Media ToolKit). These les are compliant with the AVID products
(NewsCutter, Interplay, Assist).

Parameters:
← tasks Array of the streaming interface you should derive to provide an implementation
to control your input streaming device. It should handle one video track (DV, IMX,
DNxHD) and some mono channels audio tracks (WAV).

← nb_essence_stream_tasks The number of essence stream tasks


← tempdir The temporary directory.
← outdir The output directory.
← basename The basename for this set
→ outname Will contains the output lenames (output lenames are dened by AMT)
← number_of_outputs Numbers of output lenames
← start_tc Denes the start timecode of the sequence. This is optional, pass NULL to let
the MXFTK generate a default value.

← edit_rate Denes the video edit rate of the sequence. This is used by DNxHD. This is
optional, pass NULL to let the MXFTK generate a default value.

← multi_res Indicate whether the le must be prepared for multi resolution or not.

Returns:
an value identifying the process that can later on be passed to WaitEndNewAMTAvi-
dOpAtomShot(), CancelNewAMTAvidOpAtomShot() and ProgressNewAMTAvi-
dOpAtomShot(). Returns NULL if failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.1 AMT Avid OpAtom 50

Warning:
You should call WaitEndNewAMTAvidOpAtomShot() after calling this function to make sure
the process is completed.
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2.5 mxf_tk_API double opencube::MXFTK_-


NAMESPACE::ProgressNewAMTAvidOpAtomShot
(uint32_t id)

Return progress of the current AMTAvidOpAtom creation process.

Parameters:
← id Identier returned by NewAMTAvidOpAtomShotFromStream() or NewAMTAvi-
dOpAtomShot()

Returns:
A value between 0.0 and 1.0. A negative value would indicate that the progress could not be
computed.

Warning:
MXFTk currently supports AMT only on Windows 32-bit.

17.1.2.6 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::WaitEndNewAMTAvidOpAtomShot
(uint32_t id)

Wait for the end of the current AMTAvidOpAtom creation process.

Parameters:
← id Identier returned by NewAMTAvidOpAtomShotFromStream() or NewAMTAvi-
dOpAtomShot()

Returns:
true if successful.

Warning:
MXFTk currently supports AMT only on Windows 32-bit.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.2 Avid OpAtom File 51

17.2 Avid OpAtom File


Classes
ˆ class I_avid_opatom_le

Functions
ˆ mxf_tk_API bool FreeAvidOpAtomFileInterface (I_avid_opatom_le ∗∗le)
ˆ mxf_tk_API bool NewAvidOpAtomFileInterface (I_avid_opatom_le ∗∗le, const char
∗path)
ˆ mxf_tk_API bool NewAvidOpAtomStreamInterface (I_avid_opatom_le ∗∗le, I_-
output_mxf_stream_task ∗task)

17.2.1 Function Documentation


17.2.1.1 mxf_tk_API bool opencube::MXFTK_-
NAMESPACE::FreeAvidOpAtomFileInterface (I_avid_opatom_le ∗∗
le)
Frees an I_avid_opatom_le interface.

Parameters:
↔ le A I_opatom_le∗ pointer to the object to be freed.

Returns:
true if the function operated successfully.

17.2.1.2 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewAvidOpAtomFileInterface (I_avid_opatom_le ∗∗
le, const char ∗ path)
Retrieves an avid_opatom_le interface.

Parameters:
→ le Pointer to the newly allocated object
← path Path to the avid le to be written.

Returns:
true if the function operated successfully.

Note:
Call to ush() will eectively cause the creation of the le.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.2 Avid OpAtom File 52

17.2.1.3 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewAvidOpAtomStreamInterface
(I_avid_opatom_le ∗∗ le, I_output_mxf_stream_task ∗ task)
Retrieves an I_avid_opatom_le interface whose ush will be performed in streaming mode. This
function must be called when writing an Avid OpAtom le on a linear streaming device (e.g. a
videotape recorder, an IEEE1394 port, etc.).

Parameters:
→ le A I_avid_opatom_le∗ pointer to the newly allocated object
task Class derived by the MXFTk user to provide its own implementation to feed the stream-
ing device while output data is built by MXFTk.

Returns:
true if the function operated successfully.

Note:
Call to ush() will eectively cause the on-disk writing of the le(s).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.3 I_concrete_material 53

17.3 I_concrete_material
Classes
ˆ class I_concrete_material

Denes
ˆ mxf_tk_API bool FreeConcreteMaterialInterface(I_concrete_material ∗∗i_mat)
ˆ mxf_tk_API bool NewConcreteMaterialInterface(I_concrete_material ∗∗material, loca-
tors ∗locators, wrapping wrapping_mode=std_wrapping, rational ∗edit_rate=NULL, bool
ignore_audio_from_dv=false)
ˆ mxf_tk_API bool NewCryptedMaterialInterface(I_concrete_material ∗∗material,
crypted_locators ∗locators, wrapping wrapping_mode=frame_wrapping, rational ∗edit_-
rate=NULL, bool ignore_audio_from_dv=false)
ˆ mxf_tk_API bool NewExtConcreteMaterialInterface(I_concrete_material ∗∗material,
const char ∗path, rational ∗edit_rate=NULL, bool ignore_audio_from_dv=false, int64_t
∗duration=NULL)
ˆ mxf_tk_API bool NewStreamMaterialInterface(I_concrete_material ∗∗material, I_-
essence_stream_task ∗task, wrapping wrapping_mode=std_wrapping, rational ∗edit_-
rate=NULL, bool ignore_audio_from_dv=false)

Enumerations
ˆ enum wrapping {

std_wrapping, clip_wrapping, frame_wrapping, line_wrapping, custom_wrapping,

evtr_wrapping, xdcam_wrapping, p2_wrapping, k2_wrapping, avid_opatom_wrapping,

opzero_wrapping, dcp_wrapping, dcp1_wrapping, dcp1_stereoscopic_wrapping,


wrapping_error }

17.3.1 Dene Documentation


17.3.1.1 mxf_tk_API bool FreeConcreteMaterialInterface(I_concrete_material
∗∗ i_mat) [related, inherited]

Frees the specied concrete material interface.

Parameters:
↔ i_mat The I_concrete_material to release.

Warning:
User must not free a concrete material already attached to an I_mxf_le.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.3 I_concrete_material 54

17.3.1.2 mxf_tk_API bool NewConcreteMaterialInterface(I_concrete_material


∗∗ material, locators ∗ locators, wrapping wrapping_mode =
std_wrapping, rational ∗ edit_rate = NULL, bool ignore_audio_from_dv
= false) [related, inherited]

Retrieves a concrete material interface.

Parameters:
→ material A I_concrete_material∗∗ pointer to the newly allocated object
← locators List of source les (DV, MPEG, etc.)(see notes)
← wrapping_mode The desired wrapping of the essence.
← edit_rate Sets the default edit rate value to be used when this information cannot be
retrieved from the essence (e.g. Uncompressed Images).

← ignore_audio_from_dv If set to true DV sources with embedded audio will be con-


sidered as video only.

Returns:
false if the allocation failed

Note:
In order to designate a series of images the following syntax should be set in the path of the
locator #[d, f, l, s] where:

ˆ ->d should be a number designating the number of digits

ˆ ->f should be the rst number of the le to be wrapped

ˆ ->l should be the last number of the le to be wrapped

ˆ ->s should be the step between two successive les to be wrapped

Note that it is perfectly valid to set a negative step. For instance:

ˆ "C:/images/myle#[4, 10, 500, 2].jp2", "C:/sound/sound.wav"

will perform the wrapping of the following series of les

ˆ C:/images/myle0010.jp2

ˆ C:/images/myle0012.jp2

ˆ C:/images/myle0014.jp2

ˆ ...

ˆ C:/images/myle0498.jp2

ˆ C:/images/myle0500.jp2

ˆ with the audio wave "sound.wav"

ˆ "C:/video/test.dv", "C:/sound/sound.wav" will perform the wrapping of "test.dv" with


"sound.wav"

17.3.1.3 mxf_tk_API bool NewCryptedMaterialInterface(I_concrete_material


∗∗ material, crypted_locators ∗ locators, wrapping wrapping_mode =
frame_wrapping, rational ∗ edit_rate = NULL, bool ignore_audio_from_dv
= false) [related, inherited]

Retrieves a concrete material interface. This function is the same the same than NewConcreteM-
aterialInterface() but uses crypted_locators instead of locators.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.3 I_concrete_material 55

Parameters:
→ material A I_concrete_material∗ pointer to the newly allocated object
← locators List of complete paths (and crypt keys) to the audio or video source les to be
embedded and crypted in this concrete material.

← wrapping_mode The desired wrapping of the essence.


← edit_rate Sets the default edit rate value to be used when this information cannot be
retrieved from the essence (e.g. Uncompressed Images).

← ignore_audio_from_dv If set to true, DV sources with embedded audio will be con-


sidered as video only.

Returns:
false if the allocation failed

17.3.1.4 mxf_tk_API bool NewExtConcreteMaterialInterface(I_concrete_-


material ∗∗ material, const char ∗ path, rational ∗ edit_rate = NULL, bool
ignore_audio_from_dv = false, int64_t ∗ duration = NULL) [related,
inherited]

Retrieves a concrete material interface that will point on an externally referenced media le.

Parameters:
→ material A pointer to the newly allocated object.
← path Path to the external media le to be referenced.
← edit_rate Sets the default edit rate value to be used when this information
← ignore_audio_from_dv If set to true DV sources with embedded audio will.
← duration If not null, use the specied value as the duration. This prevents parsing the
whole essence to nd out its duration and therefore saves most of the time when creating
an external reference. The value may be -1, in which case the duration will be marked
as unknown.

Returns:
false if the allocation failed

17.3.1.5 mxf_tk_API bool NewStreamMaterialInterface(I_concrete_material ∗∗


material, I_essence_stream_task ∗ task, wrapping wrapping_mode =
std_wrapping, rational ∗ edit_rate = NULL, bool ignore_audio_from_dv
= false) [related, inherited]

Retrieves a pointer on an I_concrete_material interface initialized with audio or video streams.

Parameters:
→ material A I_stream_material∗ pointer to the newly allocated object.
← task An I_essence_stream_task (or I_crypted_essence_stream_task) pointer to pro-
vide control over the audiovisual stream.

← wrapping_mode The desired wrapping of the essence in this material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.3 I_concrete_material 56

← edit_rate A pointer to a rational used to set the default edit rate value to be used when
this information cannot be retrieved from the essence (e.g. Uncompressed Images).

← ignore_audio_from_dv Set to true to force MXFTk to ignore the audio from the DV
streams that will be wrapped. In that case, no audio track will be created for the DV
streams.

Note:
This function should be used when wrapping an MXF le on the y as the audiovisual material
is received from a streaming media.

Returns:
false if the allocation failed.

17.3.2 Enumeration Type Documentation


17.3.2.1 enum wrapping

List the predened ways of wrapping an essence embedded in an MXF le.

Enumerator:
std_wrapping The default wrapping (frame or clip wrapping depending on the essence).
clip_wrapping Clip wrapping.
frame_wrapping Frame wrapping.
line_wrapping Line wrapping.
Warning:
MXFTk currently does not support line wrapping.

custom_wrapping Custom wrapping.


evtr_wrapping eVTR wrapping: you must create your materials with this wrapping in
order to attach them to an I_evtr_le le.

Note:
: eVTR wrapping is a specic kind of frame wrapping.

xdcam_wrapping XDCam wrapping: you must create your materials with this wrapping
in order to attach them to an I_xdcam_dv_le, I_xdcam_imx_le or I_xdcam_-
proxy_le.

Note:
: XDCam wrapping is a specic kind of frame wrapping.

p2_wrapping P2 wrapping: you must create your materials with this wrapping in order
to attach them to a Panasonic P2 le.
Note:
: P2 wrapping is a specic kind of clip wrapping.

k2_wrapping K2 wrapping to build les similar to the ones produced by a Thomson Grass
Valley K2 server.

Note:
: K2 wrapping is a specic kind of frame wrapping.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.3 I_concrete_material 57

avid_opatom_wrapping AVID OpAtom wrapping to build les similar to the ones pro-
duced by an AVID server.

Note:
: AVID OpAtom wrapping is a specic kind of clip wrapping.

opzero_wrapping OpZero wrapping: you must create your materials with this wrapping
in order to attach them to an I_op1a_le built with the OpZero constructor.

Note:
: OpZero wrapping is clip-wrapping when the MXF le contains only audio. It is
frame-wrapping when there is video.

dcp_wrapping DCP SMPTE wrapping: you must create your materials with this wrap-
ping in order to attach them to an I_dcp1_le.

See also:
DCP SMPTE wrapping is a specic kind of frame wrapping.

dcp1_wrapping DCP Interop wrapping: you must create your materials with this wrap-
ping in order to attach them to an I_dcp1_le.

See also:
dcp_wrapping
DCP Interop wrapping is a specic kind of frame wrapping.

dcp1_stereoscopic_wrapping DCP 3D Interop wrapping: you must create your mate-


rials with this wrapping in order to attach them to an I_dcp1_le.

See also:
dcp_wrapping
DCP 3D Interop is a specic kind of frame wrapping.

wrapping_error Unrecognized wrapping.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.4 I_dcp1_le 58

17.4 I_dcp1_le
Classes
ˆ class I_dcp1_le

Denes
ˆ mxf_tk_API bool FreeDcp1FileInterface(I_dcp1_le ∗∗)
ˆ mxf_tk_API bool NewDcp1FileInterface(I_dcp1_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewDcp1StreamInterface(I_dcp1_le ∗∗, I_output_mxf_stream_task
∗task)

17.4.1 Dene Documentation


17.4.1.1 mxf_tk_API bool FreeDcp1FileInterface(I_dcp1_le ∗∗) [related,
inherited]

Frees an I_dcp1_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

17.4.1.2 mxf_tk_API bool NewDcp1FileInterface(I_dcp1_le ∗∗, const char ∗


lename) [related, inherited]
Retrieves a pointer on an I_dcp1_le interface.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

17.4.1.3 mxf_tk_API bool NewDcp1StreamInterface(I_dcp1_le ∗∗,


I_output_mxf_stream_task ∗ task) [related, inherited]

Retrieves a pointer on an I_dcp1_le interface in streaming mode. This function must be called
when writing an OpAtom le on a linear streaming device (e.g. a videotape recorder, an IEEE1394
port, etc.). Call to ush() will eectively cause the creation of the le.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Parameters:
task Class derived by the MXFTk user to provide its own implementation to feed the stream-
ing device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.4 I_dcp1_le 59

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.5 MXFTk Error management 60

17.5 MXFTk Error management


Classes
ˆ class I_mxf_error
ˆ class I_mxf_error_handler

Enumerations
ˆ enum gravity { MXF_NONE = 0, MXF_CAUTION, MXF_WARNING, MXF_FATAL }

Functions
ˆ mxf_tk_API bool GetMxfErrorHandlerInterface (I_mxf_error_handler ∗∗handler)
ˆ static bool raised ()
ˆ template<typename T >
static bool write_all (std::basic_ostream< T > &)

17.5.1 Enumeration Type Documentation


17.5.1.1 enum gravity

This enumeration denes the dierent levels of gravity of an error.

See also:
The MXFTk Error Handling section for more details.

Enumerator:
MXF_NONE The error could not be identied.
MXF_CAUTION This is the lowest gravity. This generally means that the user tries to
undertake an illegal operation on the MXF le or that an unexpected event occurred.
This error does not stop MXFTk from working correctly and the validity of the MXF
les being manipulated should not be aected by this error. For instance, this gravity
of error will be set if you are trying to reach an invalid timecode.

MXF_WARNING This is a serious error. The validity of the le being manipulated is
at least partially altered and future manipulations of the le may lead to unexpected
behaviour. However, it is likely that the overall behaviour of MXFTk will remain correct
while reading or writing other MXF les. For instance, this gravity of error will be set
if you are trying to read an invalid MXF le.

MXF_FATAL This is the highest gravity. The MXFTk will not be able to continue to
work properly, at least with the le being manipulated. For instance, this gravity of
error will be set if the toolkit cannot nd a valid license key.

17.5.2 Function Documentation


17.5.2.1 mxf_tk_API bool opencube::MXFTK_-
NAMESPACE::GetMxfErrorHandlerInterface (I_mxf_error_handler ∗∗
handler)
This function lets you retrieve the interface handling MXFTk errors.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.5 MXFTk Error management 61

Parameters:
→ handler A pointer to he address of the created I_mxf_error_handler.

Note:
This object is created upon loading of the dynamic library and will be shared by all the pro-
cesses. This function does not allocate a new handler and the pointer returned is automatically
deleted upon unloading of the dynamic library.
Default language is set to English - United States (dictionary lename: mxf-en-US.dic). The
user does not need to Free this interface.

17.5.2.2 bool raised () [static, inherited]

Inline helper to indicate whether there is an error on the stack or not.

17.5.2.3 bool write_all (std::basic_ostream< T > & out) [static, inherited]

Helper function to print out the errors.

Returns:
true if any error was printed out, false otherwise

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 62

17.6 Essence Descriptors


Classes
ˆ class I_mxf_aes3_audio_essence_descriptor
ˆ class I_mxf_anc_data_essence_descriptor
ˆ class I_mxf_cdci_picture_essence_descriptor
ˆ class I_mxf_le_descriptor
ˆ class I_mxf_generic_data_essence_descriptor
ˆ class I_mxf_generic_picture_essence_descriptor
ˆ class I_mxf_generic_sound_essence_descriptor
ˆ class I_mxf_jpeg2000_picture_subdescriptor
ˆ class I_mxf_mpeg2_video_descriptor
ˆ class I_mxf_rgba_picture_essence_descriptor
ˆ class I_mxf_subdescriptor
ˆ class I_mxf_vbi_data_essence_descriptor
ˆ class I_mxf_wave_audio_essence_descriptor

Denes
ˆ mxf_tk_API bool FreeMxfAes3AudioEssenceDescriptorInterface(I_mxf_aes3_audio_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfAncDataEssenceDescriptorInterface(I_mxf_anc_data_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfCDCIPictureEssenceDescriptorInterface(I_mxf_cdci_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfFileDescriptorInterface(I_mxf_le_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfGenericDataEssenceDescriptorInterface(I_mxf_generic_data_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfGenericPictureEssenceDescriptorInterface(I_mxf_generic_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfGenericSoundEssenceDescriptorInterface(I_mxf_generic_-
sound_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfJpeg2000PictureSubdescriptorInterface(I_mxf_jpeg2000_-
picture_subdescriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfMpeg2VideoDescriptorInterface(I_mxf_mpeg2_video_-
descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfRGBAPictureEssenceDescriptorInterface(I_mxf_rgba_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfVbiDataEssenceDescriptorInterface(I_mxf_vbi_data_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool FreeMxfWaveAudioEssenceDescriptorInterface(I_mxf_wave_audio_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfAes3AudioEssenceDescriptorInterface(I_mxf_aes3_audio_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfAncDataEssenceDescriptorInterface(I_mxf_anc_data_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfCDCIPictureEssenceDescriptorInterface(I_mxf_cdci_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfFileDescriptorInterface(I_mxf_le_descriptor ∗∗descriptor)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 63

ˆ mxf_tk_API bool NewMxfGenericDataEssenceDescriptorInterface(I_mxf_generic_-


data_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfGenericPictureEssenceDescriptorInterface(I_mxf_generic_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfGenericSoundEssenceDescriptorInterface(I_mxf_generic_-
sound_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfJpeg2000PictureSubdescriptorInterface(I_mxf_jpeg2000_-
picture_subdescriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfMpeg2VideoDescriptorInterface(I_mxf_mpeg2_video_-
descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfRGBAPictureEssenceDescriptorInterface(I_mxf_rgba_-
picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfVbiDataEssenceDescriptorInterface(I_mxf_vbi_data_-
essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfWaveAudioEssenceDescriptorInterface(I_mxf_wave_audio_-
essence_descriptor ∗∗descriptor)

Enumerations
ˆ enum subdescriptor_t

17.6.1 Dene Documentation


17.6.1.1 mxf_tk_API bool FreeMxfAes3AudioEssenceDescriptorInterface(I_-
mxf_aes3_audio_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_aes3_audio_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_aes3_audio_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.2 mxf_tk_API bool FreeMxfAncDataEssenceDescriptorInterface(I_-


mxf_anc_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_anc_data_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_anc_data_essence_descriptor∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 64

17.6.1.3 mxf_tk_API bool FreeMxfCDCIPictureEssenceDescriptorInterface(I_-


mxf_cdci_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_cdci_picture_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_cdci_picture_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.4 mxf_tk_API bool FreeMxfFileDescriptorInterface(I_mxf_le_descriptor


∗∗ descriptor) [related, inherited]

Frees an I_mxf_le_descriptor interface.

Parameters:
← descriptor An I_mxf_le_descriptor∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

17.6.1.5 mxf_tk_API bool FreeMxfGenericDataEssenceDescriptorInterface(I_-


mxf_generic_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_generic_data_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_generic_data_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.6 mxf_tk_API bool FreeMxfGenericPictureEssenceDescriptorInterface(I_-


mxf_generic_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_generic_picture_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_generic_picture_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 65

17.6.1.7 mxf_tk_API bool FreeMxfGenericSoundEssenceDescriptorInterface(I_-


mxf_generic_sound_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_generic_sound_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_generic_sound_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.8 mxf_tk_API bool FreeMxfJpeg2000PictureSubdescriptorInterface(I_-


mxf_jpeg2000_picture_subdescriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_jpeg2000_picture_subdescriptor interface.

Parameters:
← descriptor An I_mxf_jpeg2000_picture_subdescriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.9 mxf_tk_API bool FreeMxfMpeg2VideoDescriptorInterface(I_-


mxf_mpeg2_video_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_mpeg2_video_descriptor interface.

Parameters:
← descriptor An I_mxf_mpeg2_video_descriptor∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

17.6.1.10 mxf_tk_API bool FreeMxfRGBAPictureEssenceDescriptorInterface(I_-


mxf_rgba_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_rgba_picture_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_rgba_picture_essence_descriptor∗ pointer to the object to be
freed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 66

Returns:
false if the deallocation failed.

17.6.1.11 mxf_tk_API bool FreeMxfVbiDataEssenceDescriptorInterface(I_-


mxf_vbi_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_vbi_data_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_vbi_data_essence_descriptor∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

17.6.1.12 mxf_tk_API bool FreeMxfWaveAudioEssenceDescriptorInterface(I_-


mxf_wave_audio_essence_descriptor ∗∗ descriptor) [related,
inherited]

Frees an I_mxf_wave_audio_essence_descriptor interface.

Parameters:
← descriptor An I_mxf_wave_audio_essence_descriptor∗ pointer to the object to be
freed.

Returns:
false if the deallocation failed.

17.6.1.13 mxf_tk_API bool NewMxfAes3AudioEssenceDescriptorInterface(I_-


mxf_aes3_audio_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_aes3_audio_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_aes3_audio_essence_descriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

17.6.1.14 mxf_tk_API bool NewMxfAncDataEssenceDescriptorInterface(I_-


mxf_anc_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_anc_data_essence_descriptor interface.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 67

Parameters:
→ descriptor An I_mxf_anc_data_essence_descriptor∗ pointer to the newly allocated ob-
ject.

Returns:
false if the allocation failed.

17.6.1.15 mxf_tk_API bool NewMxfCDCIPictureEssenceDescriptorInterface(I_-


mxf_cdci_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_cdci_picture_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_cdci_picture_essence_descriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

17.6.1.16 mxf_tk_API bool NewMxfFileDescriptorInterface(I_mxf_le_-


descriptor ∗∗ descriptor) [related, inherited]

Retrieves an I_mxf_le_descriptor interface.

Parameters:
→ descriptor An I_mxf_le_descriptor∗ pointer to the newly allocated object.

Returns:
false if the allocation failed.

17.6.1.17 mxf_tk_API bool NewMxfGenericDataEssenceDescriptorInterface(I_-


mxf_generic_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_generic_data_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_generic_data_essence_descriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 68

17.6.1.18 mxf_tk_API bool


NewMxfGenericPictureEssenceDescriptorInterface(I_-
mxf_generic_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_generic_picture_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_generic_picture_essence_descriptor∗ pointer to the newly allo-
cated object.

Returns:
false if the allocation failed.

17.6.1.19 mxf_tk_API bool NewMxfGenericSoundEssenceDescriptorInterface(I_-


mxf_generic_sound_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_generic_sound_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_generic_sound_essence_descriptor∗ pointer to the newly allo-
cated object.

Returns:
false if the allocation failed.

17.6.1.20 mxf_tk_API bool NewMxfJpeg2000PictureSubdescriptorInterface(I_-


mxf_jpeg2000_picture_subdescriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_jpeg2000_picture_subdescriptor interface.

Parameters:
→ descriptor An I_mxf_jpeg2000_picture_subdescriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

17.6.1.21 mxf_tk_API bool NewMxfMpeg2VideoDescriptorInterface(I_-


mxf_mpeg2_video_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_mpeg2_video_descriptor interface.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 69

Parameters:
→ descriptor An I_mxf_mpeg2_video_descriptor∗ pointer to the newly allocated object.

Returns:
false if the allocation failed.

17.6.1.22 mxf_tk_API bool NewMxfRGBAPictureEssenceDescriptorInterface(I_-


mxf_rgba_picture_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_rgba_picture_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_rgba_picture_essence_descriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

17.6.1.23 mxf_tk_API bool NewMxfVbiDataEssenceDescriptorInterface(I_-


mxf_vbi_data_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_vbi_data_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_vbi_data_essence_descriptor∗ pointer to the newly allocated ob-
ject.

Returns:
false if the allocation failed.

17.6.1.24 mxf_tk_API bool NewMxfWaveAudioEssenceDescriptorInterface(I_-


mxf_wave_audio_essence_descriptor ∗∗ descriptor) [related,
inherited]

Retrieves an I_mxf_wave_audio_essence_descriptor interface.

Parameters:
→ descriptor An I_mxf_wave_audio_essence_descriptor∗ pointer to the newly allocated
object.

Returns:
false if the allocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.6 Essence Descriptors 70

17.6.2 Enumeration Type Documentation


17.6.2.1 enum subdescriptor_t

List of standard sub-descriptor types.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.7 I_MXF_le 71

17.7 I_MXF_le
Classes
ˆ class I_mxf_le
ˆ struct mxf_parameter_t

Denes
ˆ mxf_tk_API bool FreeMxfFileInterface(I_mxf_le ∗∗mxf_le)
ˆ mxf_tk_API bool NewMxfFileInterface(I_mxf_le ∗∗mxf_le, const char ∗path, uint32_t
ags=0, mxf_parameter_t ∗parameters=NULL)
ˆ mxf_tk_API bool NewMxfStreamInterface(I_mxf_le ∗∗mxf_le, I_input_mxf_-
stream_task ∗task, uint32_t ags=0, mxf_parameter_t ∗parameters=NULL)
ˆ mxf_tk_API bool NewPartialRestoreMxfFileInterface(I_mxf_le ∗∗mxf_le, const char
∗path, I_timecode ∗tc_in, I_timecode ∗tc_out)
ˆ mxf_tk_API bool NewPartialRestoreMxfStreamInterface(I_mxf_le ∗∗mxf_le, I_-
input_partial_mxf_stream_task ∗task, I_timecode ∗tc_in, I_timecode ∗tc_out)
ˆ mxf_tk_API bool UpdateAndFreeMxfFileInterface(I_mxf_le ∗∗mxf_le)

Enumerations
ˆ enum mxf_ag_t { FLAG_METADATA_ONLY = 0x0001, FLAG_INCOMPLETE_-
METADATA = 0x0002, FLAG_IGNORE_INDEX_TABLES = 0x0010, FLAG_LOAD_-
INDEX_TABLES_AT_STARTUP = 0x0020 }
ˆ enum mxf_opening_mode { METADATA_ONLY, CLOSED_COMPLETE_METADATA
= FLAG_METADATA_ONLY, METADATA_AND_LINEAR_PLAYOUT = FLAG_-
IGNORE_INDEX_TABLES, METADATA_AND_RANDOM_ACCESS = 0 }
ˆ enum mxf_parameter {

KAG_SIZE, HEADER_REPETITION, INDEX_TABLE, PREFERRED_PARTITION_-


DURATION, REVERSE_PLAY,

SYSTEM_ITEM, THIS_PARTITION_ONLY, HEADER_METADATA_UPDATE,


PARAMETER_COUNT }

17.7.1 Dene Documentation


17.7.1.1 mxf_tk_API bool FreeMxfFileInterface(I_mxf_le ∗∗ mxf_le)
[related, inherited]

Frees an I_mxf_le interface. If the le you provide is an OpAtom le that was parallelized,
serialized or synchronized, calling this function will free all the associated OpAtom les so that
you need to call this function only once.

Parameters:
← mxf_le An I_mxf_le∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.7 I_MXF_le 72

17.7.1.2 mxf_tk_API bool NewMxfFileInterface(I_mxf_le ∗∗ mxf_le, const


char ∗ path, uint32_t ags = 0, mxf_parameter_t ∗ parameters = NULL)
[related, inherited]

Retrieves an I_mxf_le interface.

Parameters:
→ mxf_le An I_mxf_le∗ pointer to the newly allocated object.
← path Path to the mxf le to be read.
← ags This is an OR'd combination of mxf_ag_t used to control the MXF le behavior.
changed depending on the task to undertake with the le:

← parameters List of initial parameters.

Returns:
false if the allocation failed.

17.7.1.3 mxf_tk_API bool NewMxfStreamInterface(I_mxf_le ∗∗


mxf_le, I_input_mxf_stream_task ∗ task, uint32_t ags = 0,
mxf_parameter_t ∗ parameters = NULL) [related, inherited]

Retrieves a pointer on an I_mxf_le interface. This function must be called when reading an
MXF le received from a linear streaming device (e.g. a videotape recorder, an IEEE1394 port,
etc.). The I_input_mxf_stream_task is a class derived by MXFTk user to provide its own
implementation to retrieve data from the stream. The key functions while opening an I_mxf_le
with this constructor are end_of_stream() and write(). Returns false if the allocation failed.

Parameters:
→ mxf_le A I_mxf_le∗ pointer to the newly allocated object.
← task A I_input_mxf_stream_task pointer to the user's class that will feed this stream.
← ags This is an OR'd combination of mxf_ag_t used to control the MXF le behavior.
← parameters List of initial parameters.

Returns:
false if the allocation failed.

17.7.1.4 mxf_tk_API bool NewPartialRestoreMxfFileInterface(I_mxf_le ∗∗


mxf_le, const char ∗ path, I_timecode ∗ tc_in, I_timecode ∗ tc_out)
[related, inherited]

Retrieves a pointer to an I_mxf_le interface and perform a partial restore on the specied MXF
le. It will retrieve the video, sound and data located between the timecode in tc_in(included) and
timecode out tc_out (also included). These timecode values correspond to the timecode material
of the I_generic_material of the le. It is not possible to perform a partial restore according
to the timecode material of the I_concrete_material. Note that if the time span dened by the
timecode values is not valid an error will be raised. Possible errors may include an inappropriate
frame rate, an invalid drop frame property, etc. Furthermore, if the MXF le contains several
I_generic_material (several material packages), they will be all partially restored according to

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.7 I_MXF_le 73

the same timecode values. MXFTk will do its best to ensure that the restored le follow the same
properties as the original le. It will keep the properties of partitioning, index tables, kag_size,
etc.

Parameters:
→ mxf_le An I_mxf_le∗ pointer to the newly allocated object.
← path Complete path to the MXF le to be partially restored.
← tc_in The beginning timecode value.
← tc_out The ending timecode value.
Note:
This function will create the MXF le in memory, in order to ush it you will need to use one
of the ush() functions of I_mxf_le interface.

Returns:
false if an error occurred.

17.7.1.5 mxf_tk_API bool NewPartialRestoreMxfStreamInterface(I_mxf_le ∗∗


mxf_le, I_input_partial_mxf_stream_task ∗ task, I_timecode ∗
tc_in, I_timecode ∗ tc_out) [related, inherited]
Retrieves a pointer to an I_mxf_le interface and perform a partial restore on the specied MXF
stream

Parameters:
→ mxf_le An I_mxf_le pointer to the newly allocated object.
← task An I_input_mxf_stream_task pointer to the user's class that will feed this stream.
← tc_in The beginning timecode value.
← tc_out The ending timecode value.
Note:
I_timecode pointers should be destroyed by the API user.

See also:
NewPartialRestoreMxfFileInterface()

17.7.1.6 mxf_tk_API bool UpdateAndFreeMxfFileInterface(I_mxf_le ∗∗


mxf_le) [related, inherited]
Flushes the changes you made to this MXF le (timecode redenition, metadata update) and frees
the I_mxf_le interface. If the le you provide is an OpAtom le that was synchronized, calling
this function will update and free all the associated OpAtom les so that you need to call this
function only once.

Parameters:
← mxf_le An I_mxf_le∗ pointer to the object to be freed.

Returns:
false if the deallocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.7 I_MXF_le 74

17.7.2 Enumeration Type Documentation


17.7.2.1 enum mxf_ag_t

List of possible ags to control the behavior of an MXF le, depending on what it is intended to
do.

See also:
NewMxfFileInterface(), NewMxfStreamInterface()

Enumerator:
FLAG_METADATA_ONLY When this ag is set, only metadata will be available for
reading. This does no allow extraction of media stored in the le.

FLAG_INCOMPLETE_METADATA When this ag is set, only the best closed


header metadata will be searched in the le. The header metadata can be incomplete,
that means all the metadata you get will be valid but some of it might be missing.

FLAG_IGNORE_INDEX_TABLES When this ag is set, index tables are ignored.


This can be useful when attempting to read an MXF le with corrupt index tables.

FLAG_LOAD_INDEX_TABLES_AT_STARTUP When this ag is set, all the


index tables of the MXF le are read when opening the le. This is not recommended.

17.7.2.2 enum mxf_opening_mode

The MXF opening mode is used to optimize the opening of an MXF le depending on what you
want to do with this le.

See also:
mxf_ag_t, NewMxfFileInterface(), NewMxfStreamInterface()

Deprecated

Enumerator:
METADATA_ONLY This mode is the fastest opening mode but you will only get the
rst header metadata found while decoding the le. Depending on the le, this header
metadata may be open and/or incomplete. The metadata you get should be taken with
"caution". You cannot extract media from the le with this mode.

CLOSED_COMPLETE_METADATA This mode returns the best header metadata


found in the le. This process may be longer than CLOSED_METADATA_ONLY but
you are sure to get valid metadata. You cannot extract media from the le with this
mode.

METADATA_AND_LINEAR_PLAYOUT This mode is similar to CLOSED_-


AND_COMPLETE_METADATA_ONLY but also enable extraction of media stored
in the le. This is the preferred mode to open an MXF le.

METADATA_AND_RANDOM_ACCESS In this mode, all the index tables of the


MXF le are read when opening the le. This allows faster random access later on but
it slows down the opening time. For general purposes, prefer METADATA_AND_-
LINEAR_PLAYOUT.
Deprecated

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.7 I_MXF_le 75

17.7.2.3 enum mxf_parameter

The list of the parameter names of the mxf_le.

Enumerator:
KAG_SIZE The KAG size. Its value is an integer giving the size in bytes (default "512").
This can be used to align KLV items on a spacing grid.

HEADER_REPETITION This parameter indicates how often the header metadata


should be repeated (for instance "2" would mean every two partitions. The default value
of 0 will perform a repetition only when the header values change.

INDEX_TABLE This parameter activates or deactivates the index table generation


(when posible). Its value is "True" or "False" (default "False"). Please be aware that
some essences always require an index table (D10 for instance).

PREFERRED_PARTITION_DURATION This parameter sets the desired dura-


tion (in seconds) of each partition. If set to "0.0" there won't be any body partitions.

REVERSE_PLAY This parameter activates the creation of reverse play KLVs. Its value
is "True" or "False".

SYSTEM_ITEM This parameter activates the creation of system items when generating
the MXF le. Its value is "True" or "False" (default "False").

THIS_PARTITION_ONLY If this parameter is set, only the current partition will be


considered when reading the le, all other partitions will be ignored.

HEADER_METADATA_UPDATE If this parameter is set, the header metadata


(even if it is close and complete) will be patched when the MXFTk is writing the footer
partition. It was especially created to prevent inconsistent les when the duration()
method is called by I_essence_stream_task.

Warning:
If the le was dierent from what was earlier expected, the duration in the footer
partition can be inconsistent with the one in the header partition.

PARAMETER_COUNT The total number of parameters.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 76

17.8 P2 OpAtom
Classes
ˆ class I_opatom_assembler
ˆ class I_opatom_le

Enumerations
ˆ enum p2_format {

p2_unknown, p2_480i_60i_dviec, p2_480i_60i_dvcpro25, p2_480i_60i_dvcpro50, p2_-


480i_30p_2_2_pulldown_dviec,

p2_480i_30p_2_2_pulldown_dvcpro25, p2_480i_30p_2_2_pulldown_dvcpro50, p2_-


480i_24p_2_3_pulldown_dviec, p2_480i_24p_2_3_pulldown_dvcpro25, p2_480i_-
24p_2_3_pulldown_dvcpro50,

p2_480i_24p_2_3_3_2_pulldown_dviec, p2_480i_24p_2_3_3_2_pulldown_-
dvcpro25, p2_480i_24p_2_3_3_2_pulldown_dvcpro50, p2_576i_50i_dviec, p2_-
576i_50i_dvcpro25,

p2_576i_50i_dvcpro50, p2_576i_25p_2_2_pulldown_dviec, p2_576i_25p_2_2_-


pulldown_dvcpro25, p2_576i_25p_2_2_pulldown_dvcpro50, p2_720p_60p_dvcpro100,

p2_720p_30p_2_2_pulldown_dvcpro100, p2_720p_24p_2_3_pulldown_dvcpro100,
p2_720p_30p_native_dvcpro100, p2_720p_24p_native_dvcpro100, p2_720p_50p_-
dvcpro100,

p2_720p_25p_2_2_pulldown_dvcpro100, p2_720p_25p_native_dvcpro100, p2_-


1080i_60i_dvcpro100, p2_1080i_30p_2_2_pulldown_dvcpro100, p2_1080i_24p_2_3_-
pulldown_dvcpro100,

p2_1080i_24p_2_3_3_2_pulldown_dvcpro100, p2_1080i_50i_dvcpro100, p2_1080i_-


25p_2_2_pulldown_dvcpro100, p2_720_24p_avcintra50, p2_720_25p_avcintra50,

p2_720_30p_avcintra50, p2_720_50p_avcintra50, p2_720_60p_avcintra50, p2_1080_-


24p_avcintra50, p2_1080_25p_avcintra50,

p2_1080_30p_avcintra50, p2_1080_50i_avcintra50, p2_1080_60i_avcintra50, p2_720_-


24p_avcintra100, p2_720_25p_avcintra100,

p2_720_30p_avcintra100, p2_720_50p_avcintra100, p2_720_60p_avcintra100, p2_-


1080_24p_avcintra100, p2_1080_25p_avcintra100,

p2_1080_30p_avcintra100, p2_1080_50i_avcintra100, p2_1080_60i_avcintra100 }

Functions
ˆ mxf_tk_API bool BuildP2XML (const char ∗path, p2_format format)
ˆ mxf_tk_API bool BuildP2XMLBuer (I_mxf_le ∗le, const char ∗clip_name, size_t
∗buer_size, unsigned char ∗buer, p2_format format)
ˆ mxf_tk_API bool CancelNewP2Shot (uint32_t id)
ˆ mxf_tk_API bool FreeOpAtomAssemblerInterface (I_opatom_assembler ∗∗)
ˆ mxf_tk_API bool FreeOpAtomFileInterface (I_opatom_le ∗∗)
ˆ mxf_tk_API p2_format GetP2Format (const char ∗xml_lename)
ˆ mxf_tk_API bool NewDCPOpAtomFileInterface (I_opatom_le ∗∗, const char ∗)
ˆ mxf_tk_API bool NewDCPOpAtomStreamInterface (I_opatom_le ∗∗, I_output_mxf_-
stream_task ∗)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 77

ˆ mxf_tk_API bool NewOpAtomAssemblerInterface (I_opatom_assembler ∗∗)


ˆ mxf_tk_API bool NewOpAtomFileInterface (I_opatom_le ∗∗, const char ∗)
ˆ mxf_tk_API bool NewOpAtomStreamInterface (I_opatom_le ∗∗, I_output_mxf_-
stream_task ∗)
ˆ mxf_tk_API uint32_t NewP2Shot ∗inputs, const char ∗path, const char
(locators
∗basename, ∗timecode=NULL, I_umid ∗umid=NULL)
p2_format format, I_timecode
ˆ mxf_tk_API uint32_t NewP2ShotFromStream (I_essence_stream_task ∗video, I_-
essence_stream_task ∗audio1, I_essence_stream_task ∗audio2, I_essence_stream_task
∗audio3, I_essence_stream_task ∗audio4, const char ∗path, const char ∗basename, p2_-
format format, I_timecode ∗timecode=NULL, I_umid ∗umid=NULL)
ˆ mxf_tk_API bool P2EndOfStream (uint32_t id, I_essence_stream_task ∗task, unsigned
int stream_id)
ˆ mxf_tk_API bool P2WaitingStream (uint32_t id, I_essence_stream_task ∗&task, un-
signed int &stream_id)
ˆ mxf_tk_API size_t P2WriteStream (uint32_t id, I_essence_stream_task ∗task, unsigned
int stream_id, const uint8_t ∗buer, size_t buer_size)
ˆ mxf_tk_API double ProgressNewP2Shot (uint32_t id)
ˆ mxf_tk_API bool WaitEndNewP2Shot (uint32_t id)

17.8.1 Enumeration Type Documentation


17.8.1.1 enum p2_format

All possible video formats supported by the P2 camcorder.

Enumerator:
p2_unknown Unknown P2 format. Use this when the format is unknown, the toolkit will
try its best to resolve it.

p2_480i_60i_dviec NTSC DV IEC 480/60i


p2_480i_60i_dvcpro25 NTSC DVCPRO25 480/60i
p2_480i_60i_dvcpro50 NTSC DVCPRO50 480/60i
p2_480i_30p_2_2_pulldown_dviec NTSC DV IEC 480/30p, 2:2 pulldown (30 pro-
gressive frames)

p2_480i_30p_2_2_pulldown_dvcpro25 NTSC DVCPRO25 480/30p, 2:2 pulldown


(30 progressive frames)

p2_480i_30p_2_2_pulldown_dvcpro50 NTSC DVCPRO50 480/30p, 2:2 pulldown


(30 progressive frames)

p2_480i_24p_2_3_pulldown_dviec NTSC DV IEC 480/24p, 2:3 pulldown (24p


standard pulldown)

p2_480i_24p_2_3_pulldown_dvcpro25 NTSC DVCPRO25 480/24p, 2:3 pulldown


(24p standard pulldown)

p2_480i_24p_2_3_pulldown_dvcpro50 NTSC DVCPRO50 480/24p, 2:3 pulldown


(24p standard pulldown)

p2_480i_24p_2_3_3_2_pulldown_dviec NTSC DV IEC 480/24p, 2:3:3:2 pull-


down (24p advanced pulldown)

p2_480i_24p_2_3_3_2_pulldown_dvcpro25 NTSC DVCPRO25 480/24p, 2:3:3:2


pulldown (24p advanced pulldown)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 78

p2_480i_24p_2_3_3_2_pulldown_dvcpro50 NTSC DVCPRO50 480/24p, 2:3:3:2


pulldown (24p advanced pulldown)

p2_576i_50i_dviec PAL DV IEC 576/50i


p2_576i_50i_dvcpro25 PAL DVCPRO25 576/50i
p2_576i_50i_dvcpro50 PAL DVCPRO50 576/50i
p2_576i_25p_2_2_pulldown_dviec PAL DV IEC 576/25p, 2:2 pulldown (25 pro-
gressive frames)

p2_576i_25p_2_2_pulldown_dvcpro25 PAL DVCPRO25 576/25p, 2:2 pulldown


(25 progressive frames)

p2_576i_25p_2_2_pulldown_dvcpro50 PAL DVCPRO50 576/25p, 2:2 pulldown


(25 progressive frames)

p2_720p_60p_dvcpro100 DVCPRO100 IEC 720/60p


p2_720p_30p_2_2_pulldown_dvcpro100 DVCPRO100 720/30p, 2:2 pulldown
(frame duplication)

p2_720p_24p_2_3_pulldown_dvcpro100 DVCPRO100 720/24p, 2:3 pulldown (24p


standard pulldown)

p2_720p_30p_native_dvcpro100 DVCPRO100 720/30p, native, half rate (30 frames


recorded per second)

p2_720p_24p_native_dvcpro100 DVCPRO100 720/24p, native (24 frames recorded


per second)

p2_720p_50p_dvcpro100 DVCPRO100 720/50p


p2_720p_25p_2_2_pulldown_dvcpro100 DVCPRO100 720/25p, 2:2 pulldown
(frame duplication)

p2_720p_25p_native_dvcpro100 DVCPRO100 720/25p, native, half rate (25 frames


recorded per second)

p2_1080i_60i_dvcpro100 DVCPRO100 1080/60i


p2_1080i_30p_2_2_pulldown_dvcpro100 DVCPRO100 1080/30p, 2:2 pulldown
(30 progressive frames)

p2_1080i_24p_2_3_pulldown_dvcpro100 DVCPRO100 1080/24p, 2:3 pulldown


(24p standard pulldown)

p2_1080i_24p_2_3_3_2_pulldown_dvcpro100 DVCPRO100 1080/24p, 2:3:3:2


pulldown (24p advanced pulldown)

p2_1080i_50i_dvcpro100 DVCPRO100 1080/50i


p2_1080i_25p_2_2_pulldown_dvcpro100 DVCPRO100 1080/25p, 2:2 pulldown
(25 progressive frames)

p2_720_24p_avcintra50 AVC-Intra 50: 1280x720, 24p


p2_720_25p_avcintra50 AVC-Intra 50: 1280x720, 25p
p2_720_30p_avcintra50 AVC-Intra 50: 1280x720, 30p
p2_720_50p_avcintra50 AVC-Intra 50: 1280x720, 50p
p2_720_60p_avcintra50 AVC-Intra 50: 1280x720, 60p
p2_1080_24p_avcintra50 AVC-Intra 50: 1920x1080, 24p
p2_1080_25p_avcintra50 AVC-Intra 50: 1920x1080, 25p
p2_1080_30p_avcintra50 AVC-Intra 50: 1920x1080, 30p
p2_1080_50i_avcintra50 AVC-Intra 50: 1920x1080, 50i

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 79

p2_1080_60i_avcintra50 AVC-Intra 50: 1920x1080, 59.94i


p2_720_24p_avcintra100 AVC-Intra 100: 1280x720, 24p
p2_720_25p_avcintra100 AVC-Intra 100: 1280x720, 25p
p2_720_30p_avcintra100 AVC-Intra 100: 1280x720, 30p
p2_720_50p_avcintra100 AVC-Intra 100: 1280x720, 50p
p2_720_60p_avcintra100 AVC-Intra 100: 1280x720, 60p
p2_1080_24p_avcintra100 AVC-Intra 100: 1920x1080, 24p
p2_1080_25p_avcintra100 AVC-Intra 100: 1920x1080, 25p
p2_1080_30p_avcintra100 AVC-Intra 100: 1920x1080, 30p
p2_1080_50i_avcintra100 AVC-Intra 100: 1920x1080, 50i
p2_1080_60i_avcintra100 AVC-Intra 100: 1920x1080, 59.94i

17.8.2 Function Documentation


17.8.2.1 mxf_tk_API bool opencube::MXFTK_NAMESPACE::BuildP2XML
(const char ∗ path, p2_format format)

Build the P2 XML clip le from a P2 VIDEO le.

Note:
This P2 XML clip le is stored in the Clip directory. You do not need to call this function if
you already have the XML le. The rst use of this function is to rebuild the XML clip le
after performing a partial restore on a set of P2 les.

Warning:
The P2 le provided should be in the "Contents/Video" directory structure and all its asso-
ciated audio les should be in ntents/Audio as well.

Parameters:
← path This should contain the complete path to this P2 le and it should be in its P2
directory structure (Contents/Video) and all its associated audio les must be in their
directory (Contents/Audio).

← format This parameter should be set to build an XML le corresponding to the P2 format
selected

Returns:
true if the function operated successfully.

See also:
p2_format, BuildP2XMLBuer

17.8.2.2 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::BuildP2XMLBuer (I_mxf_le ∗ le,
const char ∗ clip_name, size_t ∗ buer_size, unsigned char ∗ buer,
p2_format format)

Build the P2 XML clip from the specied le. The P2 XML buer should be ushed in the Clip
directory.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 80

Parameters:
← le The P2 MXF le (already linked to its associated P2 les thanks to opatom_-
assembler)

← clip_name The clip name of the P2 set of le.


→ buer_size The buer size, this value is set to the XML size.
→ buer The buer.
← format This parameter should be set to build an XML le corresponding to the P2 format
selected

Returns:
true if the function operated successfully.

Note:
This function is similar to BuildP2XML however it is convenient when you do not have access
to the on-disk P2 les.

See also:
p2_format, BuildP2XML

17.8.2.3 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::CancelNewP2Shot (uint32_t id)
Cancel the current P2 creation process with the specied id.

Warning:
id You must still call WaitEndNewP2Shot() to terminate correctly the thread.

Parameters:
← id The process ID

17.8.2.4 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeOpAtomAssemblerInterface
(I_opatom_assembler ∗∗)

Frees an I_opatom_assembler interface.

17.8.2.5 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeOpAtomFileInterface (I_opatom_le
∗∗)

Frees an I_opatom_le interface. I_opatom_le∗∗ pointer to the object to be freed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 81

17.8.2.6 mxf_tk_API p2_format opencube::MXFTK_-


NAMESPACE::GetP2Format (const char ∗ xml_lename)

Returns:
the P2 format from an XML le (in the Clip directory)

Parameters:
← xml_lename The lename of the XML le.

17.8.2.7 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewDCPOpAtomFileInterface (I_opatom_le ∗∗, const
char ∗)

Retrieves an I_atom_op1a_le interface. I_atom_le∗∗ pointer to the newly allocated object


const char∗ path to the mxf le to be written. DCP is a constraint to OpAtom. You won't be
able to change the parameters of the le. Call to ush() will eectively cause the on-disk writing
of the le(s). If several les are written then their umid will be included to the lename.

17.8.2.8 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewDCPOpAtomStreamInterface
(I_opatom_le ∗∗, I_output_mxf_stream_task ∗)

Retrieves an I_opatom_le interface whose ush will be performed in streaming mode. I_-
opatom_le∗∗ pointer to the newly allocated object DCP is a constraint to OpAtom. You won't be
able to change the parameters of the le. The streaming interface you provide SHALL implement
the interfaces in order to seek in the output MXF stream. const char∗ path to the mxf le to be
written. Call to ush() will eectively cause the on-disk writing of the le(s).

17.8.2.9 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewOpAtomAssemblerInterface
(I_opatom_assembler ∗∗)

Retrieves an I_opatom_assembler interface

17.8.2.10 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewOpAtomFileInterface (I_opatom_le
∗∗, const char ∗)

Retrieves an I_atom_op1a_le interface. I_atom_le∗∗ pointer to the newly allocated object


const char∗ path to the mxf le to be written. Call to ush() will eectively cause the on-disk
writing of the le(s). If several les are written then their umid will be included to the lename

17.8.2.11 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewOpAtomStreamInterface (I_opatom_le ∗∗,
I_output_mxf_stream_task ∗)

Retrieves an I_opatom_le interface whose ush will be performed in streaming mode. I_-
opatom_le∗∗ pointer to the newly allocated object const char∗ path to the mxf le to be written.
Call to ush() will eectively cause the on-disk writing of the le(s).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 82

17.8.2.12 mxf_tk_API uint32_t opencube::MXFTK_NAMESPACE::NewP2Shot


(locators ∗ inputs, const char ∗ path, const char ∗ basename, p2_format
format, I_timecode ∗ timecode = NULL, I_umid ∗ umid = NULL)
Fill a P2 "Contents" directory with MXF P2 les similar to the ones the P2 Camcorder would
produce.

Parameters:
← inputs The list of input les to be MXF wrapped (the rst le must be the video (DVCPro,
AVC-Intra), followed by 2 or 4 AES les).

← path The complete path toward the output "Contents" directory


← basename The basename for this shot (that will be used name the MXF les). It should
be EXACTLY 6 characters long (+  not counted)

← format The P2 format


← timecode The start timecode of the sequence. This is optional.
← umid The umid of the generic material. This is optional, pass NULL to generate a default
value.

Returns:
A unique identier associated with this shot. This value can be used as parameter to WaitEnd-
NewP2Shot(), CancelNewP2Shot() and ProgressNewP2Shot(). It is zero when this function
failed.

Warning:
You should call WaitEndNewP2Shot() after calling this function to make sure the process is
completed.

17.8.2.13 mxf_tk_API uint32_t opencube::MXFTK_-


NAMESPACE::NewP2ShotFromStream (I_essence_stream_task ∗
video, I_essence_stream_task ∗ audio1, I_essence_stream_task ∗
audio2, I_essence_stream_task ∗ audio3, I_essence_stream_task ∗
audio4, const char ∗ path, const char ∗ basename, p2_format format,
I_timecode ∗ timecode = NULL, I_umid ∗ umid = NULL)

This function lets you ll a P2 "Contents" directory with MXF P2 les similar to the ones the
P2 Camcorder would produce. The rst ve parameters are the streaming interface you should
derive to provide an implementation to control your input streaming device. It should handle
video stream (DVCPro, AVC-Intra) and 2 or 4 AES streams. If only 2 AES streams are being
manipulated then the fourth and fth I_essence_stream_task∗ should be set to NULL.

Parameters:
← video The video stream (DVCPro, AVC-Intra).
← audio1 AES audio stream #1.
← audio2 AES audio stream #2.
← audio3 AES audio stream #3.
← audio4 AES audio stream #4.
← path The complete path toward the output "Contents" directory

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 83

← basename The basename for this shot (that will be used name the MXF les). It should
be EXACTLY 6 characters long (+  not counted)

← format The P2 format


← timecode The start timecode of the sequence. This is optional.
← umid The umid of the generic material. This is optional, pass NULL to generate a default
value.

Returns:
A unique identier associated with this shot. This value can be used as parameter to Wai-
tEndNewP2Shot, CancelNewP2Shot and ProgressNewP2Shot. It is zero when this function
failed.

Note:
In ACTIVE MODE, use P2WaitingStream(), P2WriteStream() and P2EndOfStream() to nd
out which task is expected to be writing next.

Warning:
You should call WaitEndNewP2Shot() after calling this function to make sure the process is
completed.

17.8.2.14 mxf_tk_API bool opencube::MXFTK_NAMESPACE::P2EndOfStream


(uint32_t id, I_essence_stream_task ∗ task, unsigned int stream_id)

This function must be called once all the essence data of the stream has been written for the P2
creation process with the specied id.

Warning:
This function is only called in ACTIVE mode.

Parameters:
← id The process ID
← task The task of the stream being written to. This is the task returned by
P2WaitingStream(). Pass NULL to terminate all all stream tasks.

← stream_id The id of the stream being written to. This is the stream id returned by
P2WaitingStream().

17.8.2.15 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::P2WaitingStream (uint32_t id,
I_essence_stream_task ∗& task, unsigned int & stream_id)
Indicate whether a stream is waiting for data in ACTIVE BLOCKING mode for the P2 creation
process with the specied id. Do not use this function in ACTIVE NON BLOCKING mode.

Parameters:
← id The process ID
← task The task of the waiting stream if it exists.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.8 P2 OpAtom 84

→ stream_id The id of the waiting stream if it exists.

See also:
I_mxf_le::waiting_stream

17.8.2.16 mxf_tk_API size_t opencube::MXFTK_-


NAMESPACE::P2WriteStream (uint32_t id,
I_essence_stream_task ∗ task, unsigned int stream_id, const uint8_t
∗ buer, size_t buer_size)

Write the essence data out in ACTIVE mode for the P2 creation process with the specied id.

Parameters:
← id The process ID.
← task The task of the stream being written to.
← stream_id The id of the stream being written to. This is the stream id returned by
P2WaitingStream().

← buer The essence data to write out.


← buer_size The size of the buer to write out.

Returns:
The number of bytes actually written.

17.8.2.17 mxf_tk_API double opencube::MXFTK_-


NAMESPACE::ProgressNewP2Shot (uint32_t
id)
Return progress of the current P2 creation process with the specied id.

Parameters:
← id The process ID

Returns:
a value ranging from 0.0 to 1.0 when successful, a negative value when the progress could not
be computed

17.8.2.18 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::WaitEndNewP2Shot (uint32_t
id)
Wait for the end of the current P2 creation process with the specied id.

Parameters:
← id The process ID

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.9 Material 85

17.9 Material
Classes
ˆ class I_dm_segment
ˆ class I_dm_source_clip
ˆ class I_source_clip

Functions
ˆ mxf_tk_API I_dm_segment ∗ dm_segment_cast (I_track_item ∗)
ˆ mxf_tk_API I_dm_source_clip ∗ dm_source_clip_cast (I_track_item ∗)
ˆ mxf_tk_API I_source_clip ∗ source_clip_cast (I_track_item ∗)

17.9.1 Detailed Description


According to the MXF terminology, a track can be dened as an ordered list of objects containing
audiovisual data, editing information or descriptive metadata. The indivisible segment of data
from an I_track interface is an I_track_item. This pure virtual class has three possible deriva-
tions, each of them specifying the properties of the track at a given time. Depending on the track's
type, dierent constructions of I_track_item are allowed:

ˆ On a timeline track (picture, sound, data), only editing information is allowed. Still, a
dierence remains if the track is found in an I_generic_material or in an I_concrete_-
material. In a concrete material the binary data stream is stored, while in a generic material
the concrete materials' tracks are referenced and assembled all together to build an edition.
Editions are represented by a combination of track items. As a result, a timeline track shall
only contain I_source_clip objects. They are adjacent to each other in order to build a
fully time-linear track representing a video, sound or data play out. I_source_clip may not
overlap and for the entire duration of the track, one and only one I_source_clip should be
active at a given edit unit.

ˆ On a metadata timeline track (timeline_metadata) only metadata or metadata editing are


allowed. Consequently, this kind of I_track shall only contain I_dm_source_clip or I_-
dm_segment. Once again, the same positioning constraints remain: I_dm_source_clip or
I_dm_segment may not overlap and for the entire duration of the track, one and only one
of them should be active at a given edit unit.

ˆ On an event_metadata track, only metadata describing events occurring as the le is played
is allowed. Consequently, this kind of track shall only contain I_dm_segment. Furthermore,
positioning constraints disappear, these "segments" may overlap and "slices" of the track
may remain empty.

ˆ On a static_metadata track, only metadata applying to the entire duration of the linked
essence tracks is allowed. Consequently, this kind of track shall only contain I_dm_segment.
Additionally, these "segments" do not carry time constraints.

MXFTk user does not require a strong knowledge of these properties. The API ensures the
consistency of each material and track. However, the user is responsible for the choice of the
appropriate track to be created when adding metadata. Therefore, it is recommended to keep in
mind the dierences between timeline_metadata, event_metadata and static_metadata tracks.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.9 Material 86

The I_track_item class and its three possible derivations are described hereafter. The type of an
I_track_item instance can be determined by performing a dynamic cast thanks to the following
functions (for stability reasons, no direct calls to dynamic_cast shall be performed on MXFTk
interfaces). Failure to do so would systematically lead to MXFTk's data structures corruption.

17.9.2 Function Documentation


17.9.2.1 mxf_tk_API I_dm_segment∗ opencube::MXFTK_NAMESPACE::dm_-
segment_cast (I_track_item ∗)

Cast a track item into a descriptive metadata segment.

Returns:
NULL when trying to cast in the wrong type.

Warning:
Do not use dynamic_cast on a track_item pointer in your code! Failure to do so may result
in crash.

17.9.2.2 mxf_tk_API I_dm_source_clip∗ opencube::MXFTK_-


NAMESPACE::dm_source_clip_cast (I_track_item
∗)

Cast a track item into a descriptive metadata clip.

Returns:
NULL when trying to cast in the wrong type.

Warning:
Do not use dynamic_cast on a track_item pointer in your code! Failure to do so may result
in crash.

17.9.2.3 mxf_tk_API I_source_clip∗ opencube::MXFTK_-


NAMESPACE::source_clip_cast (I_track_item ∗)

Cast a track item into a source clip.

Returns:
NULL when trying to cast in the wrong type.

Warning:
Do not use dynamic_cast on a track_item pointer in your code! Failure to do so may result
in crash.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 87

17.10 MXFTk API conguration


Classes
ˆ class concrete_list
ˆ class crypted_locator_element
ˆ class crypted_locators
ˆ class error_list
ˆ class generic_list
ˆ class locators
ˆ class metadata_list
ˆ class mxf_le_list
ˆ class ordered_timecode_list
ˆ class ordered_track_item_list
ˆ class properties_list
ˆ class rational
ˆ class track_list

Denes
ˆ mxf_tk_API bool FreeRationalInterface(rational ∗∗)
ˆ mxf_tk_API bool NewRationalInterface(rational ∗∗r, uint32_t numerator, uint32_t de-
nominator)

Enumerations
ˆ enum mxftk_option_ag { MXFTK_NO_OPTION = 0x0000, MXFTK_OPTION_AVID
= 0x0001, MXFTK_OPTION_AVID_AMT = 0x0002 }

Functions
ˆ mxf_tk_API bool CloseMXF_TK (void)
ˆ mxf_tk_API void ExtractAes8ToWave (bool)
ˆ mxf_tk_API void ExtractAesToWave (bool)
ˆ mxf_tk_API void ExtractCustomByKLV (bool)
ˆ mxf_tk_API void ForceRF64 (bool)
ˆ mxf_tk_API void FreeCharArray (char ∗∗array, uint8_t size)
ˆ mxf_tk_API bool FreeCryptedLocatorElementInterface (crypted_locator_element
∗∗element)
ˆ mxf_tk_API bool FreeCryptedLocatorInterface (crypted_locators ∗∗locator)
ˆ mxf_tk_API bool FreeLocatorInterface (locators ∗∗location_list)
ˆ mxf_tk_API bool FreeMxfFileListInterface (mxf_le_list ∗∗le_list)
ˆ mxf_tk_API bool FreeTrackListInterface (track_list ∗∗tracks)
ˆ mxf_tk_API bool GetEmptyCryptedLocatorInterface (crypted_locators ∗∗locator)
ˆ mxf_tk_API bool GetEmptyLocatorInterface (locators ∗∗location_list)
ˆ mxf_tk_API bool GetEmptyMxfFileListInterface (mxf_le_list ∗∗le_list)
ˆ mxf_tk_API bool GetEmptyTrackListInterface (track_list ∗∗tracks)
ˆ mxf_tk_API uint32_t GetOptions ()
ˆ mxf_tk_API const char ∗ GetVersion (void)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 88

ˆ mxf_tk_API bool InitMXF_TK (void)


ˆ mxf_tk_API bool InitMXF_TK2 (const char ∗path)
ˆ mxf_tk_API bool NewCryptedLocatorElementInterface (crypted_locator_element
∗∗element, const char ∗path, const uint64_t oset, const uint8_t ∗public_key, const
uint8_t ∗cipher_key)
ˆ mxf_tk_API bool SetBuersSize (uint32_t)
ˆ mxf_tk_API bool SetDictionary (const char ∗path)
ˆ mxf_tk_API void WrapWaveAsAes (bool)
ˆ mxf_tk_API void WrapWaveAsAes8 (bool)

17.10.1 Dene Documentation


17.10.1.1 mxf_tk_API bool FreeRationalInterface(rational ∗∗) [related,
inherited]

Frees the specied rational.

Returns:
false is the deallocation failed.

17.10.1.2 mxf_tk_API bool NewRationalInterface(rational ∗∗ r, uint32_t


numerator, uint32_t denominator) [related, inherited]
Returns an interface on a rational

Parameters:
→ r A rational ∗ pointer to the allocated object.
← numerator Denes the numerator value.
← denominator Denes the denominator value.

Returns:
false is the allocation failed.

17.10.2 Enumeration Type Documentation


17.10.2.1 enum mxftk_option_ag

List of all possible MFTk option ags. This is used for Avid OP Atom management.

See also:
GetOptions

Enumerator:
MXFTK_NO_OPTION If this ag is set, there is no support of Avid OpAtom.
MXFTK_OPTION_AVID If this ag is set, Avid OpAtom is supported using the
default OpenCube implementation.

MXFTK_OPTION_AVID_AMT If this ag is set, Avid OpAtom is supported using


the AMT implementation.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 89

17.10.3 Function Documentation


17.10.3.1 mxf_tk_API bool opencube::MXFTK_NAMESPACE::CloseMXF_TK
(void)

Close MXF_TK after any process. This function must be the last one to be called after us-
ing MXF_TK interfaces. Each call to this method must match a call to InitMXF_TK() or
to InitMXF_TK2(). Only the last call matching call will actually have an eect and unitialize
MXFTk.

Returns:
true is the function succeeded.

17.10.3.2 mxf_tk_API void opencube::MXFTK_-


NAMESPACE::ExtractAes8ToWave (bool)

Denes the MXFTk behavior for 8-channel AES3 audio tracks. When set to true, the 8-channel
AES (D10) sources embedded in an MXF le will be extracted as 8-channel WAVE. Default value
is false.

17.10.3.3 mxf_tk_API void opencube::MXFTK_-


NAMESPACE::ExtractAesToWave (bool)

Denes the MXFTk behavior for AES3 audio tracks. When set to true, the AES3 (mono or stereo)
sources embedded in an MXF le will be extracted as WAVE. Default value is false.

17.10.3.4 mxf_tk_API void opencube::MXFTK_-


NAMESPACE::ExtractCustomByKLV (bool)

Use this function to set the essence extraction behavior when performing MXF unwrapping of
custom wrapped MXF les (i.e. XDCam proxy). When set to false (default) the essence is
extracted edit unit by edit unit. When set to true, the extraction is performed KLV by KLV and
each KLV will contain several edit units. The KLV mode is likely to improve performances.

17.10.3.5 mxf_tk_API void opencube::MXFTK_NAMESPACE::ForceRF64


(bool)

Denes the MXFTk behavior for WAVE audio tracks. When set to true, the WAVE (mono or
stereo) sources embedded in an MXF le will be extracted as RF64 WAVE les. Default value is
false.

17.10.3.6 mxf_tk_API void opencube::MXFTK_NAMESPACE::FreeCharArray


(char ∗∗ array, uint8_t size)

Use this function to delete a char array allocated by the MXFTk

Parameters:
← array The array to delete.
← size The size of the array to delete.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 90

17.10.3.7 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeCryptedLocatorElementInterface
(crypted_locator_element ∗∗ element)

Frees an interface on a crypted_locator_element

Parameters:
↔ element The crypted_locator_element to release.

Returns:
false if the deallocation failed.

17.10.3.8 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeCryptedLocatorInterface (crypted_locators ∗∗
locator)
Frees an interface on a locators list

Parameters:
↔ locator The locator list to release.

Returns:
false if the deallocation failed.

17.10.3.9 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeLocatorInterface (locators ∗∗
location_list)
Frees an interface on a locators list

Parameters:
↔ location_list The allocated location list to free.

Returns:
false is the deallocation failed.

17.10.3.10 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeMxfFileListInterface (mxf_le_list
∗∗ le_list)

Frees an interface on a track_list

Parameters:
↔ le_list An I_mxf_le_list ∗ pointer to the empty list.

Returns:
false is the deallocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 91

17.10.3.11 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::FreeTrackListInterface (track_list ∗∗
tracks)
Frees an interface on a track_list

Parameters:
↔ tracks A track_list ∗ point to the track_list to free.

Returns:
false is the deallocation failed.

17.10.3.12 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::GetEmptyCryptedLocatorInterface
(crypted_locators ∗∗ locator)

Retrieves an empty list of crypted locators. Locators of crypted elements can be added to this list
using the function crypted_locators::add().

Parameters:
→ locator The empty locator list allocated.

Returns:
false if the allocation failed.

17.10.3.13 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::GetEmptyLocatorInterface (locators ∗∗
location_list)
Returns an interface on an empty locators list

Parameters:
→ location_list The allocated location list.

Returns:
false is the allocation failed.

17.10.3.14 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::GetEmptyMxfFileListInterface
(mxf_le_list ∗∗ le_list)

Returns an interface on an empty track_list

Parameters:
→ le_list An I_mxf_le_list ∗ pointer to the empty list.

Returns:
false is the allocation failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 92

17.10.3.15 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::GetEmptyTrackListInterface (track_list
∗∗ tracks)

Returns an interface on an empty track_list

Parameters:
→ tracks A track_list ∗ point to the allocated track_list.

Returns:
false is the allocation failed.

17.10.3.16 mxf_tk_API uint32_t opencube::MXFTK_-


NAMESPACE::GetOptions ()

Retrieve the current support modes for Avid OP Atom les

Returns:
This is OR's combination of mxftk_option_ag ags.

17.10.3.17 mxf_tk_API const char∗ opencube::MXFTK_-


NAMESPACE::GetVersion (void)

This function gives MXFTk version number (eg : 2.3.0.20100414).

Returns:
a string containing the version number. The returned value is owned by MXFTk and shall
not be deleted.

17.10.3.18 mxf_tk_API bool opencube::MXFTK_NAMESPACE::InitMXF_TK


(void)

This function initializes the API MXFTk. Any binary making use of the library should always
call it rst of all. It prepares the API to be ready to perform future tasks. This function will
also validate your license key and the environment variable MXF_HOME should be correctly set
before calling this function. Refer to the Installation Procedure section for more information.

Warning:
This function should ALWAYS be the rst one to be called before using MXF_TK interfaces.
Failure to do so will cause erratic results.

Note:
This method may be called several times. Successive calls have no eect and will succeed.
Each calls to this function must be match by a call to CloseMXF_TK().

Returns:
true is the function succeeded.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 93

17.10.3.19 mxf_tk_API bool opencube::MXFTK_NAMESPACE::InitMXF_TK2


(const char ∗ path)

Initializes MXF_TK before any process.

See also:
InitMXF_TK()

Note:
This method may be called several times. Successive calls have no eect and will succeed.
Each calls to this function must be match by a call to CloseMXF_TK().

Parameters:
← path The complete path toward the directory containing the MXFTk library.

Returns:
true is the function succeeded.

17.10.3.20 mxf_tk_API bool opencube::MXFTK_-


NAMESPACE::NewCryptedLocatorElementInterface
(crypted_locator_element ∗∗ element, const char ∗ path, const
uint64_t oset, const uint8_t ∗ public_key, const uint8_t ∗
cipher_key)
Returns an interface on a crypted_locator_element location denes essence les location
cryptographic_key_id is the embedded identier which let decoder retrieve cipher_key from a
key management module (SMPTE423M).

Parameters:
→ element The allocated crypted_locator_element.
← path The complete path toward the le to be wrapped.
← oset The plain-text oset.
← public_key The public cryptographic key
← cipher_key The private cipher key to be used for the encryption of this source le

Returns:
false if the allocation failed.

Note:
cipher_key is the key used to crypt data, this key is not stored in mxf le. Lengths of both
cryptographic_key_id and cipher_key are 16 bytes.

17.10.3.21 mxf_tk_API bool opencube::MXFTK_NAMESPACE::SetBuersSize


(uint32_t)

Set internal buers size. Call this function to override the default settings and reduce/increase
memory usage.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


17.10 MXFTk API conguration 94

Returns:
true is the function succeeded.

17.10.3.22 mxf_tk_API bool opencube::MXFTK_NAMESPACE::SetDictionary


(const char ∗ path)

This function species a new metadata dictionary (XML scheme) to be used in the following calls
of the API. The default dictionary is set upon calling of InitMXF_TK() or InitMXF_TK2() so
you will need to call this function only if you wish to make use of an alternate scheme.

Parameters:
← path The complete path to the XML dictionary.

Returns:
true is the function succeeded.

17.10.3.23 mxf_tk_API void opencube::MXFTK_-


NAMESPACE::WrapWaveAsAes (bool)

Denes the MXFTk behavior for WAVE audio tracks. When set to true, the WAVE (mono or
stereo) sources embedded in an MXF le will be wrapped as AES audio data. Default value is
false.

17.10.3.24 mxf_tk_API void opencube::MXFTK_-


NAMESPACE::WrapWaveAsAes8 (bool)

Denes the MXFTk behavior for WAVE audio tracks. When set to true, the WAVE (up to
8 channels) sources embedded in an MXF le will be wrapped as 8-channel AES audio data.
Default value is false.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


Chapter 18

Class Documentation

18.1 concrete_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_concrete_material ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.1.1 Detailed Description


Class for managing list of I_concrete_material

18.1.2 Member Function Documentation


18.1.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.1.2.2 virtual I_concrete_material∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_concrete_material ∗ pointer to the element.

18.1.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_concrete_material in the list.


18.1 concrete_list Class Reference 96

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.2 crypted_locator_element Class Reference 97

18.2 crypted_locator_element Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual uint8_t ∗ get_cipher_key () const =0
ˆ virtual uint8_t ∗ get_cryptographic_key_id () const =0
ˆ virtual const char ∗ get_location () const =0
ˆ virtual uint64_t get_plaintext_oset () const =0

18.2.1 Detailed Description


This class lets you specify the location of the source le to be wrapped and crypted in an MXF
le. It also provides interfaces to set encryption keys. Note that when you want to wrap in a
single track a series af image you should call the function add() only once with the appropriate
syntax (please refer to I_concrete_material documentation)

18.2.2 Member Function Documentation


18.2.2.1 virtual uint8_t∗ get_cipher_key () const [pure virtual]

Return the private cipher key (16 bytes array).

18.2.2.2 virtual uint8_t∗ get_cryptographic_key_id () const [pure virtual]

Return the public cryptographic key as a 16 bytes array (UUID).

18.2.2.3 virtual const char∗ get_location () const [pure virtual]

Return the path towards the le to be wrapped.

18.2.2.4 virtual uint64_t get_plaintext_oset () const [pure virtual]

Return the plain text oset. The frames wrapped within an MXF le are not necessarily entirely
crypted. The beginning of the frame might remain not crypted and the end crypted. The plaintext
oset (measured in bytes) corresponds to the start of the crypted data within a frame.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.3 crypted_locators Class Reference 98

18.3 crypted_locators Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void add (crypted_locator_element ∗∗)=0

18.3.1 Detailed Description


This class lets you build a list of source les (that will be crypted in the MXF le) used upon
creation of a new I_concrete_material.

18.3.2 Member Function Documentation


18.3.2.1 virtual void add (crypted_locator_element ∗∗) [pure virtual]

Add a the specied crypted locator element to the list.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.4 error_list Class Reference 99

18.4 error_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_mxf_error ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.4.1 Detailed Description


Class for managing a list of I_mxf_error

18.4.2 Member Function Documentation


18.4.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.4.2.2 virtual I_mxf_error∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_mxf_error ∗ pointer to the element.

18.4.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_mxf_error in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.5 generic_list Class Reference 100

18.5 generic_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_generic_material ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.5.1 Detailed Description


Class for managing list of I_generic_material

18.5.2 Member Function Documentation


18.5.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list

18.5.2.2 virtual I_generic_material∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_generic_material ∗ pointer to the element.

18.5.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_generic_material in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.6 I_avid_opatom_le Class Reference 101

18.6 I_avid_opatom_le Class Reference


Inheritance diagram for I_avid_opatom_le:

I_mxf_file

I_opatom_file

I_avid_opatom_file

Collaboration diagram for I_avid_opatom_le:

I_mxf_file

I_opatom_file

I_avid_opatom_file

18.6.1 Detailed Description


An interface to create an avid le. This class should be used in order to create OpAtom les
compatible with the native format of Avid products (Assist, NewsCutter, etc). avid les are les
having the same structure than those created by AVID (MXF OpAtom)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.7 I_concrete_material Class Reference 102

18.7 I_concrete_material Class Reference


Inheritance diagram for I_concrete_material:

I_generic_material

I_concrete_material

Collaboration diagram for I_concrete_material:

I_generic_material

I_concrete_material

Public Member Functions


ˆ virtual int64_t compute_duration ()=0
ˆ virtual bool end_of_stream (unsigned int id)=0
ˆ virtual I_system_item ∗ get_system_item ()=0
ˆ virtual wrapping get_wrapping () const =0
ˆ virtual bool load_essence ()=0
ˆ virtual void set_system_item (I_system_item ∗item)=0
ˆ virtual size_t write (unsigned int id, const uint8_t ∗buer, size_t buer_size)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeConcreteMaterialInterface(I_concrete_material ∗∗i_mat)


ˆ mxf_tk_API bool NewConcreteMaterialInterface(I_concrete_material ∗∗material, loca-
tors ∗locators, wrapping wrapping_mode=std_wrapping, rational ∗edit_rate=NULL, bool
ignore_audio_from_dv=false)
ˆ mxf_tk_API bool NewCryptedMaterialInterface(I_concrete_material ∗∗material,
crypted_locators ∗locators, wrapping wrapping_mode=frame_wrapping, rational ∗edit_-
rate=NULL, bool ignore_audio_from_dv=false)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.7 I_concrete_material Class Reference 103

ˆ mxf_tk_API bool NewExtConcreteMaterialInterface(I_concrete_material ∗∗material,


const char ∗path, rational ∗edit_rate=NULL, bool ignore_audio_from_dv=false, int64_t
∗duration=NULL)
ˆ mxf_tk_API bool NewStreamMaterialInterface(I_concrete_material ∗∗material, I_-
essence_stream_task ∗task, wrapping wrapping_mode=std_wrapping, rational ∗edit_-
rate=NULL, bool ignore_audio_from_dv=false)

18.7.1 Detailed Description


This class contains the audiovisual data embedded in an MXF le. I_generic_material's tracks
describe an editing of one or several I_concrete_material's tracks in order to build the le play
out. In mxf terms: Top Level Source Package.

See also:
The Concrete Material section for more details.

18.7.2 Member Function Documentation


18.7.2.1 virtual int64_t compute_duration () [pure virtual]

Computes the duration of this concrete material. After calling this function, the tracks will have
a correct duration. You can use this function when wrapping MXF les and when you need to
know the duration before ushing the MXF le.

Note:
Use this function if you need to know the duration of your material before attaching it to
an MXF le. It will force the computation of the duration of the tracks from this material.
However, be aware that this task may be time-consuming. This function must be called before
attaching the material to an instance of I_mxf_le. This function will be inactive when the
input is a stream or while reading MXF les.

Returns:
the computed duration.

18.7.2.2 virtual bool end_of_stream (unsigned int id) [pure virtual]

Warning:
This function will operate in streaming mode only!

States that an audiovisual data stream is now closed. This function will be operative only if this
material was created using NewStreamMaterialInterface(). After end_of_stream(), future calls
to the write() function on this stream will not operate. Calls to this function should be performed
only within the function I_essence_stream_task::data_request() to notify to MXFTk that no
more data is to be received from the stream.

Parameters:
← id The unique identier of the current stream, also parameter of the function I_essence_-
stream_task::data_request().

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.7 I_concrete_material Class Reference 104

Note:
This function must be called once all the essence data of the stream has been written.

Returns:
true if successful.

18.7.2.3 virtual I_system_item∗ get_system_item () [pure virtual]

Returns the system item currently used by this concrete material

Note:
This works for MXF le reading and writing.

18.7.2.4 virtual wrapping get_wrapping () const [pure virtual]

Gets the wrapping of the current material.

18.7.2.5 virtual bool load_essence () [pure virtual]

Make sure the essence for this material is loaded. The essence is only loaded once, implicitly,
usually when rst accessed. This function needs to be called only once.

Returns:
true is successful, false otherwise.

18.7.2.6 virtual void set_system_item (I_system_item ∗ item) [pure virtual]

Call this function to attach a system item to the current concrete material. This function is only
available when creating an MXF le. The system item will be deleted upon deletion of the concrete
material interface.

Parameters:
← item A system item pointer to attach

Warning:
It will be used only if the parameter "SYSTEM_ITEM" from the mxf le is set to "True".
The system item will be freed upon deletion of the concrete material.

18.7.2.7 virtual size_t write (unsigned int id, const uint8_t ∗ buer, size_t
buer_size) [pure virtual]
Warning:
This function will operate in streaming mode only!

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.7 I_concrete_material Class Reference 105

This function will be operative only if this material was created using NewStreamMaterialInter-
face(). Calls to this function should be performed only within the function I_essence_stream_-
task::data_request. Supplies the current material with a buer originating from an audiovisual
data stream.

Appends content of the buffer to the current concrete material.

Parameters:
← id A unique identier of the current stream, also parameter of the function I_essence_-
stream_task::data_request()

← buer The data buer.


← buer_size The buer size in bytes.

Returns:
the amount of data that could be eectively written. Failure to write all the data usually
means that the internal buer is full and that you are writing faster than MXFTk can read
during a ush operation. Another reason can be that you try to write more than the actual
size of the buer. Concrete material was created using NewStreamMaterialInterface()!

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.8 I_concrete_track Class Reference 106

18.8 I_concrete_track Class Reference


Inheritance diagram for I_concrete_track:

I_track

I_concrete_track

Collaboration diagram for I_concrete_track:

I_track

I_concrete_track

Public Member Functions


ˆ virtual uint64_t current_eu_size ()=0
ˆ virtual const char ∗ essence_name ()=0
ˆ virtual const char ∗ le_extension ()=0
ˆ virtual bool free_descriptors (metadata_list ∗)=0
ˆ virtual const uint8_t ∗ get_cryptographic_key_id ()=0
ˆ virtual int64_t get_current_eu ()=0
ˆ virtual uint64_t get_current_oset ()=0
ˆ virtual metadata_list ∗ get_descriptors () const =0
ˆ virtual I_essence_type ∗ get_essence_type ()=0
ˆ virtual const char ∗ get_locator () const =0
ˆ virtual bool locate_edit_unit (int64_t eu, uint64_t &klv_position, uint64_t &oset_in_-
klv, uint64_t &size)=0
ˆ virtual size_t read_eu (uint8_t ∗buer, size_t buer_size)=0
ˆ virtual bool seek_eu (int64_t edit_unit)=0
ˆ virtual bool seek_next_eu ()=0
ˆ virtual bool seek_previous_eu ()=0
ˆ virtual bool seek_timecode (const I_timecode ∗)=0
ˆ virtual void set_cipher_key (const uint8_t ∗)=0
ˆ virtual void set_external_ref_le (const char ∗)=0
ˆ virtual bool still_images ()=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.8 I_concrete_track Class Reference 107

18.8.1 Detailed Description


This class represents the track of an I_concrete_material. It contains the "physical" audiovisual
data and supplies methods to access its content. This class directly accesses the audiovisual data
of the le. When reading the output of an MXF le, this class should not be used; instead
prefer the classes I_source_clip of the tracks from the generic material which holds all the editing
information. Concrete tracks can be retrieved thanks to a call to source_tracks() from the inherited
class I_generic_material. Items from the returned list can be directly cast into I_concrete_track
(do not use dynamic_cast, this would cause crashes).

18.8.2 Member Function Documentation


18.8.2.1 virtual uint64_t current_eu_size () [pure virtual]

Returns the size in bytes of the current edit unit. This function can be used to set the size of the
buer passed to the function read_eu().

Returns:
0 if all the data for this edit unit has been read or if an error occurred.

18.8.2.2 virtual const char∗ essence_name () [pure virtual]

Return a meaningful name to represent this track essence. This returns NULL when no meaninful
name can be given.

18.8.2.3 virtual const char∗ le_extension () [pure virtual]

Return the le extension most commonly associated with this track essence. This returns NULL
when no le extension can be given.

18.8.2.4 virtual bool free_descriptors (metadata_list ∗) [pure virtual]

Free the specied descriptors list returned by get_descriptors()

Returns:
true if successful, false otherwise.

18.8.2.5 virtual const uint8_t∗ get_cryptographic_key_id () [pure virtual]

Call this function to know if the concrete track is protected by an key. This will notably be the
case when manipulating les following the standard of the Digital Cinema Initiative.

Returns:
the 16-byte long public key protecting the track, otherwise return NULL if the track's content
is not encrypted.

Note:
You need to provide the corresponding cipher key in order to be able to read the content of
this track.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.8 I_concrete_track Class Reference 108

18.8.2.6 virtual int64_t get_current_eu () [pure virtual]

Returns the current edit unit relative to the origin of the track. The real position within the
embedded audiovisual data is actually the sum of the track's origin with this edit unit. For
instance on a video track, if the origin is 5 and the current edit unit 10, when calling read_eu(),
the 15th frame will be read. The legal edit units range is [-track_origin, track_origin+track_-
duration-1].

Returns:
INT64_ERROR if an error occurred.

18.8.2.7 virtual uint64_t get_current_oset () [pure virtual]

Returns the current oset in bytes from the beginning of the le.

Returns:
UINT64_ERROR if an error occurred.

18.8.2.8 virtual metadata_list∗ get_descriptors () const [pure virtual]

Retrieves a list of I_metadata describing the nature and the properties of the track's content.
Usually the list will contain a single item. These properties are specic to each essence type
and can be checked with the MXF File Format glossary [377M]. The descriptors grant access to
properties such as the size or the aspect ratio of images from a video track. Some of the information
found in the descriptors will be redundant with the one provided by get_essence_type().

Returns:
the descriptors of the essence stream of this track. Returns NULL if not found or if an error
occurred. Returned I_metadata interface shouldn't be destroyed by MXF_TK user.

18.8.2.9 virtual I_essence_type∗ get_essence_type () [pure virtual]

Retrieves an I_essence_type interface describing the type of essence embedded in this concrete
track. MXFTk user can use this function to gure out if the track contains DV, MPEG, D10, etc.
data. When possible it also states if it is a NTSC or PAL source.

Returns:
a structure helping to identify the concrete track's content. The returned pointer must not
be deleted.

18.8.2.10 virtual const char∗ get_locator () const [pure virtual]

Returns a string identifying the original source (the path to the le used to build this track) of the
track's content. This function is only useful when building concrete material from several source
les. The call to this function lets you know which of these les the current track embeds.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.8 I_concrete_track Class Reference 109

Returns:
the locator of the essence stream of this track. The returned pointer must not be deleted.
Returns NULL if an error occurred.

18.8.2.11 virtual bool locate_edit_unit (int64_t eu, uint64_t & klv_position,


uint64_t & oset_in_klv, uint64_t & size) [pure virtual]

Locate the specied edit unit in the MXF le.

Parameters:
eu The edit unit to locate.
klv_position If the edit unit is valid, the position of the KLV that contains it in the MXF
le.

oset_in_klv If the edit unit is valid, its oset within the KLV. This is meaningful for
clip-wrapped le. For frame-wrapped le, this is zero.

size The size of the edit unit. This is zero when the size is not known yet. This is generally
the case in frame wrapping: the size is known when the edit unit is read.

Returns:
true if the specied edit unit is a valid edit unit, false otherwise.

18.8.2.12 virtual size_t read_eu (uint8_t ∗ buer, size_t buer_size) [pure


virtual]

Fills a buer with the binary audiovisual data contained in this track at the current edit unit.
This function will ll the buer only when reading an MXF le (not while creating one)!

Parameters:
← buer The buer into which the edit unit data will be written.
← buer_size The size of the buer provided
Returns:
How many bytes were eectively read from the track. The current edit unit can be entirely
read through successive calls to this function until it returns a nil value.

18.8.2.13 virtual bool seek_eu (int64_t edit_unit) [pure virtual]

Seeks the track content in an absolute way, jumping to a given edit unit.

Parameters:
edit_unit the position along the track. This value will be added to the origin of this track.
Therefore a track with an origin = 5 and a duration = 25 can be accessed with a position
ranging from -5 to 20.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.8 I_concrete_track Class Reference 110

18.8.2.14 virtual bool seek_next_eu () [pure virtual]

Puts the reading pointer of the track on the next edit unit.

Returns:
true if successful, false otherwise.

18.8.2.15 virtual bool seek_previous_eu () [pure virtual]

Puts the reading pointer of the track on the previous edit unit.

Returns:
true if successful, false otherwise.

18.8.2.16 virtual bool seek_timecode (const I_timecode ∗) [pure virtual]

Puts the reading pointer of the track on the specied timecode value. Timecode information
can be retrieved from the I_timecode_material of the I_concrete_material containing this I_-
concrete_track.

Note:
We recommend usage of timecode for playout synchronization of dierent tracks.

Returns:
true if successful, false otherwise.

18.8.2.17 virtual void set_cipher_key (const uint8_t ∗) [pure virtual]

Call this function to set the private 16-byte long cipher key corresponding to the public crypto-
graphic key protecting this track. If the key is correct, you will now be able to read the content
of this track.

Note:
This function has no eect on decrypted track

18.8.2.18 virtual void set_external_ref_le (const char ∗) [pure virtual]

Sets the path to the external reference for this concrete track. Call this function to load the
referenced le when reading an MXF le with external references.

18.8.2.19 virtual bool still_images () [pure virtual]

Indicate whether the track concatenates still images, e.g. JPEG2000 or VC-3 (image format vs.
video format).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.9 I_crypted_essence_stream_task Class Reference 111

18.9 I_crypted_essence_stream_task Class Reference


Inheritance diagram for I_crypted_essence_stream_task:

I_essence_stream_task

I_crypted_essence_stream_task

Collaboration diagram for I_crypted_essence_stream_task:

I_generic_material

I_concrete_material

_conc_mat

I_essence_stream_task

I_crypted_essence_stream_task

Public Member Functions


ˆ virtual bool do_crypt (unsigned int stream_id)=0
ˆ virtual const uint8_t ∗ get_cipher_key (unsigned int stream_id)=0
ˆ virtual const uint8_t ∗ get_cryptographic_key_id (unsigned int stream_id)=0
ˆ virtual uint32_t get_plaintext_oset (unsigned int stream_id)

18.9.1 Detailed Description


This class should be used when the audiovisual data used to build an I_concrete_material is
originating from a streaming device (for instance when receiving the stream of a video tape and

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.9 I_crypted_essence_stream_task Class Reference 112

wrapping it on-the-y in an MXF le) and should be crypted. MXFTk user is entitled to derive
this class in order to provide an implementation for his streaming device.

18.9.2 Member Function Documentation


18.9.2.1 virtual bool do_crypt (unsigned int stream_id) [pure virtual]

Indicate whether the stream with the specied identier must be encrypted or not.

Parameters:
← stream_id The stream identier.

18.9.2.2 virtual const uint8_t∗ get_cipher_key (unsigned int stream_id) [pure


virtual]

Returns the cipher key. The cipher key is used to crypt data but is not stored in the MXF le.
Decoding is possible by giving the same cipher to the decoder. Cipher key is retrieved from the
cryptographic key id and is provided by the key manager.

Parameters:
← stream_id The stream identier.

18.9.2.3 virtual const uint8_t∗ get_cryptographic_key_id (unsigned int


stream_id) [pure virtual]
Returns the cryptographic key id for the stream with the specied identier. This value is stored
in the MXF le and is used by mxf decoder to retrieve cipher key. An external key manager gives
the cipher key corresponding to a cryptographic key id.

Parameters:
← stream_id The stream identier.

18.9.2.4 virtual uint32_t get_plaintext_oset (unsigned int stream_id) [virtual]

Returns the plaintext oset for the stream with the specied identier. This is the oset of the
crypted data within a frame.

Parameters:
← stream_id The stream identier.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.10 I_dcp1_le Class Reference 113

18.10 I_dcp1_le Class Reference


Inheritance diagram for I_dcp1_le:

I_mxf_file

I_opatom_file

I_dcp1_file

Collaboration diagram for I_dcp1_le:

I_mxf_file

I_opatom_file

I_dcp1_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeDcp1FileInterface(I_dcp1_le∗∗)


ˆ mxf_tk_API bool NewDcp1FileInterface(I_dcp1_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewDcp1StreamInterface(I_dcp1_le ∗∗, I_output_mxf_stream_task
∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.10 I_dcp1_le Class Reference 114

18.10.1 Detailed Description


This class should be used in order to create OpAtom Digital Cinema Package MXF les compatible
with Doremi and Dolby D-Cinema servers.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.11 I_dm_segment Class Reference 115

18.11 I_dm_segment Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_track_item.

Public Member Functions


ˆ virtual track_list ∗ get_documented_tracks () const =0
ˆ virtual int64_t get_duration () const =0
ˆ virtual I_timecode ∗ get_end_timecode () const =0
ˆ virtual I_metadata_material ∗ get_metadata_material () const =0
ˆ virtual I_timecode ∗ get_start_timecode () const =0

18.11.1 Detailed Description


This class holds descriptive metadata. Each I_dm_segment references an I_metadata_material
as well as a list of tracks documented by this material. Please, refer to the I_metadata_material
class reference for further information on how to create and extract metadata.

18.11.2 Member Function Documentation


18.11.2.1 virtual track_list∗ get_documented_tracks () const [pure virtual]

Returns a list of picture, sound or data tracks from the material containing the current metadata
track. Metadata from this I_dm_source_clip documents the tracks from this list.

18.11.2.2 virtual int64_t get_duration () const [pure virtual]

Retrieves the duration of this I_dm_segment (measured in edit units of the track containing this
metadata segment). The sum of the duration of each metadata source clip and metadata segment
denes the total duration of the track. An edit unit is the time unit for the current track. Please
refer to [377M] for further information. The edit rate is the number of edit units per second.
Note that the track containing this metadata source clip may have an edit rate dierent from the
referenced track.

Returns:
-1 if the duration if unknown.

18.11.2.3 virtual I_timecode∗ get_end_timecode () const [pure virtual]

Returns the timecode corresponding to the last edit unit of this metadata segment. This is a
timecode relative to the track containing this metadata segment.

Returns:
NULL if this timecode could not be retrieved.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.11 I_dm_segment Class Reference 116

18.11.2.4 virtual I_metadata_material∗ get_metadata_material () const [pure


virtual]

Returns the I_metadata_material containing the descriptive metadata tree and the time posi-
tioning information for this I_dm_segment.

18.11.2.5 virtual I_timecode∗ get_start_timecode () const [pure virtual]

Returns the timecode corresponding to the rst edit unit of this metadata segment. This is a
timecode relative to the track containing this metadata segment.

Returns:
NULL if this timecode could not be retrieved.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.12 I_dm_source_clip Class Reference 117

18.12 I_dm_source_clip Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_track_item.

Public Member Functions


ˆ virtual track_list ∗ get_documented_tracks () const =0
ˆ virtual int64_t get_duration () const =0
ˆ virtual int64_t get_end_position () const =0
ˆ virtual I_timecode ∗ get_end_timecode () const =0
ˆ virtual I_generic_material ∗ get_referenced_material () const =0
ˆ virtual const I_umid ∗ get_referenced_material_umid () const =0
ˆ virtual I_track ∗ get_referenced_track () const =0
ˆ virtual int64_t get_start_position () const =0
ˆ virtual I_timecode ∗ get_start_timecode () const =0

18.12.1 Detailed Description


This class holds editing information for descriptive metadata to be found on timeline_metadata
tracks. It references metadata contained in other materials. Within an MXF le, metadata tracks
from an I_generic_material (MXF terminology: material package) can reference tracks from
an I_concrete_material (MXF terminology: top-level source package) or even from a low-level
source package. The current version of MXFTk does not allow addition of I_dm_source_clip to
a metadata track. However, they will be recognized if found while decoding a le.

18.12.2 Member Function Documentation


18.12.2.1 virtual track_list∗ get_documented_tracks () const [pure virtual]

Returns a list of picture, sound or data tracks from the material containing the current metadata
track. Metadata from this I_dm_source_clip documents the tracks from this list.

18.12.2.2 virtual int64_t get_duration () const [pure virtual]

Retrieves the duration of this I_dm_source_clip (measured in edit units of the track containing
this dm source clip). The sum of the duration of each metadata source clip and metadata segment
denes the total duration of the track. An edit unit is the time unit for the current track. Please
refer to [377M] for further information. The edit rate is the number of edit units per second.
Note that the track containing this metadata source clip may have an edit rate dierent from the
referenced track. Returns -1 if the duration if unknown.

Warning:
If the track containing this source clip has an edit rate dierent from the edit rate of the
referenced track; then start_position + duration != end_position.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.12 I_dm_source_clip Class Reference 118

18.12.2.3 virtual int64_t get_end_position () const [pure virtual]

Returns the oset of the last edit unit to be read on the referenced track. The oset is relative to
the origin of the referenced track.

Returns:
INT64_ERROR if this information could not be retrieved.

18.12.2.4 virtual I_timecode∗ get_end_timecode () const [pure virtual]

Returns the timecode corresponding to the last edit unit of this metadata source clip. This is a
timecode relative to the track containing this metadata source clip (not relative to the referenced
track).

Returns:
NULL if this timecode could not be retrieved.

18.12.2.5 virtual I_generic_material∗ get_referenced_material () const [pure


virtual]

Returns a pointer (reference) to the material containing the I_track referenced by get_-
referenced_track().

Returns:
NULL if no material is being referenced or if the material is not in the le. The returned
material can be cast into an I_generic_material if this source clip is in an I_generic_material.

18.12.2.6 virtual const I_umid∗ get_referenced_material_umid () const [pure


virtual]

Returns the Unique Material Identier of the referenced material. This function is particularly
useful when get_referenced_track() returns NULL. If the UMID is not nil, it generally means that
the referenced material is stored in another MXF le (this can notably be the case when reading
OpAtom les). Retrieving the UMID of the missing material may help to locate it a database
environment.

18.12.2.7 virtual I_track∗ get_referenced_track () const [pure virtual]

Returns a pointer (reference) to the material containing the I_track referenced by get_-
referenced_track().

Returns:
NULL if no material is being referenced or if the material is not in the le. The returned
material can be cast into an I_generic_material if this source clip is in an I_generic_material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.12 I_dm_source_clip Class Reference 119

18.12.2.8 virtual int64_t get_start_position () const [pure virtual]

Returns the oset of the rst edit unit to be read on the referenced track. The oset is relative
to the origin of the referenced track.

Returns:
INT64_ERROR if this information could not be retrieved.

18.12.2.9 virtual I_timecode∗ get_start_timecode () const [pure virtual]

Returns the timecode corresponding to the rst edit unit of this metadata source clip. This is a
timecode relative to the track containing this metadata source clip (not relative to the referenced
track).

Returns:
NULL if this timecode could not be retrieved.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 120

18.13 I_essence_stream_task Class Reference


Inheritance diagram for I_essence_stream_task:

I_essence_stream_task

I_crypted_essence_stream_task

Collaboration diagram for I_essence_stream_task:

I_generic_material

I_concrete_material

_conc_mat

I_essence_stream_task

Public Member Functions


ˆ virtual size_t data_request (unsigned int stream_id, uint8_t ∗buer, size_t buer_size)=0
ˆ virtual int64_t duration (unsigned int stream_id)
ˆ virtual bool get_active_blocking_mode (unsigned int stream_id)
ˆ virtual void get_audio_mxf_le_descriptor (unsigned int stream_id, I_mxf_le_-
descriptor ∗&descriptor)
ˆ virtual size_t get_buer_size (unsigned int stream_id)=0
ˆ I_concrete_material ∗ get_concrete_material ()
ˆ virtual void get_data_mxf_le_descriptor (unsigned int stream_id, I_mxf_le_-
descriptor ∗&descriptor)
ˆ virtual void get_mpeg_es_info (unsigned int stream_id, unsigned int sub_mpeg_es_id,
essence_source &source, bool &is_video)
ˆ virtual bool get_passive_mode ()=0
ˆ virtual void get_stream_info (unsigned int stream_id, essence_source &source, bool &is_-
video, unsigned int &nb_mpeg_essences)
ˆ virtual unsigned int get_total_number_of_streams ()=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 121

ˆ virtual void get_video_mxf_le_descriptor (unsigned int stream_id, I_mxf_le_-


descriptor ∗&descriptor)
ˆ I_essence_stream_task ()
ˆ void set_concrete_material (I_concrete_material ∗conc_mat)
ˆ virtual uint64_t stream_size (unsigned int stream_id)
ˆ virtual ∼I_essence_stream_task ()

18.13.1 Detailed Description


This class should be used when the audiovisual data used to build an I_concrete_material is
originating from a streaming device (for instance when receiving the stream of a video tape and
wrapping it on-the-y in an MXF le). MXFTk user is entitled to derive this class in order to
provide an implementation for the streaming device.

18.13.2 Constructor & Destructor Documentation


18.13.2.1 I_essence_stream_task ()

Constructor

18.13.2.2 virtual ∼I_essence_stream_task () [virtual]

Destructor.

18.13.3 Member Function Documentation


18.13.3.1 virtual size_t data_request (unsigned int stream_id, uint8_t ∗ buer,
size_t buer_size) [pure virtual]

This function is called whenever MXFTk requests data from the stream.

Note:
THIS FUNCTION WILL BE CALLED ONLY IF PASSIVE MODE IS SELECTED.

Parameters:
← stream_id The stream identier (comprised between 0 and get_total_number_of_-
streams() -1 ). It is used to keep a reference on the stream during successive calls
to data_request().

← buer The buer where the data sent to MXFTk should be written.
← buer_size How many bytes are required (and hence ideally this is also the size of the
buer passed.

Returns:
How many bytes have been written in the buer. Return 0 when no more data is to be
received.

Note:
Users of previous MXFTk versions should be careful as it is no longer required to call the
I_concrete_material::write() function to feed MXFTk. This function will be called regularly

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 122

upon ushing of the MXF le to notify the user that the ushing process is in wait of data
from the streaming device. A correct implementation should stop the current process using
a mutex as long as the requested data is not available from the stream. Once ready, the data
should be written in the buer provided.

18.13.3.2 virtual int64_t duration (unsigned int stream_id) [virtual]

Set the duration of the stream with the specied identier. Return -1 if it cannot be determined.

Parameters:
← stream_id The stream identier.

18.13.3.3 virtual bool get_active_blocking_mode (unsigned int stream_id)


[virtual]

This function is called before launching the streaming process. Return true if you choose to perform
the streaming task for the specied track in the blocking mode. This mode will be eective only
if you also set the active streaming mode thanks to the function get_passive_mode().

ˆ BLOCKING MODE: MXFTk performs no copy of the buer sent by the user. User should
call I_concrete_material::write() in order to feed MXFTk with data. It will return from
the function only once the data has been entirely written. Because there is no buering, the
data must be sent in the exact way it will be wrapped. This means the buers should be
sent frame by frame, one after the other in the order they will be wrapped. The user may
use the function I_mxf_le::waiting_stream() in order to have a guideline to gure out the
order in which it should send the data.

ˆ BUFFERING MODE: The data sent to MXFTk is immediately copied and buerized for
later processing. This mode is more convenient to use for the user has it does not need to
care about the order and size of buers he sends to MXFTk. However it may be less ecient
as it requires extra copies of buer.

18.13.3.4 virtual void get_audio_mxf_le_descriptor (unsigned int stream_id,


I_mxf_le_descriptor ∗& descriptor) [virtual]

This function is called before launching the streaming process. The user may use this function
in order to build the audio essence descriptor corresponding to the stream id provided. Most of
the time, you will not need to implement this function as MXFTk is capable to build descriptors
by analyzing the content of the data you will send. However when wrapping essences from which
descriptors cannot be constructed directly from the essence content (Uncompressed raw les, PCM
data without header, etc) user will need to build the descriptors

Parameters:
← stream_id The stream identier.
← descriptor The audio descriptor for the specied stream.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 123

18.13.3.5 virtual size_t get_buer_size (unsigned int stream_id) [pure virtual]

This function is called before launching the streaming process. It gives the opportunity to set the
size of MXFTk's internal buer used to store the data received from the stream. You may dene
a dierent size for each stream id. Depending on your system, changing the buer's size may help
to improve your performances. It is always better to increase the size of the buers in order to
handle throughput variations. This function will be called only once for each stream id, the size
cannot be changed during the streaming process.

Parameters:
← stream_id The stream identier.

Returns:
The size (in bytes) of the buer that MxfTk will use to handle read and write operations on
the stream.

Note:
For performance reason, it is better to set a buer size at least as big as the biggest buer
you will provide during the streaming process.

18.13.3.6 I_concrete_material∗ get_concrete_material ()

Returns the associated I_concrete_material∗.

Warning:
do not reimplement!

18.13.3.7 virtual void get_data_mxf_le_descriptor (unsigned int stream_id,


I_mxf_le_descriptor ∗& descriptor) [virtual]

This function is called before launching the streaming process. The user may use this function
in order to build the data essence descriptor corresponding to the stream id provided. Most of
the time, you will not need to implement this function as MXFTk is capable to build descriptors
by analyzing the content of the data you will send. However when wrapping essences from which
descriptors cannot be constructed directly from the essence content (Uncompressed raw les, PCM
data without header, etc) user will need to build the descriptors

Parameters:
← stream_id The stream identier.
← descriptor The data descriptor for the specied stream.

18.13.3.8 virtual void get_mpeg_es_info (unsigned int stream_id, unsigned


int sub_mpeg_es_id, essence_source & source, bool & is_video)
[virtual]

You must implement this function if one of the input streams is an MPEG Program Stream or
Transport Stream.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 124

Parameters:
← stream_id Identies the stream.
← sub_mpeg_es_id Identies the "elementary streams" from the MPEG PS or TS. Its
value ranges from 0 to the number of sub-streams set in get_stream_info. There is no
relation between this id and the id of the MPEG ES stored in the MPEG stream.

← source The type of the essence for the specied stream. It can only be ess_mpeg_es or
ess_aes3.

→ is_video Indicate if the corresponding sub-stream is a video stream (true) or an audio


stream (false).

Note:
This function must be implemented if you implemented get_stream_info and some of the
streams include an MPEG Transport Stream or MPEG Program Stream.

18.13.3.9 virtual bool get_passive_mode () [pure virtual]

This function is called before launching the streaming process.

ˆ PASSIVE MODE: MXFTk calls the function data_request() whenever it requires some data.
You must provide an implementation of the function data_request() in that case and you
should call I_concrete_material::write() only within this function. MXFTk controls the
wrapping and you may send data only when it noties you to do so.

ˆ ACTIVE MODE: You can send data to MXFTk whenever you want still using the function
I_concrete_material::write(). You do not need to implement the function data_request()
in that case and you must send the data after calling I_mxf_le::ush().

Returns:
true if you choose to perform the streaming task in passive mode or false if you choose active
mode.

18.13.3.10 virtual void get_stream_info (unsigned int stream_id, essence_source


& source, bool & is_video, unsigned int & nb_mpeg_essences)
[virtual]

You must implement this function. For performance reasons, MXFTk needs you to specify the
nature of the stream you will send. This function lets you do so.

Parameters:
← stream_id The stream identier.
← source The type of the essence for the specied stream (DV, MPEG, etc... refer to I_-
essence_type for a complete list of possible types).

→ is_video Indicates whether this is a video or an audio stream. However in the case of a
DV stream it is used to know if the audio from the DV should appear as a track in the
MXF le. If set to true, the audio from the DV will be ignored.

→ nb_mpeg_essences Only used when the input stream is a MPEG Program or Transport
Stream. It is used to indicate how many MPEG Elementary Streams they embed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.13 I_essence_stream_task Class Reference 125

18.13.3.11 virtual unsigned int get_total_number_of_streams () [pure virtual]

This function is called before launching the streaming process. It is used to set the total number
of streams that will be embedded on the I_concrete_material being created (just as several les
may be required to build a concrete material).

18.13.3.12 virtual void get_video_mxf_le_descriptor (unsigned int stream_id,


I_mxf_le_descriptor ∗& descriptor) [virtual]

This function is called before launching the streaming process. The user may use this function
in order to build the video essence descriptor corresponding to the stream id provided. Most of
the time, you will not need to implement this function as MXFTk is capable to build descriptors
by analyzing the content of the data you will send. However when wrapping essences from which
descriptors cannot be constructed directly from the essence content (Uncompressed raw les, PCM
data without header, etc) user will need to build the descriptors to create a valid MXF le.

Parameters:
← stream_id The stream identier.
← descriptor The video descriptor for the specied stream.

18.13.3.13 void set_concrete_material (I_concrete_material ∗ conc_mat)


Sets the concrete material.

Warning:
do not reimplement!

18.13.3.14 virtual uint64_t stream_size (unsigned int stream_id) [virtual]

Set the total size in bytes of the stream with the specied identier that will be wrapped. Return
0 if it cannot be determined.

Parameters:
← stream_id The stream identier.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.14 I_essence_type Class Reference 126

18.14 I_essence_type Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual rational ∗ aspect_ratio () const =0
ˆ virtual uint32_t bit_rate () const =0
ˆ virtual uint32_t component_depth () const =0
ˆ virtual uint32_t display_height () const =0
ˆ virtual uint32_t display_width () const =0
ˆ virtual electro_spatial_form electro_spatial_formulation () const =0
ˆ virtual locators ∗ external_references (bool &url) const =0
ˆ virtual layout frame_layout () const =0
ˆ virtual essence_format get_format () const =0
ˆ virtual essence_source get_type () const =0
ˆ virtual uint32_t nb_channels () const =0
ˆ virtual uint32_t quantization () const =0
ˆ virtual sample_structure sampling () const =0
ˆ virtual rational ∗ sampling_rate () const =0
ˆ virtual uint32_t stored_height () const =0
ˆ virtual uint32_t stored_width () const =0
ˆ virtual bool update_external_references (locators ∗, bool url)=0

18.14.1 Detailed Description


This class provides information on the content of a concrete track such as the video or sound
format. It should be used to nd out which decoder is required for playing the audiovisual data
(essence) embedded on a track. Please refer to SMPTE 377M for further information on the values
returned by this class.

See also:
essence_source.

18.14.2 Member Function Documentation


18.14.2.1 virtual rational∗ aspect_ratio () const [pure virtual]

Returns the aspect ratio of this essence if this information can be retrieved (e.g. 16/9 or 4/3).

Returns:
NULL if the aspect ratio is not dened for this kind of essence or if this information could
not be retrieved. The returned pointer should not be deleted.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.14 I_essence_type Class Reference 127

18.14.2.2 virtual uint32_t bit_rate () const [pure virtual]

Returns the bit rate per second in Mbps.

Returns:
0 if the bit rate is not dened for this kind of essence or if this information could not be
retrieved.

18.14.2.3 virtual uint32_t component_depth () const [pure virtual]

Returns the component depth (e.g. 8, 10 or 16) if applicable (video track).

Returns:
0 if not applicable.

18.14.2.4 virtual uint32_t display_height () const [pure virtual]

Returns the display height in pixels (video track).

Returns:
0 if the width is not dened for this kind of essence or if this information could not be retrieved.

18.14.2.5 virtual uint32_t display_width () const [pure virtual]

Returns the display width in pixels (video track).

Returns:
0 if the width is not dened for this kind of essence or if this information could not be retrieved.

18.14.2.6 virtual electro_spatial_form electro_spatial_formulation () const [pure


virtual]

Returns the electro spatial formulation if applicable (audio track). Please refer to SMPTE 377M
for further information.

18.14.2.7 virtual locators∗ external_references (bool & url) const [pure virtual]

Returns the list of external references for the concrete track referenced by this essence type ob-
ject.

Parameters:
→ url Indicate whether the returned locators are URLs or not (just textual information).

Returns:
locators if essence is externally referenced. The returned pointer should not be freed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.14 I_essence_type Class Reference 128

18.14.2.8 virtual layout frame_layout () const [pure virtual]

Returns the frame layout (interlaced, progressive, etc.) if applicable (video track). Please refer to
SMPTE 377M for further information.

18.14.2.9 virtual essence_format get_format () const [pure virtual]

Returns the essence format when this data can be retrieved. PAL, NTSC, interlaced, etc.

18.14.2.10 virtual essence_source get_type () const [pure virtual]

Returns the essence type. MPEG, DV, AES, BWF, etc.

18.14.2.11 virtual uint32_t nb_channels () const [pure virtual]

Returns the number of channels (audio track).

18.14.2.12 virtual uint32_t quantization () const [pure virtual]

Returns the quantization in bits per sample (audio track).

18.14.2.13 virtual sample_structure sampling () const [pure virtual]

Return video sample structure (if applicable)

18.14.2.14 virtual rational∗ sampling_rate () const [pure virtual]

Returns the sampling rate of this essence if this information can be retrieved (audio track).

Returns:
NULL if the sampling rate is not dened for this kind of essence or if this information could
not be retrieved. Returned pointer should not be deleted.

18.14.2.15 virtual uint32_t stored_height () const [pure virtual]

Returns the stored height in pixels (video track).

Returns:
0 if the width is not dened for this kind of essence or if this information could not be retrieved.

18.14.2.16 virtual uint32_t stored_width () const [pure virtual]

Returns the stored width in pixels (video track).

Returns:
0 if the width is not dened for this kind of essence or if this information could not be retrieved.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.14 I_essence_type Class Reference 129

18.14.2.17 virtual bool update_external_references (locators ∗, bool url) [pure


virtual]

Sets the new location of the externally referenced les. This function is particularly useful for
updating a le when doing a partial restore of an MXF le with external references or when
updating an MXF le with external references that moved.

Parameters:
← url Indicate if the locators are URLs or just textual information.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.15 I_evtr_le Class Reference 130

18.15 I_evtr_le Class Reference


Inheritance diagram for I_evtr_le:

I_mxf_file

I_op1a_file

I_evtr_file

Collaboration diagram for I_evtr_le:

I_mxf_file

I_op1a_file

I_evtr_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeEvtrFileInterface(I_evtr_le ∗∗)


ˆ mxf_tk_API bool NewEvtrFileInterface(I_evtr_le ∗∗, const char ∗lename)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.15 I_evtr_le Class Reference 131

ˆ mxf_tk_API bool NewEvtrStreamInterface(I_evtr_le ∗∗, I_output_mxf_stream_task


∗task)

18.15.1 Detailed Description


This class should be used in order to create Op1a MXF le matching the properties of those
generated by SONY eVTR recording device. It is mandatory to provide IMX video and 8-channel
AES audio input to the concrete material in order to generate MXF les compatible with SONY
eVTR. If 8-channel AES audio is not available, it is also possible to provide WAVE audio and turn
on the WrapWaveAsAES8() function.

18.15.2 Friends And Related Function Documentation


18.15.2.1 mxf_tk_API bool FreeEvtrFileInterface(I_evtr_le ∗∗) [related]

Frees the specied I_evtr_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.15.2.2 mxf_tk_API bool NewEvtrFileInterface(I_evtr_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_evtr_le interface.

Note:
The concrete material that will be added to the evtr le should have been wrapped using the
evtr wrapping mode.

Parameters:
lename The complete path toward the MXF le to be written upon calling ush().

Returns:
true if the allocation succeeded, false otherwise.

18.15.2.3 mxf_tk_API bool NewEvtrStreamInterface(I_evtr_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_evtr_le interface. This function must be called when writing an
eVTR le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Note:
The concrete material that will be added to the evtr le should have been wrapped using the
evtr wrapping mode.

Parameters:
← task This is a class derived by MXFTk user to provide its own implementation to feed
the streaming device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.15 I_evtr_le Class Reference 132

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.16 I_generic_material Class Reference 133

18.16 I_generic_material Class Reference


Inheritance diagram for I_generic_material:

I_generic_material

I_concrete_material I_metadata_material I_timecode_material

Public Member Functions


ˆ virtual bool delete_metadata_track (I_track ∗)=0
ˆ virtual bool free_tracks (track_list ∗)=0
ˆ virtual const wchar_t ∗ get_material_name (size_t &name_size) const =0
ˆ virtual I_timecode_material ∗ get_timecode () const =0
ˆ virtual I_umid ∗ get_umid ()=0
ˆ virtual track_list ∗ metadata_tracks ()=0
ˆ virtual I_track ∗ new_metadata_track (track_type type, int64_t origin, rational ∗edit_-
rate)=0
ˆ virtual I_track ∗ new_stream_metadata_track (I_input_metadata_stream_task ∗task,
track_type type, int64_t origin, rational ∗edit_rate)=0
ˆ virtual bool set_material_name (const wchar_t ∗name, size_t name_size)=0
ˆ virtual bool set_timecode (I_timecode_material ∗)=0
ˆ virtual bool set_umid (const I_umid ∗)=0
ˆ virtual track_list ∗ source_tracks ()=0
ˆ virtual const char ∗ type () const =0

18.16.1 Detailed Description


In mxf terms: Material Package. This class describes an edition of the embedded material. There-
fore, such a material is the play out of the mxf_le. It contains references to audiovisual sources
but does not contain essence data or tools to access to the binary data. Generic materials have
a UMID (SMPTE Unique Material Identier, see [330M]). MXFTk user can set its value after
creating the material or leave the default one automatically set by the API.

See also:
The Material section for more details.

18.16.2 Member Function Documentation


18.16.2.1 virtual bool delete_metadata_track (I_track ∗) [pure virtual]

Deletes a metadata track and all its associated metadata trees.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.16 I_generic_material Class Reference 134

18.16.2.2 virtual bool free_tracks (track_list ∗) [pure virtual]

Frees the list returned by metadata_tracks() or source_tracks().

Returns:
true if successful, false otherwise.

18.16.2.3 virtual const wchar_t∗ get_material_name (size_t & name_size) const


[pure virtual]

Gets the Unicode UTF16 name of the current material.

Parameters:
→ name_size The length of the returned wide string (in bytes).

Returns:
The name as a Unicode UTF16 string. The returned buer must not de deleted. Return
NULL if the material is unnamed.

Note:
On the Linux platform, the size of a wchar_t is 4 bytes. Hence, only 2 bytes of the wchar_t
are eectively used when reading UTF16 strings.

18.16.2.4 virtual I_timecode_material∗ get_timecode () const [pure virtual]

Retrieves an I_timecode_material interface dening the play out timecode of this material.

Returns:
NULL if an error occured. The returned pointer must not be deleted.

18.16.2.5 virtual I_umid∗ get_umid () [pure virtual]

Gets the value of the Unique Material IDentier uniquely identifying the current material. The
purpose of this UMID is explained in the I_umid class reference.

Returns:
The UMID. The returned pointer must be deleted using the function FreeUmidInterface().
Returns NULL if an error occured.

18.16.2.6 virtual track_list∗ metadata_tracks () [pure virtual]

Gets the list of descriptive metadata tracks from this material. Each track can be a timeline_-
metadata, an event_metadata or a static_metadata track. Returned tracks can be edited but
must not be destroyed. The list can be freed at any time using free_tracks(). The tracks may be
edited. Returns NULL if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.16 I_generic_material Class Reference 135

18.16.2.7 virtual I_track∗ new_metadata_track (track_type type, int64_t


origin, rational ∗ edit_rate) [pure virtual]
Creates a new metadata track to be lled with I_metadata_material.

Parameters:
type The type of this track, e.g. timeline_metadata, an event_metadata or a static_-
metadata

origin The origin of the track measured in edit units.


edit_rate The edit rate (number of edit units in a second - the edit unit frequency). This
value can be destroyed right after calling this function.

Returns:
NULL if an error occurred. The returned track will be destroyed upon deletion of the material.

18.16.2.8 virtual I_track∗ new_stream_metadata_track (I_input_metadata_-


stream_task ∗ task, track_type type, int64_t origin, rational ∗
edit_rate) [pure virtual]
Creates a new metadata track to be lled with I_metadata_material. This function can be used
when you need to record metadata on-the-y while creating an MXF le (the metadata you want
to write is sent from a streaming device).

Parameters:
task A class derived by MXFTk user to provide its own implementation to feed MXFTk with
metadata as it is received from the streaming device.

type The type of this track, e.g. timeline_metadata, an event_metadata or a static_-


metadata

origin The origin of the track measured in edit units.


edit_rate The edit rate (number of edit units in a second - the edit unit frequency). This
value can be destroyed right after calling this function.

Returns:
NULL if an error occurred. The returned track will be destroyed upon deletion of the material.

18.16.2.9 virtual bool set_material_name (const wchar_t ∗ name, size_t


name_size) [pure virtual]
Sets the name of this material.

Parameters:
← name The string in Unicode UTF16. This pointer can be destroyed after calling this
function.

← name_size The string's length in bytes.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.16 I_generic_material Class Reference 136

18.16.2.10 virtual bool set_timecode (I_timecode_material ∗) [pure virtual]

Sets a new timecode material. The previous one (if any) will be automatically destroyed. Within
an I_generic_material, the timecode material must dene a continuous timecode (in other words
there should not be several timecode redenitions within the timecode material) as the output of
an MXF le is meant to be linear. Nonetheless, the timecode material of an I_concrete_material
can be discontinuous. The new I_timecode_material will be freed upon destruction of the current
material.

Returns:
true if successful, false otherwise.

18.16.2.11 virtual bool set_umid (const I_umid ∗) [pure virtual]

Sets a new Unique Material IDentier for the current material. Older one will be automatically
destroyed. A copy of the UMID is performed upon calling of this function so that the user remains
responsible for the deletion of the I_umid pointer using FreeUmidInterface().

Returns:
true if successful, false otherwise.

18.16.2.12 virtual track_list∗ source_tracks () [pure virtual]

Returns a list of tracks representing the audiovisual content. Within an I_generic_material these
tracks dene the le play out. In an I_concrete_material, the I_track should be directly cast into
I_concrete_track∗. Hence, these tracks will hold the embedded audiovisual binary data. Items
of the list must not be destroyed. The list can be freed at any time using free_tracks().

Returns:
NULL if an error occured.

18.16.2.13 virtual const char∗ type () const [pure virtual]

Returns a string categorizing the current material ("Generic Material", "Concrete Material",
"Metadata Material" or "Timecode Material").

Returns:
NULL if an error occured. The returned pointer must not be destroyed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.17 I_input_metadata_stream_task Class Reference 137

18.17 I_input_metadata_stream_task Class Reference


Public Member Functions
ˆ ∗material,
virtual void update (I_generic_material I_track ∗track, int64_t position)=0
ˆ virtual ∼I_input_metadata_stream_task ()

18.17.1 Detailed Description


This class should be used when the descriptive metadata to be embedded on an MXF le is
originating from a streaming device. MXFTk user is entitled to derive this class in order to
provide an implementation for the corresponding streaming device.

18.17.2 Constructor & Destructor Documentation


18.17.2.1 virtual ∼I_input_metadata_stream_task () [virtual]

Destructor.

18.17.3 Member Function Documentation


18.17.3.1 virtual void update (I_generic_material ∗ material, I_track ∗ track,
int64_t position) [pure virtual]

This function is called by MXFTk whenever some descriptive metadata can be written in the MXF
le being created. It is called when a new partition is created. Therefore, it is mandatory to un-
derstand that the "key" parameters to use eciently this function are HEADER_REPETITION
and PREFERRED_PARTITION_DURATION that can be set thanks to the function I_mxf_-
le:set_parameter(). The larger the partition size, the less often this function update() will be
called. On the contrary, the smaller the partition size, the more often the user will have the oppor-
tunity to update the le. However, increasing the number of partitions in your le may severely
impact the overall performances.

Parameters:
← material The material to be updated.
← track The track to be updated.
← position The current position (in edit units) of this descriptive metadata track. It is
perfectly valid not to add metadata or update the descriptive metadata and to simply
return from this function.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.18 I_input_mxf_stream_task Class Reference 138

18.18 I_input_mxf_stream_task Class Reference


Public Member Functions
ˆ virtual void data_request (I_mxf_le ∗, size_t bytes_to_read)=0
ˆ virtual void data_to_read (I_generic_material ∗, I_track ∗, I_source_clip ∗, uint64_t
bytes_to_read)=0
ˆ virtual size_t get_buer_size ()=0
ˆ virtual void last_partition_oset (uint64_t oset)
ˆ virtual I_timecode ∗ seek_timecode (I_generic_material ∗, bool &stop)
ˆ virtual bool seekable ()
ˆ virtual uint64_t seekpos_request (uint64_t position)
ˆ virtual uint64_t stream_size ()
ˆ virtual void updated_data (const uint8_t ∗data, size_t data_size)
ˆ virtual bool updated_mxf_le (I_mxf_le ∗, bool closed, bool complete, uint64_t bytes_-
read)
ˆ virtual ∼I_input_mxf_stream_task ()

18.18.1 Detailed Description


This class should be used when the MXF le is received from a streaming device. This can be
the case, when receiving the output signal of an MXF videotape player. MXFTk user is entitled
to derive this class in order to provide an implementation for the corresponding streaming device.
Calls to this class will be performed only during the I_mxf_le creation process. It also provides
interfaces for seeking data to a given timecode on the streaming device. Due to their internal
construction, some MXF les are not truly streamable. This would be the case when the video
and audio data meant to be played together are both clip wrapped in the le. Because the reading
of the le will be performed linearly, MXFTk will rst read all of the video before reaching the
audio. When building les to be read in a streaming environment, it is always best to avoid high
operational patterns and to perform a frame wrapping of all the audiovisual data (the sources will
be multiplexed so that they can be played simultaneously). You may also use this class to perform
the update of an MXF le read from a streaming device.

18.18.2 Constructor & Destructor Documentation


18.18.2.1 virtual ∼I_input_mxf_stream_task () [virtual]

Destructor.

18.18.3 Member Function Documentation


18.18.3.1 virtual void data_request (I_mxf_le ∗, size_t bytes_to_read) [pure
virtual]

This function is called whenever MXFTk requests data from the MXF stream in order to continue
the unwrapping process. Calls to I_mxf_le::write should be performed once the data is ready. If
the streaming device is not ready, then the current process should be stopped as long as necessary.
When no more data is to be received, an explicit call to I_mxf_le::end_of_stream must be
performed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.18 I_input_mxf_stream_task Class Reference 139

Parameters:
bytes_to_read How many bytes the internal buer is waiting for.

18.18.3.2 virtual void data_to_read (I_generic_material ∗, I_track ∗,


I_source_clip ∗, uint64_t bytes_to_read) [pure virtual]

This function is called by MXFTk to notify that some data is ready to be read on specic source
clip from the specied track in the specied material.

Parameters:
bytes_to_read The number of bytes to be read (size of the edit unit to be read). The data
can be read with a single call to the function I_source_clip::read_eu. Seek functions
of the source clip should not be used. If your system is not ready to read this data, the
current process should be stopped as long as necessary.

18.18.3.3 virtual size_t get_buer_size () [pure virtual]

Return the size (in bytes) of the buer that MxfTk will use to handle read and write operations on
the stream. This function is called before launching the streaming process. It gives the opportunity
to set the size of MXFTk's internal buer used to store the data received from the MXF stream.
Depending on your system, changing the buer's size may help to improve performance. This
function will be called only once, the size cannot be changed during the streaming process.

18.18.3.4 virtual void last_partition_oset (uint64_t oset) [virtual]

MXFTk calls this function whenever a new header metadata is being decoded.

Parameters:
oset The oset in the stream to reach the beginning of the partition containing this header
metadata.

18.18.3.5 virtual I_timecode∗ seek_timecode (I_generic_material ∗, bool &


stop) [virtual]
This function will be regularly called by MXFTk to give the opportunity to continue the MXF
unwrapping process from a user-dened timecode. The streaming device should have the capability
to seek and if the user chooses to implement this function, seekpos_request() must be implemented
as well.

Parameters:
↔ stop Setting this value to true will force the streaming process to stop immediately.

Returns:
The timecode to reach (relative to the timecode material of the parameter I_generic_-
material) or NULL if the unwrapping process should continue linearly from the current time-
code. It is not possible to seek a timecode that has not been reached so far.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.18 I_input_mxf_stream_task Class Reference 140

18.18.3.6 virtual bool seekable () [virtual]

You should implement this function to let MXFTk knows if it is allowed to perform seek operations
on this stream. Allowing seek operations may speed up the decoding process. If the function
returns true, then you must provide your implementation of seekpos_request() and stream_-
size(). The return value of this function cannot be changed during the MXF decoding process.
Note that the update of an MXF le in a streaming environment can only be performed if the
stream is seekable. Hence in that case, this function should return true and you must implement
seekpos_request().

18.18.3.7 virtual uint64_t seekpos_request (uint64_t position) [virtual]

User should implement this function only if the MXF streaming device has the capability to
seek. During a linear streaming process, MXFTk will not call this function. This will occur only
following and explicit seeking request from the user (thanks to the function seek_timecode()).

Parameters:
position The absolute position where the streaming device should seek.

Returns:
The requested position.

Note:
If you choose not to implement this function, seek_timecode() should always return NULL.

18.18.3.8 virtual uint64_t stream_size () [virtual]

This function will be called by MXFTk to retrieve the total size of the stream. Specifying the size
of the stream may speed up the decoding process.

Returns:
0 if this value cannot be evaluated. The correct size of the stream must be retunred when
seekable.

18.18.3.9 virtual void updated_data (const uint8_t ∗ data, size_t data_size)


[virtual]

You need to implement this function only if you are performing an update of the MXF le. MXFTk
will call this function regularly while updating the le. This function will be called by MXFTk
when you call the function mxf_le::ush()

Parameters:
← data Data to be written at the current location of the stream
← data_size The size of the data in bytes.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.18 I_input_mxf_stream_task Class Reference 141

18.18.3.10 virtual bool updated_mxf_le (I_mxf_le ∗, bool closed, bool


complete, uint64_t bytes_read) [virtual]
The structure of an MXF le being streamed is likely to be changed during the decoding process.
Several instances of the header metadata containing both the structural and descriptive metadata
can be found in an MXF le. This is usually done to reect the changes that occurred on the le
while it was recorded. Therefore, the truthful header metadata is generally found at the end of the
le. However, during a linear streaming process, this one cannot be reached before processing all
the data; therefore MXFTk will regularly send updated version of the header metadata whenever
a new one is detected. This lets the API user starts the decoding process although part of
the information is missing. When MXFTk calls this function, previous I_mxf_le should be
considered as outdated and previous references to objects or interfaces should be ignored.

Parameters:
closed If true, the overall structure will not change (no more tracks or materials will be added
or removed for instance) but some values are probably still missing (this is notably the
case for the duration of the tracks).

complete If true, no more updates will occur, the I_mxf_le is entirely valid.
bytes_read The number of bytes read from the MXF streaming device so far.
Returns:
true if you wish to stop the decoding process. This is useful if you are not interested in the
essence and want to stop the process as soon as you found a valid header metadata.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.19 I_input_partial_mxf_stream_task Class Reference 142

18.19 I_input_partial_mxf_stream_task Class Reference


Public Member Functions
ˆ virtual void data_request (I_mxf_le ∗, size_t bytes_to_read)=0
ˆ virtual size_t get_buer_size ()=0
ˆ virtual bool seekable ()
ˆ virtual uint64_t seekpos_request (uint64_t position)
ˆ virtual uint64_t stream_size ()
ˆ virtual ∼I_input_partial_mxf_stream_task ()

18.19.1 Detailed Description


This class should be used when the MXF le to partial restore is received from a streaming device.
This can be the case, when receiving the output signal of an MXF videotape player. MXFTk
user is entitled to derive this class in order to provide an implementation for the corresponding
streaming device. Calls to this class will be performed only during the I_mxf_le partial restore
process.

18.19.2 Constructor & Destructor Documentation


18.19.2.1 virtual ∼I_input_partial_mxf_stream_task () [virtual]

Destructor.

18.19.3 Member Function Documentation


18.19.3.1 virtual void data_request (I_mxf_le ∗, size_t bytes_to_read) [pure
virtual]

This function is called whenever MXFTk requests data from the MXF stream in order to continue
the partial restore process. If the streaming device is not ready, the current process should be
stopped as long as necessary. When no more data is to be received, an explicit call to I_mxf_-
le::end_of_stream must be performed.

Parameters:
bytes_to_read How many bytes the internal buer is waiting for. Calls to I_mxf_le::write
should be performed once the data is ready.

18.19.3.2 virtual size_t get_buer_size () [pure virtual]

This function is called before launching the streaming process. It gives the opportunity to set the
size of MXFTk's internal buer used to store the data received from the MXF stream. Depending
on your system, changing the buer's size may help to improve your performances. This function
will be called only once, the size cannot be changed during the streaming process.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.19 I_input_partial_mxf_stream_task Class Reference 143

18.19.3.3 virtual bool seekable () [virtual]

You should implement this function to let MXFTk knows if it is allowed to perform seek operations
on this stream. Allowing seek operations is likely to speed up the partial restore process. If
the function returns true, then you must provide your implementation of seekpos_request() and
stream_size(). The return value of this function cannot be changed during the MXF decoding
process.

18.19.3.4 virtual uint64_t seekpos_request (uint64_t position) [virtual]

User should implement this function only if the MXF streaming device has the capability to
seek.

Parameters:
← position The absolute position where the streaming device should seek.

Returns:
This should be the requested position.

18.19.3.5 virtual uint64_t stream_size () [virtual]

This function will be called by MXFTk to retrieve the total size of the stream. If this value cannot
be evaluated, the function should always return 0. Specifying the size of the stream is likely to
speed up the partial restore process. You must return the correct size of the stream if you set it
to be seekable.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.20 I_metadata Class Reference 144

18.20 I_metadata Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ bool add (label_c name, value_type type, size_t data_size, const void ∗data)
ˆ virtual bool add (const I_property ∗)=0
ˆ virtual bool free_properties (properties_list ∗) const =0
ˆ virtual properties_list ∗ get_dic_properties () const =0
ˆ virtual label_c get_label () const =0
ˆ virtual properties_list ∗ get_properties () const =0
ˆ virtual bool output_xml (const char ∗lename) const =0
ˆ virtual bool remove (const I_property ∗property)=0
ˆ virtual const char ∗ to_string () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMetadataInterface(I_metadata ∗∗)


ˆ mxf_tk_API bool NewMetadataInterfaceByLabel(I_metadata ∗∗, label_c label)
ˆ mxf_tk_API bool NewMetadataInterfaceByXML(I_metadata ∗∗, const char ∗lename)

18.20.1 Detailed Description


This class handles descriptive metadata. A metadata framework to be embedded in a metadata
material is structured as a tree. An I_metadata contains a set of properties. Each property links
a value of a given type to a label_c (a string normalized according to a dictionary). The value of a
property can be an I_metadata as well. This gives the opportunity to build a tree of I_metadata
interfaces: a root I_metadata interface may contain among its properties other instances of I_-
metadata and so on. This kind of construction is often required in the usual metadata schemes
such as the DMS1. DMS1 let's you set for instance the location of the clip, the actors appearing
in the scene, etc... MXFTk's metadata scheme manages all the DMS1 metadata. Metadata that
does not belong to this particular scheme is not handled with the default dictionary. In order
to address other metadata schemes it is required to update the dictionary thanks to the function
SetDictionary(). The default dictionary is located in the directory dic of your installation. You will
nd there a folder named DMS1 containing the XML les drawing an exhaustive list of descriptive
metadata. Although the dictionary is used to validate the exactness of the metadata trees, it is
recommended to have an elementary knowledge of the schemes addressed in [EG42] [380M] in
order to build your own trees.

18.20.2 Member Function Documentation


18.20.2.1 bool add (label_c name, value_type type, size_t data_size, const void
∗ data)

Helper method to create a new property in this metadata.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.20 I_metadata Class Reference 145

Parameters:
data The pointer to the data. The data is copied by this object, it may be freed after this
method returned.

18.20.2.2 virtual bool add (const I_property ∗) [pure virtual]

Adds a property to the current metadata. The content of the property will be copied; therefore
the I_property pointer can be freed after calling this function.

Warning:
if the current metadata already contains a property with the same label it will be destroyed
and replaced by the new one. However, in the case of a property which type is MXF_-
ARRAY_STRONG_REF or MXF_ARRAY_WEAK_REF, the I_metadata interfaces of
the property will be added to those already stored in the current metadata. This mechanism
helps building a tree step-by-step without destroying previously created sub-trees.

Returns:
true if successful, false otherwise.

18.20.2.3 virtual bool free_properties (properties_list ∗) const [pure virtual]

Frees properties returned by get_properties and get_dic_properties.

Returns:
true if successful, false otherwise.

18.20.2.4 virtual properties_list∗ get_dic_properties () const [pure virtual]

Returns a list referencing all the properties that can be added to the current metadata according
to the dictionary. This function can be used to rapidly retrieve all the possible properties for the
current node of the tree.

Returns:
a copy of the all the properties allowed for this metadata according to the dictionary. This
data MUST be deleted using free_properties(). Returns NULL if an error occured.

18.20.2.5 virtual label_c get_label () const [pure virtual]

Gets a label identifying the current metadata.

Returns:
an empty label ("") if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.20 I_metadata Class Reference 146

18.20.2.6 virtual properties_list∗ get_properties () const [pure virtual]

Returns a list referencing all the properties from the current metadata. This is a read-only
structure, meaning that modifying the list or its content will not modify the properties stored
within the current metadata.

Returns:
a copy of the properties of this metadata. The list MUST be deleted using free_properties().
Returns NULL if an error occured.

18.20.2.7 virtual bool output_xml (const char ∗ lename) const [pure virtual]

Outputs an XML representation of the current metadata tree. The XML le will be written at
specied location.

Returns:
true if successful, false otherwise.

18.20.2.8 virtual bool remove (const I_property ∗ property) [pure virtual]

Destroys a property stored in the current metadata object.

Parameters:
← property The property to remove. It is not destroyed; it MUST be freed by MXFTk user.

Warning:
The label of the property is compared to the label of the properties stored within the current
metadata. If a label is matching then the internal property will be entirely destroyed. However
if the property's type is MXF_ARRAY_STRONG_REF or MXF_ARRAY_WEAK_REF
then only referenced I_metadata interfaces will be deleted. This mechanism helps destroying
only some branches of the metadata tree.

Returns:
true if successful, false otherwise.

18.20.2.9 virtual const char∗ to_string () const [pure virtual]

Write this object out.

18.20.3 Friends And Related Function Documentation


18.20.3.1 mxf_tk_API bool FreeMetadataInterface(I_metadata ∗∗) [related]

Frees the specied metadata interface. Branches referenced by this metadata will also be deleted
(freeing the root metadata will delete the entire tree.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.20 I_metadata Class Reference 147

18.20.3.2 mxf_tk_API bool NewMetadataInterfaceByLabel(I_metadata ∗∗,


label_c label) [related]

Retrieves a pointer on an I_metadata interface.

Parameters:
← label The label identifying the metadata. This label must strictly follow the dictionary
naming convention (domain:property_name) such as "DMS1:SceneFramework" or even
"le_format:Preface" when dealing with structural metadata. The label_c object can
be destroyed after calling this function.

Returns:
true if the allocation succeeded, false otherwise.

18.20.3.3 mxf_tk_API bool NewMetadataInterfaceByXML(I_metadata ∗∗, const


char ∗ lename) [related]

Retrieves a pointer on an I_metadata interface.

Parameters:
← lename The complete path to an XML le describing a metadata tree.

Returns:
true if the allocation succeeded, false otherwise.

Warning:
The XML scheme must eectively match an arborescence structure: no more than one meta-
data can be a root. Failure to do so will invalidate the loading of the tree or lead to hectic
behaviour.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.21 I_metadata_material Class Reference 148

18.21 I_metadata_material Class Reference


Inheritance diagram for I_metadata_material:

I_generic_material

I_metadata_material

Collaboration diagram for I_metadata_material:

I_generic_material

I_metadata_material

Public Member Functions


ˆ virtual wchar_t ∗ get_comment (size_t &size) const =0
ˆ virtual int64_t get_duration () const =0
ˆ virtual I_metadata ∗ get_metadata () const =0
ˆ virtual metadata_type get_metadata_type () const =0
ˆ virtual int64_t get_start_position () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMetadataMaterialInterface(I_metadata_material ∗∗)


ˆ mxf_tk_API bool NewMetadataMaterialInterface(I_metadata_material ∗∗, metadata_-
type type, I_metadata ∗metadata, int64_t oset, int64_t duration, const wchar_t
∗comment, size_t comment_size)

18.21.1 Detailed Description


Metadata material enables the manipulation of descriptive metadata either built by MXFTk user
or read from an MXF le. In some cases, this structure is also used to read specic structural

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.21 I_metadata_material Class Reference 149

metadata (such as descriptors from a concrete material or identication sets). Metadata (I_-
metadata) carries a set of properties. A property I_property is dened by a label_c, normalized
and validated thanks to a dictionary, and a value I_value. A label is a char∗ string and a value
is a memory pointer of a given type that can contain metadata (when the pointer is referencing
an I_metadata interface). Using this mechanism of metadata objects referencing other metadata
objects a tree structure can be easily built. Only MXFTk Advanced version will let you attach
descriptive metadata to your MXF les.

See also:
The Metadata Material section for mode details.

18.21.2 Member Function Documentation


18.21.2.1 virtual wchar_t∗ get_comment (size_t & size) const [pure virtual]

Retrieves a Unicode UTF16 string commenting this metadata material.

Parameters:
→ size The length of the returned string.

Returns:
NULL if an error occured. Returned pointer should not be freed.

18.21.2.2 virtual int64_t get_duration () const [pure virtual]

Gets the duration of this material in edit units. A negative value means that the duration is
unknown or not applicable (in an m_static metadata material).

Returns:
0x7f if an error occured

18.21.2.3 virtual I_metadata∗ get_metadata () const [pure virtual]

Retrieves a reference to the metadata tree embedded in this material (usually root of a frame-
work).

Returns:
a pointer to the metadata tree. It MUST not be deleted but can be edited. Returns NULL
if an error occured.

18.21.2.4 virtual metadata_type get_metadata_type () const [pure virtual]

Returns the type of this metadata material.

Returns:
m_error if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.21 I_metadata_material Class Reference 150

18.21.2.5 virtual int64_t get_start_position () const [pure virtual]

Gets the oset relative to the origin of the metadata track that contains (or will contain) this
metadata material. A negative value means that this oset is unknown or not applicable (in an
m_static metadata material).

Returns:
0x7f if an error occured.

18.21.3 Friends And Related Function Documentation


18.21.3.1 mxf_tk_API bool FreeMetadataMaterialInterface(I_metadata_material
∗∗) [related]

Frees the specied metadata material interface.

Note:
User should not free a material already appended to an I_track.

Returns:
true if the deallocation was successful, false otherwise.

18.21.3.2 mxf_tk_API bool NewMetadataMaterialInterface(I_metadata_-


material ∗∗, metadata_type type, I_metadata ∗ metadata, int64_t
oset, int64_t duration, const wchar_t ∗ comment, size_t
comment_size) [related]
Retrieves a pointer on an I_metadata_material interface.

Parameters:
← type The type of this metadata.
← metadata The metadata tree to be embedded.
← oset The oset of the targeted metadata track, measured in edit units. Pass -1 to have
MXFTk compute it automatically when possible. Ignored if the type is m_timeline or
m_static.

← duration The duration of the targeted metadata track, measured in edit units. Pass -1 to
have MXFTk compute it automatically when possible. Ignored if the type is m_static.

← comment A string meant to comment this new metadata material. It can be NULL and
can be deleted after calling this function.

← comment_size The byte size of the comment string.

Returns:
true if the allocation was successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.22 I_mxf_aes3_audio_essence_descriptor Class Reference 151

18.22 I_mxf_aes3_audio_essence_descriptor Class Refer-


ence
Inheritance diagram for I_mxf_aes3_audio_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

I_mxf_wave_audio_essence_descriptor

I_mxf_aes3_audio_essence_descriptor

Collaboration diagram for I_mxf_aes3_audio_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

I_mxf_wave_audio_essence_descriptor

I_mxf_aes3_audio_essence_descriptor

Public Member Functions


ˆ virtual void set_aux_bits_mode (const uint8_t)=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.22 I_mxf_aes3_audio_essence_descriptor Class Reference 152

set_aux_bits_mode

ˆ virtual void set_block_start_oset (const uint16_t)=0

set_block_start_oset

ˆ virtual void set_channel_status_mode (const uint8_t ∗, const uint32_t)=0

set_channel_status_mode

ˆ virtual void set_emphasis (const uint8_t)=0

set_emphasis

ˆ virtual void set_xed_channel_status_data (const uint8_t ∗∗, const uint32_t)=0

set_xed_channel_status_data

ˆ virtual void set_xed_user_data (const uint8_t ∗∗, const uint32_t)=0

set_xed_user_data

ˆ virtual void set_user_data_mode (const uint8_t ∗, const uint32_t)=0

set_user_data_mode

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfAes3AudioEssenceDescriptorInterface(I_mxf_aes3_audio_-


essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfAes3AudioEssenceDescriptorInterface(I_mxf_aes3_audio_-
essence_descriptor ∗∗descriptor)

18.22.1 Detailed Description


AES3 Audio Essence Descriptor (Sound essence descriptors) Denes the items in the AES3 Audio
Essence Descriptor. [SMPTE 382M-2007 Annex A.2]

18.22.2 Member Function Documentation


18.22.2.1 virtual void set_aux_bits_mode (const uint8_t) [pure virtual]

set_aux_bits_mode

18.22.2.2 virtual void set_block_start_oset (const uint16_t) [pure virtual]

set_block_start_oset

18.22.2.3 virtual void set_channel_status_mode (const uint8_t ∗, const


uint32_t) [pure virtual]
set_channel_status_mode

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.22 I_mxf_aes3_audio_essence_descriptor Class Reference 153

18.22.2.4 virtual void set_emphasis (const uint8_t) [pure virtual]

set_emphasis

18.22.2.5 virtual void set_xed_channel_status_data (const uint8_t ∗∗, const


uint32_t) [pure virtual]
set_xed_channel_status_data

18.22.2.6 virtual void set_xed_user_data (const uint8_t ∗∗, const uint32_t)


[pure virtual]

set_xed_user_data

18.22.2.7 virtual void set_user_data_mode (const uint8_t ∗, const uint32_t)


[pure virtual]

set_user_data_mode

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.23 I_mxf_anc_data_essence_descriptor Class Reference 154

18.23 I_mxf_anc_data_essence_descriptor Class Refer-


ence
Inheritance diagram for I_mxf_anc_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

I_mxf_anc_data_essence_descriptor

Collaboration diagram for I_mxf_anc_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

I_mxf_anc_data_essence_descriptor

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfAncDataEssenceDescriptorInterface(I_mxf_anc_data_-


essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfAncDataEssenceDescriptorInterface(I_mxf_anc_data_-
essence_descriptor ∗∗descriptor)

18.23.1 Detailed Description


ANC data descriptor (Data essence descriptors) No specic attibutes. Used to specify the ANC
data type. [SMPTE 436M-2006 7.3]

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.24 I_mxf_cdci_picture_essence_descriptor Class Reference 155

18.24 I_mxf_cdci_picture_essence_descriptor Class Ref-


erence
Inheritance diagram for I_mxf_cdci_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_cdci_picture_essence_descriptor

I_mxf_mpeg2_video_descriptor

Collaboration diagram for I_mxf_cdci_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_cdci_picture_essence_descriptor

Public Member Functions


ˆ virtual void set_alpha_sample_depth (const uint32_t)=0

set_alpha_sample_depth

ˆ virtual void set_black_ref_level (const uint32_t)=0

set_black_ref_level

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.24 I_mxf_cdci_picture_essence_descriptor Class Reference 156

ˆ virtual void set_color_range (const uint32_t)=0

set_color_range

ˆ virtual void set_color_siting (const uint8_t)=0

set_color_siting

ˆ virtual void set_component_depth (const uint32_t)=0

set_component_depth

ˆ virtual void set_horizontal_subsampling (const uint32_t)=0

set_horizontal_subsampling

ˆ virtual void set_padding_bits (const int16_t)=0

set_padding_bits

ˆ virtual void set_reversed_byte_order (const bool)=0

set_reversed_byte_order

ˆ virtual void set_vertical_subsampling (const uint32_t)=0

set_vertical_subsampling

ˆ virtual void set_white_ref_level (const uint32_t)=0

set_white_ref_level

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfCDCIPictureEssenceDescriptorInterface(I_mxf_cdci_-


picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfCDCIPictureEssenceDescriptorInterface(I_mxf_cdci_-
picture_essence_descriptor ∗∗descriptor)

18.24.1 Detailed Description


CDCI (Color-dierence component image) picture essence descriptor (Picture essence descriptors)
This is a subclass of the generic picture essence descriptor above. It has all the above items with the
same required / optional status with the addition of the new items below. It is intended to describe
imagery comprising interleaved luminance and chrominance samples. [SMPTE 377M-2004 Annex
D.2.2]

18.24.2 Member Function Documentation


18.24.2.1 virtual void set_alpha_sample_depth (const uint32_t) [pure virtual]

set_alpha_sample_depth

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.24 I_mxf_cdci_picture_essence_descriptor Class Reference 157

18.24.2.2 virtual void set_black_ref_level (const uint32_t) [pure virtual]

set_black_ref_level

18.24.2.3 virtual void set_color_range (const uint32_t) [pure virtual]

set_color_range

18.24.2.4 virtual void set_color_siting (const uint8_t) [pure virtual]

set_color_siting

18.24.2.5 virtual void set_component_depth (const uint32_t) [pure virtual]

set_component_depth

18.24.2.6 virtual void set_horizontal_subsampling (const uint32_t) [pure


virtual]

set_horizontal_subsampling

18.24.2.7 virtual void set_padding_bits (const int16_t) [pure virtual]

set_padding_bits

18.24.2.8 virtual void set_reversed_byte_order (const bool) [pure virtual]

set_reversed_byte_order

18.24.2.9 virtual void set_vertical_subsampling (const uint32_t) [pure virtual]

set_vertical_subsampling

18.24.2.10 virtual void set_white_ref_level (const uint32_t) [pure virtual]

set_white_ref_level

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.25 I_mxf_error Class Reference 158

18.25 I_mxf_error Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Types
ˆ enum id

Public Member Functions


ˆ virtual const wchar_t ∗ get_error_msg () const =0
ˆ virtual gravity get_gravity () const =0
ˆ virtual uint32_t get_id () const =0
ˆ virtual uint64_t get_thread_id () const =0
ˆ virtual const char ∗ to_string () const =0

Static Public Member Functions


ˆ static bool raised ()
ˆ template<typename T >
static bool write_all (std::basic_ostream< T > &)

18.25.1 Detailed Description


This class lets you manipulate and retrieve information from an error that occurred within MXFTk.
Errors are managed by the class I_mxf_error_handler and are returned by I_mxf_error_-
handler::get_errors().

See also:
The MXFTk Error Handling section for more details.

18.25.2 Member Enumeration Documentation


18.25.2.1 enum id

The list of predened MXFTk errors.

18.25.3 Member Function Documentation


18.25.3.1 virtual const wchar_t∗ get_error_msg () const [pure virtual]

Returns a message helping to understand the nature of the error.

Returns:
NULL if the error message could not be found.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.25 I_mxf_error Class Reference 159

18.25.3.2 virtual gravity get_gravity () const [pure virtual]

Returns the seriousness of the error (from fatal to caution).

18.25.3.3 virtual uint32_t get_id () const [pure virtual]

Returns the unique identier of the error as stored in the error dictionary.

18.25.3.4 virtual uint64_t get_thread_id () const [pure virtual]

Returns the id of the thread where the error occured.

18.25.3.5 virtual const char∗ to_string () const [pure virtual]

Convert this to a string.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.26 I_mxf_error_handler Class Reference 160

18.26 I_mxf_error_handler Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual bool clear ()=0
ˆ virtual bool clear_thread_error (uint64_t id)=0
ˆ virtual bool free_errors (error_list ∗elist) const =0
ˆ virtual error_list ∗ get_errors ()=0
ˆ virtual bool has_an_error () const =0
ˆ virtual bool set_error_dictionary (const char ∗lename)=0
ˆ template<typename T >
bool write (std::basic_ostream< T > &out)

18.26.1 Detailed Description


This class manages a stack of errors for MXFTk. When an error occurs it is added to the stack
waiting for the user to retrieve it. It can be cleared once the errors have been retrieved. This class
also provides support for internationalization of error messages.

Note:
Details on how to properly use it and build a try...catch-like mechanism can be found in the
examples of your installation directory.

See also:
The MXFTk Error Handling section for more details.

18.26.2 Member Function Documentation


18.26.2.1 virtual bool clear () [pure virtual]

Removes all the errors from the stack. The stack will be empty after calling this function, ready
to enlist future errors.

Returns:
true if successful, false otherwise.

18.26.2.2 virtual bool clear_thread_error (uint64_t id) [pure virtual]

Clear the list of errors coming from the given thread id

Parameters:
← id The thread ID

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.26 I_mxf_error_handler Class Reference 161

18.26.2.3 virtual bool free_errors (error_list ∗ elist) const [pure virtual]

Frees the list of errors returned by get_errors(). It only frees the list, errors remain in the stack.
To remove errors from the stack, use clear() instead.

Parameters:
← elist The error list pointer to free

Returns:
true if successful, false otherwise.

18.26.2.4 virtual error_list∗ get_errors () [pure virtual]

Returns the list of errors currently stored in the stack.

Returns:
an empty list if the stack is empty and a NULL pointer if the list of errors could not be
retrieved.

18.26.2.5 virtual bool has_an_error () const [pure virtual]

Indicate whether there is an error on the stack or not.

18.26.2.6 virtual bool set_error_dictionary (const char ∗ lename) [pure


virtual]

Set the dictionary le for the error messages. The default dictionary is in English but if you wish
to internationalize your application, you may need to dene dictionaries for other languages.

Error dictionaries must be saved in Unicode UTF16 and their syntax is pretty straightforward:
there should be one error per line and each line must start with the error id bracketed between
two '#' followed by the error message bracketed between '< >'. For instance:

#1002# <Cannot proceed: Trying to add metadata to a picture, sound or data track>

Parameters:
← lename The path toward the dictionary.

See also:
The error_list section for the complete list of errors.

Warning:
The dictionary le should not be larger than 64Kbytes (32K UTF16 characters).

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.26 I_mxf_error_handler Class Reference 162

18.26.2.7 bool write (std::basic_ostream< T > & out)


Helper function to print out the errors.

Returns:
true if any error was printed out, false otherwise

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 163

18.27 I_mxf_le Class Reference


Inheritance diagram for I_mxf_le:

I_evtr_file

I_xdcam_dv_file

I_op1a_file I_xdcam_hd_file

I_op1b_file I_xdcam_imx_file

I_op1c_file I_xdcam_proxy_file

I_op2a_file

I_op2b_file
I_mxf_file
I_op2c_file

I_op3a_file

I_op3b_file

I_op3c_file
I_avid_opatom_file
I_opatom_file
I_dcp1_file

Public Member Functions


ˆ virtual bool add_external_material (I_concrete_material ∗, const wchar_t ∗lename)=0
ˆ virtual bool add_material (I_concrete_material ∗)=0
ˆ virtual bool cancel ()=0
ˆ virtual concrete_list ∗ embedded_material ()=0
ˆ virtual bool end_of_stream ()=0
ˆ virtual bool ush ()=0
ˆ virtual bool ush_le (const char ∗)=0
ˆ virtual bool ush_stream (I_output_mxf_stream_task ∗)=0
ˆ bool ush_thread_cancel ()
ˆ virtual uint64_t ush_thread_id ()=0
ˆ virtual double ush_thread_progress ()=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 164

ˆ virtual bool ush_thread_running ()=0


ˆ virtual bool free_concrete_list (concrete_list ∗c_list)=0
ˆ virtual bool free_generic_list (generic_list ∗g_list)=0
ˆ virtual bool free_identications (metadata_list ∗) const =0
ˆ virtual I_generic_material ∗ get_current_generic_material ()=0
ˆ virtual metadata_list ∗ get_identications () const =0
ˆ virtual const char ∗ get_parameter (mxf_parameter parameter) const =0
ˆ virtual const I_metadata ∗ get_preface () const =0
ˆ virtual bool has_external_essence () const =0
ˆ virtual generic_list ∗ low_level_material ()=0
ˆ virtual bool output_embedded_xml (const char ∗path) const =0
ˆ virtual const unsigned char ∗ output_embedded_xml_buer (uint64_t &size) const =0
ˆ virtual generic_list ∗ output_material ()=0
ˆ virtual bool output_xml (const char ∗path) const =0
ˆ virtual const unsigned char ∗ output_xml_buer (uint64_t &size) const =0
ˆ virtual bool set_external_material (I_concrete_material ∗, const wchar_t ∗lename)=0
ˆ virtual bool set_material (I_concrete_material ∗)=0
ˆ virtual bool set_parameter (mxf_parameter parameter, const char ∗value)=0
ˆ virtual bool wait_end_ush_thread ()=0
ˆ virtual bool waiting_stream (I_essence_stream_task ∗&task, unsigned int &id)=0
ˆ virtual size_t write (const uint8_t ∗buer, size_t buer_size)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfFileInterface(I_mxf_le ∗∗mxf_le)


ˆ mxf_tk_API bool NewMxfFileInterface(I_mxf_le ∗∗mxf_le, const char ∗path, uint32_t
ags=0, mxf_parameter_t ∗parameters=NULL)
ˆ mxf_tk_API bool ∗∗mxf_le, I_input_mxf_-
NewMxfStreamInterface(I_mxf_le
stream_task ∗task, ∗parameters=NULL)
uint32_t ags=0, mxf_parameter_t
ˆ mxf_tk_API bool NewPartialRestoreMxfFileInterface(I_mxf_le ∗∗mxf_le, const char
∗path, I_timecode ∗tc_in, I_timecode ∗tc_out)
ˆ mxf_tk_API bool NewPartialRestoreMxfStreamInterface(I_mxf_le ∗∗mxf_le, I_-
input_partial_mxf_stream_task ∗task, I_timecode ∗tc_in, I_timecode ∗tc_out)
ˆ mxf_tk_API bool UpdateAndFreeMxfFileInterface(I_mxf_le ∗∗mxf_le)

18.27.1 Detailed Description


This interface reads or edits an existing MXF le.

18.27.2 Member Function Documentation


18.27.2.1 virtual bool add_external_material (I_concrete_material ∗, const
wchar_t ∗ lename) [pure virtual]

Add an audiovisual originating from another MXF le to be externally referenced. When calling
this function the referenced MXF le will be added to the list of external references for this MXF
le. This MXF le will contain a copy of the concrete material but will not embed the audiovisual

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 165

material contained in this material. The number of I_concrete_material objects that can be
added to an MXF le depends on its Operational Pattern (see individual subclass for specic
constraints, e.g. I_op1a_le or I_op2a_le). The current material (get_current_generic_-
material) is updated after each call to this function.

Note:
This method is not available when the MXF le is being read.

Parameters:
lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the MXF le
will be created.

Returns:
true if successful, false otherwise.

18.27.2.2 virtual bool add_material (I_concrete_material ∗) [pure virtual]

Add an audiovisual material to embed in the MXF le. The number of I_concrete_material
objects that can be added to an MXF le depends on its Operational Pattern (see individual
subclass for specic constraints, e.g. I_op1a_le or I_op2a_le). The current material (get_-
current_generic_material) is updated after each call to this function.

Note:
This method is not available when the MXF le is being read.

Returns:
true if successful, false otherwise.

18.27.2.3 virtual bool cancel () [pure virtual]

Calls this function to cancel the current le process. If streaming, this stops the streaming pro-
cess. This also cancels the ush thread currently running, if any. In the last case, the cancellation
is asynchronous so you must still call wait_end_ush_thread()to terminate properly the pro-
cess.

Returns:
true if successful.

18.27.2.4 virtual concrete_list∗ embedded_material () [pure virtual]

Returns the embedded materials of this le. These materials contain essence data to be read. (In
MXF terms, Top Level Source Package)

Note:
The list can be freed at any time using free_concrete_list().

Returns:
NULL if an error occurred.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 166

18.27.2.5 virtual bool end_of_stream () [pure virtual]

This function will operate in mxf input streaming mode only! This function must be called once
the mxf stream is closed.

Returns:
true if successful, false otherwise.

18.27.2.6 virtual bool ush () [pure virtual]

If this I_mxf_le was opened for writing, the call to this function will cause the creation of the
mxf le (on the disk or on a stream). A thread will be created so the ush will not be completed
when returning for this function. You should call mxf_le::wait_end_ush_thread and wait for
its termination.

Warning:
TO PREVIOUS VERSIONS USERS:
This function is now threaded! Read carefully to what is written above.

Returns:
true if successful.

18.27.2.7 virtual bool ush_le (const char ∗) [pure virtual]

Creates the mxf le. This ush lets you specify the name of the mxf le being generated.

Returns:
true if successful.

See also:
ush()

18.27.2.8 virtual bool ush_stream (I_output_mxf_stream_task ∗) [pure


virtual]

Creates the mxf le. This ush lets you specify the streaming task that will handle the output
stream. MxfTk user should provide its own implemetation of I_output_mxf_stream_task.

Returns:
true if successful.

See also:
ush()

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 167

18.27.2.9 bool ush_thread_cancel ()

Deprecated
This method has been deprecated and replaced by cancel().

18.27.2.10 virtual uint64_t ush_thread_id () [pure virtual]

Call this function to retrieve the id of the ush thread

Returns:
The id of the ush thread

18.27.2.11 virtual double ush_thread_progress () [pure virtual]

This function returns the current progress of the process: 0.0 -> beginning / 1.0 -> end. / <0 ->
progress cannot be computed.

18.27.2.12 virtual bool ush_thread_running () [pure virtual]

Calls this function to know if the ush thread is still running.

Warning:
You should not free the I_mxf_le interface as long as the process is not completed.

Returns:
true if successful.

18.27.2.13 virtual bool free_concrete_list (concrete_list ∗ c_list) [pure virtual]

Frees the list returned by embedded_material

Parameters:
← c_list A pointer to the concrete_list to free.

Returns:
true if successful

18.27.2.14 virtual bool free_generic_list (generic_list ∗ g_list) [pure virtual]

Frees the list returned by output_material or low_level_material

Parameters:
← g_list A pointer to the generic_list to free.

Returns:
true if successful.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 168

18.27.2.15 virtual bool free_identications (metadata_list ∗) const [pure virtual]

Frees the metadata_list returned by get_identications()

See also:
get_identications()

Returns:
true if successful.

18.27.2.16 virtual I_generic_material∗ get_current_generic_material () [pure


virtual]

Return the generic material that was created when calling add_material(), add_external_-
material(), set_material().

Returns:
the generic material. Returns NULL when no material was called.

18.27.2.17 virtual metadata_list∗ get_identications () const [pure virtual]

Returns the Preface set's metadata. Version, embedded essences and descriptive metadata types
are properties of this preface descriptor.

See also:
MXF File Format glossary [377M] for a complete overview of its properties.
get_identications()

Returns:
NULL if an error occurred.

18.27.2.18 virtual const char∗ get_parameter (mxf_parameter parameter) const


[pure virtual]

Returns one of the le's parameter value.

Parameters:
← parameter The parameter identier to retrieve.

See also:
set_parameter()

Returns:
NULL if an error occurred or the string "unknown" if this parameter can not be retrieved.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 169

18.27.2.19 virtual const I_metadata∗ get_preface () const [pure virtual]

Returns the preface set of this le (header metadata root).

Returns:
NULL if an error occurred.

18.27.2.20 virtual bool has_external_essence () const [pure virtual]

Indicate whether the le contains at least one external essences or not.

18.27.2.21 virtual generic_list∗ low_level_material () [pure virtual]

Returns the low level materials of this le (usually none) In MXF terms (Low Level Source Package)
These packages are provided for expert end-users and do not contain essence data.

Note:
The list can be freed at any time using free_generic_list(). Returns NULL if an error occurred.

18.27.2.22 virtual bool output_embedded_xml (const char ∗ path) const [pure


virtual]

Returns the XML le embedded within the MXF le (if any). This function is used to retrieve
the XML data found in SONY XDCam les. Most of MXF les do not embed this kind of data;
therefore in most cases this function will be inoperative.

Parameters:
← path Path to the output XML le.

Returns:
true if successful.

18.27.2.23 virtual const unsigned char∗ output_embedded_xml_buer (uint64_t


& size) const [pure virtual]

Returns the XML le embedded within the MXF le (if any). This function is used to retrieve
the XML data found in SONY XDCam les. Most of MXF les do not embed this kind of data;
therefore in most cases this function will be inoperative.

Parameters:
→ size The buer size.

Returns:
A pointer to the buer if successful.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 170

18.27.2.24 virtual generic_list∗ output_material () [pure virtual]

Returns a list of output materials in this le. Gives information on le playout by referencing
data from embedded materials (in MXF terms, Material Package)

Note:
These materials do not embed audiovisual material but instead they reference the I_-
concrete_material returned by embedded_material(). The list can be freed at any time
using free_generic_list()

Returns:
NULL if an error occurred.

18.27.2.25 virtual bool output_xml (const char ∗ path) const [pure virtual]

Dumps the content of the current le's header metadata in an XML le (it includes both descriptive
and structural metadata)

Parameters:
← path Path to the output XML le.

Returns:
true if successful.

18.27.2.26 virtual const unsigned char∗ output_xml_buer (uint64_t & size)


const [pure virtual]

Dumps the content of the current le's header metadata in a buer in XML format and sets its
size. The XML buer includes both descriptive and structural metadata.

Parameters:
→ size The buer size.

Returns:
A pointer to the buer if successful.

18.27.2.27 virtual bool set_external_material (I_concrete_material ∗, const


wchar_t ∗ lename) [pure virtual]

Set an audiovisual material originating from another MXF le to be externally referenced. This
is a helper for single-material MXF le.

See also:
add_external_material

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 171

Note:
This method is not available when the MXF le is being read.

Parameters:
lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the MXF le
will be created.

Returns:
true if successful, false otherwise

18.27.2.28 virtual bool set_material (I_concrete_material ∗) [pure virtual]

Set an audiovisual material to embed in single-material MXF le.

See also:
add_material

Note:
This method is not available when the MXF le is being read.

Returns:
true if successful, false otherwise

18.27.2.29 virtual bool set_parameter (mxf_parameter parameter, const char ∗


value) [pure virtual]
Sets a parameter value.

Parameters:
← parameter The parameter whose value changes.
← value The value to assign to the given parameter.

Returns:
true if successful.

18.27.2.30 virtual bool wait_end_ush_thread () [pure virtual]

This function will return when the ush thread has nished.

Returns:
false if the process was canceled, true otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.27 I_mxf_le Class Reference 172

18.27.2.31 virtual bool waiting_stream (I_essence_stream_task ∗& task,


unsigned int & id) [pure virtual]

When performing an MXF wrapping in active blocking streaming mode, you may use this function
in order to retrieve the task and stream id that the user should send to MXFTk in order to continue
the wrapping process. Do not use this function in active non blocking streaming mode.

Parameters:
→ task Set to the waiting stream task.
→ id Set to the waiting stream id of this stream task.

Returns:
false if no stream is waiting or if mode is dierent.

18.27.2.32 virtual size_t write (const uint8_t ∗ buer, size_t buer_size) [pure
virtual]

Append content to the current mxf stream.

Parameters:
← buer The data to be written.
← buer_size The size of the data to be written.

Warning:
This function will operate in mxf input streaming mode only! This object must have been
created using NewMxfStreamInterface()!

Returns:
the amount of data that could be eectively written. Failure to write all usually means that
the internal buer is full and that you are writing faster than MxfTk can read during the le
decoding. Another reason can be that you try to add more than the actual size of the buer.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.28 I_mxf_le_descriptor Class Reference 173

18.28 I_mxf_le_descriptor Class Reference


Inheritance diagram for I_mxf_le_descriptor:

I_mxf_anc_data_essence_descriptor

I_mxf_generic_data_essence_descriptor I_mxf_vbi_data_essence_descriptor

I_mxf_cdci_picture_essence_descriptor I_mxf_mpeg2_video_descriptor
I_mxf_file_descriptor I_mxf_generic_picture_essence_descriptor

I_mxf_rgba_picture_essence_descriptor

I_mxf_generic_sound_essence_descriptor
I_mxf_wave_audio_essence_descriptor I_mxf_aes3_audio_essence_descriptor

Public Member Functions


ˆ virtual void add_subdescriptor (const I_mxf_subdescriptor ∗)=0
add_subdescriptor

ˆ virtual void set_codec_ul (const char ∗)=0


set_codec_ul

ˆ virtual void set_container_duration (const uint64_t)=0

set_container_duration

ˆ virtual void set_essence_container_ul (const char ∗)=0


set_essence_container_ul

ˆ virtual void set_sample_rate (const uint32_t numerator, const uint32_t denominator)=0

set_sample_rate

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfFileDescriptorInterface(I_mxf_le_descriptor ∗∗descriptor)


ˆ mxf_tk_API bool NewMxfFileDescriptorInterface(I_mxf_le_descriptor ∗∗descriptor)

18.28.1 Detailed Description


File descriptor [SMPTE 377M-2004 Annex D.1]

18.28.2 Member Function Documentation


18.28.2.1 virtual void add_subdescriptor (const I_mxf_subdescriptor ∗) [pure
virtual]

add_subdescriptor

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.28 I_mxf_le_descriptor Class Reference 174

After a sub-descriptor is added to descriptor, sub-descriptor is deleted by descriptor. User won't


have to delete it

18.28.2.2 virtual void set_codec_ul (const char ∗) [pure virtual]

set_codec_ul

18.28.2.3 virtual void set_container_duration (const uint64_t) [pure virtual]

set_container_duration

18.28.2.4 virtual void set_essence_container_ul (const char ∗) [pure virtual]

set_essence_container_ul

18.28.2.5 virtual void set_sample_rate (const uint32_t numerator, const


uint32_t denominator) [pure virtual]

set_sample_rate

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.29 I_mxf_generic_data_essence_descriptor Class Reference 175

18.29 I_mxf_generic_data_essence_descriptor Class Ref-


erence
Inheritance diagram for I_mxf_generic_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

I_mxf_anc_data_essence_descriptor I_mxf_vbi_data_essence_descriptor

Collaboration diagram for I_mxf_generic_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

Public Member Functions


ˆ virtual void set_data_essence_coding_ul (const char ∗)=0
set_data_essence_coding_ul

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfGenericDataEssenceDescriptorInterface(I_mxf_generic_data_-


essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfGenericDataEssenceDescriptorInterface(I_mxf_generic_-
data_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfGenericPictureEssenceDescriptorInterface(I_mxf_generic_-
picture_essence_descriptor ∗∗descriptor)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.29 I_mxf_generic_data_essence_descriptor Class Reference 176

18.29.1 Detailed Description


Generic data essence descriptor [SMPTE 377M-2004 Annex D.4]

18.29.2 Member Function Documentation


18.29.2.1 virtual void set_data_essence_coding_ul (const char ∗) [pure virtual]

set_data_essence_coding_ul

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.30 I_mxf_generic_picture_essence_descriptor Class Reference 177

18.30 I_mxf_generic_picture_essence_descriptor Class


Reference
Inheritance diagram for I_mxf_generic_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_cdci_picture_essence_descriptor I_mxf_rgba_picture_essence_descriptor

I_mxf_mpeg2_video_descriptor

Collaboration diagram for I_mxf_generic_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

Public Member Functions


ˆ virtual void set_active_format_descriptor (const uint8_t)=0

set_active_format_descriptor

ˆ virtual void set_alpha_transparency (const uint8_t)=0

set_alpha_transparency

ˆ virtual void set_aspect_ratio (const uint32_t, const uint32_t)=0

set_aspect_ratio

ˆ virtual void set_capture_gamma_ul (const char ∗)=0


set_capture_gamma_ul

ˆ virtual void set_display_f2_oset (const int32_t)=0

set_display_f2_oset

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.30 I_mxf_generic_picture_essence_descriptor Class Reference 178

ˆ virtual void set_display_height (const uint32_t)=0

set_display_height

ˆ virtual void set_display_width (const uint32_t)=0

set_display_width

ˆ virtual void set_display_x_oset (const int32_t)=0

set_display_x_oset

ˆ virtual void set_display_y_oset (const int32_t)=0

set_display_y_oset

ˆ virtual void set_eld_dominance (const uint8_t)=0

set_eld_dominance

ˆ virtual void set_frame_layout (const uint8_t)=0

set_frame_layout

ˆ virtual void set_image_alignment_oset (const uint32_t)=0

set_image_alignment_oset

ˆ virtual void set_image_end_oset (const uint32_t)=0

set_image_end_oset

ˆ virtual void set_image_start_oset (const uint32_t)=0

set_image_start_oset

ˆ virtual void set_picture_essence_coding_ul (const char ∗)=0


set_picture_essence_coding_ul

ˆ virtual void set_sampled_height (const uint32_t)=0

set_sampled_height

ˆ virtual void set_sampled_width (const uint32_t)=0

set_sampled_width

ˆ virtual void set_sampled_x_oset (const int32_t)=0

set_sampled_x_oset

ˆ virtual void set_sampled_y_oset (const int32_t)=0

set_sampled_y_oset

ˆ virtual void set_signal_standard (const uint8_t)=0

set_signal_standard

ˆ virtual void set_stored_f2_oset (const int32_t)=0

set_stored_f2_oset

ˆ virtual void set_stored_height (const uint32_t)=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.30 I_mxf_generic_picture_essence_descriptor Class Reference 179

set_stored_height

ˆ virtual void set_stored_width (const uint32_t)=0

set_stored_width

ˆ virtual void set_video_line_map (const int32_t, const int32_t)=0

set_video_line_map

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfGenericPictureEssenceDescriptorInterface(I_mxf_generic_-


picture_essence_descriptor ∗∗descriptor)

18.30.1 Detailed Description


Generic picture essence descriptor (Picture essence descriptors) The generic picture essence
descriptor is designed to provide generic parametric information which describes the picture.
[SMPTE 377M-2004 Annex D.2.1]

18.30.2 Member Function Documentation


18.30.2.1 virtual void set_active_format_descriptor (const uint8_t) [pure
virtual]

set_active_format_descriptor

18.30.2.2 virtual void set_alpha_transparency (const uint8_t) [pure virtual]

set_alpha_transparency

18.30.2.3 virtual void set_aspect_ratio (const uint32_t, const uint32_t) [pure


virtual]

set_aspect_ratio

18.30.2.4 virtual void set_capture_gamma_ul (const char ∗) [pure virtual]

set_capture_gamma_ul

18.30.2.5 virtual void set_display_f2_oset (const int32_t) [pure virtual]

set_display_f2_oset

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.30 I_mxf_generic_picture_essence_descriptor Class Reference 180

18.30.2.6 virtual void set_display_height (const uint32_t) [pure virtual]

set_display_height

18.30.2.7 virtual void set_display_width (const uint32_t) [pure virtual]

set_display_width

18.30.2.8 virtual void set_display_x_oset (const int32_t) [pure virtual]

set_display_x_oset

18.30.2.9 virtual void set_display_y_oset (const int32_t) [pure virtual]

set_display_y_oset

18.30.2.10 virtual void set_eld_dominance (const uint8_t) [pure virtual]

set_eld_dominance

18.30.2.11 virtual void set_frame_layout (const uint8_t) [pure virtual]

set_frame_layout

18.30.2.12 virtual void set_image_alignment_oset (const uint32_t) [pure


virtual]

set_image_alignment_oset

18.30.2.13 virtual void set_image_end_oset (const uint32_t) [pure virtual]

set_image_end_oset

18.30.2.14 virtual void set_image_start_oset (const uint32_t) [pure virtual]

set_image_start_oset

18.30.2.15 virtual void set_picture_essence_coding_ul (const char ∗) [pure


virtual]

set_picture_essence_coding_ul

18.30.2.16 virtual void set_sampled_height (const uint32_t) [pure virtual]

set_sampled_height

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.30 I_mxf_generic_picture_essence_descriptor Class Reference 181

18.30.2.17 virtual void set_sampled_width (const uint32_t) [pure virtual]

set_sampled_width

18.30.2.18 virtual void set_sampled_x_oset (const int32_t) [pure virtual]

set_sampled_x_oset

18.30.2.19 virtual void set_sampled_y_oset (const int32_t) [pure virtual]

set_sampled_y_oset

18.30.2.20 virtual void set_signal_standard (const uint8_t) [pure virtual]

set_signal_standard

18.30.2.21 virtual void set_stored_f2_oset (const int32_t) [pure virtual]

set_stored_f2_oset

18.30.2.22 virtual void set_stored_height (const uint32_t) [pure virtual]

set_stored_height

18.30.2.23 virtual void set_stored_width (const uint32_t) [pure virtual]

set_stored_width

18.30.2.24 virtual void set_video_line_map (const int32_t, const int32_t) [pure


virtual]

set_video_line_map

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.31 I_mxf_generic_sound_essence_descriptor Class Reference 182

18.31 I_mxf_generic_sound_essence_descriptor Class


Reference
Inheritance diagram for I_mxf_generic_sound_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

I_mxf_wave_audio_essence_descriptor

I_mxf_aes3_audio_essence_descriptor

Collaboration diagram for I_mxf_generic_sound_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

Public Member Functions


ˆ virtual void set_audio_ref_level (const int8_t)=0

set_audio_ref_level

ˆ virtual void set_audio_sampling_rate (const uint32_t, const uint32_t)=0

set_audio_sampling_rate

ˆ virtual void set_channel_count (const uint32_t)=0

set_channel_count

ˆ virtual void set_dial_norm (const uint32_t)=0

set_dial_norm

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.31 I_mxf_generic_sound_essence_descriptor Class Reference 183

ˆ virtual void set_electro_spatial_formulation (const uint8_t)=0

set_electro_spatial_formulation

ˆ virtual void set_locked_unlocked (const bool)=0

set_locked_unlocked

ˆ virtual void set_quantization_bits (const uint32_t)=0

set_quantization_bits

ˆ virtual void set_sound_essence_compression_ul (const char ∗)=0


set_sound_essence_compression_ul

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfGenericSoundEssenceDescriptorInterface(I_mxf_generic_-


sound_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfGenericSoundEssenceDescriptorInterface(I_mxf_generic_-
sound_essence_descriptor ∗∗descriptor)

18.31.1 Detailed Description


Generic sound essence descriptor [SMPTE 377M-2004 Annex D.3]

18.31.2 Member Function Documentation


18.31.2.1 virtual void set_audio_ref_level (const int8_t) [pure virtual]

set_audio_ref_level

18.31.2.2 virtual void set_audio_sampling_rate (const uint32_t, const uint32_t)


[pure virtual]

set_audio_sampling_rate

18.31.2.3 virtual void set_channel_count (const uint32_t) [pure virtual]

set_channel_count

18.31.2.4 virtual void set_dial_norm (const uint32_t) [pure virtual]

set_dial_norm

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.31 I_mxf_generic_sound_essence_descriptor Class Reference 184

18.31.2.5 virtual void set_electro_spatial_formulation (const uint8_t) [pure


virtual]

set_electro_spatial_formulation

18.31.2.6 virtual void set_locked_unlocked (const bool) [pure virtual]

set_locked_unlocked

18.31.2.7 virtual void set_quantization_bits (const uint32_t) [pure virtual]

set_quantization_bits

18.31.2.8 virtual void set_sound_essence_compression_ul (const char ∗) [pure


virtual]

set_sound_essence_compression_ul

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.32 I_mxf_jpeg2000_picture_subdescriptor Class Reference 185

18.32 I_mxf_jpeg2000_picture_subdescriptor Class Refer-


ence
Inheritance diagram for I_mxf_jpeg2000_picture_subdescriptor:

I_mxf_subdescriptor

I_mxf_jpeg2000_picture_subdescriptor

Collaboration diagram for I_mxf_jpeg2000_picture_subdescriptor:

I_mxf_subdescriptor

I_mxf_jpeg2000_picture_subdescriptor

Public Member Functions


ˆ virtual void add_picture_component_sizing (const uint8_t, const uint8_t, const uint8_-
t)=0

add_picture_component_sizing

ˆ virtual void set_c_siz (const uint16_t)=0

set_c_siz

ˆ virtual void set_coding_style_default (const uint8_t ∗, const uint32_t)=0

set_coding_style_default

ˆ virtual void set_quantization_default (const uint8_t ∗, const uint32_t)=0

set_quantization_default

ˆ virtual void set_r_siz (const uint16_t)=0

set_r_siz

ˆ virtual void set_x_siz (const uint32_t)=0

set_x_siz

ˆ virtual void set_xo_siz (const uint32_t)=0

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.32 I_mxf_jpeg2000_picture_subdescriptor Class Reference 186

set_xo_siz

ˆ virtual void set_xt_siz (const uint32_t)=0

set_xt_siz

ˆ virtual void set_xto_siz (const uint32_t)=0

set_xto_siz

ˆ virtual void set_y_siz (const uint32_t)=0

set_y_siz

ˆ virtual void set_yo_siz (const uint32_t)=0

set_yo_siz

ˆ virtual void set_yt_siz (const uint32_t)=0

set_yt_siz

ˆ virtual void set_yto_siz (const uint32_t)=0

set_yto_siz

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfJpeg2000PictureSubdescriptorInterface(I_mxf_jpeg2000_-


picture_subdescriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfJpeg2000PictureSubdescriptorInterface(I_mxf_jpeg2000_-
picture_subdescriptor ∗∗descriptor)

18.32.1 Detailed Description


Jpeg 2000 subdescriptor. [SMPTE 422M-2006 7.2.3]

18.32.2 Member Function Documentation


18.32.2.1 virtual void add_picture_component_sizing (const uint8_t, const
uint8_t, const uint8_t) [pure virtual]
add_picture_component_sizing

18.32.2.2 virtual void set_c_siz (const uint16_t) [pure virtual]

set_c_siz

18.32.2.3 virtual void set_coding_style_default (const uint8_t ∗, const uint32_t)


[pure virtual]

set_coding_style_default

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.32 I_mxf_jpeg2000_picture_subdescriptor Class Reference 187

18.32.2.4 virtual void set_quantization_default (const uint8_t ∗, const uint32_t)


[pure virtual]

set_quantization_default

18.32.2.5 virtual void set_r_siz (const uint16_t) [pure virtual]

set_r_siz

18.32.2.6 virtual void set_x_siz (const uint32_t) [pure virtual]

set_x_siz

18.32.2.7 virtual void set_xo_siz (const uint32_t) [pure virtual]

set_xo_siz

18.32.2.8 virtual void set_xt_siz (const uint32_t) [pure virtual]

set_xt_siz

18.32.2.9 virtual void set_xto_siz (const uint32_t) [pure virtual]

set_xto_siz

18.32.2.10 virtual void set_y_siz (const uint32_t) [pure virtual]

set_y_siz

18.32.2.11 virtual void set_yo_siz (const uint32_t) [pure virtual]

set_yo_siz

18.32.2.12 virtual void set_yt_siz (const uint32_t) [pure virtual]

set_yt_siz

18.32.2.13 virtual void set_yto_siz (const uint32_t) [pure virtual]

set_yto_siz

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.33 I_mxf_mpeg2_video_descriptor Class Reference 188

18.33 I_mxf_mpeg2_video_descriptor Class Reference


Inheritance diagram for I_mxf_mpeg2_video_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_cdci_picture_essence_descriptor

I_mxf_mpeg2_video_descriptor

Collaboration diagram for I_mxf_mpeg2_video_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_cdci_picture_essence_descriptor

I_mxf_mpeg2_video_descriptor

Public Member Functions


ˆ virtual void set_b_picture_count (const uint16_t)=0

set_b_picture_count

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.33 I_mxf_mpeg2_video_descriptor Class Reference 189

ˆ virtual void set_bit_rate (const uint32_t)=0

set_bit_rate

ˆ virtual void set_closed_gop (const bool)=0

set_closed_gop

ˆ virtual void set_coded_content_type (const uint8_t)=0

set_coded_content_type

ˆ virtual void set_constant_b_frames (const bool)=0

set_constant_b_frames

ˆ virtual void set_identical_gop (const bool)=0

set_identical_gop

ˆ virtual void set_low_delay (const bool)=0

set_low_delay

ˆ virtual void set_max_gop (const uint16_t)=0

set_max_gop

ˆ virtual void set_prole_and_level (const uint8_t)=0

set_prole_and_level

ˆ virtual void set_single_sequence (const bool)=0

set_single_sequence

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfMpeg2VideoDescriptorInterface(I_mxf_mpeg2_video_-


descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfMpeg2VideoDescriptorInterface(I_mxf_mpeg2_video_-
descriptor ∗∗descriptor)

18.33.1 Detailed Description


MPEG video descriptor (Picture essence descriptors) For MPEG-2 long GOP video, the descriptor
below which extends the CDCI descriptor shall be used. [SMPTE 381M-2005 8.1]

18.33.2 Member Function Documentation


18.33.2.1 virtual void set_b_picture_count (const uint16_t) [pure virtual]

set_b_picture_count

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.33 I_mxf_mpeg2_video_descriptor Class Reference 190

18.33.2.2 virtual void set_bit_rate (const uint32_t) [pure virtual]

set_bit_rate

18.33.2.3 virtual void set_closed_gop (const bool) [pure virtual]

set_closed_gop

18.33.2.4 virtual void set_coded_content_type (const uint8_t) [pure virtual]

set_coded_content_type

18.33.2.5 virtual void set_constant_b_frames (const bool) [pure virtual]

set_constant_b_frames

18.33.2.6 virtual void set_identical_gop (const bool) [pure virtual]

set_identical_gop

18.33.2.7 virtual void set_low_delay (const bool) [pure virtual]

set_low_delay

18.33.2.8 virtual void set_max_gop (const uint16_t) [pure virtual]

set_max_gop

18.33.2.9 virtual void set_prole_and_level (const uint8_t) [pure virtual]

set_prole_and_level

18.33.2.10 virtual void set_single_sequence (const bool) [pure virtual]

set_single_sequence

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.34 I_mxf_rgba_picture_essence_descriptor Class Reference 191

18.34 I_mxf_rgba_picture_essence_descriptor Class Ref-


erence
Inheritance diagram for I_mxf_rgba_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_rgba_picture_essence_descriptor

Collaboration diagram for I_mxf_rgba_picture_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_picture_essence_descriptor

I_mxf_rgba_picture_essence_descriptor

Public Member Functions


ˆ virtual void set_alpha_max_ref (const uint32_t)=0

set_alpha_max_ref

ˆ virtual void set_alpha_min_ref (const uint32_t)=0

set_alpha_min_ref

ˆ virtual void set_component_max_ref (const uint32_t)=0

set_component_max_ref

ˆ virtual void set_component_min_ref (const uint32_t)=0

set_component_min_ref

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.34 I_mxf_rgba_picture_essence_descriptor Class Reference 192

ˆ virtual void set_palette (const uint8_t ∗, const uint32_t)=0

set_palette

ˆ virtual void set_palette_layout (const uint8_t ∗, const uint32_t)=0

set_palette_layout

ˆ virtual void set_pixel_layout (const uint8_t ∗, const uint32_t)=0

set_pixel_layout

ˆ virtual void set_scanning_direction (const uint8_t)=0

set_scanning_direction

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfRGBAPictureEssenceDescriptorInterface(I_mxf_rgba_-


picture_essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfRGBAPictureEssenceDescriptorInterface(I_mxf_rgba_-
picture_essence_descriptor ∗∗descriptor)

18.34.1 Detailed Description


RGBA (Red Green Blue Alpha) picture essence descriptor (Picture essence descriptors) This is a
subclass of the generic picture essence descriptor above. It has all the above items with the same
required/optional status with the addition of the new items below. It is intended to describe color
component imagery with transparency. [SMPTE 377M-2004 Annex D.2.3]

18.34.2 Member Function Documentation


18.34.2.1 virtual void set_alpha_max_ref (const uint32_t) [pure virtual]

set_alpha_max_ref

18.34.2.2 virtual void set_alpha_min_ref (const uint32_t) [pure virtual]

set_alpha_min_ref

18.34.2.3 virtual void set_component_max_ref (const uint32_t) [pure virtual]

set_component_max_ref

18.34.2.4 virtual void set_component_min_ref (const uint32_t) [pure virtual]

set_component_min_ref

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.34 I_mxf_rgba_picture_essence_descriptor Class Reference 193

18.34.2.5 virtual void set_palette (const uint8_t ∗, const uint32_t) [pure


virtual]

set_palette

18.34.2.6 virtual void set_palette_layout (const uint8_t ∗, const uint32_t) [pure


virtual]

set_palette_layout

18.34.2.7 virtual void set_pixel_layout (const uint8_t ∗, const uint32_t) [pure


virtual]

set_pixel_layout

18.34.2.8 virtual void set_scanning_direction (const uint8_t) [pure virtual]

set_scanning_direction

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.35 I_mxf_subdescriptor Class Reference 194

18.35 I_mxf_subdescriptor Class Reference


Inheritance diagram for I_mxf_subdescriptor:

I_mxf_subdescriptor

I_mxf_jpeg2000_picture_subdescriptor

Public Member Functions


ˆ virtual subdescriptor_t get_subdescriptor_type () const =0

Returns the sub-descriptor as a subdescriptor_t.

18.35.1 Detailed Description


Generic interface for descriptors plugin mecanism

18.35.2 Member Function Documentation


18.35.2.1 virtual subdescriptor_t get_subdescriptor_type () const [pure
virtual]

Returns the sub-descriptor as a subdescriptor_t.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.36 I_mxf_vbi_data_essence_descriptor Class Reference 195

18.36 I_mxf_vbi_data_essence_descriptor Class Refer-


ence
Inheritance diagram for I_mxf_vbi_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

I_mxf_vbi_data_essence_descriptor

Collaboration diagram for I_mxf_vbi_data_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_data_essence_descriptor

I_mxf_vbi_data_essence_descriptor

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfVbiDataEssenceDescriptorInterface(I_mxf_vbi_data_-


essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfVbiDataEssenceDescriptorInterface(I_mxf_vbi_data_-
essence_descriptor ∗∗descriptor)

18.36.1 Detailed Description


VBI data descriptor (Data essence descriptors) No specic attibutes. Used to specify the VBI
data type. [SMPTE 436M-2006 7.1]

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.37 I_mxf_wave_audio_essence_descriptor Class Reference 196

18.37 I_mxf_wave_audio_essence_descriptor Class Refer-


ence
Inheritance diagram for I_mxf_wave_audio_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

I_mxf_wave_audio_essence_descriptor

I_mxf_aes3_audio_essence_descriptor

Collaboration diagram for I_mxf_wave_audio_essence_descriptor:

I_mxf_file_descriptor

I_mxf_generic_sound_essence_descriptor

I_mxf_wave_audio_essence_descriptor

Public Member Functions


ˆ virtual void set_avg_bps (const uint32_t)=0

set_avg_bps

ˆ virtual void set_block_align (const uint16_t)=0

set_block_align

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.37 I_mxf_wave_audio_essence_descriptor Class Reference 197

ˆ virtual void set_channel_assignment_ul (const char ∗)=0


set_channel_assignment_ul

ˆ virtual void set_peak_channels (const uint32_t)=0

set_peak_channels

ˆ virtual void set_peak_envelope_block_size (const uint32_t)=0

set_peak_envelope_block_size

ˆ virtual void set_peak_envelope_data (const uint8_t ∗, const uint32_t)=0

set_peak_envelope_data

ˆ virtual void set_peak_envelope_format (const uint32_t)=0

set_peak_envelope_format

ˆ virtual void set_peak_envelope_timestamp (const uint64_t)=0

set_peak_envelope_timestamp

ˆ virtual void set_peak_envelope_version (const uint32_t)=0

set_peak_envelope_version

ˆ virtual void set_peak_frames (const uint32_t)=0

set_peak_frames

ˆ virtual void set_peak_of_peaks_position (const uint64_t)=0

set_peak_of_peaks_position

ˆ virtual void set_points_per_peak_value (const uint32_t)=0

set_points_per_peak_value

ˆ virtual void set_sequence_oset (const uint8_t)=0

set_sequence_oset

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeMxfWaveAudioEssenceDescriptorInterface(I_mxf_wave_audio_-


essence_descriptor ∗∗descriptor)
ˆ mxf_tk_API bool NewMxfWaveAudioEssenceDescriptorInterface(I_mxf_wave_audio_-
essence_descriptor ∗∗descriptor)

18.37.1 Detailed Description


Wave Audio Essence Descriptor (Sound essence descriptors) Denes the items in the Wave Audio
Essence Descriptor. [SMPTE 382M-2007 Annex A.1]

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.37 I_mxf_wave_audio_essence_descriptor Class Reference 198

18.37.2 Member Function Documentation


18.37.2.1 virtual void set_avg_bps (const uint32_t) [pure virtual]

set_avg_bps

18.37.2.2 virtual void set_block_align (const uint16_t) [pure virtual]

set_block_align

18.37.2.3 virtual void set_channel_assignment_ul (const char ∗) [pure virtual]

set_channel_assignment_ul

18.37.2.4 virtual void set_peak_channels (const uint32_t) [pure virtual]

set_peak_channels

18.37.2.5 virtual void set_peak_envelope_block_size (const uint32_t) [pure


virtual]

set_peak_envelope_block_size

18.37.2.6 virtual void set_peak_envelope_data (const uint8_t ∗, const uint32_t)


[pure virtual]

set_peak_envelope_data

18.37.2.7 virtual void set_peak_envelope_format (const uint32_t) [pure


virtual]

set_peak_envelope_format

18.37.2.8 virtual void set_peak_envelope_timestamp (const uint64_t) [pure


virtual]

set_peak_envelope_timestamp

18.37.2.9 virtual void set_peak_envelope_version (const uint32_t) [pure


virtual]

set_peak_envelope_version

18.37.2.10 virtual void set_peak_frames (const uint32_t) [pure virtual]

set_peak_frames

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.37 I_mxf_wave_audio_essence_descriptor Class Reference 199

18.37.2.11 virtual void set_peak_of_peaks_position (const uint64_t) [pure


virtual]

set_peak_of_peaks_position

18.37.2.12 virtual void set_points_per_peak_value (const uint32_t) [pure


virtual]

set_points_per_peak_value

18.37.2.13 virtual void set_sequence_oset (const uint8_t) [pure virtual]

set_sequence_oset

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.38 I_op1a_le Class Reference 200

18.38 I_op1a_le Class Reference


Inheritance diagram for I_op1a_le:

I_mxf_file

I_op1a_file

I_evtr_file I_xdcam_dv_file I_xdcam_hd_file I_xdcam_imx_file I_xdcam_proxy_file

Collaboration diagram for I_op1a_le:

I_mxf_file

I_op1a_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp1aFileInterface(I_op1a_le ∗∗)


ˆ mxf_tk_API bool NewOp1aFileInterface(I_op1a_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp1aStreamInterface(I_op1a_le ∗∗, I_output_mxf_stream_task
∗task)
ˆ mxf_tk_API bool NewOpZeroFileInterface(I_op1a_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOpZeroStreamInterface(I_op1a_le ∗∗, I_output_mxf_stream_-
task ∗task)

18.38.1 Detailed Description


This class should be used in order to create Op1a MXF le. Op1a MXF le contain a single
I_concrete_material played as is.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.38 I_op1a_le Class Reference 201

18.38.2 Friends And Related Function Documentation


18.38.2.1 mxf_tk_API bool FreeOp1aFileInterface(I_op1a_le ∗∗) [related]

Frees the specied op1a_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.38.2.2 mxf_tk_API bool NewOp1aFileInterface(I_op1a_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op1a_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.38.2.3 mxf_tk_API bool NewOp1aStreamInterface(I_op1a_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op1a_le interface. This function must be called when writing an
Op1a le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

18.38.2.4 mxf_tk_API bool NewOpZeroFileInterface(I_op1a_le ∗∗, const char


∗ lename) [related]

Retrieves a pointer on an I_op1a_le interface. OpZero les are a specialization of Op1a les
containing a single video or audio track as well as partitioning properties adjusted to enable play
while record. These les are usually recognized by Omneon servers. Note that the concrete
material that will be added to the op1a (opzero) le should have been wrapped using the opzero
wrapping mode.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.38 I_op1a_le Class Reference 202

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.38.2.5 mxf_tk_API bool NewOpZeroStreamInterface(I_op1a_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op1a_le interface. This function must be called when writing an
Op1a le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.). OpZero
les are a specialization of Op1a les containing a single video or audio track as well as partitioning
properties adjusted to enable play while record. These les are usually recognized by Omneon
servers. Note that the concrete material that will be added to the op1a (opzero) le should have
been wrapped using the opzero wrapping mode.

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.39 I_op1b_le Class Reference 203

18.39 I_op1b_le Class Reference


Inheritance diagram for I_op1b_le:

I_mxf_file

I_op1b_file

Collaboration diagram for I_op1b_le:

I_mxf_file

I_op1b_file

Related Functions
(Note that these are not member functions.)

ˆ ∗∗)
mxf_tk_API bool FreeOp1bFileInterface(I_op1b_le
ˆ ∗∗, const char ∗lename)
mxf_tk_API bool NewOp1bFileInterface(I_op1b_le
ˆ mxf_tk_API bool NewOp1bStreamInterface(I_op1b_le ∗∗, I_output_mxf_stream_task
∗task)

18.39.1 Detailed Description


This class should be used in order to create Op1b MXF le. Op1b MXF les contain several
I_concrete_material that will be played simultaneously. Omneon les with external references
are usually built using an Op1b le referencing raw media les or OpZero MXF les.

18.39.2 Friends And Related Function Documentation


18.39.2.1 mxf_tk_API bool FreeOp1bFileInterface(I_op1b_le ∗∗) [related]

Frees the specied op1b_le interface.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.39 I_op1b_le Class Reference 204

Returns:
true if the deallocation succeeded, false otherwise.

18.39.2.2 mxf_tk_API bool NewOp1bFileInterface(I_op1b_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op1b_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.39.2.3 mxf_tk_API bool NewOp1bStreamInterface(I_op1b_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op1b_le interface. This function must be called when writing an
Op1b le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.40 I_op1c_le Class Reference 205

18.40 I_op1c_le Class Reference


Inheritance diagram for I_op1c_le:

I_mxf_file

I_op1c_file

Collaboration diagram for I_op1c_le:

I_mxf_file

I_op1c_file

Public Member Functions


ˆ virtual bool add_external_material_track (I_concrete_material ∗, I_concrete_track ∗,
const wchar_t ∗)=0
ˆ virtual bool add_material_track (I_concrete_material ∗, I_concrete_track ∗)=0
ˆ virtual bool new_generic_material ()=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp1cFileInterface(I_op1c_le ∗∗)


ˆ mxf_tk_API bool NewOp1cFileInterface(I_op1c_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp1cStreamInterface(I_op1c_le ∗∗, I_output_mxf_stream_task
∗task)

18.40.1 Detailed Description


This class should be used in order to create Op1c MXF le. Op1c MXF les contain several output
material (I_generic_material). Each of them is built as a collection of I_concrete_material;s

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.40 I_op1c_le Class Reference 206

tracks that will be played simultaneously. It can be seen as a collection of Op1b les.

18.40.2 Member Function Documentation


18.40.2.1 virtual bool add_external_material_track (I_concrete_material ∗,
I_concrete_track ∗, const wchar_t ∗) [pure virtual]

Adds the specied concrete track of an audiovisual material originating from another MXF le
to be externally referenced. When calling this function the referenced MXF le will be added to
the list of external references for this Op1c le. The Op1c le will contain a copy of the concrete
material but will not embed the audiovisual material contained in this material. The current
output material will be updated after each call to this function.

Parameters:
lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the Op1c le
will be created

18.40.2.2 virtual bool add_material_track (I_concrete_material ∗,


I_concrete_track ∗) [pure virtual]

Adds the specied concrete track of an audiovisual material that will be embedded in the Op1c
le. The current output material will be updated after each call to this function.

Returns:
true if successful, false otherwise.

18.40.2.3 virtual bool new_generic_material () [pure virtual]

Creates a new generic material that will be added to the list of output material. All the following
calls to add_material_track() and add_external_material_track() will add an output track to
the newly created generic material.

Returns:
true if successful, false otherwise.

18.40.3 Friends And Related Function Documentation


18.40.3.1 mxf_tk_API bool FreeOp1cFileInterface(I_op1c_le ∗∗) [related]

Frees an I_op1c_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.40 I_op1c_le Class Reference 207

18.40.3.2 mxf_tk_API bool NewOp1cFileInterface(I_op1c_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op1c_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.40.3.3 mxf_tk_API bool NewOp1cStreamInterface(I_op1c_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op1c_le interface. This function must be called when writing an
Op1c le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.41 I_op2a_le Class Reference 208

18.41 I_op2a_le Class Reference


Inheritance diagram for I_op2a_le:

I_mxf_file

I_op2a_file

Collaboration diagram for I_op2a_le:

I_mxf_file

I_op2a_file

Public Member Functions


ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp2aFileInterface(I_op2a_le∗∗)


ˆ mxf_tk_API bool NewOp2aFileInterface(I_op2a_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp2aStreamInterface(I_op2a_le ∗∗, I_output_mxf_stream_task
∗task)

18.41.1 Detailed Description


This class should be used in order to create Op2a MXF les. Op2a MXF les contain several
I_concrete_material that will be played sequentially.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.41 I_op2a_le Class Reference 209

18.41.2 Member Function Documentation


18.41.2.1 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

18.41.3 Friends And Related Function Documentation


18.41.3.1 mxf_tk_API bool FreeOp2aFileInterface(I_op2a_le ∗∗) [related]

Frees the specied op2a_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.41.3.2 mxf_tk_API bool NewOp2aFileInterface(I_op2a_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op2a_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.41.3.3 mxf_tk_API bool NewOp2aStreamInterface(I_op2a_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op2a_le interface. This function must be called when writing an
Op2a le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.41 I_op2a_le Class Reference 210

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.42 I_op2b_le Class Reference 211

18.42 I_op2b_le Class Reference


Inheritance diagram for I_op2b_le:

I_mxf_file

I_op2b_file

Collaboration diagram for I_op2b_le:

I_mxf_file

I_op2b_file

Public Member Functions


ˆ virtual bool new_multiplexed_material ()=0
ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ ∗∗)
mxf_tk_API bool FreeOp2bFileInterface(I_op2b_le
ˆ ∗∗, const char ∗lename)
mxf_tk_API bool NewOp2bFileInterface(I_op2b_le
ˆ mxf_tk_API bool NewOp2bStreamInterface(I_op2b_le ∗∗, I_output_mxf_stream_task
∗task)

18.42.1 Detailed Description


This class should be used in order to create Op2b MXF les. Op2b MXF les contain several sets
of I_concrete_material played simultaneously. The sets are then played sequentially. This is a
combination of the operational pattern 1b and 2a.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.42 I_op2b_le Class Reference 212

18.42.2 Member Function Documentation


18.42.2.1 virtual bool new_multiplexed_material () [pure virtual]

Notify to MXFTk that the next concrete material added to this le will be in a new set of ganged
material. For instance, in order to create the following Op2b le where A, B, C, D, E and F
designate concrete material you should perform the following calls:

Output Material:

ˆ Track1: A followed by B followed by C

ˆ Track2: D followed by E followed by F

MXFTk calls:

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, A)

ˆ add_material(concrete_material, D)

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, B)

ˆ add_material(concrete_material, E)

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, C)

ˆ add_material(concrete_material, F)

Note:
Each multiplexed concrete material should have the same duration.

18.42.2.2 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.42 I_op2b_le Class Reference 213

18.42.3 Friends And Related Function Documentation


18.42.3.1 mxf_tk_API bool FreeOp2bFileInterface(I_op2b_le ∗∗) [related]

Frees the specied op2b_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.42.3.2 mxf_tk_API bool NewOp2bFileInterface(I_op2b_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op2b_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.42.3.3 mxf_tk_API bool NewOp2bStreamInterface(I_op2b_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op2b_le interface. This function must be called when writing an
Op2b le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.43 I_op2c_le Class Reference 214

18.43 I_op2c_le Class Reference


Inheritance diagram for I_op2c_le:

I_mxf_file

I_op2c_file

Collaboration diagram for I_op2c_le:

I_mxf_file

I_op2c_file

Public Member Functions


ˆ virtual bool add_external_material_track (I_concrete_material ∗, I_concrete_track ∗,
const wchar_t ∗lename)=0
ˆ virtual bool add_material_track (I_concrete_material ∗, I_concrete_track ∗)=0
ˆ virtual bool new_generic_material ()=0
ˆ virtual bool new_multiplexed_track ()=0
ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp2cFileInterface(I_op2c_le ∗∗)


ˆ mxf_tk_API bool NewOp2cFileInterface(I_op2c_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp2cStreamInterface(I_op2c_le ∗∗, I_output_mxf_stream_task
∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.43 I_op2c_le Class Reference 215

18.43.1 Detailed Description


This class should be used in order to create Op2c MXF les. Op2c MXF les contain several
output material (I_generic_material). Each of them contains several sets of I_concrete_material
played simultaneously. The sets are then played sequentially. It can be seen as a collection of
Op2b les.

18.43.2 Member Function Documentation


18.43.2.1 virtual bool add_external_material_track (I_concrete_material ∗,
I_concrete_track ∗, const wchar_t ∗ lename) [pure virtual]

Adds an audiovisual material originating from another MXF le to be externally referenced. When
calling this function the referenced MXF le will be added to the list of external references for
this Op2b le. The Op2b le will contain a copy of the concrete material but will not embed the
audiovisual material contained in this material. There is no limit to the number of I_concrete_-
material that can be added to an Op2b le. The current output material will be updated after
each call to this function.

Parameters:
lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the Op1a le
will be created.

Returns:
true if successful, false otherwise.

18.43.2.2 virtual bool add_material_track (I_concrete_material ∗,


I_concrete_track ∗) [pure virtual]

Adds the concrete track of an audiovisual material that will be embedded in the Op2c le. The
current output material will be updated after each call to this function.

Returns:
true if successful, false otherwise.

18.43.2.3 virtual bool new_generic_material () [pure virtual]

Creates a new generic material that will be added to the list of output material. All the following
calls to add_material_track() and add_external_material_track() will add an output track to
the newly created generic material.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.43 I_op2c_le Class Reference 216

18.43.2.4 virtual bool new_multiplexed_track () [pure virtual]

Notify to MXFTk that the next concrete material added to this le will be in a new set of ganged
material. For instance, in order to create the following Op2b le where A, B, C, D, E and F
designate concrete material you should perform the following calls:

Output Material:

ˆ Track1: A followed by B followed by C

ˆ Track2: D followed by E followed by F

MXFTk calls:

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, A)

ˆ add_material(concrete_material, D)

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, B)

ˆ add_material(concrete_material, E)

ˆ new_multiplexed_material()

ˆ add_material(concrete_material, C)

ˆ add_material(concrete_material, F)

The process is repeated for each output material to be created.

Note:
Each multiplexed concrete material should have the same duration.

18.43.2.5 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.43 I_op2c_le Class Reference 217

18.43.3 Friends And Related Function Documentation


18.43.3.1 mxf_tk_API bool FreeOp2cFileInterface(I_op2c_le ∗∗) [related]

Frees the specied op2b_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.43.3.2 mxf_tk_API bool NewOp2cFileInterface(I_op2c_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op2c_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.43.3.3 mxf_tk_API bool NewOp2cStreamInterface(I_op2c_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op2c_le interface. This function must be called when writing an
Op2c le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.44 I_op3a_le Class Reference 218

18.44 I_op3a_le Class Reference


Inheritance diagram for I_op3a_le:

I_mxf_file

I_op3a_file

Collaboration diagram for I_op3a_le:

I_mxf_file

I_op3a_file

Public Member Functions


ˆ virtual bool add_external_material (I_concrete_material ∗, I_timecode ∗tc_in, I_-
timecode ∗tc_out, const wchar_t ∗lename)=0
ˆ virtual bool add_material (I_concrete_material ∗, I_timecode ∗tc_in, I_timecode ∗tc_-
out)=0
ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp3aFileInterface(I_op3a_le ∗∗)


ˆ mxf_tk_API bool NewOp3aFileInterface(I_op3a_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp3aStreamInterface(I_op3a_le ∗∗, I_output_mxf_stream_task
∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.44 I_op3a_le Class Reference 219

18.44.1 Detailed Description


This class should be used in order to create Op3a MXF les. Op3a MXF les contain several
tracks cut from various I_concrete_material's tracks that will be played sequentially.

18.44.2 Member Function Documentation


18.44.2.1 virtual bool add_external_material (I_concrete_material ∗,
I_timecode ∗ tc_in, I_timecode ∗ tc_out, const wchar_t ∗ lename)
[pure virtual]

Adds an audiovisual originating from another MXF le to be externally referenced. When calling
this function the referenced MXF le will be added to the list of external references for this Op3a
le. The Op3a le will contain a copy of the concrete material but will not embed the audiovisual
material contained in this material. There is no limit to the number of I_concrete_material that
can be added to an Op3a le. The current output material will be updated after each call to this
function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the Op1a le
will be created.

Returns:
true if successful, false otherwise.

18.44.2.2 virtual bool add_material (I_concrete_material ∗, I_timecode ∗ tc_in,


I_timecode ∗ tc_out) [pure virtual]

Adds an audiovisual material to embed in the Op3a le. There is no limit to the number of
I_concrete_material that can be added to an Op3a le. The current output material will be
updated after each call to this function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.44 I_op3a_le Class Reference 220

Returns:
true if successful, false otherwise.

18.44.2.3 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

18.44.3 Friends And Related Function Documentation


18.44.3.1 mxf_tk_API bool FreeOp3aFileInterface(I_op3a_le ∗∗) [related]

Frees the specied I_op3a_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.44.3.2 mxf_tk_API bool NewOp3aFileInterface(I_op3a_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op3a_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.44.3.3 mxf_tk_API bool NewOp3aStreamInterface(I_op3a_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op3a_le interface. This function must be called when writing an
Op3a le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.44 I_op3a_le Class Reference 221

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.45 I_op3b_le Class Reference 222

18.45 I_op3b_le Class Reference


Inheritance diagram for I_op3b_le:

I_mxf_file

I_op3b_file

Collaboration diagram for I_op3b_le:

I_mxf_file

I_op3b_file

Public Member Functions


ˆ virtual bool add_external_material_track (I_concrete_material ∗, I_concrete_track ∗,
I_timecode ∗tc_in, I_timecode ∗tc_out, const wchar_t∗lename)=0
ˆ virtual bool add_material_track (I_concrete_material ∗, I_concrete_track ∗, I_timecode
∗tc_in, I_timecode ∗tc_out)=0
ˆ virtual bool new_generic_material_track ()=0
ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp3bFileInterface(I_op3b_le∗∗)


ˆ mxf_tk_API bool NewOp3bFileInterface(I_op3b_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewOp3bStreamInterface(I_op3b_le ∗∗, I_output_mxf_stream_task
∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.45 I_op3b_le Class Reference 223

18.45.1 Detailed Description


This class should be used in order to create Op3b MXF les. Op3b MXF les contain several
sets of tracks (cut from various I_concrete_material's tracks) played simultaneously. The sets are
then played sequentially.

18.45.2 Member Function Documentation


18.45.2.1 virtual bool add_external_material_track (I_concrete_material ∗,
I_concrete_track ∗, I_timecode ∗ tc_in, I_timecode ∗ tc_out, const
wchar_t ∗ lename) [pure virtual]

Adds the concrete track of an audiovisual material originating from another MXF le to be exter-
nally referenced. When calling this function the referenced MXF le will be added to the list of
external references for this Op3b le. The Op3b le will contain a copy of the concrete material
but will not embed the audiovisual material contained in this material. There is no limit to the
number of I_concrete_material that can be added to an Op3b le. The current output material
will be updated after each call to this function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the Op1a le
will be created.

Returns:
true if successful, false otherwise.

18.45.2.2 virtual bool add_material_track (I_concrete_material ∗,


I_concrete_track ∗, I_timecode ∗ tc_in, I_timecode ∗ tc_out) [pure
virtual]

Adds the concrete track of an audiovisual material to embed in the Op3b le. It is added to the
current set of multiplexed material. There is no limit to the number of I_concrete_material that
can be added to an Op3b le. The current output material will be updated after each call to this
function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.45 I_op3b_le Class Reference 224

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

Returns:
true if successful, false otherwise.

18.45.2.3 virtual bool new_generic_material_track () [pure virtual]

Noties MXFTk that a new track should be created for the current generic material. The next
portions of concrete material's tracks will be added to this new track. For instance, in order to
create the following Op3b le where A, B, C, D, E and F designate concrete material tracks you
should perform the following calls:

Output Material:

ˆ Track1: A[tc_inA, tc_outA] followed by B[tc_inB, tc_outB] followed by C[tc_inC, tc_-


outC]

ˆ Track2: D[tc_inD, tc_outD] followed by E[tc_inE, tc_outE] followed by F[tc_inF, tc_-


outF]

MXFTk calls:

ˆ new_generic_material_track()

ˆ add_material_track(concrete_material, A, tcin_A, tcout_A)

ˆ add_material_track(concrete_material, B, tcin_B, tcout_B)

ˆ add_material_track(concrete_material, C, tcin_C, tcout_C)

ˆ new_generic_material_track()

ˆ add_material_track(concrete_material, D, tcin_D, tcout_D)

ˆ add_material_track(concrete_material, E, tcin_E, tcout_E)

ˆ add_material_track(concrete_material, F, tcin_F, tcout_F)

Note:
the concrete tracks don't need to come from the same concrete material.

18.45.2.4 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.45 I_op3b_le Class Reference 225

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

18.45.3 Friends And Related Function Documentation


18.45.3.1 mxf_tk_API bool FreeOp3bFileInterface(I_op3b_le ∗∗) [related]

Frees the specied I_op3b_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.45.3.2 mxf_tk_API bool NewOp3bFileInterface(I_op3b_le ∗∗, const char ∗


lename) [related]
Retrieves a pointer on an I_op3b_le interface. Call to ush() will eectively cause the on-disk
writing of the le.

Parameters:
lename The complete path toward the MXF le to be written upon calling of the ush()
function.

Returns:
true if the allocation succeeded, false otherwise.

18.45.3.3 mxf_tk_API bool NewOp3bStreamInterface(I_op3b_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op3b_le interface. This function must be called when writing an
Op3b le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.46 I_op3c_le Class Reference 226

18.46 I_op3c_le Class Reference


Inheritance diagram for I_op3c_le:

I_mxf_file

I_op3c_file

Collaboration diagram for I_op3c_le:

I_mxf_file

I_op3c_file

Public Member Functions


ˆ virtual bool add_external_material_track (I_concrete_material ∗, I_concrete_track ∗,
I_timecode ∗tc_in, I_timecode ∗tc_out, const wchar_t∗lename)=0
ˆ virtual bool add_material_track (I_concrete_material ∗, I_concrete_track ∗, I_timecode
∗tc_in, I_timecode ∗tc_out)=0
ˆ virtual bool new_generic_material ()=0
ˆ virtual bool new_generic_material_track ()=0
ˆ virtual bool set_continuous_decoding (bool)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeOp3cFileInterface(I_op3c_le ∗∗)


ˆ mxf_tk_API bool NewOp3cStreamInterface(I_op3c_le ∗∗, I_output_mxf_stream_task
∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.46 I_op3c_le Class Reference 227

18.46.1 Detailed Description


This class should be used in order to create Op3c MXF les. Op3c MXF les contain several
output material (I_generic_material). Each of them contains several sets of tracks (cut from
I_concrete_material's tracks) played simultaneously. The sets are then played sequentially. It
can be seen as a collection of Op3b les.

18.46.2 Member Function Documentation


18.46.2.1 virtual bool add_external_material_track (I_concrete_material ∗,
I_concrete_track ∗, I_timecode ∗ tc_in, I_timecode ∗ tc_out, const
wchar_t ∗ lename) [pure virtual]

Adds the concrete track of an audiovisual material originating from another MXF le to be exter-
nally referenced. When calling this function the referenced MXF le will be added to the list of
external references for this Op3c le. The Op3c le will contain a copy of the concrete material
but will not embed the audiovisual material contained in this material. There is no limit to the
number of I_concrete_material that can be added to an Op3c le. The current output material
will be updated after each call to this function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

lename The path toward the referenced MXF le. It can be relative or absolute. However,
you should make sure that the path is correct relatively to the place where the Op1a le
will be created.

Returns:
true if successful, false otherwise.

18.46.2.2 virtual bool add_material_track (I_concrete_material ∗,


I_concrete_track ∗, I_timecode ∗ tc_in, I_timecode ∗ tc_out) [pure
virtual]

Adds the concrete track of an audiovisual material to embed in the Op3c le. It is added to the
current set of multiplexed material. There is no limit to the number of I_concrete_material that
can be added to an Op3c le. The current output material will be updated after each call to this
function.

Parameters:
tc_in The start timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the beginning of the concrete material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.46 I_op3c_le Class Reference 228

tc_out The end timecode of the concrete material's tracks that will be appended to the
generic material. It should be expressed relatively to the time code track of the concrete
material. All the tracks from the concrete material will be considered. If NULL, the
media playout will be from the end of the concrete material.

Returns:
true if successful, false otherwise.

18.46.2.3 virtual bool new_generic_material () [pure virtual]

Creates a new generic material that will be added to the list of output material. All the following
calls to new_generic_material_track() will add an output track to the newly created generic
material.

Returns:
true if successful, false otherwise.

18.46.2.4 virtual bool new_generic_material_track () [pure virtual]

Noties MXFTk that a new track should be created for the current generic material. The next
portions of concrete material's tracks will be added to this new track. For instance, in order to
create the following Op3c le where A, B, C, D, E and F designate concrete material tracks you
should perform the following calls:

Output Material:

ˆ Track1: A[tc_inA, tc_outA] followed by B[tc_inB, tc_outB] followed by C[tc_inC, tc_-


outC]

ˆ Track2: D[tc_inD, tc_outD] followed by E[tc_inE, tc_outE] followed by F[tc_inF, tc_-


outF]

MXFTk calls:

ˆ new_generic_material_track()

ˆ add_material_track(concrete_material, A, tcin_A, tcout_A)

ˆ add_material_track(concrete_material, B, tcin_B, tcout_B)

ˆ add_material_track(concrete_material, C, tcin_C, tcout_C)

ˆ new_generic_material_track()

ˆ add_material_track(concrete_material, D, tcin_D, tcout_D)

ˆ add_material_track(concrete_material, E, tcin_E, tcout_E)

ˆ add_material_track(concrete_material, F, tcin_F, tcout_F)

Note:
the concrete tracks don't need to come from the same concrete material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.46 I_op3c_le Class Reference 229

18.46.2.5 virtual bool set_continuous_decoding (bool) [pure virtual]

You should call this function to tell MXFTk if the concrete material added to the le can be
continuously decoded. "Continuous decoding" means that no special processing is required at the
junction of the concrete material being played. The following examples of les do not allow a
continuous decoding:

ˆ A DV source followed by a MPEG source.

ˆ A mono WAVE source followed by a stereo WAVE source.

ˆ Two MPEG Long GOP sources cut so that a MPEG decoder will not be able to decode some
of the frames.

Returns:
true if successful, false otherwise.

18.46.3 Friends And Related Function Documentation


18.46.3.1 mxf_tk_API bool FreeOp3cFileInterface(I_op3c_le ∗∗) [related]

Frees the specied I_op3c_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.46.3.2 mxf_tk_API bool NewOp3cStreamInterface(I_op3c_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_op3c_le interface. This function must be called when writing an
Op3c le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Parameters:
task This is a class derived by MXFTk user to provide its own implementation to feed the
streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.47 I_opatom_assembler Class Reference 230

18.47 I_opatom_assembler Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual bool parallelize (mxf_le_list ∗list)=0
ˆ virtual bool parallelize (I_opatom_le ∗le_1, I_opatom_le ∗le_2)=0
ˆ virtual bool serialize (I_opatom_le ∗le_1, I_opatom_le ∗le_2)=0
ˆ virtual bool synchronize (mxf_le_list ∗list)=0

18.47.1 Detailed Description


An interface to manipulate several opatom les. When creating opatom les, it provides methods
for parallelizing or serializing opatom les. In that case the generic material of the opatom les
is updated. When reading opatom les, it provides a method for linking the les thanks to their
umid and rebuild the entire generic material structure.

18.47.2 Member Function Documentation


18.47.2.1 virtual bool parallelize (mxf_le_list ∗ list) [pure virtual]

This function parallelizes many op_atom les so that their embedded essence are meant to be
played together.

Parameters:
← list A mxf_le_list pointer

Warning:
The user should provide a list of I_opatom_le that share the same editing. The call to this
function will ensure the correct linkage between I_concrete_material of each OpAtom le. It
enables the I_generic_material of each le to access seamlessly all the I_concrete_material
as if they were in the same le. For instance let's assume we have two OpAtom_1b les and
that the I_generic_material from le1 uses the video track stored in the I_concrete_material
of le2. Before synchronization, the le1 has no reference on the le2 and therefore its I_-
generic_material can not playback the video. However after synchronizing both les, the
same I_generic_material from le1 will become able to playback the video. You may refer to
the example "opatom_unwrapper" that provides a sample code for synchronizing any editing
of OpAtom les. Trying to synchronize les that are not related will cause an error.

Returns:
true if successful

See also:
mxf_le_list, serialize

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.47 I_opatom_assembler Class Reference 231

18.47.2.2 virtual bool parallelize (I_opatom_le ∗ le_1, I_opatom_le ∗ le_2)


[pure virtual]

This function parallelizes two op_atom les so that their embedded essence are meant to be played
together. This is an associative function -> if le1 is parallelized with le2 and le1 is parallelized
with le3 then le2 and le3 are automatically parallelized.

Parameters:
← le_1 A pointer the the rst I_opatom_le to parallelize

← le_2 A pointer the the second I_opatom_le to parallelize

Returns:
true if successful

18.47.2.3 virtual bool serialize (I_opatom_le ∗ le_1, I_opatom_le ∗ le_2)


[pure virtual]

This function serializes two op_atom les so that their embedded essence will be played consecu-
tively on the same track.

Parameters:
← le_1 A pointer the the rst I_opatom_le to serialize

← le_2 A pointer the the second I_opatom_le to serialize

Returns:
true if successful

See also:
mxf_le_list, parallelize

Note:
If we dene + as the symbol for calling the serialize() function, then le1+le2 and then
le2+le3 will cause the three OpAtom les to be played in a sequence le1->le2->le3.
Once two OpAtom les are serialized they share the same I_generic_material and represent
the same editing. Similarly, doing le1+le2 and le1+le3 and then nally le1+le4 will
cause the four les to be played in a sequence and share the same I_generic_material. When
serializing les you must ensure that their I_generic_material share the same track structure
(i.e. you can not serialize a video-only OpAtom le with a sound-only OpAtom le). The
generic material of each OpAtom les being serialized must contain exactly the same number
of video track, audio track, data track and metadata track.

Remarks:
We provide here an example of editing with OpAtom les. You may also refer to the example
"opatom_wrapper" from your installation directory.
Performing:

ˆ Audio_le1//Video_le2 then,

ˆ Audio_le3//Video_le4 then,

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.47 I_opatom_assembler Class Reference 232

ˆ Audio_le1+Audio_le3

will produce an I_generic_material with two tracks:

ˆ Audio Track: embedded audio from le1 followed by embedded audio from le2.

ˆ Video Track: embedded video from le2 followed by embedded video from le4.

It corresponds to the editing of an operational pattern 2b. Therefore the four OpAtom les
are OpAtom_2b les sharing the same generic material.
Furthermore performing :

ˆ Audio_le1+Audio_le3 then,

ˆ Video_le2+Video_le4 then,

ˆ Audio_le1//Video_le2

would have produced exactly the same result.

18.47.2.4 virtual bool synchronize (mxf_le_list ∗ list) [pure virtual]

This function synchronizes several opatom les that were created together. In order to get the full
fonctionality from the opatom structure, you should call this function rst before manipulating
each le individually.

Parameters:
← list A mxf_le_list pointer

Returns:
true if successful.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.48 I_opatom_le Class Reference 233

18.48 I_opatom_le Class Reference


Inheritance diagram for I_opatom_le:

I_mxf_file

I_opatom_file

I_avid_opatom_file I_dcp1_file

Collaboration diagram for I_opatom_le:

I_mxf_file

I_opatom_file

Public Member Functions


ˆ virtual I_umid ∗ get_concrete_material_umid () const =0

18.48.1 Detailed Description


An interface to create les following the OpAtom pattern requirement An OpAtom le contains
a single track, therefore if several tracks are to be recorded several OpAtom les will be written
when calling ush()

18.48.2 Member Function Documentation


18.48.2.1 virtual I_umid∗ get_concrete_material_umid () const [pure virtual]

Returns the umid uniquely identifying the essence embedded in this opatom. Returned pointer
must be destroyed by the API user (FreeUmidInterface).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.48 I_opatom_le Class Reference 234

Returns:
NULL if an error occurred.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.49 I_output_mxf_stream_task Class Reference 235

18.49 I_output_mxf_stream_task Class Reference


Public Member Functions
ˆ virtual void data_to_read (const uint8_t ∗buer, size_t buer_size)=0
ˆ virtual bool seekable ()
ˆ virtual uint64_t seekpos_request (uint64_t position)
ˆ virtual ∼I_output_mxf_stream_task ()

18.49.1 Detailed Description


This class should be used when the MXF le being created needs to be retrieved on-the-y. This
can be the case, when sending the MXF stream to an MXF videotape recorder. MXFTk user is
entitled to derive this class in order to provide an implementation for the corresponding streaming
device. Calls to this class will be performed only during the I_mxf_le::ush() process.

18.49.2 Constructor & Destructor Documentation


18.49.2.1 virtual ∼I_output_mxf_stream_task () [virtual]

Destructor.

18.49.3 Member Function Documentation


18.49.3.1 virtual void data_to_read (const uint8_t ∗ buer, size_t buer_size)
[pure virtual]

This function is called by MXFTk to notify that its internal output buer is lled and that the
MXF data is ready to be sent to the streaming device.

Parameters:
← buer A pointer on the MXF buer. This is NULL when the end of the MXF stream has
been reached and no more data will be sent. MXFTk user should not free this buer!

→ buer_size The number of bytes to be read from this buer.

Note:
After exiting this function, MXFTk always assume that all the data was read. Therefore, if
your streaming device is not ready to receive this data you should make use of a mutex to
stop the current process as long as necessary.

18.49.3.2 virtual bool seekable () [virtual]

This function is called by MXFTk to know if it will be allowed to seek in the output MXF
stream.

Note:
When wrapping an OpZero MXF le, it is mandatory to set the stream as seekable or the
creation of the le will be impossible. Other types of MXF les do not necessarily require a

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.49 I_output_mxf_stream_task Class Reference 236

seekable stream but allowing seek operations can help to produce closed and complete MXF
les.

18.49.3.3 virtual uint64_t seekpos_request (uint64_t position) [virtual]

This function will be called whenever the API requires to move to a new location on the mxf
stream. Implement this function if you dened the stream as seekable. Reimplement this function
if you are creating an OpZero le.

Parameters:
← position The absolute seek position from the beginning of the stream.

Returns:
the new location (should be equal to the input parameter).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.50 I_property Class Reference 237

18.50 I_property Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual bool free_metadata_sets (metadata_list ∗) const =0
ˆ virtual metadata_list ∗ get_dic_metadata_sets () const =0
ˆ virtual label_c get_label () const =0
ˆ template<typename T >
bool get_value (size_t index, T &t) const
ˆ template<typename T >
bool get_value (T &t) const
ˆ virtual const I_value ∗ get_value () const =0
ˆ template<typename T >
T get_value_as (size_t index) const
ˆ template<typename T >
T get_value_as () const

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreePropertyInterface(I_property ∗∗)


ˆ mxf_tk_API bool NewPropertyInterface(I_property ∗∗, label_c label, const I_value
∗value)

18.50.1 Detailed Description


This class represents a property from a metadata tree. Is has a label and a value. The value can be
a reference to a metadata enabling to create an arborescence similar to the MXF data structure.

18.50.2 Member Function Documentation


18.50.2.1 virtual bool free_metadata_sets (metadata_list ∗) const [pure virtual]

Frees metadata list returned by get_dic_metatada_sets. Returns true if successful, false other-
wise.

18.50.2.2 virtual metadata_list∗ get_dic_metadata_sets () const [pure virtual]

Returns a list of all the possible metadata sets that can be used has a value of this property. If
the property is not a set, the list will be empty.

Returns:
the list of metadata sets. This data MUST be deleted using free_metadata_sets(). Returns
NULL if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.50 I_property Class Reference 238

18.50.2.3 virtual label_c get_label () const [pure virtual]

Gets the property's label.

Returns:
"" if an error occured.

18.50.2.4 bool get_value (size_t index, T & t) const

Helper method to get the item at the specied index in an array value.

See also:
get_value.

18.50.2.5 bool get_value (T & t) const

Helper method to get the value as the specied type.

See also:
get_value.

18.50.2.6 virtual const I_value∗ get_value () const [pure virtual]

Gets the value.

Returns:
NULL if an error occured.

18.50.2.7 T get_value_as (size_t index) const


Helper method to get the item at the specied index in an array value.

18.50.2.8 T get_value_as () const

Helper method to get the value as the specied type.

See also:
get_value.

18.50.3 Friends And Related Function Documentation


18.50.3.1 mxf_tk_API bool FreePropertyInterface(I_property ∗∗) [related]

Frees an I_property interface. The I_value interface that was used to create this property (I_-
value parameter of NewPropertyInterface()) is not destroyed upon calling of this function. It is
the API user responsibility to free it using FreeValueInterface(). Returns false if the deallocation
failed.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.50 I_property Class Reference 239

Returns:
true if the deallocation succeeded, false otherwise.

18.50.3.2 mxf_tk_API bool NewPropertyInterface(I_property ∗∗, label_c label,


const I_value ∗ value) [related]

Retrieves a pointer on an I_property interface.

Parameters:
← label A label identifying the metadata according to the naming convention of the dictio-
nary (DMS1:ClipFramework for instance).

← value A reference to the property's value. This one should not be destroyed as long as
the new property has not been deleted.

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.51 I_source_clip Class Reference 240

18.51 I_source_clip Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_track_item.

Public Member Functions


ˆ virtual uint64_t current_eu_size ()=0
ˆ virtual int64_t get_current_eu ()=0
ˆ virtual I_timecode ∗ get_current_timecode ()=0
ˆ virtual int64_t get_duration () const =0
ˆ virtual int64_t get_end_position () const =0
ˆ virtual I_timecode ∗ get_end_timecode () const =0
ˆ virtual I_generic_material ∗ get_referenced_material () const =0
ˆ virtual const I_umid ∗ get_referenced_material_umid () const =0
ˆ virtual I_track ∗ get_referenced_track () const =0
ˆ virtual int64_t get_start_position () const =0
ˆ virtual I_timecode ∗ get_start_timecode () const =0
ˆ virtual size_t read_eu (uint8_t ∗buer, size_t buer_size)=0
ˆ virtual bool seek_eu (int64_t)=0
ˆ virtual bool seek_next_eu ()=0
ˆ virtual bool seek_previous_eu ()=0

18.51.1 Detailed Description


This class holds editing information for audio, video or data tracks. No metadata can be found
in an I_source_clip. The play out of a track is described by a succession of I_source_clip. An
I_source_clip references data contained in an I_concrete_track. A source_clip can be found
only on essence tracks (picture, sound, data). [TODO] I_source_clip data access, page 58

18.51.2 Member Function Documentation


18.51.2.1 virtual uint64_t current_eu_size () [pure virtual]

Returns the size of the current edit unit from the referenced track. This function can be called to
set the size of the buer used when calling read_eu().

Returns:
UINT64_ERROR if the size is unknown (usually when the current edit unit is not valid).

18.51.2.2 virtual int64_t get_current_eu () [pure virtual]

Returns the current edit unit oset relative to the origin of the referenced track (not relative to
the origin of the track containing this source clip).

Returns:
INT64_ERROR if the current edit unit is invalid. The returned value is comprised between
get_start_position() and get_end_position().

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.51 I_source_clip Class Reference 241

18.51.2.3 virtual I_timecode∗ get_current_timecode () [pure virtual]

Returns the timecode corresponding to the current edit unit. This is a timecode relative to the
track containing this source clip (not relative to the referenced track).

Returns:
The current timecode. It is always comprised between get_start_timecode() and get_end_-
timecode(). The returned pointer must be deleted by MXFTk user. Return NULL if the
current timecode could not be retrieved.

18.51.2.4 virtual int64_t get_duration () const [pure virtual]

Retrieves the duration of this I_source_clip (measured in edit units of the track containing this
source clip). The sum of the duration of each source clip denes the total duration of the track.
An edit unit is the time unit for the current track (usually a frame or a eld for a video track).
Please refer to [377M] for further information. The edit rate is the number of edit units per second.
Note that the track containing the source clip may have an edit rate dierent from the referenced
track. Returns -1 if the duration if unknown.

Warning:
If the track containing this source clip has an edit rate dierent from the edit rate of the
referenced track; then start_position + duration != end_position.

18.51.2.5 virtual int64_t get_end_position () const [pure virtual]

Returns the oset of the last edit unit to be read on the referenced track. The oset is relative to
the origin of the referenced track.

Returns:
INT64_ERROR if this information could not be retrieved (notably if the duration of the
source clip is unknown).

18.51.2.6 virtual I_timecode∗ get_end_timecode () const [pure virtual]

Returns the timecode corresponding to the last edit unit of this source clip. This is a timecode
relative to the track containing this source clip (not relative to the referenced track).

Returns:
NULL if this timecode could not be retrieved.

18.51.2.7 virtual I_generic_material∗ get_referenced_material () const [pure


virtual]

Returns a pointer (reference) to the material containing the I_track referenced by get_-
referenced_track().

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.51 I_source_clip Class Reference 242

Returns:
NULL if no material is being referenced or if the material is not in the le. The returned
material can be cast into an I_concrete_material if this source clip is in an I_generic_-
material.

18.51.2.8 virtual const I_umid∗ get_referenced_material_umid () const [pure


virtual]

Returns the Unique Material Identier of the referenced material. This function is particularly
useful when get_referenced_track() returns NULL. If the UMID is not nil, it generally means that
the referenced material is stored in another MXF le (this can notably be the case when reading
OpAtom les). Retrieving the UMID of the missing material may help to locate it in a database
environment.

18.51.2.9 virtual I_track∗ get_referenced_track () const [pure virtual]

Returns a pointer (reference) to the track containing the audiovisual source to be edited on the
current track.

Returns:
NULL if no track is being referenced or if the referenced material is not in the le. The
returned track can be cast into an I_concrete_track if this source clip is in an I_generic_-
material.

18.51.2.10 virtual int64_t get_start_position () const [pure virtual]

Returns the oset of the rst edit unit to be read on the referenced track. The oset is relative
to the origin of the referenced track.

Returns:
INT64_ERROR if this information could not be retrieved.

18.51.2.11 virtual I_timecode∗ get_start_timecode () const [pure virtual]

Returns the timecode corresponding to the rst edit unit of this source clip. This is a timecode
relative to the track containing this source clip (not relative to the referenced track).

Returns:
NULL if this timecode could not be retrieved.

18.51.2.12 virtual size_t read_eu (uint8_t ∗ buer, size_t buer_size) [pure


virtual]

Reads the data from the current edit unit and stores it in the specied buer.

Parameters:
← buer The buer into which the edit unit will be written.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.51 I_source_clip Class Reference 243

← buer_size The size of the buer. Usually, this is set to the size returned by current_-
eu_size(). However, the reading of an edit unit can be split in several calls to read_eu()
with smaller buer sizes if required. For instance if current_eu_size() returns a size of
200000 bytes. Calling read_eu(buer, 200000) or calling twice read_eu(buer, 100000)
will retrieve all the data from the current edit unit.

Returns:
the number of bytes eectively written.

18.51.2.13 virtual bool seek_eu (int64_t) [pure virtual]

Seeks a given edit unit to be read on the referenced track. The edit unit must be comprised
between get_start_position() and get_end_position().

Returns:
true if successful, false if the edit unit can not be reached.

18.51.2.14 virtual bool seek_next_eu () [pure virtual]

Jumps to the next edit unit to be read on the referenced track.

Returns:
true if succcessful, false if the edit unit can not be reached.

18.51.2.15 virtual bool seek_previous_eu () [pure virtual]

Seek the previous edit unit from this source clip.

Returns:
true if succcessful, false if the edit unit can not be reached.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.52 I_system_item Class Reference 244

18.52 I_system_item Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void append_timecode_component (I_timecode_component ∗∗)=0
ˆ virtual I_timecode ∗ get_tc (int64_t edit_unit)=0
ˆ virtual I_timecode ∗ tc_request (int64_t edit_unit)=0
ˆ virtual void use_predened_timecode ()=0
ˆ virtual void use_timecode_from_timecode_material ()=0
ˆ virtual void use_timecode_generator (I_timecode_generator ∗)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeSystemItemInterface(I_system_item ∗∗)


ˆ mxf_tk_API bool NewSystemItemInterface(I_system_item ∗∗)

18.52.1 Detailed Description


System Items are used to dene metadata that is multiplexed with the essences. Its main use is to
store a timecode attached to each video frame. This class lets you retrieve and create the timecode
from the system item. It can be used both for le creation and reading. I_concrete_material
exposes function to get/set a system item.

18.52.2 Member Function Documentation


18.52.2.1 virtual void append_timecode_component (I_timecode_component ∗∗)
[pure virtual]

Call this function when creating a system item congured in "predened timecode" mode. This
function appends a timecode component to the timecode components already set. This mechanism
lets you create discontinuous timecodes however the timecode components you provide do not
necessarily need to dene a discontinuity. For performance reason it is better to call this function
before writing the frame with the corresponding timecode.

18.52.2.2 virtual I_timecode∗ get_tc (int64_t edit_unit) [pure virtual]

Call this function when reading the system item of an I_mxf_le. It will return the timecode
corresponding to the specied edit unit. Contrary to timecode material from the header metadata,
accessing the timecode from the system item requires to parse the essences contained in the le
and may be more time-consuming.

Parameters:
edit_unit The edit number.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.52 I_system_item Class Reference 245

Returns:
the timecode for the corresponding edit unit. Returns NULL if there's no timecode on this
system item. The returned timecode must be freed by the user using FreeTimecodeInterface();

18.52.2.3 virtual I_timecode∗ tc_request (int64_t edit_unit) [pure virtual]

This function will be called when creating a system item congured in "timecode generator" mode.

Parameters:
edit_unit The edit number from the video track of the concrete material.

See also:
use_timecode_generator

18.52.2.4 virtual void use_predened_timecode () [pure virtual]

Call this function when creating a system item. This function must be called before calling the
function append_timecode_component. The predened mode lets you denes the system item as
a series of timecode components. Note that in streaming mode all the timecode components do
not need to be set before launching the process. However, if you fail to provide the timecode of
each frame in time this may degrade the performances.

18.52.2.5 virtual void use_timecode_from_timecode_material () [pure virtual]

Call this function so that the timecode from the system item remains the same as the one from
the I_timecode_material attached to the current I_concrete_material.

18.52.2.6 virtual void use_timecode_generator (I_timecode_generator ∗) [pure


virtual]

Specify a timecode generator to provides timecode on-the-y during the wrapping.

18.52.3 Friends And Related Function Documentation


18.52.3.1 mxf_tk_API bool FreeSystemItemInterface(I_system_item ∗∗)
[related]

Frees the specied system item interface.

Returns:
true is the deallocation succeeded, false otherwise.

Warning:
User must not free a system item already attached to an I_concrete_material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.52 I_system_item Class Reference 246

18.52.3.2 mxf_tk_API bool NewSystemItemInterface(I_system_item ∗∗)


[related]

Creates a system item interface.

Returns:
true is the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.53 I_timecode Class Reference 247

18.53 I_timecode Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual bool add (uint64_t)=0
ˆ virtual int compare (I_timecode ∗) const =0
ˆ bool equal_to (I_timecode ∗t) const
ˆ virtual bool get_drop_frame () const =0
ˆ virtual uint8_t get_frame () const =0
ˆ virtual uint64_t get_frame_count ()=0
ˆ virtual uint16_t get_frame_rate () const =0
ˆ virtual uint8_t get_hour () const =0
ˆ virtual uint8_t get_minute () const =0
ˆ virtual uint8_t get_second () const =0
ˆ virtual const char ∗ get_time () const =0
ˆ bool greater_than (I_timecode ∗t) const
ˆ virtual bool next ()=0
ˆ virtual bool previous ()=0
ˆ virtual void set_hour (uint8_t)=0
ˆ virtual void set_time (const char ∗)=0
ˆ bool smaller_than (I_timecode ∗t) const
ˆ virtual bool sub (uint64_t)=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool CopyTimecodeInterface(I_timecode ∗∗, const I_timecode ∗)


ˆ mxf_tk_API bool FreeTimecodeInterface(I_timecode ∗∗)
ˆ mxf_tk_API bool NewTimecodeInterface(I_timecode ∗∗, const char ∗value, uint16_t
frame_rate, bool drop_frame)
ˆ mxf_tk_API bool NewTimecodeInterfaceByValue(I_timecode ∗∗, uint16_t hours,
uint16_t minutes, uint16_t seconds, uint16_t frames, uint16_t frame_rate, bool drop_-
frame)

18.53.1 Detailed Description


This class represents a timecode value; in other words a time instance expressed in the following
format "hour:minute:second:frame". This structure is used to create timecode components of an
I_timecode_material or to access audiovisual data at a given timecode.

18.53.2 Member Function Documentation


18.53.2.1 virtual bool add (uint64_t) [pure virtual]

Adds the specied number of frames to the current timecode value.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.53 I_timecode Class Reference 248

Returns:
true if successful, false otherwise.

18.53.2.2 virtual int compare (I_timecode ∗) const [pure virtual]

Compare this timecode with the specied timecode.

Returns:
-1 if this timecode is less than the specied timecode, 0 if the timecodes are equal, +1 if this
timecode is greater than the specied timecode.

18.53.2.3 bool equal_to (I_timecode ∗ t) const

Indicate whether this timecode is equal to the specied timecode or not.

18.53.2.4 virtual bool get_drop_frame () const [pure virtual]

Indicate whether a drop frame timecode is in use.

18.53.2.5 virtual uint8_t get_frame () const [pure virtual]

Returns the frame digits of this timecode. If timecode is 05:25:13:24 it will return 24.

18.53.2.6 virtual uint64_t get_frame_count () [pure virtual]

Returns the timecode value as a number of frames elapsed from timecode 00:00:00:00. For in-
stance, if the timecode value is 00:02:10:14 and the frame rate is 25, the returned value will be
2∗60∗25+10∗25+14+1 = 3265.

18.53.2.7 virtual uint16_t get_frame_rate () const [pure virtual]

Get the frame rate of this timecode.

Returns:
0 if an error occured.

18.53.2.8 virtual uint8_t get_hour () const [pure virtual]

Returns the hour digits of this timecode. If timecode is 05:25:13:24 it will return 5.

18.53.2.9 virtual uint8_t get_minute () const [pure virtual]

Returns the minute digits of this timecode. If timecode is 05:25:13:24 it will return 25.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.53 I_timecode Class Reference 249

18.53.2.10 virtual uint8_t get_second () const [pure virtual]

Return the second digits of this timecode. If timecode is 05:25:13:24 it will return 13.

18.53.2.11 virtual const char∗ get_time () const [pure virtual]

Get the current timecode value as a string.

Returns:
The timecode is output using the HH:MM:SS:FF format. The returned pointer must not be
deleted. Returns NULL if an error occured.

18.53.2.12 bool greater_than (I_timecode ∗ t) const

Indicate whether this timecode is greater than the specied timecode or not.

18.53.2.13 virtual bool next () [pure virtual]

Increases current timecode.

Returns:
true if successful, false otherwise.

18.53.2.14 virtual bool previous () [pure virtual]

Decreases current timecode.

Returns:
true if successful, false otherwise.

18.53.2.15 virtual void set_hour (uint8_t) [pure virtual]

Set the hour digits of this timecode.

18.53.2.16 virtual void set_time (const char ∗) [pure virtual]

Set the value of this timecode as a string.

18.53.2.17 bool smaller_than (I_timecode ∗ t) const

Indicate whether this timecode is smaller than the specied timecode or not.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.53 I_timecode Class Reference 250

18.53.2.18 virtual bool sub (uint64_t) [pure virtual]

Subtract the specied number of frames to the current timecode value.

Returns:
true if successful, false otherwise.

18.53.3 Friends And Related Function Documentation


18.53.3.1 mxf_tk_API bool CopyTimecodeInterface(I_timecode ∗∗, const
I_timecode ∗) [related]

Copies an I_timecode interface.

Returns:
true if the copy succeeded, false otherwise.

18.53.3.2 mxf_tk_API bool FreeTimecodeInterface(I_timecode ∗∗) [related]

Frees a timecode interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.53.3.3 mxf_tk_API bool NewTimecodeInterface(I_timecode ∗∗, const char ∗


value, uint16_t frame_rate, bool drop_frame) [related]
Retrieves a pointer on an I_timecode interface.

Parameters:
value The value of the time as a string using the HH:MM:SS:FF format (for instance
"00:08:15:04")

frame_rate The frame rate of this timecode.


drop_frame Indicate whether this is a drop frame timecode or not (drop frame timecode
is∗ only allowed with 25, 30 or 60 frames per second).

Returns:
true if the allocation succeeded, false otherwise.

18.53.3.4 mxf_tk_API bool NewTimecodeInterfaceByValue(I_timecode ∗∗,


uint16_t hours, uint16_t minutes, uint16_t seconds, uint16_t frames,
uint16_t frame_rate, bool drop_frame) [related]

Retrieves a pointer on an I_timecode interface.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.53 I_timecode Class Reference 251

Parameters:
hours The number of hours for this timecode.
minutes The number of minutes for this timecode.
seconds The number of seconds for this timecode.
frames The frame value of this timecode.
frame_rate The frame rate of this timecode.
drop_frame Indicate whether this is a drop frame timecode or not (drop frame timecode
is∗ only allowed with 25, 30 or 60 frames per second).

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.54 I_timecode_component Class Reference 252

18.54 I_timecode_component Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual int64_t get_duration ()=0
ˆ virtual I_timecode ∗ get_timecode ()=0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeTimecodeComponentInterface(I_timecode_component ∗∗)


ˆ mxf_tk_API bool NewTimecodeComponentInterface(I_timecode_component ∗∗, I_-
timecode ∗timecode, int64_t duration)

18.54.1 Detailed Description


This class describes the constitutive item of an I_timecode_material (timecode track). A timecode
track is made of adjacent I_timecode_component ordered in a time-linear fashion. Each timecode
component denes a starting timecode value and a duration.

See also:
The Timecode Material section for mode details.

18.54.2 Member Function Documentation


18.54.2.1 virtual int64_t get_duration () [pure virtual]

Gets the duration of the current I_timecode_component measured in edit units of the I_-
timecode_material it belongs to.

18.54.2.2 virtual I_timecode∗ get_timecode () [pure virtual]

Gets the starting timecode value of the current I_timecode_component.

Returns:
The returned pointer must not be deleted.

18.54.3 Friends And Related Function Documentation


18.54.3.1 mxf_tk_API bool FreeTimecodeComponentInterface(I_timecode_-
component ∗∗) [related]

Free the specied timecode component interface.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.54 I_timecode_component Class Reference 253

Returns:
true if the deallocation succeeded, false otherwise.

18.54.3.2 mxf_tk_API bool NewTimecodeComponentInterface(I_timecode_-


component ∗∗, I_timecode ∗ timecode, int64_t duration)
[related]

Retrieves a pointer on an I_timecode_component interface to be appended to a timecode material.

Parameters:
timecode The timecode.
duration The timecode duration, measured in edit units of the targeted timecode material.
Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.55 I_timecode_generator Class Reference 254

18.55 I_timecode_generator Class Reference


Public Member Functions
ˆ virtual I_timecode ∗ tc_request (int64_t edit_unit)=0
ˆ virtual ∼I_timecode_generator ()

18.55.1 Detailed Description


This class provides timecodes.

18.55.2 Constructor & Destructor Documentation


18.55.2.1 virtual ∼I_timecode_generator () [virtual]

Destructor.

18.55.3 Member Function Documentation


18.55.3.1 virtual I_timecode∗ tc_request (int64_t edit_unit) [pure virtual]

Return the timecode associated with the specied edit unit.

Parameters:
edit_unit The edit number from the video track of the concrete material.

Returns:
The timecode corresponding to the specied edit unit. Return NULL if no timecode is to be
written in the system item. The returned timecode will be automatically freed by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.56 I_timecode_material Class Reference 255

18.56 I_timecode_material Class Reference


Inheritance diagram for I_timecode_material:

I_generic_material

I_timecode_material

Collaboration diagram for I_timecode_material:

I_generic_material

I_timecode_material

Public Member Functions


ˆ virtual bool append_timecode_component (I_timecode_component ∗)=0
ˆ virtual bool free_timecode_list (ordered_timecode_list ∗)=0
ˆ virtual rational ∗ get_edit_rate ()=0
ˆ virtual int64_t get_origin () const =0
ˆ virtual ordered_timecode_list ∗ get_timecode_list ()=0
ˆ virtual int64_t get_total_duration () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeTimecodeMaterialInterface(I_timecode_material ∗∗)


ˆ mxf_tk_API bool NewTimecodeMaterialInterface(I_timecode_material ∗∗, int64_t origin,
rational ∗edit_rate)

18.56.1 Detailed Description


An I_timecode_material is an interface representing a timecode track. Therefore, it is dened by
an origin, a duration and an edit rate. Timecode material schematizes the timecode in use while
playing the corresponding generic material.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.56 I_timecode_material Class Reference 256

Note:
Each timecode component holds a starting timecode value and a duration. Discontinuous
timecodes can be set by redening the timecode during the le play-in, this can be achieved
by appending several timecode components to the material.

See also:
The Timecode Material section for mode details.

18.56.2 Member Function Documentation


18.56.2.1 virtual bool append_timecode_component (I_timecode_component ∗)
[pure virtual]

Adds the specied timecode to the end of the timecode track. In most cases, a unique I_-
timecode_material should be embedded in an I_timecode_material. This ensures continuity
while playing the audiovisual material (requirement of MXF le play out). You may set the
duration of the I_timecode_component to -1 in order to leave MXFTk compute it automatically
whenever possible.

Timecode redenition (adding several I_timecode_component) lets you create discontinuous time-
lines. For instance

ˆ timecode_component("00:00:00:00", 50) (with a frame rate set to 25)

ˆ timecode_component("00:10:00:00", 100)

Appending these two timecode components will give the following timecode playout: "00:00:00:00",
"00:00:00:01", ..., "00:00:01:24", "00:00:10:00", etc.

Returns:
true if successful, false otherwise.

18.56.2.2 virtual bool free_timecode_list (ordered_timecode_list ∗) [pure


virtual]

Frees the ordered_timecode_list returned by get_timecode_list().

Returns:
true if successful, false otherwise.

18.56.2.3 virtual rational∗ get_edit_rate () [pure virtual]

Gets the edit rate of the underlying timecode track.

Warning:
The edit rate of a timecode track is not necessarily equal to the frame rate of its timecode
components.

Returns:
the edit rate of this timecode material. Returns NULL if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.56 I_timecode_material Class Reference 257

18.56.2.4 virtual int64_t get_origin () const [pure virtual]

Gets the origin of the timecode track measured in edit units.

18.56.2.5 virtual ordered_timecode_list∗ get_timecode_list () [pure virtual]

Retrieves the ordered list of I_timecode_component from this timecode track. A timecode compo-
nent states a starting timecode and duration. Therefore, adjacent I_timecode_component dene
an I_timecode_material just as adjacent I_track_item dene an I_track.

Returns:
the timecode components of this material. Returned timecode components must not be edited
nor deleted. Returns NULL if an error occurred.

18.56.2.6 virtual int64_t get_total_duration () const [pure virtual]

Gets the timecode track duration measured in edit units.

Returns:
the total duration of this timecode material. Returns -1 if unknown.

18.56.3 Friends And Related Function Documentation


18.56.3.1 mxf_tk_API bool FreeTimecodeMaterialInterface(I_timecode_material
∗∗) [related]

Frees the specied timecode material interface.

Warning:
User should not free a timecode material already appended to a material.

Returns:
true if the deallocation succeeded, false otherwise.

18.56.3.2 mxf_tk_API bool NewTimecodeMaterialInterface(I_timecode_material


∗∗, int64_t origin, rational ∗ edit_rate) [related]

Retrieves a pointer on an I_timecode_material interface.

Parameters:
origin The start edit unit (origin) of the timecode track created (usually 0).
edit_rate The edit rate
Note:
The duration will be automatically computed as I_timecode_component will be added to
this material (append_timecode_component()).

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.56 I_timecode_material Class Reference 258

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.57 I_track Class Reference 259

18.57 I_track Class Reference


Inheritance diagram for I_track:

I_track

I_concrete_track

Public Member Functions


ˆ virtual bool add_metadata (I_metadata_material ∗, track_list ∗tracks)=0
ˆ virtual int64_t duration () const =0
ˆ virtual rational ∗ edit_rate () const =0
ˆ virtual I_timecode ∗ edit_unit_to_timecode (int64_t) const =0
ˆ virtual ordered_track_item_list ∗ elements ()=0
ˆ virtual bool free_elements (ordered_track_item_list ∗) const =0
ˆ virtual I_timecode ∗ get_end_timecode () const =0
ˆ virtual I_timecode ∗ get_start_timecode () const =0
ˆ virtual uint32_t get_track_id () const =0
ˆ virtual const wchar_t ∗ get_track_name (size_t &name_size) const =0
ˆ virtual ordered_track_item_list ∗ item_seek_eu (int64_t position)=0
ˆ virtual ordered_track_item_list ∗ item_seek_timecode (const I_timecode ∗)=0
ˆ virtual int64_t origin () const =0
ˆ virtual bool remove_metadata (I_metadata_material ∗)=0
ˆ virtual bool set_track_name (const wchar_t ∗name, size_t name_size)=0
ˆ virtual int64_t timecode_to_edit_unit (const I_timecode ∗) const =0
ˆ virtual track_type type () const =0
ˆ virtual const char ∗ type_name () const =0

18.57.1 Detailed Description


This class represents a generic material track. Each material is likely to contain several tracks. An
I_track is used to store metadata or editing information. I_concrete_track embed the audiovisual
data while I_track reference I_concrete_track to build up a complete editing.

18.57.2 Member Function Documentation


18.57.2.1 virtual bool add_metadata (I_metadata_material ∗, track_list ∗
tracks) [pure virtual]
This function will be operative only on a metadata track; no metadata material can be appended
to picture, sound or data tracks. The I_metadata_material will be added to the track according
to the following rules:

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.57 I_track Class Reference 260

ˆ timeline_metadata: metadata is appended right after the last metadata material already
on the track. It is added in a time-linear fashion: metadata materials are continuously
appended one after the other. The duration property of the metadata to be added is set in
the I_metadata_material containing it. Therefore duration of the track is the sum of the
I_metadata_material's duration.

ˆ event_metadata: metadata is added at a position set by the I_metadata_material contain-


ing it. This material also denes the duration of this metadata

ˆ static_metadata: the I_metadata_material documents globally the I_generic_material


containing this metadata track. Therefore, it does not contain any time or duration ref-
erences. Adding metadata thanks to this function creates an I_dm_segment on the track.

Parameters:
← tracks The list of tracks that this metadata annotates. Thus, the list must contain point-
ers on I_track/I_concrete_track from the material containing this metadata track.

Returns:
true if successful, false otherwise.

18.57.2.2 virtual int64_t duration () const [pure virtual]

Returns the duration of this track measured in edit units. A negative value means that the
duration is not known yet.

18.57.2.3 virtual rational∗ edit_rate () const [pure virtual]

Returns the edit rate of this track (number of edit units per second).

Returns:
NULL if an error occured. The returned pointer should be destroyed using FreeRationalIn-
terface().

18.57.2.4 virtual I_timecode∗ edit_unit_to_timecode (int64_t) const [pure


virtual]

Converts the edit unit into a timecode value on this track.

Returns:
NULL if the timecode value cannot be computed. The returned timecode value should be
freed using FreeTimecodeInterface().

18.57.2.5 virtual ordered_track_item_list∗ elements () [pure virtual]

Returns a time-linearly ordered list of items from this track. Each I_track_item returned by
this function can be either cast into an I_source_clip, I_dm_source_clip or I_dm_segment (re-
spectively thanks to source_clip_cast(), dm_source_clip_cast() or dm_segment_cast()). Track
items are the indivisible segments of data embedded on a track: several track items butted to each
other (or overlapping) materialize a track. The list can be freed at any time using free_elements().
Each track item usually references a metadata tree or the content of an audiovisual

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.57 I_track Class Reference 261

Returns:
The list of elements, The returned list must always be deleted using free_elements. Returns
NULL if an error occured.

18.57.2.6 virtual bool free_elements (ordered_track_item_list ∗) const [pure


virtual]

Frees the specied list returned by elements().

Returns:
true if successful, false otherwise.

18.57.2.7 virtual I_timecode∗ get_end_timecode () const [pure virtual]

Returns the end timecode for this track.

Returns:
the end timecode. The returned pointer should be freed by the API user. Returns NULL if
it cannot be computed.

18.57.2.8 virtual I_timecode∗ get_start_timecode () const [pure virtual]

Returns the start timecode for this track.

Returns:
the start timecode. The returned pointer should be freed by the API user. Returns NULL if
it cannot be computed.

18.57.2.9 virtual uint32_t get_track_id () const [pure virtual]

Returns an integer uniquely identifying the current track within its material. However, two tracks
originating from a dierent material may have the same track_id() value.

Returns:
∼0U if an error occured.

18.57.2.10 virtual const wchar_t∗ get_track_name (size_t & name_size) const


[pure virtual]

Get the name of the current track in a Unicode UTF16 string.

Parameters:
→ name_size The length (in bytes) of the returned string.

Returns:
The name of the track. The returned pointer must not be deleted. Returns NULL if an error
occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.57 I_track Class Reference 262

18.57.2.11 virtual ordered_track_item_list∗ item_seek_eu (int64_t position)


[pure virtual]

This function returns the list of I_track_item from this track located at the specied edit unit.
The list can be empty if the edit unit is beyond track's scope. On an event_metadata track the
list may contain several track items; all other tracks will contain at most one track item. Each
track item provides methods to read its content. Hence when the user wishes to read the data at
a given edit unit, he must rst seek to the desired location thanks to item_seek_eu() or item_-
seek_timecode(). The retrieved I_track_item must be cast into I_source_clip, I_dm_segment
or I_dm_source_clip that will expose methods to read the metadata or audiovisual data. Note
that if it's an I_source_clip, the referenced track will be set ready for reading with the read()
function.

Parameters:
← position The position along the track. The value will be added to the origin of this track.
Therefore a track with an origin = 5 and a duration = 20 can be accessed with a position
ranging from -5 to 20.

Returns:
NULL if the seek operation cannot be performed (seeking beyond track scope).

18.57.2.12 virtual ordered_track_item_list∗ item_seek_timecode (const


I_timecode ∗) [pure virtual]

This function returns the list of I_track_item from this track located at the specied timecode.
Timecode information can be retrieved from the function I_generic_material::get_timecode().
The list can be empty if the timecode is beyond tracks scope. On an event_metadata track the
list may contain several track items; all other tracks will contain at most one track item. Each
track item provides methods to read its content. Hence when the user wishes to read the data at
a given edit units, he must rst seek to the desired location thanks to item_seek_eu() or item_-
seek_timecode(). Then, the I_track_item just retrieved must be cast into I_source_clip, I_-
dm_segment or I_dm_source_clip that will expose methods to read the metadata or audiovisual
data. Note that if it's an I_source_clip, the referenced track will be set ready for reading with the
read() function. Furthermore, data from dierent tracks read at the same timecode is synchronized
and is meant to be played together.

Returns:
NULL if the seek operation cannot be performed (seeking beyond track scope).

18.57.2.13 virtual int64_t origin () const [pure virtual]

Returns the origin of this track measured in edit units. Future references to the track's content
will be performed thanks to an oset relative to the origin. Returns INT64_ERROR if an error
occured.

18.57.2.14 virtual bool remove_metadata (I_metadata_material ∗) [pure


virtual]

Remove the metadata material and its associated metadata tree if the current track is an event
or static metadata track.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.57 I_track Class Reference 263

Returns:
true if successful, false otherwise.

Note:
this function will be inoperative on a timeline metadata track.

18.57.2.15 virtual bool set_track_name (const wchar_t ∗ name, size_t


name_size) [pure virtual]
Sets the name of this track (Unicode UTF16)

Parameters:
← name The Unicode UTF16 string.This pointer may be destroyed after calling this func-
tion.

← name_size The length of the name in bytes.

Returns:
true if successful, false otherwise.

18.57.2.16 virtual int64_t timecode_to_edit_unit (const I_timecode ∗) const


[pure virtual]

Converts the timecode value to an edit unit on this track.

Returns:
-1 if the edit unit cannot be computed.

18.57.2.17 virtual track_type type () const [pure virtual]

Returns the type of this track.

18.57.2.18 virtual const char∗ type_name () const [pure virtual]

Returns the type of this track in a string.

Returns:
The type of this track as a string. The returned pointer must not be deleted. Returns NULL
if an error occured.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.58 I_umid Class Reference 264

18.58 I_umid Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual const uint8_t ∗ get_ptr () const =0
ˆ virtual const char ∗ get_str () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeUmidInterface(I_umid ∗∗)


ˆ mxf_tk_API bool NewUmidInterfaceByArray(I_umid ∗∗, const uint8_t ∗value)
ˆ mxf_tk_API bool NewUmidInterfaceByString(I_umid ∗∗, const char ∗value)

18.58.1 Detailed Description


This class describes a UMID identifying universally and uniquely a material. It may contain
geographical and date information. It may also indicate who or what generated this material.
MXFTk supplies this class to let the API user species its own values of UMID; however it can
be simply ignored in which case MXFTk will generate default values.

18.58.2 Member Function Documentation


18.58.2.1 virtual const uint8_t∗ get_ptr () const [pure virtual]

Returns the memory address of a 32-byte long buer containing the UMID value. This buer
must not be edited or deleted

18.58.2.2 virtual const char∗ get_str () const [pure virtual]

Returns a string containing the value of this UMID. It represents 32 bytes in a hexadecimal form,
each byte being separated by a dot.

Returns:
The returned pointer must not be deleted. Return NULL if an error occured.

18.58.3 Friends And Related Function Documentation


18.58.3.1 mxf_tk_API bool FreeUmidInterface(I_umid ∗∗) [related]

Frees a umid interface.

Returns:
true if the deallocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.58 I_umid Class Reference 265

18.58.3.2 mxf_tk_API bool NewUmidInterfaceByArray(I_umid ∗∗, const


uint8_t ∗ value) [related]

Retrieves a pointer on an I_umid interface from a 32-byte buer.

Parameters:
value The memory address of a 32-byte long buer containing the UMID value. This buer
can be freed after calling this function.

Returns:
true if the allocation succeeded, false otherwise.

18.58.3.3 mxf_tk_API bool NewUmidInterfaceByString(I_umid ∗∗, const char ∗


value) [related]
Retrieves a pointer on an I_umid interface from a string.

Parameters:
value The UMID value stored in a string. It represents 32 bytes in a hexadecimal form, each
byte being separated by a dot.

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.59 I_umid64 Class Reference 266

18.59 I_umid64 Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual const uint8_t ∗ get_ptr () const =0
ˆ virtual const char ∗ get_str () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeUmid64Interface(I_umid64 ∗∗)


ˆ mxf_tk_API bool NewUmid64InterfaceByArray(I_umid64 ∗∗, const uint8_t ∗value)
ˆ mxf_tk_API bool NewUmid64InterfaceByString(I_umid64 ∗∗, const char ∗value)

18.59.1 Detailed Description


This class describes a 64-byte UMID universally and uniquely identifying a material. It may
contain geographical and date information. It may also indicate who or what generated this
material. MXFTk supplies this class to let the API user species its own values of UMID; however
it can be simply ignored in which case MXFTk will generate default values. 64-byte UMID is used
by the Descriptive Metadata Scheme 1 (DMS1).

18.59.2 Member Function Documentation


18.59.2.1 virtual const uint8_t∗ get_ptr () const [pure virtual]

Returns the memory address of a 64-byte long buer containing the UMID value. This buer
must not be edited or deleted

18.59.2.2 virtual const char∗ get_str () const [pure virtual]

Returns a string containing the value of this UMID. It represents 64 bytes in a hexadecimal form,
each byte being separated by a dot.

Returns:
The returned pointer must not be deleted. Return NULL if an error occured.

18.59.3 Friends And Related Function Documentation


18.59.3.1 mxf_tk_API bool FreeUmid64Interface(I_umid64 ∗∗) [related]

Frees a umid interface.

Returns:
true if the deallocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.59 I_umid64 Class Reference 267

18.59.3.2 mxf_tk_API bool NewUmid64InterfaceByArray(I_umid64 ∗∗, const


uint8_t ∗ value) [related]

Retrieves a pointer on an I_umid interface from a 64-byte buer.

Parameters:
value The memory address of a 64-byte long buer containing the UMID value. This buer
can be freed after calling this function.

Returns:
true if the allocation succeeded, false otherwise.

18.59.3.3 mxf_tk_API bool NewUmid64InterfaceByString(I_umid64 ∗∗, const


char ∗ value) [related]

Retrieves a pointer on an I_umid interface from a string.

Parameters:
value The UMID value stored in a string. It represents 64 bytes in a hexadecimal form, each
byte being separated by a dot.

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 268

18.60 I_value Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual const uint8_t ∗ get_data () const =0
ˆ virtual size_t get_size () const =0
ˆ virtual value_type get_type () const =0
ˆ template<>
bool get_value (size_t index, I_metadata ∗&t) const
ˆ template<>
bool get_value (size_t index, uint64_t &t) const
ˆ template<>
bool get_value (size_t index, uint32_t &t) const
ˆ template<>
bool get_value (size_t index, uint16_t &t) const
ˆ template<>
bool get_value (size_t index, uint8_t &t) const
ˆ template<>
bool get_value (size_t index, int64_t &t) const
ˆ template<>
bool get_value (size_t index, int32_t &t) const
ˆ template<>
bool get_value (size_t index, int16_t &t) const
ˆ template<>
bool get_value (size_t index, int8_t &t) const
ˆ template<>
bool get_value (size_t index, bool &t) const
ˆ template<>
bool get_value (I_metadata ∗&t) const
ˆ template<>
bool get_value (const uint8_t ∗&t) const
ˆ template<>
bool get_value (uint64_t &t) const
ˆ template<>
bool get_value (uint32_t &t) const
ˆ template<>
bool get_value (uint16_t &t) const
ˆ template<>
bool get_value (uint8_t &t) const
ˆ template<>
bool get_value (int64_t &t) const
ˆ template<>
bool get_value (int32_t &t) const
ˆ template<>
bool get_value (int16_t &t) const
ˆ template<>
bool get_value (int8_t &t) const
ˆ template<>
bool get_value (bool &t) const

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 269

ˆ template<typename T >
bool get_value (size_t index, T &t) const
ˆ template<typename T >
bool get_value (T &t) const
ˆ template<typename T >
T get_value_as (size_t index) const

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeValueInterface(I_value ∗∗)


ˆ mxf_tk_API bool NewValueInterface(I_value ∗∗, value_type type, size_t size, const void
∗value)

18.60.1 Detailed Description


This class stores the value of a property (a memory pointer of a given type).

18.60.2 Member Function Documentation


18.60.2.1 virtual const uint8_t∗ get_data () const [pure virtual]

Gets a memory pointer on the value's data. This pointer should be directly cast into the appro-
priate type depending on the return value of get_type()). Returned pointer must not be deleted.

18.60.2.2 virtual size_t get_size () const [pure virtual]

Gets the size in bytes of the data pointed by get_data().

18.60.2.3 virtual value_type get_type () const [pure virtual]

Gets the type of this value.

18.60.2.4 bool get_value (size_t index, I_metadata ∗& t) const

Helper method to get the value in a I_metadata array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.5 bool get_value (size_t index, uint64_t & t) const

Helper method to get the value in a uint64_t array.

Parameters:
index The index used to retrieve items in an array value.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 270

18.60.2.6 bool get_value (size_t index, uint32_t & t) const

Helper method to get the value in a uint32_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.7 bool get_value (size_t index, uint16_t & t) const

Helper method to get the value in a uint16_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.8 bool get_value (size_t index, uint8_t & t) const

Helper method to get the value in a uint8_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.9 bool get_value (size_t index, int64_t & t) const

Helper method to get the value in a int64_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.10 bool get_value (size_t index, int32_t & t) const

Helper method to get the value in a int32_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.11 bool get_value (size_t index, int16_t & t) const

Helper method to get the value in a int16_t array.

Parameters:
index The index used to retrieve items in an array value.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 271

18.60.2.12 bool get_value (size_t index, int8_t & t) const

Helper method to get the value in a int8_t array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.13 bool get_value (size_t index, bool & t) const

Helper method to get the value in a boolean array.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.14 bool get_value (I_metadata ∗& t) const

Helper method to get the value as a I_metadata.

18.60.2.15 bool get_value (const uint8_t ∗& t) const

Helper method to get the value as a uint8_t∗.

18.60.2.16 bool get_value (uint64_t & t) const

Helper method to get the value as a uint64_t.

18.60.2.17 bool get_value (uint32_t & t) const

Helper method to get the value as a uint32_t.

18.60.2.18 bool get_value (uint16_t & t) const

Helper method to get the value as a uint16_t.

18.60.2.19 bool get_value (uint8_t & t) const

Helper method to get the value as a uint8_t.

18.60.2.20 bool get_value (int64_t & t) const

Helper method to get the value as a int64_t.

18.60.2.21 bool get_value (int32_t & t) const

Helper method to get the value as a int32_t.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 272

18.60.2.22 bool get_value (int16_t & t) const

Helper method to get the value as a int16_t.

18.60.2.23 bool get_value (int8_t & t) const

Helper method to get the value as a int8_t.

18.60.2.24 bool get_value (bool & t) const

Helper method to get the value as a boolean.

18.60.2.25 bool get_value (size_t index, T & t) const

Helper method to get the value.

Parameters:
index The index used to retrieve items in an array value.

18.60.2.26 bool get_value (T & t) const

Helper method to get the value.

18.60.2.27 T get_value_as (size_t index) const


Helper method to get the value.

Parameters:
index The index used to retrieve items in an array value.

18.60.3 Friends And Related Function Documentation


18.60.3.1 mxf_tk_API bool FreeValueInterface(I_value ∗∗) [related]

Frees the specied I_value interface. The data stored in the specied value is not destroyed upon
calling of this function. It is the MXFTK user responsibility to free it.

Returns:
true if the deallocation succeeded, false otherwise.

18.60.3.2 mxf_tk_API bool NewValueInterface(I_value ∗∗, value_type type,


size_t size, const void ∗ value) [related]

Retrieves a pointer on an I_value interface.

Parameters:
type The MXF type of the value.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.60 I_value Class Reference 273

size The size in bytes of the value.


value A memory pointer on the data.
Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.61 I_xdcam_dv_le Class Reference 274

18.61 I_xdcam_dv_le Class Reference


Inheritance diagram for I_xdcam_dv_le:

I_mxf_file

I_op1a_file

I_xdcam_dv_file

Collaboration diagram for I_xdcam_dv_le:

I_mxf_file

I_op1a_file

I_xdcam_dv_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeXdcamDvFileInterface(I_xdcam_dv_le ∗∗)


ˆ mxf_tk_API bool NewXdcamDvFileInterface(I_xdcam_dv_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewXdcamDvStreamInterface(I_xdcam_dv_le ∗∗, I_output_mxf_-
stream_task ∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.61 I_xdcam_dv_le Class Reference 275

18.61.1 Detailed Description


This class should be used in order to create Op1a MXF le matching the properties of those
generated by SONY XDCam camcorder. It is mandatory to provide DV IEC video and four AES
audio inputs in order to generate these les. If AES audio is not available, it is also possible to
provide mono WAVE audio and turn on the WrapWaveAsAES() function.

18.61.2 Friends And Related Function Documentation


18.61.2.1 mxf_tk_API bool FreeXdcamDvFileInterface(I_xdcam_dv_le ∗∗)
[related]

Frees the specied I_xdcam_dv_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.61.2.2 mxf_tk_API bool NewXdcamDvFileInterface(I_xdcam_dv_le ∗∗,


const char ∗ lename) [related]

Retrieves a pointer on an I_xdcam_dv_le interface.

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
lename The complete path toward the MXF le to be written upon calling ush().

Returns:
true if the allocation succeeded, false otherwise.

18.61.2.3 mxf_tk_API bool NewXdcamDvStreamInterface(I_xdcam_dv_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_xdcam_dv_le interface. This function must be called when writing
an eVTR le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
← task This is a class derived by MXFTk user to provide its own implementation to feed
the streaming device while output data is built by MXFTk.

Returns:
true if the allocation succeeded, false otherwise.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.61 I_xdcam_dv_le Class Reference 276

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.62 I_xdcam_hd_le Class Reference 277

18.62 I_xdcam_hd_le Class Reference


Inheritance diagram for I_xdcam_hd_le:

I_mxf_file

I_op1a_file

I_xdcam_hd_file

Collaboration diagram for I_xdcam_hd_le:

I_mxf_file

I_op1a_file

I_xdcam_hd_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeXdcamHdFileInterface(I_xdcam_hd_le ∗∗)


ˆ mxf_tk_API bool NewXdcamHdFileInterface(I_xdcam_hd_le ∗∗, const char ∗lename)
ˆ mxf_tk_API bool NewXdcamHdStreamInterface(I_xdcam_hd_le ∗∗, I_output_mxf_-
stream_task ∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.62 I_xdcam_hd_le Class Reference 278

18.62.1 Detailed Description


This class should be used in order to create Op1a MXF le matching the properties of those
generated by SONY XDCam HD camcorder. It is mandatory to provide MPEG H-14 or MPEG
MP LongGOP video and four AES audio inputs in order to generate these les. If AES audio is
not available, it is also possible to provide mono WAVE audio and turn on the WrapWaveAsAES()
function.

18.62.2 Friends And Related Function Documentation


18.62.2.1 mxf_tk_API bool FreeXdcamHdFileInterface(I_xdcam_hd_le ∗∗)
[related]

Frees the specied I_xdcam_hd_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.62.2.2 mxf_tk_API bool NewXdcamHdFileInterface(I_xdcam_hd_le ∗∗,


const char ∗ lename) [related]

Retrieves a pointer on an I_xdcam_hd_le interface.

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
lename The complete path toward the MXF le to be written upon calling ush().

Returns:
true if the allocation succeeded, false otherwise.

18.62.2.3 mxf_tk_API bool NewXdcamHdStreamInterface(I_xdcam_hd_le ∗∗,


I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_xdcam_hd_le interface. This function must be called when writing
an eVTR le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
← task This is a class derived by MXFTk user to provide its own implementation to feed
the streaming device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.62 I_xdcam_hd_le Class Reference 279

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.63 I_xdcam_imx_le Class Reference 280

18.63 I_xdcam_imx_le Class Reference


Inheritance diagram for I_xdcam_imx_le:

I_mxf_file

I_op1a_file

I_xdcam_imx_file

Collaboration diagram for I_xdcam_imx_le:

I_mxf_file

I_op1a_file

I_xdcam_imx_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeXdcamImxFileInterface(I_xdcam_imx_le ∗∗)


ˆ mxf_tk_API bool NewXdcamImxFileInterface(I_xdcam_imx_le ∗∗, const char
∗lename)
ˆ mxf_tk_API bool NewXdcamImxStreamInterface(I_xdcam_imx_le ∗∗, I_output_-
mxf_stream_task ∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.63 I_xdcam_imx_le Class Reference 281

18.63.1 Detailed Description


This class should be used in order to create Op1a MXF le matching the properties of those
generated by SONY XDCam camcorder. It is mandatory to provide IMX video and 8-channel
AES audio input to the concrete material in order to generate MXF les compatible with SONY
XDCam. If 8-channel AES audio is not available, it is also possible to provide WAVE audio and
turn on the WrapWaveAsAES8() function.

18.63.2 Friends And Related Function Documentation


18.63.2.1 mxf_tk_API bool FreeXdcamImxFileInterface(I_xdcam_imx_le ∗∗)
[related]

Frees the specied I_xdcam_imx_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.63.2.2 mxf_tk_API bool NewXdcamImxFileInterface(I_xdcam_imx_le ∗∗,


const char ∗ lename) [related]

Retrieves a pointer on an I_xdcam_imx_le interface.

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
lename The complete path toward the MXF le to be written upon calling ush().

Returns:
true if the allocation succeeded, false otherwise.

18.63.2.3 mxf_tk_API bool NewXdcamImxStreamInterface(I_xdcam_imx_le


∗∗, I_output_mxf_stream_task ∗ task) [related]

Retrieves a pointer on an I_xdcam_imx_le interface. This function must be called when writing
an eVTR le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port, etc.).

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
← task This is a class derived by MXFTk user to provide its own implementation to feed
the streaming device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.63 I_xdcam_imx_le Class Reference 282

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.64 I_xdcam_proxy_le Class Reference 283

18.64 I_xdcam_proxy_le Class Reference


Inheritance diagram for I_xdcam_proxy_le:

I_mxf_file

I_op1a_file

I_xdcam_proxy_file

Collaboration diagram for I_xdcam_proxy_le:

I_mxf_file

I_op1a_file

I_xdcam_proxy_file

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeXdcamProxyFileInterface(I_xdcam_proxy_le ∗∗)


ˆ mxf_tk_API bool NewXdcamProxyFileInterface(I_xdcam_proxy_le ∗∗, const char
∗lename)
ˆ mxf_tk_API bool NewXdcamProxyStreamInterface(I_xdcam_proxy_le ∗∗, I_output_-
mxf_stream_task ∗task)

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.64 I_xdcam_proxy_le Class Reference 284

18.64.1 Detailed Description


This class should be used in order to create Op1a MXF le matching the properties of those
generated by SONY XDCam camcorder. It is mandatory to provide MPEG4 video and four
2-channel A-law audio inputs in order to generate these les. Standardization of the MPEG4
wrapping is not fully specied by the MXF norm; therefore you should be aware that some MXF
decoders may state that XDCam proxy les contain MPEG2 video although they contain MPEG4
video.

18.64.2 Friends And Related Function Documentation


18.64.2.1 mxf_tk_API bool FreeXdcamProxyFileInterface(I_xdcam_proxy_le
∗∗) [related]

Frees the specied I_xdcam_proxy_le interface.

Returns:
true if the deallocation succeeded, false otherwise.

18.64.2.2 mxf_tk_API bool NewXdcamProxyFileInterface(I_xdcam_proxy_le


∗∗, const char ∗ lename) [related]

Retrieves a pointer on an I_xdcam_proxy_le interface.

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
lename The complete path toward the MXF le to be written upon calling ush().

Returns:
true if the allocation succeeded, false otherwise.

18.64.2.3 mxf_tk_API bool NewXdcamProxyStreamInterface(I_-


xdcam_proxy_le ∗∗, I_output_mxf_stream_task ∗ task)
[related]

Retrieves a pointer on an I_xdcam_proxy_le interface. This function must be called when


writing an eVTR le on a linear streaming device (e.g. a videotape recorder, an IEEE1394 port,
etc.).

Note:
The concrete material that will be added to the le should have been wrapped using the
xdcam wrapping mode.

Parameters:
← task This is a class derived by MXFTk user to provide its own implementation to feed
the streaming device while output data is built by MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.64 I_xdcam_proxy_le Class Reference 285

Returns:
true if the allocation succeeded, false otherwise.

See also:
the Streaming section for a complete overview of the streaming capabilities of MXFTk.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.65 locators Class Reference 286

18.65 locators Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void add (const char ∗∗locator)=0
ˆ virtual bool add (const char ∗locator)=0
ˆ virtual void begin ()=0
ˆ virtual const char ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.65.1 Detailed Description


This class lets you build a list of source les used upon creation of a new I_concrete_material.
Note that when you want to wrap in a single track a series af image you should call the function
add() only once with the appropriate syntax (please refer to I_concrete_material documentation)

18.65.2 Member Function Documentation


18.65.2.1 virtual void add (const char ∗∗ locator) [pure virtual]

This method is deprecated.

Deprecated
Please avoid using this method.

18.65.2.2 virtual bool add (const char ∗ locator) [pure virtual]

Add a track to the list

Parameters:
← locator The location (le path) to add to the list.

18.65.2.3 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.65.2.4 virtual const char∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
A const char ∗ pointer to the essence path.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.65 locators Class Reference 287

18.65.2.5 virtual int64_t size () const [pure virtual]

Get the number of locations in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.66 metadata_list Class Reference 288

18.66 metadata_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_metadata ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.66.1 Detailed Description


Class for managing a list of I_metadata

18.66.2 Member Function Documentation


18.66.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.66.2.2 virtual I_metadata∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_metadata ∗ pointer to the element.

18.66.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_metadata in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.67 mxf_le_list Class Reference 289

18.67 mxf_le_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void add (I_mxf_le ∗∗)=0
ˆ virtual bool add (I_mxf_le ∗)=0
ˆ virtual void begin ()=0
ˆ virtual I_mxf_le ∗∗ next ()=0
ˆ virtual void remove (I_mxf_le ∗∗)=0
ˆ virtual bool remove (I_mxf_le ∗)=0
ˆ virtual int64_t size () const =0

18.67.1 Detailed Description


Denes a list of I_opatom_le

18.67.2 Member Function Documentation


18.67.2.1 virtual void add (I_mxf_le ∗∗) [pure virtual]

Deprecated

18.67.2.2 virtual bool add (I_mxf_le ∗) [pure virtual]

Add the specied MXF le to the list.

18.67.2.3 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list

18.67.2.4 virtual I_mxf_le∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_mxf_le ∗ pointer to the element.

18.67.2.5 virtual void remove (I_mxf_le ∗∗) [pure virtual]

Deprecated

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.67 mxf_le_list Class Reference 290

18.67.2.6 virtual bool remove (I_mxf_le ∗) [pure virtual]

Remove the specied MXF le from the list.

18.67.2.7 virtual int64_t size () const [pure virtual]

Get the number of MXF les in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.68 mxf_parameter_t Struct Reference 291

18.68 mxf_parameter_t Struct Reference


Public Attributes
ˆ mxf_parameter name
ˆ const char ∗ value

18.68.1 Detailed Description


A parameter for the mxf_le.

18.68.2 Member Data Documentation


18.68.2.1 mxf_parameter name

The parameter name.

18.68.2.2 const char∗ value

The parameter value

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.69 ordered_timecode_list Class Reference 292

18.69 ordered_timecode_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_timecode_component ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.69.1 Detailed Description


This class handles an ordered list of I_timecode_component. It is usually retrieved from the
method get_timecode_list() from I_timecode_material and describes a timecode track.

18.69.2 Member Function Documentation


18.69.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.69.2.2 virtual I_timecode_component∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_timecode_component ∗ pointer to the element.

18.69.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_timecode_component in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.70 ordered_track_item_list Class Reference 293

18.70 ordered_track_item_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual bool contains (I_track_item ∗) const =0
ˆ virtual I_track_item ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.70.1 Detailed Description


This class handles an ordered list of I_track_item. It is usually retrieved from the method I_-
track::elements() and describes the content of a track. Each I_track_item of the list cab be
dynamically cast into one of its possible derivations: I_source_clip, I_dm_source_clip or I_-
dm_segment.

18.70.2 Member Function Documentation


18.70.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.70.2.2 virtual bool contains (I_track_item ∗) const [pure virtual]

Indicate whether this list contains the specied track item or not.

18.70.2.3 virtual I_track_item∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_track_item ∗ pointer to the element.

18.70.2.4 virtual int64_t size () const [pure virtual]

Get the number of I_track_item in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.71 properties_list Class Reference 294

18.71 properties_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void begin ()=0
ˆ virtual I_property ∗∗ next ()=0
ˆ virtual int64_t size () const =0

18.71.1 Detailed Description


Class for managing a list of I_property

18.71.2 Member Function Documentation


18.71.2.1 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.71.2.2 virtual I_property∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_property ∗ pointer to the element.

18.71.2.3 virtual int64_t size () const [pure virtual]

Get the number of I_property in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.72 rational Class Reference 295

18.72 rational Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual uint32_t get_den () const =0
ˆ virtual double get_double () const =0
ˆ virtual uint32_t get_num () const =0

Related Functions
(Note that these are not member functions.)

ˆ mxf_tk_API bool FreeRationalInterface(rational ∗∗)


ˆ mxf_tk_API bool NewRationalInterface(rational ∗∗r, uint32_t numerator, uint32_t de-
nominator)

18.72.1 Detailed Description


Denes a rational (numerator / denominator) MXF standard does not allow usage of oating
point values

18.72.2 Member Function Documentation


18.72.2.1 virtual uint32_t get_den () const [pure virtual]

The denominator.

18.72.2.2 virtual double get_double () const [pure virtual]

The value as a oating-point.

18.72.2.3 virtual uint32_t get_num () const [pure virtual]

The numerator.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen


18.73 track_list Class Reference 296

18.73 track_list Class Reference


Inherits opencube::MXFTK_NAMESPACE::I_object.

Public Member Functions


ˆ virtual void add (I_track ∗∗)=0
ˆ virtual void begin ()=0
ˆ virtual I_track ∗∗ next ()=0
ˆ virtual void remove (I_track ∗∗)=0
ˆ virtual int64_t size () const =0

18.73.1 Detailed Description


Class for managing a list of I_track

18.73.2 Member Function Documentation


18.73.2.1 virtual void add (I_track ∗∗) [pure virtual]

Add the specied track to the list.

18.73.2.2 virtual void begin () [pure virtual]

Set the internal iterator to the rst elements of the list.

18.73.2.3 virtual I_track∗∗ next () [pure virtual]

Return the next element in the list based on the current position of the internal iterator

Returns:
An I_track ∗ pointer to the element.

18.73.2.4 virtual void remove (I_track ∗∗) [pure virtual]

Remove the specied track from the list.

18.73.2.5 virtual int64_t size () const [pure virtual]

Get the number of I_track in the list.

Returns:
The number of elements.

Generated on Wed Sep 8 15:03:02 2010 for MXFTk 2.3 by Doxygen

You might also like