537 lines
14 KiB
Plaintext
537 lines
14 KiB
Plaintext
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.
|
|
|
|
|