-
Notifications
You must be signed in to change notification settings - Fork 9
/
release.txt
282 lines (229 loc) · 13.7 KB
/
release.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
Release Notes for mxflib version 1.0.1
======================================
This is an update to the first production release of MXFLib
Please note that it is expected that applications using MXFLib, or reusing a significantly amount of the code, include an acknowledgment with all copyright messages.
Suggested acknowledgment texts, either:
Including MXFLib by freemxf.org (c) 2002-2010
or:
Based on MXFLib by freemxf.org (c) 2002-2010
Things to check in code currently using mxflib 0.6.0:
* Ensure that you use dict.xml rather than types.xml and xmldict.xml
* Check that size_t is used for sizes of any memory chunks that may be larger that 4Gb. Take special care if you currently cast to or from a 32-bit type.
* Change any calls to AddTraitsMapping to include a sample instance rather than using the template format
* If you have defined any MDTraits, change methods to use size_t where required
* Where possible use the type ULs rather than type names in library calls (this ensures long-term code stability as the ULs are normative, not the names)
* Use MakeRef in preference to MakeLink
* If you have added any EssenceSubParser classes you need to do the following:
** Ensure that GetEssenceData does not increment the current position, it is safest to cache the result until the next Read or GetEssenceData call
** Ensure that if a single wrapping unit (especially in clip-wrapping) could be larger than can be comfortably held in memory, GetEssenceData() handles chunk reading WITHOUT passing on to BaseGetEssenceData() which always reads whole wrapping units
** Change GetEssenceDataSize(), GetEssenceData() to use size_t
** Change GetEssenceSource() to return an EssenceSourcePtr
** Change IdentifyEssence() to add EssenceStreamDescriptorPtrs to the returned EssenceStreamDescriptorList rather than EssenceStreamDescriptors
** Optionally add a parser name with GetParserName() and name each wrapping with WrappingOption::Name
** Optionally add identify each wrapping with WrappingOption::WrappingID
Changes since version 1.0.0
===========================
* A few minor fixes such as correcting the chroma sub-sampling detection for MPEG2 and correct DeltaArray sizing
* Ensure better memory use when clip-wrapping
* Add IsGCSystemItem()
* Update various compiler specifics for newer compilers, including most strict use of const char* for string literals
* Don't treat System Items as "extraneous" in mxfsplit
Changes since version 1.0.0-Beta-RC5
====================================
* Add global references that need not be satisfied in the scope of the file
* Add a number of basic MXF labels to the dictionary for more human-readable dumps
* Add an option to write version 1 KLVFill keys in mxfwrap (for compatibility with some other implementations)
* Add parsing of new "urn:smpte:ul:" format
* Ensure that all parsers are memory-frugal when clip-wrapping
* Support ODML extensions to parsing of DV AVI files
Changes since version 1.0.0-Beta-RC4
====================================
* Improved DV parsing, including the ability to parse Type-1 DV-AVI files
Changes since version 1.0.0-Beta-RC3
====================================
* Updated all essence parsers that could clip-wrap huge quantities of data to ensure memory is not burst
Changes since version 1.0.0-Beta-RC2
====================================
* Add a "feature" to allow -ve index positions for pre-charge essence, if not set all index tables will start at zero
* Update dictconvert project to convert enumerations
* Add all final 382M properties of WaveAudioDescriptor in dict.xml
* Ensure that compile-time dictionary parsing matches the output from the updated dictconvert
* Add support in essence parsers and mxfwrap for interleaved streams described by a multiple descriptor
* Ensure AnchorOffset is -ve for MPEG streams
Changes since version 1.0.0-Beta-RC1
====================================
* Include VC7 project files
* Added simplewrap project for demonstrating a basic wrap utility (mxfwrap is useful, but complex!)
* Use smart pointers to EssenceSources in the write queue to prevent them being freed before all data is written
* Set Essence Container label in Descripto within the library when selecting wrapping options
* Allow "" to be taken as the current directory in SearchPath
* Ensure that BER lengths correctly use 8-byte format when clip-wrapping
* Add Platform details to Ident set
* Allow mxfcrypt to generate a key-file if none given
* Add check dump mode to mxfdump to allow automated checks that don't rely on specific property values
* Added more detailed debug to the MDTraits stub methods
Changes since version 0.6.0-Beta
================================
Changes:
This release adds the following new features:
* The mxf2dot utility for producing diagrams of mxf metadata, submitted by Philip de Nier of BBC R&D - thanks
* Enumerated value types in the types dictionary format
* The ability to specify ULs and UUIDs in various urn: formats in the dictionary, and in calls to SetString
* Type ULs in the dictionary format
* The ability to set relative write ordering of essence streams (e.g. before all the video, or after all the audio)
* Support for essence parsers that produce sub-streams
* EssenceSubParserFactory super-class to allow sub parsers to be built without requiring an instance of each parser
* Support for essence pre-charge, where supported by the source
* Static methodss on the EssenceParser class to select sub parsers and perform related essence identification functions
* Options to preserve, or recalculate, index tables in mxfcrypt
* Partition::FindLinkParent() which locates the source of a strongly referenced set in the current metadata
* UL::Matches() to test a UL against another UL, ignoring version byte
* VBI source for writing SMPTE 436M format VBI data
Bug fixes:
* Fixed a memory leak in (rarely used) EssenceSubParser::Write()
* Fixed error in parsing some JP2K headers
* Fixed problem with calculation CurrentPosition in some non-constant frame-sized sequences in wave audio
* Ensure that times are stored in UTC
* Update the Essence UL in the Descriptor in mxfcrypt
Other changes:
* Removed the redundant types.xml and xmldict.xml files
* Memory chunk sizes use size_t where there is a possibility that they may need to be larger that 4Gb, platfrom permitting
* The format of the AddTraitsMapping function changed to be safer with a range of compilers
* Moved EssenceSubParser linking into new file esp.cpp, this improves compilation speed
* Improved the handling of current position pointer and wrapping unit size in EssenseSubParsers - now only Read, and its caller GetEssenceData, move the pointer, multiple calls to GeetEssenceDataSize return a cached value
* Ensure that skipped items are witten as zero length in interleaved content packages
* Improve the usage of version-less UL compares (e.g. MDObject::IsA ignores version byte in SMPTE ULs)
* Renamed MDObject::MakeLink to MDObject::MakeRef to avoid confusion with similarly names metadata methods (old version still exists, but is deprecated)
Changes since version 0.5.3-Beta
================================
* Add EssenceSink class
* Allow MDTraits to be changed by applications
* Revamped MXFSplit
* A number of changes to make the code more stable with damages or non-standard files
* UL and UUID traits can now read the standard text formats as well as producing them
Changes since version 0.5.2-Beta
================================
* Added features.h for compile-time or run-time selectable library features
* Dictconvert generates const ULs for all sets, packs and properties
* All library code now uses UL consts rather than object names
* Added constants.h
* Harmonized UInt capitalization
* Add SymbolSpace and allow UL based add/find of objects
* Add esp_template to aid essence parser writing
* Allow non-standard essence keys if required
* Add full clip-wrap indexing
* Add UL2NameFunc
* Programable ParseDark
* Add optional string termination
* Add Track::GetType
* Allow runtime selection between runtime and compiletime dictionaries in mxfdump
* Add basic DM insertion code to mxfwrap
Changes since version 0.5.1-Beta
================================
* Added constants.h
* Harmonized UInt capitalization
* Add SymbolSpace
* Add esp_template to aid essence parser writing
* Allow non-standard essence keys if required
* Add full clip-wrap indexing
* Add UL2NameFunc
* Programable ParseDark
* Add optional string termination
* Add Track::GetType
* Allow runtime selection between runtime and compiletime dictionaries in mxfdump
* Add basic DM insertion code to mxfwrap
Changes since version 0.5.0-Beta
================================
* Split encryption code from mxfcrypt.cpp into separate crypto_asdcp files
* Added HMAC calculation and checking for encrypted KLVs
* Updated encrypted KLV key
* Fixed possible casting problem with some 64-bit values
* Allow KLVObject ReadHandlers to use a separate read buffer
* Fix incorrect IndexSID value when re-writing a partition
* Add UNUSED_PARAMETER macro
* Remove waveheader.h from mxflib.h (it is not really an mxflib item) - only now used by mxfsplit
* Add Partition::IsComplete and Partition::IsClosed
* Remove extra body partition in OP-Atom when wrapping with VBR essence
Changes since version 0.4.0-Alpha
=================================
* To be completed...
Changes since version 0.3.2-Alpha
=================================
* Added kludge code to allow compilation under gcc 3.3.x which has a known bug with complex template classes and forward declares
* Removed dependency on KLVLib by adding new dictionary loading code
* GetDict() No longer exists - replaced with various accessors
* Made MDObject::TypeUL protected with GetTypeUL() accessor
* Made MDObject::ValueType protected with GetValueType() accessor
* Made MDObject::ChildOrder protected with GetChildOrder() accessor
* Made MDType::EffectiveClass() and MDType::EffectiveType() const funcs
* Make DataChunk::Set(), DataChunk::Append() and MXFFile::Write() take const references not normal refs
* Added "RAW" data type to types.xml rather than hard-coding
* Changed "TimeStamp" data type to "Timestamp" as per SMPTE-377M
* Fixed bug where IndexManager destructor was badly wrong!
* BugFix: Change KLVFile to FileHandle in mxffile.h
* Added IndexManager class to support complex index table building
* Added many index table options to mxfwrap
* Moved index writing into MXFFile functions WritePartitionWithIndex()
* Fixed problem where HeaderByteSize was wrong in the footer
if KAGSize > 1 and IndexByteCount > 0
* Corrected AnchorOffset in MPEG index tables
* Corrected Operational Pattern qualifiers in mxfwrap
Changes since version 0.3.1-Alpha
=================================
* Ported to Linux (x86, AMD64, Alpha, StrongARM), FreeBSD (x86), MacOS X 10.2 (PowerPC), Solaris (SPARC) and IRIX (MIPS)
* Ported to ISO C++ compilers including GCC 3.2 (not yet GCC 3.3.x - see README), MIPSpro C++ 7.3, Sun Forte C++ 5.4, Intel C++ 7.0, Borland C++ 5.0
* For portability, FileSeek() and FileSeekEnd() no longer return the current file position, only a value indicating success or failure. Use a subsequent FileTell() to get the file position.
* Change to include path. Now all includes are of the form <mxflib/mxflib.h> to avoid clobbering system includes during installation.
* Clip wrapping works. Tested with MPEG-2 and DV essence.
* Fixed crash when looking up index tables with more than 2979 edit units
* Fixed index entry corruption when writing index tables for essence size >2GB
* Fixed minor crashes and unintended behaviours discovered on other platforms
* Removed '/' as option character in mxfwrap, mxftest. Use '-' instead.
* Code cleanups for gcc, icc and other compilers' warnings
Changes since version 0.3-Alpha
===============================
* Fixed "silly" bug in integer traits on big-endian platforms!
* Fixed bug in parsing MPEG headers where LoadIntra and LoadNonIntra
were 1 bit out of place.
* Essence parsing is now performed in special EssenceParser classes
* Project mpegwrap has been replaced by project mxfwrap
* Static local variables in functions have been removed or made const
to make thread-safety easier
Changes since version 0.2.2-Alpha
=================================
* Fixed "silly" bug in PutIxx() which only wrote 1 byte!
* Fixed a problem where sparse index table lookups didn't work
* Added Higher level objects (Package, Track etc.)
* Added ObjectInterface to allow pseudo derived types
* Fixed problem with ScanRIP in very small files with
FooterPartition==0 in header
* Revised Partition so it is no longer derived from MDObject
* Added WriteObject()
* Fixed problem where BuildRIP failed if all that was in the file
was a singe partition pack
* Fixed a bug where batches of 0 items were incorrectly read
Changes since version 0.2.1-Alpha
=================================
* Fixed problem where mxffile::Seek() returned the wrong value in
files with a run-in
* Revised the front page of the documentation
Changes since version 0.2-Alpha
===============================
* New child value access functions added to MDObject, with (optional)
default values for missing children.
* MDObject is now derived from MDObjectNamedList which contains all
children, rather than containing a property which lists children
* Added "fudge" code to deal with arrays that are not the last item
in a "fixed length" pack.
* Fixed bug in reading arrays with > 1 type per entry, they were
erroneously read in alphabetical order!
* Fixed bug where MDOTypes where added to ChildOrder twice
* Index tables now working, though not very efficient loading
Changes since version 0.1-Alpha
===============================
* Each MDObject stores information about where it came from which can be
read using functions Location() and Source()
* Code now handles differences in HeaderByteCount between version 10 and
version 11a.
* Rational and TimeStamp compounds have their own traits
* Various minor bugs cleaned up