v0.1   10/05/2005

Parsing of atoms

intial Tree printout

extraction of all "covr.data" atoms out
to files

v0.2   11/10/2005

AtomicInfo.NextAtomNumber introduced to facilitate dynamic atom tree
reorganization

CreateSparseAtom added

v0.5   11/22/2005

Writes artist properly of variable lengths properly into an iTMS m4p file
properly (other files don't fare well due to the stsd atom non-standard
nature)

a number of code-uglifying workarounds were employed to get get that
far;

v0.6   11/25/2005

Added genre string/numerical support, support for genre's dual-atom ©gen/gnre
nature, genre string->integer

bug fixes to APar_LocateAtomInsertionPoint when
an atom is missing

APar_CreateSparseAtom for ordinary non-data atoms are now
type -1 (which means they aren't of any interest to us besides length & name);
implemnted the Integer data class

char4short

verified iTunes standard genres
only go up to "Hard Rock"

added jpg/png artwork embedding into "covr" atoms;
slight bugfix for APar_FindAtom (created spurious trailing "covr" atoms).

v0.6    GPL'ed at sourceforge.net

v0.65   11/25/2005

bugfixes to newly introduced bugs in APar_FindAtom

metaEnema to remove all
metadata (safe even for m4p drm files)

year implemented properly (tagtime
moved onto non-standard 'tdtg' atom ala id3v2.4 - because I like that tag);
added setting compilation "cpil" tag (an annoying 5byte tag)

added advisory
setting (maybe it'll give me a kick one cold winter day-do a "Get Info" in
iTunes & in the main "Summary" tab view will be a new little icon next to
artwork)

v0.7    11/26/2005

added a writeBack flag to for a less beta-like future

integrated NSImage
resizing of artwork

environmental preferences for artwork modifications

build
system mods for Mac-specific compiling



v0.7.1  11/27/2005 

modified parsing & writing to support Apple Lossless (alac) mp4 files. The
lovely "alac.alac" non-standard atoms (parents & carry data) caused unplayable
files to be written. Only QT ISMA files get screwed now (no idea about Nero)

v0.7.2  11/29/2005 

creates iTunes-required meta.hdlr

all the tags now get spit back when reading
them (--textdata)

slight fix to how atoms are parsed

all known m4a files now
tag properly: iTunes (m4a, m4b, chapterized, alac), Quicktime (ISMA & mpeg4 -
change filename ext to .m4a to see art

all QT products require the meta.hdlr
addition), faac, Helix Producer & Nero

slight change to how PrintDataAtoms
called FindParentAtom

added tag time on "©ed1" (edit date-might only really
belong directly under udta)

added "©url" to hold url

fixes to
APar_RemoveAtom

added cli ability to remove all artwork

v0.7.3  12/02/2005 

handles stsd (and child) atoms better

modifies all stco offsets when needed
(not just the first)

new oddball iTMS video "drmi" atom handling

new "stik"
atom support (sets iTunes GetInfo->options:Movie,TV Show, Music Video)

writes
iTMS video drm TV shows well now

diffs in a hex editor are moov atom length,
and then into stco, so all is well

v0.7.4  12/03/2005

"desc", "tvnn", "tvsh", "tven" & "tves" setting

v0.7.5b 12/09/2005

forced 'mdat' into being childless (chapterized mpeg4 files have atoms
scattered througout mdat, but they aren't children)

fixed issues with ffmpeg
created mpeg4 files (that have mdat as 2nd atom

moov & chilren as last atoms);
moved ffmpeg mdat atoms around to end

better atom adding at the end

subbed
getopt_long_only to getopt_long for pre-10.4 users

added progressbar

v0.7.5c 12/10/2005

funnguy0's linux patches (thanks so much for that)

v0.7.5d 12/11/2005

endian issues for x86 mostly resolved

setting genre's segfaults

stik doesn't
get set in a multi-option command, but does as a single atom setting

Debian
port added to binaries (compiled under debian-31r0a-i386 with g++4.02-2,
libc6_2.3.5-8 & libstdc++6_4.0.2-2) - under VirtualPC - with the nano editor!

v0.7.5e 12/16/2005

ammends how atoms are added at the end of the hierarchy (notably this affects
ffmpeg video files)

writes "keyw", "catg", "pcst", "aART" atoms

read-only
"purl" & "egid" added

v0.7.6  12/31/2005

ceased flawed null-termination (which was implemented more in my mind) of text
'data' atoms

UTF-8 output on Mac OS X & Linux - comment in DUSE_ICONV_CONVERSION in the
build file to test it other platforms (maybe my win98Se isn't utf8 aware?)

cygwin build accommodations

fix to the secondary "of" number for track/disk on non-PPC

implemented user-defined completely sanctioned 'uuid' atoms to hold....
anything (text only for now)

"--tagtime", "--url" & "--information" now get set onto uuid atoms

allow creation of uuid atoms directly from the cli

cygwin-win98SE port added to binary releases

added '--freefree' to remove any&all 'free' atoms

v0.8    01/14/2006

switched over to uint8_t for former ADC_CPIL_TMPO & former ADC_Integer

added podcast stik setting & purl/egid

bugfixes to APar_RemoveAtom

bugfixes & optimizations to APar_FindAtom

changes to text output & set values for stik atom

increase in buffer size

limit non-uuid strings to 255bytes

fixed retreats in progress bar

added purd atom

support mdat.length=0 atom (length=1/64-bit isn't supported

I'll somehow cope with a < 4GB file)

switch from long to uint32_t
  
better x86 bitshifting

added swtich to prevent moving mdat atoms (possible PSP requires mdat before
moov)

universal binary for Mac OS X release

no text limit on lyrics tag

v0.8.4  02/25/2006

fixed an imaging bug from preferences

fixed metaEnema screwing up the meta atom (APar_RemoveAtom bugfix to remove a
direct_find atom)

added --output, --overWrite

added --metaDump to dump ONLY metadata tags to a file

versioning for cvs builds

limited support for 64-bit mdat atoms (limited to a little less than a 32-bit
atom > 4GB)

bugfixes to APar_RemoveAtom for removing uuid atoms or non-existing atoms & to
delete all artwork, then add in 1 command ("--artwork REMOVE_ALL --artwork
/path --artwork /path")

support 64-bit co64 atom

support MacOSX-style type/creator codes for tempfiles that end in ".mp4" (no
need to change extn to ".m4v"/".m4a" anymore)

moved purl/egid onto AtomicDataClass_UInteger (0x00 instead of 0x15) to mirror
Apple's change on these tags

start incorporating Brian's Win32 fixes (if you malloc, memset is sure to
follow fopen)

give the 'name' atom for '---' iTunes-internal tags for metadata printouts

allow --freefree remove 'free's up to a certain level (preserves iTunes
padding)

squash some memory leaks

change how CreateSparseAtom was matching atoms to accommodate EliminateAtom-ed
atoms (facilitates the previous artwork amendments)

exit on unsupported 'ftyp' file brands

anonymous 3rd party native win32 contributions

reworked APar_DetermineAtomLengths to accommodate proper tag setting with
--mdatLock

parsing atoms under 'stsd' is no longer internally used - only for tree
printing

reworked Mac OS X TYPE determination based on new stsd_codec structure member

revisit co64 offset calculations

start extracting track-level details (dates, language, encoder, channels)

changed stco/co64 calculations to support non-muxed files

anonymous "Everyday is NOT like Sunday" contribution

changed unknown 0x15 flagged metadata atoms to hex printouts

move mdat only when moov precedes mdat

new flexible esds parsing

v0.8.8  05/21/2006

prevent libmp4v2 artwork from a hexdump

changed how short strings were set

win32 change for uuid atoms to avoid sprintf

skip parsing 'free' atoms

work around foobar2000 0.9 non-compliant tagging scheme & added cli switch to
give 'tags' the GoLytely - aka '--foobar2000Enema'

ability to read/set completely separate 3gp tags subset (3GPP TS 26.444 version
6.4.0 Release 6 compliant & more like QuickTime-style tags)

added libxml's utf8 & utf16 conversion functions

new windows (windows2000 & later) unicode (utf16) console output (literal utf8
bytes in win98 & earlier

memset standard means of initializing

simplified setting of arbitrary info uniformly onto parsedAtoms.AtomicData

win32 switch to CP_UTF8 codepage on redirected console output for better
unicode output support

eliminate need for libiconv - use xml's utf8<->latin1 functions to supplant
libiconv

properly display atoms like '©nam' under Windows for trees & atom printouts

support setting unicode on Windows CP_UTF8

added 3GP keyword

fixed bug removing last 3GP asset to reset the length of 'udta'

added 'manualAtomRemove' for manually removing iTunes-style atoms

improved tracking of filesize/percentage when large free atoms impinge on % of
new filesize

added 3GP location 'loci' (El Loco) atom - all known 3GP assets can now be
set/viewed (except support for multiple same atoms of different languages)

->forced<- elimination of Nero tagging scheme (their foobar2000 inspired 'tags'
atom) on 3GP files

prevent iTunes-style tags on 3GP files or 3GP assets on MPEG-4 files

fix offsets in fragmented files ("moof.traf.tfhd") up MAX_ATOMS to 1024

Windows support for full utf16 (unicode) for cli args & filenames

v0.9.0	09/15/2006

new file scanning method based on an array of known atoms/KnownAtoms struct
added to list the gamut of known atoms & their basic properties

better atom versioning & flags support

allow negatives in 3gp asset coordinates (switch to high-bit ascii for
getopt_long for assets)

fixed minor bug that crept in on non-Win systems in removing files

switch from moving mdat(s) to moving moov to reorder atoms

mellow_flow's genre fix

SLarew's utf16 fix for printing 3gp assets on Win32

reorder moov's child atoms so that udta is last (as per ISO spec
recommendations) in moov

enable use of 'free' atom padding for rapid updating, pad with a (user-defined)
default amount of padding with a complete file rewrite

switch remaining AtomicInfo variables over to pointers

add support for multiple same atoms with differing languages (like 3gp assets);
more flexible 'stik' setting/retrieving & added Audiobook

genre bugfix (again!!)

added ability to list std genres & stik strings

switch output for rtng's "Lyrics" to "Content"

list file brands

bugfix for removing some cli metadata

prevent optimizing on PSP mpeg-4 files (but allow dynamic updating, and don't
add padding to psp files)

new APar_FindAtom routine eliminating some loops

updated routine to find 'moov.udta.meta.hdlr' or iTunes-style tagging

simplified APar_RemoveAtom

3gp assets differing in language are grouped now instead of being fifo

simplified printing of non-string iTunes-style tags

work around 3rd party bug affecting 'cprt' corruption

switch to fseeko to support files between 2.5GB & 4GB (and ancillary routines
off of filesize like progress bar)

fix co64 reduction offsets

prevent optimizing when just getting a tree or tags (screwed up track level
details)

bashfulbladder's booklet stik, only allow dynamic updating with --overWrite &
new "AP -t +" routine to show padding & supplemental info

changing win32 filename to '-utf8.exe' forces raw utf8 input/output

win32 longhelp is converted to utf16 (for atom names)

new shorthelp added as default help page

bugfix removing non-existing atoms

an actual change (removal/addition/change) of an atom is now required for any
type of write action

fix channel listing for 'esds' without sec5 info

added ability to force image dimensions on MacOSX

revamped track level details

255 byte limit for strings changed to 255 utf8 *character* limit

--stik Audiobook now changes file extension to '.m4b' (for Mac OS X, finder
Type code is changed to 'M4B ' too)

fix --3gp-year "" in APar_RemoveAtom

bugfix setting string lengths in 3gp keyword

added ability to add ISO 'cprt' copyright at movie or track level

implemented v5 sha1 namepsace/name uuids

fixed crash on finding any atom with full uuids (like psp files)

more extensive type/profiles/levels in track level details

add support for embedding files on uuid atoms

switch to reading artwork directly into memory (as opposed to copying from
a->b) when setting artwork

modified ExtractPixPrefs for leaks - defaults now to deleting temp pic files

skip sprintf for uuid binary strings ('qlts' is why) & switch to (less
flexible) memcpy

accommodate iTunes 7.0 adding aprox. 2k of NULL bytes outside of any atom
structure

add 'pgap' atom

defaults to duplicating the gapless padding at the end of file now (but can be
optionally skipped)

fixed clipping when setting unicode characters

v0.9.X  ??/??/2007

now checks/lists 3 letter language codes

allow setting 3gp assets at track level

fix double fclose & relative paths with --overWrite

coalesce iso copyright notices into the new APar_UserData_atom_Init

initial support for setting iTunes reverseDNS atoms

fix validation test for 'trak' child atoms for atypical order

add mjpeg2000 (mjp2) major brand support (for copyright notices & uuid atoms)

restyled listings of all text metadata tags (-t 1)

fix multiple BOM prints on printouts

limit offset adjustments to local (non-external) data

added support for adjusting item location offsets

switch to a makefile/configure/config.h build system

start of ID3v2 2.4 implementation to go into ID32 atoms

limit chunk offset updates to local data

extend atom creation to file level (FL meta gets created after 'moov')

much of ID3v2 2.4 is completed: multiple text fields, counters, APIC/GEOB
setting/extracting, group symbols & zlib compression

add 3gp7 brands

allow ID32 based on compatible ftyp branding

refactoring & splitting of metadata listings

allow multiple entries in reverseDNS atoms (excepting iTunes domain)

initial (unfinished) revisit of file reorganizing/padding

update mvhd/tkhd modification timestamps

v0.9.6  02/22/2014

update for iTunes 11 compatibility
if stik "Movie" is used, set value to 9, instead of 0
iTunes now views stick value 0 as "Home Video"
left "Short Film" to also set stik 9, for backward compatibility with work-arounds using "Short Film" to set stik to 9

Swapped TV-Y and TV-Y7 to conform with iTunes usage.


