Find file
Fetching contributors…
Cannot retrieve contributors at this time
528 lines (303 sloc) 13.4 KB
v0.1 10/05/2005
Parsing of atoms
intial Tree printout
extraction of all "" atoms out
to files
v0.2 11/10/2005
AtomicInfo.NextAtomNumber introduced to facilitate dynamic atom tree
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
a number of code-uglifying workarounds were employed to get get that
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
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
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
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
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
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)
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
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
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
"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
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
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
parsing atoms under 'stsd' is no longer internally used - only for tree
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
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
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
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
# vim:ts=2:sw=2:et: