v2.7.3
- Fixed a bug in the external plugin enumeration

v2.7.2
- Added new switch "-c". This allows in combination with "-avsinfo" to specify a custom plugin directory.
- "Save as..." dialog for all log/csv files when using "-log" and/or "-csv" switches
- Updated AVS+ headers
- Cosmetics

v2.7.1
- When using the switch "-avsinfo" in combination with "-log", a "Save as..." dialog will open enabling the user to save the log file
- Minor fixes and refactoring
- Cosmetics

v2.7.0
- Warnings and errors are reported in separate sections
- Updated list of exception messages
- Cosmetics

v2.6.9
- avsinfo: If the version info is missing in (auto-load) plugins/files, the UTC timestamp is printed instead
- Simplified "ESC" key handling

v2.6.8
- Fixed a bug in plugin type enumeration (regression)

v2.6.7
- Minor fixes, refactoring and cosmetics
 
v2.6.6
- Detailed external function enumeration and duplicate report are still not working properly, removed for now

v2.6.5
- Added hint for error 127 (proc not found / procedure could not be found).
- Minor fixes/cosmetics

v2.6.4
- New/updated code for reporting duplicate plugin functions

v2.6.3
- Fixed: Updating very old ini files didn't work
- Removed report of duplicate plugin functions temporarily
- Some minor fixes/cosmetics

v2.6.2
- Fixed a problem caused by the 50 plugin limit in "classic" Avisynth

v2.6.1
- The list of plugin functions in the log file (-avsinfo -log) now points out duplicates (functions with the same name in different DLLs) by adding "[DUPLICATE]" to the function name

v2.6.0
- External plugin functions are now listed for each plugin DLL 

v2.5.9
- Fixed potential duplicate entries in plugin list
- It seems that old C 2.0 plugins are still being used by some so the plugin sections for v2.0 plugins are back
- Minor fixes

v2.5.8
- Re-organised the auto-load sections and added section for AVSI
- Fixed a problem with log file content (regression)
- C 2.0 and CPP 2.0 plugins no longer have a dedicated section in the list of plugins.
  They are still enumerated but now fall into the section "Uncategorized".
  The reasons for this are
  - They are not supported by AVS+ at all
  - They need ancient support DLLs and special loading mechanisms in order to be
    used with other Avisynth versions

v2.5.7
- Added sections for uncategorised files/DLLs in the plugin directories
- Fixed a bug in the detection of installed VC++ runtimes
- Improved error handling for plugin check

v2.5.6
- Fixed a problem with plugin enumeration
- Refactoring and tweaks

v2.5.5
- Improved dependency check for FFTW support libraries
- Updated CPU feature detection
- Improved error handling for GPU-Z interface
- Moved documentation for INI settings to AVSMeter.html
- Cosmetics

v2.5.4
- Improved error handling for Avisynth core (avisynth.dll)
- Tweaks to reduce overhead
- Fixed a display bug
- Refactoring

v2.5.3
- Fixed duplicate error message
- Fixed a minor console output bug
- Fixed a couple of cosmetic issues
- Added "_x64"/"_x86" suffix to the avsinfo log name

v2.5.2
- Improved exception handling for Avisynth core (avisynth.dll)
- Updated Avisynth headers
- Refactoring and cleanup

v2.5.1
- New CPU feature detection, removed libcpuid dependency
- WoW64 process detection may have given wrong results in some rare cases, this should be fixed
- Updated Avisynth headers
- Various functional and cosmetic fixes

v2.5.0
- Added warning when no plugin directory references are found in the registry and "classic" plugin auto-loading is therefore disabled
- Updated libcpuid
- Moved log entries created by "-avsinfo" for DLL dependencies and internal/external functions to the main log file (avsinfo.log)
- Minor fixes and refactoring

v2.4.9
- Improved the error checking for the GPU-Z memory interface which fixes a rare issue with GPU-Z communication
- Updated Avisynth headers
- Removed some unnecessary command line validations

v2.4.8
- Fixed a regression from 2.4.7 - some helpful hints in the error report were suppressed

v2.4.7
- Added audio info to the console output
- Tweaked timer test
- Refactoring
- Cosmetics

v2.4.6
- Fixed a bug that would display the wrong number of audio bits/sample in some cases
- Fixed a bug that stopped enumeration of plugins when the Avisynth auto-loader threw a "too many plugins..." message
- Generation of the log files "avsdeps.log" and "avsfunctions.log" is now optional and can be enabled in the ini file ("CreateDependencyLog", "CreateFunctionLog")

v2.4.5
- Added supported instruction sets to the CPU info
- Reduced overhead of GPU sensor readout
- Fixed a bug that would throw the Avisynth error "too many plugins loaded..." multiple times

v2.4.4
- Improved validation of INI settings
- Updated libcpuid
- Updated Avisynth headers
- Updated NV GPU table
- Refactoring

v2.4.3
- Added INI setting "UseUTC". If set to "1" (default), file timestamps are
  displayed as UTC (Coordinated Universal Time)
- Refactoring of the dependency test code
- Added some command line sanity checks
- Moved the documentation for INI settings to the INI file itself

v2.4.2
- Fixed dependency check for 2005 & 2008 runtimes

v2.4.1
- Added "Simple mode" (switch "-s"). This mode just runs the script without
  gathering any runtime/performance data.
- Updated advisory messages for missing dependencies
- Re-structured the documentation a bit

v2.4.0
- Export a third log file when using the "-avsinfo -log" switch containing
  DLL dependencies for avisynth.dll and all auto-load plugins
- Refactoring of dependency checking code
- Error handling improvements


v2.3.9
- Split list of internal and external functions generated with "-avsinfo"
  into a separate log file ("avsfunctions.log")
- Refactor plugin enumeration
- Update some error messages
- Re-organise source file structure
- Other minor fixes


v2.3.8
- Updated Avisynth headers
- Updated libcpuid
- Refactoring and cosmetics
- Perfdata -> std::vector
- Optimisation of some helper functions


v2.3.7
- Updated Avisynth header to the latest AVS+ version (r2151)
- Updated color space detection accordingly
- Implemented some standard arrays as std::vector mainly for efficiency
- Refactoring and cosmetics


v2.3.6
- Added enumeration of all color spaces supported by the latest AVS+,
  including 16/32 Bit formats
- Added "VersionNumber()" (defined in internal.h) to the Avisynth info
- Fixed a buffer overflow problem in the string formatting code
- Refactoring and cosmetics


v2.3.5
- Minor restructuring of the log files
- Added GPU hardware info to the avsinfo log if the "-gpu" switch is used
- Updated libcpuid
- For classic Avisynth 2.6.x, auto-load directory references exclusive to Avisynth+
  (i.e. "PluginDir+" entries in the registry) are now excluded from the enumeration
  of plugins/plugin directories
- Minor fixes
- Refactoring


v2.3.4
- Fixed a silly bug that prevented correct detection of GPU capabiltities


v2.3.3
- Added real (measured) CPU clock to the CPU info
- Reduced overhead of the process info functions
- Various bug and cosmetic fixes


v2.3.2
- Added CPU info to log files (using Veselin Georgiev's libcpuid)
- Removed some redundant info from the console output/log
- Added VP engine info for NVIDIA cards
- Cosmetics


v2.3.1
- Added switch "-n" which disables the initial speed test.
- Updated Avisynth header to the latest AVS+ version
- Added enumeration of internal functions to the "avsinfo" log
- Some tweaks and minor fixes


v2.3.0
- Moved enumeration and testing of auto-load plugins back to main.
- Changed file access modes in CreateFile() calls
- Various fixes


v2.2.9
- Added hints to plugin error messages relating to missing support DLLs (fftw3.dll, etc.)
- Added graphics card / GPU model info to the console output and log file
- Added GPU clock / GPU memory clock info to the console output and log file


v2.2.8
- Improved Exception handling. Module names in which exceptions occur and address are reported


v2.2.7
- Fixed a couple of bugs
- Improved memory usage
- Added some hints to the plugin error messages (for example, pointing out potentially missing
  restributable packages)


v2.2.6
- Added OS version info
- Added plugin function enumeration to the "avsinfo" log
- Couple of bugs fixed
- Minor tweaks


v2.2.5
- Added dependency checking for avisynth.dll
- More detailed and comprehensive plugin error messages relating to potentially missing dependencies


v2.2.4
- Added DLL dependency checking
- Various fixes


v2.2.3
- New ini setting "SkipSpeedTest", see documentation.
  I put back the script test at the start because it is the best method to determine a suitable
  interval for measuring CPU/GPU/memory usage and minimizing the overhead for these measurements.


v2.2.2
- Added ini option "LogFileDateTimeSuffix" which makes adding the date/time suffix for .log/.csv files
  optional.
- More detailed error messages when using "-avsinfo" and plugin loading failures


v2.2.1
- New ini option "LogDirectory". If specified, all .log and .csv files will be created in that directory.
- All .log and .csv files now have a suffix containing date and time of creation.
- Various fixes


v2.2.0
- Settings in an existing INI file will no longer be overwritten with default settings
  by a new version of AVSMeter.
- ["-avsinfo" switch] Invoke "LoadPlugin" test for each DLL in the auto-load directory/directories
- ["-avsinfo" switch] Combined with "-l" or "-log", writes the info to a file ("avsinfo.log" in the current directory)
- Cosmetics


v2.1.9
- Bug fix for audio-only scripts not being detected properly (this bug was introduced in 2.1.7)
- ["-avsinfo" switch] There is now a section for each plugin type (C / CPP)


v2.1.8
- ["-avsinfo" switch] Additional error handling to the plugin enumeration:
  - Test DLLs if they are valid Avisynth plugins
  - 64/32 bit mismatch detection
- Separate sections for CPP- and C-plugins


v2.1.7
- Removed the initial speed test.
- ["-avsinfo" switch] Now also lists all plugin DLLs (with version info if present)
  found in the directory/directories which are referenced in the registry


v2.1.6
- "Efficiency index" ini setting disabled by default
- Minor tweaks
- Documentation update


v2.1.5
- Added "Efficiency index" display (FPS / CPU usage)


v2.1.4
- Fixed a problem with the time stamp determination
- Fixed a minor timing issue
- Some cosmetic improvements


v2.1.3
- Added some more info to the log and info screen
- Minor exception handling improvements
- Refactoring
- Cosmetics


v2.1.2
- Added switch "-csv" so this option can be set on the command line as well
- Added switch "-avsinfo"
- Added average time/frame to the csv file output

v2.1.1
- Added ini setting "AVSDLL". The user can specify the avisynth.dll to be used.
- Added handler for C structured exceptions

v2.1.0
- Fixes for potential timing issues when releasing the script environment
- Additional error handling
- Cosmetics

v2.0.9
- Added ini setting "CreateCSV". This setting creates a .csv file (along with the .log file)
  containing the performance data formatted as comma-separated values for direct import
  in Excel or a similar spread sheet program (OpenOffice, LibreOffice).
- Added a slight delay between reading the last frame and calling "DeleteScriptEnvironment()"
  to avoid sync issues with some plugins.

v2.0.8
- Added "DisplayFPS" and "DisplayTPF" ini file settings. The user can now choose between having
  FPS or/and TPF (Time/Frame in milliseconds) printed to the console.
- Added AVISYNTH_INTERFACE_VERSION to the log file
- Added INI setting "AutoCompleteExtension" which makes the feature added in v2.0.7 optional
- Minor fixes

v2.0.7
- Fixed broken plugin autoload directory enumeration.
- If .avs file extension is missing, it will be added silently.

v2.0.6
- Added ini option "ConUseSTDOUT".

v2.0.5
- Added plugin directory info for AVS+ 32 and 64 Bit to the log file.
- Added avisynth.dll linker/compiler version to the log file
- Minor fixes

v2.0.4
- Added GPU/VPU data to the performance data section in the log file
- Changed app icon
- Added INI setting for "TimeLimit"
- Put back INI settings for "MonitorGPULoad" and "ProcessPriority"
- Code cleanup, refactoring

v2.0.3
- Added switch "timelimit" which terminates the program after a specified time
- Removed (temporarily) "timeout" option due to thread sync issues with some filters
- Removed some INI settings that are already covered by command line switches

v2.0.2
- Added more info to the log file (script name, command line switches, plugin directory)
- Everything pertaining to information about the loaded Avisynth DLL including utility
  functions is now wrapped into one class.
- Various fixes

v2.0.1
- Command line processing improvements
- Detection of outdated INI file didn't work properly. Fixed.
- Updated GPU memory monitoring to support cards with dedicated/dynamic memory

v2.0.0
- Dropped support for Avisynth 2.5x. At least AVS 2.6 Alpha4 or AVS+ r1576 are required
- Added location of the loaded avisynth.dll to the log file
- Added detection of outdated INI file
- Refactoring

v1.9.8
- Added monitoring of the NVIDIA Video Engine load (PureVideo SIP)
- Added switch and INI setting for specifying the process priority
- Refactoring, cosmetics and some minor fixes

v1.9.7
- Fix for potential problems with the latest AVS+ versions

v1.9.6
- Better detection of attempts to load 64 Bit avisynth.dll with 32 Bit AVSMeter and vice versa
- Added "UseFixedFrameInterval" ini setting ("-f" command line switch)
- Updated Avisynth headers to the latest version from (AVS+) Git
- Other minor fixes

v1.9.5
- Improved and more elaborate exception handling (Win32 API)
- Added GPU memory usage to the console display and log
- Fixed a bug related to audio only clips

v1.9.4
- Added a stream buffer flush to the console text output. Buffered text output through stdout/stderr
  caused problems with console re-direction for folks who use AVSMeter in their GUIs.
- Corrected a minor display bug
- Other minor corrections/refactoring

v1.9.3
- More GPU info added to the log file
- Fixed a stupid bug in the command line parser
- Removed the Admin privilege test
- Added command line options for frame range and timeout
- All text output goes now to stderr, except the usage info invoked by "-help" or "-h"

v1.9.2
- GPU/driver info is added to the log file when GPU monitoring is enabled/active
- Optimizations, cleanup and cosmetics

v1.9.1
- Added switch "-gpu" to enable GPU monitoring from the command line. The switch overrides the INI setting "MonitorGPULoad=0".
- Added a check to make sure the user has admin privileges
- In some rare cases, Avisynth gets stuck on reading a single frame, mostly the first frame due to an extremely slow script,
  buggy decoder, etc. There is now a configurable timeout in AVSMeter.ini:
  "ReadTimeout=120" sets the timeout to 120 seconds which is also the default. Once the configured time has expired,
  AVSMeter will terminate. Values from 10 to 3600 seconds are allowed.
- Some refactoring and minor fixes

v1.9.0
- Added GPU monitoring

v1.8.3
- Internal memory usage tweaks
- Better error handling of wrong INI file settings
- Version info from the VERSION_INFO resource is now displayed in addition to the
  version string returned by Avisynth.
- Changed "UseColour" INI setting to "UseColor"
- Many other fixes/refactoring

v1.8.2
- Simplified and improved code for releasing the pointer to "IScriptEnvironment"
- Added text colouring to the console output. This can be disabled by setting
  "UseColour=0" in the INI file.

v1.8.1
- Merged the 32 Bit versions into one binary. This binary should be compatible with all
  32 Bit Avisynth versions out there.
- The implicit log file creation in case of an error that was implemeted in v1.4.8 is now
  working again.

v1.8.0
- Made sure all return paths in "main" return the correct value ("-1" -> error; "0" -> OK)
- Other error handling improvements

v1.7.9
- Improved exception handling
- More accurate timing functionality for very fast scripts
- Cosmetics and minor fixes/refactoring

v1.7.8
- Cosmetics and minor fixes/refactoring
- Updated compiler for all binaries to VC10

v1.7.7
- Fixed a bug that would terminate AVSMeter if the number of frames returned from a script is 1
- Updated avisynth.h for AVS+ interface to the latest version from Git

v1.7.6
- Added audio info to the log file

v1.7.5
- Refactoring
- New INI setting: "AllowOnlyOneInstance". When set to "1" (default), only one
  instance of AVSMeter can run at the same time.
- Added simple documentation to the distribution package

v1.7.4
- Some improvements in exception handling
- Regression: The changes to the initial speed evaluation introduced other problems, reverted to
  previous behaviour.
- More robust command line processing
- Cosmetics

v1.7.3
- Modified the initial speed test that determines the measurement interval. With some scripts,
  particularly with Avisynth MT, there are extreme time differences from one frame to the next,
  most likely due to caching. In order to determine the suitable interval, these differences
  have to be taken into account.
- Added 64-Bit build for Avisynth+ 64 Bit.
- Added "Current FPS" to the console display. It shows the speed for each frame interval.

v1.7.2
- Fixed a bug in the INI parser
- Added Version resource
- Refactoring

v1.7.1
- Reduced the minimum script running time required to collect performance data
- Minor tweaks and fixes

v1.7.0
- Wrote some handy string helper functions in order to remove the 3rd party (CStdString) dependency.
- Added detection routine for the 2.6 version that checks if avisynth.dll exports "AVS_Linkage".
- Reorganisation of utility classes/functions.

v1.6.2 / v1.5.7
- When an invalid frame range setting is specified in AVSMeter.ini, the program
  will display a warning message for 2 seconds and then continue with the default
  number of frames (which means processing all frames).

v1.6.1
- Dynamic loading of avisynth.dll
- Added progressive/interlaced info (through Avisynth API)
- Minor error handling improvements

v1.6.0
- Dropped Avisynth 2.5 support.

v1.5.6:
- Minor fixes

v1.5.5:
- Fixed a nasty bug where the program would crash when the script doesn't return a video clip
- Added an (undocumented) INI setting "LogEstimatedTime". When set to "1", this also displays/logs the
  estimated time in case the process was interrupted by the user

v1.5.4:
- Improved error handling
- Reduced internal memory usage
- Simplified the switches, it's now just "-i" for info and "-l" for log
- Added number of active threads to the performance data

v1.5.3:
- Better error handling in some rare scenarios
- Added switch "-i" (or "--info") which only displays/logs the clip info
- For consistency, the log switch is now "-l" (or "--log")

v1.5.2:
- For scripts with a frame time < 20ms (50 fps), the measurement interval is now 1 frame (previously 10 frames)
  Note: The smallest measurement interval for CPU and memory usage remains at ~100 ms
- Fixed potentially inaccurate timer readings from QueryPerformanceCounter() on multi-core CPUs
- Various minor bugs fixed
- Cosmetics

v1.5.1:
- Minor bug fixes
- Refactoring
- Optimizations

v1.5.0:
- Different implementation for the initial speed test (determination of measurement interval)
- Tamed the over-zealous auto-inlining from the Intel compiler

v1.4.9:
- Measurement interval for the performance data is now dynamic depending on the speed of the script
- Various fixes

v1.4.8:
- Create the log file irrespective of the "-log" switch or "CreateLog" INI setting if Avisynth
  throws an error (syntactic errors excluded) and causes the program to terminate.

v1.47:
- Various optimizations and fixes

v1.46:
- Added "InvokeDistributor" to the INI settings, might be useful for Avisynth MT users.
- Minor fixes

v1.45:
- More efficient code for string and file handling
- Minor cosmetic changes

v1.44:
- bug fixes
- more accurate memory usage reporting

v1.43:
- Various optimizations
- Minor bug fixes

v1.42:
- Fixed a couple of display bugs

v1.41:
- Added INI setting "FrameRange"

v1.40:
  New features:
- Display thread count, CPU and memory usage
- Improved console display and log file format.
- AVISynth 2.6 colour spaces are reported correctly

  Fixed:
- IScriptEnvironment wasn't released in some cases.
  Thanks to IanB for suggesting a workaround ("env->~IScriptEnvironment()")

v1.34:
- Added support to pause program execution.

v1.33:
- Added ini file support.

v1.32:
- added time/frame to the performance data
- cosmetics

v1.31:
- Added "performance data", a list with fps numbers for each frame interval

v1.30:
- Added log file functionality

v1.22:
- Fixed poorly formatted output when using Avisynth MT versions.
