Skip to content

Releases: MPEGGroup/isobmff

ISOBMFF 0.2.0

27 Jul 14:19
8313f21
Compare
Choose a tag to compare
ISOBMFF 0.2.0 Pre-release
Pre-release

This pre-release introduces an overhaul of the repository

  • Set up GitHub actions runners
  • Clean up build files which are set in .gitignore but are staged in the repo.
  • Configure cmake to store executables and libraries in corresponding folders
  • Setup testing environment
  • Implement sample groups and compact sample groups in fragments
  • Fix all compilation issues & warnings on macOS, linux and windows for libisomediafile
  • Set up cmake to treat all warnings as errors (libisomediafile only)
  • Implement defragmentation of the sampleToGroup and SampleGroupDescription boxes (merging etc.)
  • Implement the API to change the flavour of the sample groups before writing a file.
  • Implement an API to get the sample numbers given the sample group type and entry
  • Implement a comprehensive sample group test
  • Implement getDescriptionEntryCount to provide the API to iterate over
    all entries
  • Implement an initial testing environment for sample description functions
  • Clean up debugging output
  • BugFix: allow multiple sample group descriptions of the same type to be present.
  • BugFix: local compact sample groups in fragments
  • BugFix: non mandatory tfdt
  • BugFix: default local group description in fragments 0x10000 should be treated as 0
  • BugFix: HEVC sample entry lengthSize-1 was not correctly written to file
  • BugFix: get the correct value for the last sample number index
  • Setup documentation of the API using doxygen and automate publishing it to gh-pages
  • Setup clang-format and reformat all files in the libisomedia to have a unique style. Also automate checks for future pull requests.
  • Switch HEVC reference software dependency from BBC to HHI as BBC server seems to be unreachable.

ISOBMFF 0.1.0

27 Jul 13:40
45d9233
Compare
Choose a tag to compare

First release before refactoring.

All the contents from ReleaseNotes.txt are copied below:

Release notes Feb 2018

a) Added new atoms defined in OMAF FDIS [N17235] as extensions to ISO/IEC 14496-12 and ISO/IEC 14496-15.

b) Added Visual Studio 2013 solution and project files for hevc_extractors.

Release notes Jan 2018

a) Added support for Visual Studio 2008 (required also fixing some minor compiler errors)

b) Added new functions ISOGetTrackEditlistEntryCount and ISOGetTrackEditlist for transporting Elst information

Release notes Dec 2016

a) Added support for Item Properties to libisomedia

b) Fixed a bug in ISOMeta.c with mdat construction method

c) Fixed a bug in ItemInfoAtom.c for setting correct sizes depending on the atom version

d) Added support for Item Properties to isoiff library

e) Updated HEVC Still Image Format to be used with Item Properties in isoiff_tool

f) Added AVC and JPEG Image Format support to isoiff_tool

Release notes Dec 2014

a) Added composition to decode time atom. Also supports signed values.

b) Added support for sample auxiliary information.

c) Added ISO Image File Format library and tool. Tool is able to create HEVC Still Image
Collections.

d) Updated and added functions in isofile.doc

e) Removed support for freebsd, osxs, solaris

f) Updated Meta atom structure and related atoms, to newest spec

Release notes Oct 2014

a) Added support for track fragment decode time

b) Added new ISOAddDelayToTrackFragmentDecodeTime function, to introduce delay to base media decode time

c) Added extended language tag and ISOGetMediaExtendedLanguageTag, ISOSetMediaExtendedLanguageTag

d) Fixed a bug in MP4LinkedList

e) Added setSampleEntry to MediaAtom, MediaInformationAtom

f) Added ChannelLayoutAtom, DownMixInstructionsAtom, LoudnessAtom, LoudnessBaseAtom

g) Added new function MP4GetAtomFromUserData

h) Added DRC file format tool set “drc_in_isom”

Release notes Jan 2011

a) better tracing output from sample groups and movie fragments

b) handle atoms that have more data than the parser used

c) correctly calculate track runs sizes based off the flags (even if we don't recognize them all, as per spec.)

Release Notes August 2010

a) Added support for the simpler moof-relative addressing in movie fragments, and fix the more complicated case

b) be more tolerant of unknown atoms in a few places

c) be more tolerant of 'empty' sample tables in movies (so that merging movie fragments into it works)

d) fixed some minor cases of not calculating field sizes right

Release notes Jan 2008

a) Fixed a couple of bugs referencing freed memory (thanks to Coding Tech.)

b) fixed some compile warnings and errors on Linux

c) fixed some compilation issues on Mac OS X 'Leopard'

d) fixed some cases of calculating samples in track readers

Release notes Aug 2007

a) support for the sample dependency table

b) fixed bug in movie fragments where ftyp atoms were getting written with fragments; not sure when it was introduced.

Release notes Apr 2007

a) track references now cope with general references on reading and writing (previously, only known reference types could be read)

Release notes Jan 2007

a) fixed a bug where the 'isom' brand was incorrectly added to files without a movie atom

b) added ISONewMetaMovie and ISOAddMetaItemWithID for general meta-structured files.

c) much surgery on the support for sample entries, to handle several embedded atoms rather than just one

d) support for more 3G files

Release notes Sept 2006

a) Updated ISMASecurity.c to handle ISMA salt values. Some bug fixes and cross-platform compilations issues. New file ISMASaltAtom.c

b) Makefile for MINGW32 for the library (thanks to Stefan from FhG).

c) Lots of new functions to support meta-boxes (atoms), with updated documentation (which also covers some older functions that seemed to have missed getting documented). Also 'NewMPEG21' to make an MPEG-21 file.

d) The extension atom parameter to ISONewGeneralSampleDescription is now a GenericAtom.

e) Support for AVC sample entries added. Now much easier to work with AVC.

f) Optimizations and memory leak fix, thanks to Coding Technologies. Four atoms no longer reallocate memory every time a sample is added; the input stream machinery was leaking when streams were closed; and files that start with 8 zeroes (which parse successfully as a single atom of type NULL) are now rejected, since they contain neither an ftyp or moov atom.

g) Please note that going ahead, though I will maintain the Linux, FreeBSD, and Solaris makefiles, I probably will not check these builds (or the new MINGW32). If you find bugs, or compiler warnings or errors, please let me know.

h) Fixed a bug in the Mac OS X file mapping where data that was larger than the window wasn't handled.

i) Added support for timed meta-data tracks (Thanks, Michael)

Release notes August 2006

a) Much work on handling files over 4GB. The ChunkLargeOffset atom file is no longer needed (the ChunkOffsetAtom handles both 32bit and 64bit offsets). Many internal changes to make sizes etc. 64 bit. Only Mac OS X has a SimpleFileMapping that will handle >4GB files, by mapping around them; note that these files cannot be re-written (yet). You can force making >4GB files (have a look at MediaDataAtom).

Release notes June 2006

a) Added support for sample groups; see documentation

b) fixed a bug adding encrypted samples when written to another file

c) fixed a bug that sometimes affected offsetted handles

d) made it easier to add 'foreign' and UUID atoms; see MP4NewForeignAtom, MP4NewUUIDAtom, and MP4AddAtomToMovie and MP4AddAtomToTrack

e) [INCOMPATIBLE CHANGE] fixed some errors in the MP4TrackReader when there were edit lists. Unfortunately it is now true that the outDTS and outCTS may be negative, in the case where the AU is the first AU and the edit starts in the middle of it. So their type has changed from unsigned to signed. This enables one to detect the 'AAC pre-roll' and end-trimming cases. If the DTS is -ve, or overlaps the end of the previous AU (i.e. previous DTS + previous duration), then discard that amount of samples from the front of the AU. If the duration is less than the normal AU duration, discard from the end of the AU. (Theoretically, both may occur).

f) slightly easier to make non-MPEG tracks. New function ISONewGeneralSampleDescription. But this function is subject to change as we work on the atoms that go into these other sample descriptions (the last parameter may not stay as a handle, so supply NULL for now).

g) Integrated some of the improvements from the 3GPP community (ongoing work)

h) Fixed a few missing equivalents and their documentation (again).

Release Notes Feb 2005

a) equivalents defined for ISOOpenMovieNormal, ISOOpenMovieDebug, ISOOpenMovieInPlace, ISOGetMovieDuration, ISOGetTrackDuration

b) New facility in handles, to set an offset; offsets can be used when encrypting/decrypting. Essentially you can set a handle to point a little way into the allocated space, and then 'back it up' when you want to use that space.

c) Basic ISMACrypt support; new functions to transform sample entries; note that we don't do the encryption (that is your problem); see ISMATransformSampleEntry and ISMAUnTransformSampleEntry. These might provide a starting point for OMA 2.0 support.

d) Fixed movie-fragment sequence number checking on read

e) Fixed a bug in the PaddingBits atom where it could overwrite memory

f) fixed a bug where a failed read of a movie would leak memory

Release notes Oct 2004

a) Added some missing documentation for get movie/track duration.

b) Fixed a bug in reading padding bits atoms with odd numbers of entries.

c) Some missing equivalents (ISO/MP4) were also added.

Release notes jul 2003

a) Bug fix in getTrackOffset; not returning zero when that was the right answer.

b) Bug fix to the vmhd flags.

c) fixed a number of compiler warnings and errors (thanks again, Ralph)

d) improved handle support (you can now offset handles to leave space at the front for later use, for example)

e) handle 64-bit chunk offset atoms better (read files which use them OK)

f) better handling of edit lists, some bug fixes in that area

g) MP4NewMovie will now create an OD, not an IOD, in the IOD atom, if all the profiles are 0 (which is a forbidden value), and will create no IOD atom at all if the Object Descriptor ID supplied is 0 (also a forbidden value). This makes it easy to create a greater variety of files.

h) INCOMPATIBLE CHANGE!! Previously, if a sample had no recorded padding bits information, then 0 was returned (if requested) as the padding value. But 0 is a legal pad value, and so it was not possible to distinguish "this sample is not padded" from "this sample didn't have any padding recorded". Now if there is no recorded padding the value 0xF8 is returned, which (being large) clearly exceeds the 0-7 possible legal values for padding. The creation functions do NOT check for this value; it is your responsibility to check for this and not pass it through.

i) A missing equivalence defining ISOAddMediaSamplesPad was inserted

j) An error in adding IPMP track references was corrected (an OR should have been an AND) which caused crashes under some circumstances.

Release notes Oct 2002:

This is a major update of the ISO Media File reference library. In this release we are pleased to welcome the IPMP support donated by ResonateMP4.

One fix below which worries me is that MP4InsertMediaIntoTrack was not converting the mediaDuration to the movie timescale, contrary to the documentation. I fixed this, but maybe I broke some software...

Here's all the fixes in a list:

a) free atoms can now be found an...

Read more