change log for logging branch $Revision: 453 $ $Date: 2011-02-03 16:46:27 -0500 (Thu, 03 Feb 2011) $ ------------------- (31-jan-11, dbyron) - fix ASSERTs in win32 implementation of StandardFileProvider to check against _INVALID_FILE_HANDLE instead of NULL since that's what the constructor and close method use - merge r440, r441, r442, r443, r444 from trunk - fix return value of win32 implementation of StandardFileProvider::close - merge r439 from trunk (18-jan-11, dbyron) - add __FUNCTION__, filename to warning messages - add warning to MP4File::Modify when failing because the file has no moov atom - add __FUNCTION__, filename to error messages - add filename to verbose log messages in mp4descriptor.cpp - remove __FUNCTION__ from verbose log messages in mp4atom.cpp since it makes the dump output hard to read - add filename to descriptions passed to Log::dump - change log messages with Warning: to use Log::warningf - fix Log::hexdump to make sure output begins with format string/varargs instead of overwriting with ascii-hex (17-jan-11, dbyron) - change the MP4RtpData, MP4RtpNullData, MP4RtpImmediateData, MP4RtpSampleData, MP4RtpSampleDescriptionData, MP4RtpPacket, MP4RtpHint and MP4Track to take references instead of pointers, with accessors changed appropriately. (14-jan-11, dbyron) - change the MP4Descriptor constructor (and the constructors of all its child classes) to take a (MP4Atom &) and remove MP4Descriptor::SetParentAtom to remove the chance to dereference a NULL pointer. Similarly for MP4Property and all its children. Declare default and copy constructors and assignment operator private to prevent using compiler-generated routines. - change all Read and Write methods that took (MP4File *) to take a (MP4File &). - change the MP4Track, MP4RtpHintTrack constructors to take a (MP4File &). Corresponding changes to MP4Track::GetFile. (13-jan-11, dbyron) - change the MP4Atom constructor to take an (MP4File &), remove MP4Atom::SetFile and change MP4Atom::GetFile to return an (MP4File &). Change the internal member variable to an (MP4File &) as well. Corresponding changes to MP4Atom::ReadAtom, CreateAtom, factory and child class constructors. This makes it impossible to dereference a NULL pointer by accident. - convert messages with warning in the text to use Log::warningf - include __FUNCTION__ and filename in log messages in mp4atom.cpp (11-jan-11, dbyron) - declare Log copy constructor and assignment operator private but don't implement them to prohibit copies (6-jan-11, dbyron) - add mp4subtitle.vcproj to build on windows (3-jan-11, dbyron) - declare MP4File copy constructor and assignment operator private but don't implement them to prohibit copies - remove MP4HexDump and Indent from mp4util since they're not used anymore - change Log::hexDump to dump printable bytes as well as the hex values - remove error_msg_func_t, lib_message_func_t and MP4SetLibFunc from general.h since they're not used and don't really make sense now that MP4SetLogCallback exists - add MP4TagsHasMetadata to indicate whether a file contains any metadata at all (31-dec-10, dbyron) - add MP4GetFilename so the filename associated with a MP4FileHandle is available. Add MP4File::GetFilename to support it. (27-dec-10, dbyron) - remove m_tempFileName from MP4File since it's not used - throw an exception from the win32 implementation of FileSystem::exists, FileSystem::isDirectory and FileSystem::isFile if there's an error - add logging to win32 FileSystem - add Utf8ToFilename::GetUTF8 to get the UTF-8 representation of the filename actually used - add Utf8ToFilename::IsUTF16Valid so users of the class can detect errors - rename Utf8ToWideChar to Utf8ToFilename to more accurately reflect what the class does - replace MultiByteToWideChar with custom code to remove differences across versions of windows and for improved error detection and illegal character handling - add long filename support to Utf8ToWideChar (21-dec-10, dbyron) - add logging to win32 StandardFileProvider (20-dec-10, dbyron) - make try/catch blocks more granular in MP4Read, MP4ReadProvider, MP4Create, MP4CreateEx, MP4Modify, MP4Optimize, MP4Make3GPCompliant, MP4MakeIsmaCompliant, MP4MakeIsmaSdpIod so it's easier to figure out the cause of failure based on the log message. - log more specific messages, clean up leak if there's an error adding the IpodUUID atom in MP4AddIPodUUID - remove MP4_DETAILS_* as it was only used in a few internal places where an MP4_LOG_* replacement is fine until the verbosity-altering code disappears. For some reason MP4File::MakeIsmaCompliant alters the verbosity before calling MP4GetVideoProfileLevel, MP4IsIsmaCrypMediaTrack does the same before calling MP4File::IsIsmaCrypMediaTrack, as does MP4CloneTrack before calling MP4GetTrackESConfiguration. - change command line programs to map debug levels as follows: 0: MP4_LOG_NONE 1: MP4_LOG_ERROR 2, 3: MP4_LOG_VERBOSE2 4: MP4_LOG_VERBOSE4 - change MP4NormalizeTrackType (an internal function) to always use MP4_LOG_VERBOSE1. - another fix to Log::hexDump so that it now actually dumps all the bytes it was asked to dump - MP4File is no longer a child of Log. Use the global log object everywhere. - remove the verbosity argument to MP4Read, MP4ReadProvider, MP4Create and MP4CreateEx, MP4Modify, MP4Optimize, MP4MakeIsmaCompliant, MP4MakeIsmaSdpIod, MP4Make3GPCompliant and MP4NormalizeTrackType. Remove MP4GetVerbosity, MP4SetVerbosity and MP4Atom::GetVerbosity. Use MP4LogSetLevel to change the global log level instead. There is no more file-specific verbosity since it is more complicated than one global log level and it's not clear anyone needs the added complexity. - remove the MP4FileHandle argument to MP4LogSetLevel and MP4LogGetLevel and move them to general.h/log.cpp since they're no longer file-specific. The default log level is MP4_LOG_WARNING without any call to MP4LogSetLevel. - change MP4BytesProperty::Dump to use Log::hexDump for large (> 16) byte hex output - remove the FILE* argument from MP4Dump, the internal Dump methods (e.g. MP4File::Dump, MP4Atom::Dump, MP4Property::Dump, etc.). Use Log::dump instead. - remove Indent from mp4util since it may pollute stdout/stderr - add Log::dump, Log::vdump to support dumping with a particular indent - fix Log::hexDump to print the correct ascii-hex info (17-dec-10, dbyron) - remove C_ASSERT from mp4util.h since it's not used - remove MP4Printf to keep from writing to stdout when logging (7-jun-09, dbyron) - add MP4LogGetLevel, MP4LogSetLevel (5-jun-09, dbyron) - change return value of MP4DeleteTrack, MP4SetTrackTimeScale, MP4GetTrackH264SeqPictHeaders from void to bool - change MP4AddIPodUUID to return bool, check for valid hFile and catch exceptions - check for NULL existingFileName, newFileName in MP4Optimize - check for NULL fileName in MP4ReadProvider, MP4CreateEx, MP4Modify, MP4Make3GPCompliant, MP4MakeIsmaCompliant - properly handle NULL pFile when catching Exception - check for NULL parameters in genericAddItem, genericSetItem, genericRemoveItem - change signature of C wrappers to return bool and check for NULL parameters: - MP4TagsAddArtwork - MP4TagsFetch - MP4TagsRemoveArtwork - MP4TagsSetArtwork - MP4TagsStore - MP4TagsSetName - MP4TagsSetArtist - MP4TagsSetAlbumArtist - MP4TagsSetAlbum - MP4TagsSetGrouping - MP4TagsSetComposer( - MP4TagsSetComments - MP4TagsSetGenre - MP4TagsSetGenreType - MP4TagsSetReleaseDate - MP4TagsSetTrack - MP4TagsSetDisk - MP4TagsSetTempo - MP4TagsSetCompilation - MP4TagsSetTVShow - MP4TagsSetTVNetwork - MP4TagsSetTVEpisodeID - MP4TagsSetTVSeason - MP4TagsSetTVEpisode - MP4TagsSetSortName - MP4TagsSetSortArtist - MP4TagsSetSortAlbumArtist - MP4TagsSetSortAlbum - MP4TagsSetSortComposer - MP4TagsSetSortTVShow - MP4TagsSetDescription - MP4TagsSetLongDescription - MP4TagsSetLyrics - MP4TagsSetCopyright - MP4TagsSetEncodingTool - MP4TagsSetEncodedBy - MP4TagsSetPurchaseDate - MP4TagsSetPodcast - MP4TagsSetKeywords - MP4TagsSetCategory - MP4TagsSetHDVideo - MP4TagsSetMediaType - MP4TagsSetContentRating - MP4TagsSetGapless - MP4TagsSetITunesAccount - MP4TagsSetITunesAccountType - MP4TagsSetITunesCountry - MP4TagsSetCNID - MP4TagsSetATID - MP4TagsSetPLID - MP4TagsSetGEID - add catch( ... ) blocks to C wrapper functions - add static void errorf ( Log *olog, const char *format, ... ) MP4V2_WFORMAT_PRINTF(3,4); - add static void errorf ( Log *olog, const Exception &x ); - remove MP4Exception, replace with Exception - change MP4File::ProtectWriteOperation to take file, line, function instead of one "where" string. - change exception catching code to call Log::errorf(); - remove VERBOSE, VERBOSE_ERROR from mp4util.h - remove MP4Error, replace with Exception, PlatformException as appropriate - add Exception class and Log::errorf( const Exception &x ); (16-feb-09, dbyron) - First pass of actually using the Log class: - MP4LogNone --> MP4_LOG_NONE - add global log object (log, declared in log.h) - change MP4File to inherit from Log - remove m_verbosity member variable - remove MP4File::GetVerbosity, SetVerbosity methods - change MP4NormalizeTrackType to take MP4LogLevel - replace VERBOSE_* with corresponding Log method calls (VERBOSE_ERROR remains until exception handling gets revisited) - change WARNING macro to take a Log object as the first argument - add Log::hexDump to mostly replace MP4HexDump (though MP4HexDump is still called if there's no logging callback) - fix MP4_DETAILS_ALL handling in Log::detailsToLevel - add uint32_t Log::getVerbosity() const - add Log::hexDump - add uint32_t Log::getVerbosity - add Log::verbose3f, verbose4f