Build 2048
----------

* Greatly improved the indexing speed (almost twice as fast for transport streams).
Note that you need relatively fast disk I/O to see these improvements. CPU optimizations
can be swamped by slow I/O.

* Updated to CUDA version 6.5 and built with VS2013 Express. Note that CUDA architecture
sm_10 support was dropped by nVidia. That means really old slow cards are no longer
supported.

* Made fixes so that alternate languages set via the system locale setting are now properly
handled. This is a "poor man's" substitute for full Unicode support. Full Unicode support
is not possible because it is not supported by Avisynth.

* Fixed a bug that caused the field order to not be written in the Info dialog for
some streams.

* Added an INI option Fine_Cropping to allow cropping by 2 subject to the constraint
that the resulting width must be mod 4. This relies on correct nVidia driver behavior
and I cannot guarantee it for early driver versions.

Build 2047
----------

* The licensing scheme is changed. The IP information is no longer used, so it is now
no longer necessary to make a separate license key for each networking configuration.
You will need to get your new machine ID and create a new license key using the
online generator.

* The progress report to the console now prints on one line.

* Added an INI file option to disable the encrypted audio warning. Refer to the
DGIndexNV manual for details.

* Made a fix to kill a bug in transport parsing that could cause frame loss for
some rare streams.

* Fixed a bug in random access for MPEG2 streams that lack GOP headers.

Build 2046
----------

* Added an INI file option 'Bare_Demux' for compatibility of demuxed video files
with some authoring applications.

* Fixed bugs in the multiple AVS template file support: 1) do not list .avsi files in the
template list, 2) fix overrun of the template file list leading to crashes, 3) increase the
maximum number of template files to 20 (from 10).

Build 2045
----------

* Include "demuxed." in the filename of a demuxed file only if the
source stream is an elementary stream (ES).

* Provide options for what the program response should be when an
audio mismatch is seen.

* Show the available template files in the AVS Template drop down
menu and make these clickable to quickly change the active template file.

* Add checks for encrypted audio and offer user the option of how to act
when they are detected.

* Add check on hrd->cpb_cnt_minus1 so that erroneous values do not crash
DGIndexNV.

* For AVC video, B pictures that immediately follow an IDR in coding order are
decodable and are now properly decoded and displayed. Previously, they were treated
as leading B pictures and were replaced with a copy of the first decodable reference
picture, i.e., the IDR.

* An error check was added when opening MKV files to prevent a hard crash when a stream
type is not known to DGIndexNV.

Build 2044
----------

* Added MP4 container support.

* Fixed wrong filename being used for LPCM demuxed from program streams.

Build 2043
----------

* Support DXVA mode. Note that DXVA mode requires D3D mode to be enabled.

* Add support for AVC field order reporting.

* Implement field order reporting on preview (used to be done only on save project).

* Make field/frame repeats display in display order in the info dialog (previously was incorrectly
shown in decode order).

* Correct inaccuracies in film percentage reporting.

* Report more information in the 'Options/List GPU Devices' dialog, including the VP engine version.

* Initial window size of DGIndexNV is increased to 488 x 320.

* Added a fun anime public-domain splash screen.

* Revised the INI file version handling so that an existing INI file isn't defaulted by a new
DGIndexNV version unless the INI file format actually changed.

* Progress percentage is now reported to standard output during save project as in DGIndex.

* Fixed a bug that caused the wrong frame size to be written to the DGI file if cropping was
first enabled and then disabled.

* Fixed a bug such that an Avisynth script was created even though script creation was disabled.

* For CLI input, forward slashes are converted to back slashes.

* The timestamps dump now included GOP timecodes for MPEG2 streams.

* Demuxing VORBIS audio to Ogg from MKV files is now supported.

* Previously, if you opened an MKV file with video other than AVC/MPEG2/VC1,
you received an error popup and then closing DGIndexNV caused a crash. The
crash no longer occurs and the file is left open to allow audio demuxing.

* Previously, some VC1 streams with spurious, but also illegal, sequence headers
not followed immediately by an I picture were not properly handled. These streams
were seen on bluray disks and so a workaround has been implemented such that spurious
sequence headers are ignored instead of generating an error.

* Update documents for latest functionality.

Build 2042
----------

* Fix broken audio demuxing from interlaced VC1 streams.

* Some streams were encountered that had all I frames but for which the
GOPs were marked as open. This was fixed so that the GOPs are considered closed.

* Added support for GTX680 (Kepler). This required moving to CUDA 4.2,
so some notebook/OEM drivers may be impacted. 

Build 2041
----------

* Added Decode_Modes auxiliary INI file option. This enables you to select CUVID or
CUDA decoding for each video type.

* In the 'List GPU Devices' dialog, the active GPU device is now marked (with '>').
The CUVID/CUDA selection for each video type described above is now also displayed.

* Fixed incorrect indexing when a video start code is split between transport packets.

* Made PID detection more robust for corrupted transport streams.

* Fixed a bug in reporting of the PCR PID.

* Revised the method for specifying the AVS template folder so that you can now
specify that the template folder is the same as the folder containing DGIndexNV.exe.

* Fixed MKV parser so it accepts files with DIsplayUnit=3 (recent change to the spec).

* First phase of reporting field order when doing Save Project. Currently this works for MPEG2
and VC1. When I add AVC support I will document it properly.

* The DGI file format version number is bumped to NV14.

Build 2040
----------

* Fixed a problem with Info display of frame structure.

* The code that suppresses nondisplayable frames at the end of an AVC stream was
not robust, i.e., it failed if the first GOP contained only one frame. Fixed.

* Added a workaround that fixes AVC streams that have successive IDRs with the
same value of idr_pic_id. This fixes frame dropping for these streams.

* Fixed incorrect picture display when navigating on the timeline with
double-rate deinterlacing enabled.

* The disabled state of the single-step button was solid instead of the correct hollow. Fixed

* A rewind (to start of project) button and corresponding menu item were added.

* Skip leading zeros in a transport stream file to improve robustness.

* Incorrect SEI's with payload_type 0x80 and pasyload_size 0 were seen in the wild.
These rogue SEI's broke stream parsing. Fixed to ignore rogue SEI's.

* Fixed Load Project function to properly honor the configured project range.

Build 2039
----------

* The info overlay DGSource(debug=true) was modified so that IDR and I frames are
now properly distinguished.

* The DGI file format was modified to add a frame number indication to the FRM lines.
The file format version number was not bumped because 2039 is backward compatible with
DGI files created with 2038.

* Worked around a CUVID decoding bug for MPEG2 dual prime prediction. The workaround should
also improve decoding performance for mid- and high-end graphics cards.

* Worked around a problem with trimming BBC-HD AVC streams.

* Added an error popup to notify users when successive IDR frames with the same idr_pic_id are
encountered. This is an illegal stream condition and results in loss of one of the IDR frames.

* Fixed Output Trimmed TS for large trims.

* Added an error popup if an MP4 container file is opened.

* Always Crop 1088->1080 is now enabled by default.

* Fixed an error in printing "SMPTE 170M" in the Info dialog Colorimetry field.

Build 2038
----------

* Restored full update of the Info dialog during Save Project. Also added a Full_Info
option (default enabled) that controls this. Refer to the DGIndexNV user manual for details.
This option revises the INI file, so after installing 2038, open DGIndexNV and then close it
immediately to create the new INI file.

* Removed obsolete "DGMultiDecodeNV User Manual" option from the Help menu.

* Corrected erroneous frame count in the Info dialog when doing Save Project.

* Corrected parsing for profile_idc.

* Added an error message for missing PMTs.

Build 2037
----------

* Fixed use of an uninitialized variable that could cause crashes
and/or bad hinting for MPEG2 and VC1 files.

* Added a string to the first line of the DGI file that identifies the version of DGIndexNV
used to generate the index.

* Fixed counting of leading B frames for AVC streams.

* Improved the accuracy and robustness of the audio delay calculation.

* Revised DGDecodeNV so that serious CUDA errors do not cause the parent application to crash.
These errors now simply cause return of invalid video. Also, CUDA error popups now
time out after 5 seconds so that unattended applications do not hang.

* Added cropping parameters to DGSource(). This gives you the flexibility to define GPU cropping
either in DGIndexNV or in the DGSource() parameters.

* Added my current to-do list to the distribution (also available online).

* Backed out the mod 2 cropping granularity change because the Nvidia driver does not
honor it.

Build 2036
----------

* Crop granularity is now 2 pixels.

* A Close hotkey was added (F9).

* MKV header removal compression is now supported.

Build 2035
----------

* Fixed an issue where a long stretch without video packets in a transport stream could cause
a failure with a "Cannot find video data" error popup.

* Added a textual debug overlay option to DGDecodeNV that (currently) can be used to display
the filter version, the GOP number, the display and coded frame numbers, and the frame coding type.

Build 2034
----------

* Extended hinting for ColorMatrix() to AVC and VC1 video.

* The index file format was bumped to NV12.

Build 2033
----------

* Added ability to specify the GPU device to be used when more than one is present. A new
dialog was added to the Options pulldown that lists the available GPU devices.

* Fixed demuxing of TrueHD audio and added display of TrueHD stream info.

* Fixed a problem of clearing all data when an AVC file is closed. It could cause a subsequent
AVC file open without exiting DGIndexNV to fail.

* The index file format was bumped to NV11.

Build 2032
----------

* For MPEG2 streams, DGDecodeNV now automatically includes hinting data for ColorMatrix().

Build 2031
----------

* Fixed a problem with GOP stepping (especially backward) on the timeline in DGIndexNV.

* Fixed this problem: If you single-stepped into the end of the file, then subsequent play
or stepping would malfunction.

Build 2030
----------

* Fixed a problem that could cause macroblocking and/or decode warning popups in DGIndexNV
for MPEG2 program streams when scrolling on the timeline.

Build 2029
----------

* If multiple files are loaded in DGIndexNV and one of them contains an end of stream
NALU, then indexing would stop at that point, truncating the entire file set. Fixed by
ignoring end of stream NALUs.

* Fixed the frame type field for AVC field-structured streams. Frames with structure
I-P were erroneously displayed as P frames rather than I frames.

Build 2028
----------

* Fixed a problem that cuased some MKV files to not be opened.

* Fixed a problem with seeking with DGSource() for some MKV files.

* Fixed the Log Timestamps option for transport streams containing AVC video.

* Added an indication of the presence of PCR to the "Detect PIDs: Raw" output
for transport streams that carry PCR on the same PID as the video.

Build 2027
----------

* Fixed a problem that caused some 192-byte-packet transport streams to be detected as 188-byte.

* Fixed a problem that caused some transport streams to be reported as missing video data.

* Added a check to the Enable PureVideo Deinterlacer parent menu item to make it easier to see
when you have deinterlacing enabled.


Build 2026
----------

* Fixed a race condition between CUDA init and filter deinstantiation that could cause
a crash when DGDecodeNV is instantiated and then deinstantiated without a call
to GetFrame(). Some third-party applications do that to get the video clip properties
returned by an Avisynth script.

Build 2025
----------

* Fixed a GUI bug that could cause the first frame to be displayed wrong just once on
initial open in DGIndexNV.

* Fixed missing detection of audio streams with stream_id 0xbd when PAT/PMT is not present.

* Fixed the broken CLI option -od (save project and demux video).

Build 2024
----------

* Improved the AVS template handling functionality.

* Added an option in the Audio Demux dialog to permanently turn off
audio processing/demuxing. The state of this option is shown on the
audio demux menu pulldown.

* Made some changes to CUDA context locking intended to eliminate possible
crashing in some third-party applications.

* Please delete your DGIndexNV.ini file so that a new one can be created.

Build 2023
----------

* Fixed crashing at end of file for some MKV streams.

* Optimized CUDA NV12->RGB24 kernel to gain a few fps.

* Made the seek bar cursor less jittery on dragging.

Build 2022
----------

* The DGI file format is bumped to NV9.

* The crappy luma filter was removed.

* NV12->RGB24 conversion for display is now executed on the GPU. This improves the
display rate in DGIndexNV and makes the code common for 32-bit and 64-bit versions.

* DGIndexNV now accepts a license file without a carriage return.

* The AlwaysCrop and AlwaysCancelOnAudioMismatch options are now exposed in the
GUI Options pulldown.

* The license file can now store multiple license numbers. The License Switcher
is therefore now unnecessary and was removed.

Build 2021
----------

* Save BMP and Copy Frame to Clipboard now save the original frame size (with cropping and luma filtering honored).
Previously, if the frame was reduced by half for display, the reduced frame size was saved/copied.
Now the saved frame will accurately represent what will be served via your script.

* Corrected NV12 to RGB conversion based on the matrix coefficients (for the 32-bit version only).

* Fixed the following bug: Enter single-step mode, minimize the window, and then restore the window;
DGIndexNV hangs.

* The Help menu is now not disabled during play/preview/indexing.

* Reduced GDI load from updating the trackbar.

* Fixed a bug in the program stream parser that could cause play/preview/indexing to fail.

* DGSource() and DGMultiSource() are now synonyms. The Avisynth source filter is named DGDecodeNV.dll.

Build 2020
----------

* Revised DGMultiSource() to use floating CUVID contexts so that it no longer leaks GPU memory.
This should enable use in all GUIs without the dreaded decoder creation failure or crashes.

* Due to the fix above, CUVID Server and DGSource() are no longer necessary
and are therefore retired and omitted from the distribution.

* Added an error popup for VC1 streams that erroneously contain sequence headers
not followed by an I frame (as required by spec). If you run into this please let me
know.

* Fixed a regression in pulldown detection for VC1.

* For AVC, POCs are now stored in the DGI file as they appear in the stream, i.e., they
are not divided by two.

* Fixed a regression in expansion of the __aud__ and __del__ macros for script generation.

Build 2019
----------

* Made license switching a bit more convenient. Previously if you opened
a stream with the wrong license selected, then set the correct license, and then
did File/Open followed by OK with the intent of reopening the file, the file would
not be reopened because no change was made to the file list. Now any change in
the selected license will be treated as if the file list was changed, and the
input files will be reopened.

* The initial window position for DGIndexNV stored in the INI file was not being
honored. Fixed.

* Added an auxiliary INI file option to avoid a popup when there is a mismatch
between the PAT/PMT audio type and the actual detected audio type. Delete your
old INI file to allow DGIndexNV to create a new one with the option.

* Improved the heuristics for SPS/PPS injection for MKV streams.

* Performance improvements for indexing on many systems. The improvement is
substantial on most WinXP systems. The large pauses during playback in DGIndexNV
also now do not occur.

* Fixed the remaining time display in the Info dialog so that it properly
honors the configured project range.

* Added a timestamps dump function under the Options menu. This will dump the
STC/PCR, PTS, and DTS timestamps for the video and audio streams in a transport
or program stream.

* Fixed a bug that manifested as follows for some MKV files: Open the MKV file.
Hit preview/play. Hit stop. Hit preview/play again. DGIndexNV hangs.

Build 2018
----------

* Fixed case of recovery point SEI appearing before the PPS. This fixes AVC streams cut with VideoRedo.

Build 2017
----------

* In the file list dialog, if no changes have been made, hitting OK now does
not reopen the input files.

* A File/Step option was added. When the display is set to full size, on some
displays the buttons are off screen. This change allows the single-step mode to
be entered in such cases.

* Fixed crashes when a bare MPLS file is opened (one not part of a full BDMV tree).

* Opening files with CLI -i -o failed with small files. Fixed.

* Fixed two bugs in video demux: 1) garbage before the first start code was erroneously
replaced with zeroes instead of being deleted, 2) for AVC, trailing_zero_bytes greater than 1
resulted in writing garbage at the end of the NALU, making the demuxed file unusable.

* DGI file format is unchanged and working licenses continue to work.

Build 2016
----------

* Fixed a bug in VC1 pulldown detection. For example, streams on the bluray "Life" were being erroneously
marked with frame pulldown in the DGI file, causing extra frames when serving.

* Bumped the DGI version number to 8 to complete the removal of the ill-advised protection.

Build 2015
----------

* I got too clever by half with my licensing check in an attempt to punish people using patched executables.
It wasn't working right, however, causing it to emit some bad frames even for good licenses in some (not all) cases.
I won't try anything like that again.  Now, if you don't see your video you have to remake your license.
I'm done with this nonsense. It's not a battle I can win. Do not use 2014! 2013 is OK.

* Here's a cookie to make up for the first item above. Added audio language detection for opened MPLS files.
After opening the MPLS file, Audio/Audio Demux will tell you the languages of the (nonhidden) streams.

Build 2014
----------

* Added support for BluRay MPLS playlists.

Build 2013
----------

* New generation security.

Build 2012
----------

* Fixed a problem that could cause the source filters to hang if the last picture
in the stream is incomplete (due to bad editing).

* Implemented film % detection for AVC video.

* Silently ignore leading frames that are missing their required SPS/PPS's.

* Fix a problem that caused AVC sequence extensions to be reported as illegal
NALUs.

* Fix a problem that caused seeking on the timeline in DGIndexNV to report
failure to create the video decoder for some low-end NV cards.

Build 2011
----------

* The DGI file format version was bumped to NV6. So remake your projects
and INI files.

* NV12 to RGB code in DGIndexNV was converted to pure C for x64 compatibility.

* The PC/TV Scale option was removed. In the DGIndexNV display, PC scale is always used.
This affects only the display in DGIndexNV, and has no effect on video served by
your scripts.

* The Detected SIMD option was removed as there is now no asm code.

* An autocrop function was added to the cropping dialog.

* Fixed a problem causing spurious audio tracks to be demuxed.

* Fixed a problem with timeline navigation in DGIndexNV for some MKV files.

* Fixed a problem with AVC streams with 16 refs.

* Fixed a problem with sequence headers not being processed in some cases. This could
result in the frame rate not being correctly detected.

* Inlined a lot of the parsing code to improve indexing performance.

* Fixed a problem that caused some scripts to take a long time to be opened.

* Implemented 64-bit binaries (for power users only).

Build 2010
----------

* The previously hidden transport stream trim functionality is now exposed in
the GUI. A progress dialog for the trim operation has been added. Performance of the
file write operation has been improved. The functionality is now more robust for
writing proper packet boundaries. 192 byte transport packet streams are now
properly supported. Refer to the users manual for important usage notes and
caveats.

* Added a CLI avs template command: -at file.

* Fixed the Disable Display function for double rate deinterlacing. The operation
of this function has been made more robust.

* Fixed a problem causing some AAC streams to not be detected.

* Fixed a problem causing some teletext streams to be detected as audio.

* Added an error popup for non-4:2:0 streams (until supported by Nvidia).

* Fixed a problem in indexing of MPEG2 streams that caused some unusual but legal
GOPs to be considered malformed and cause an abort of the indexing.

Build 2009
----------

* Fix problem that caused some audio streams to not be detected.

* Fix problem that caused some MPEG program streams to be detected as elementary streams.

Build 2008
----------

* Redesigned the SPS/PPS heuristics for AVC streams in DGIndexNV. This fixes cases of bad decoding
when navigating on the timeline for streams that: 1) Have SPS/PPS's remote from the seek point. 2) Re-use
SPS/PPS IDs for NALUs with different content. The fix dramatically improves things for such streams, but it
may not be perfect because it is, after all, a heuristic. Note that this problem did not affect serving
 video through the Avisynth script; it affected only navigating the timeline in DGIndexNV (but see below).

* The SPS/PPS heuristics fix also fixes bad video demuxing for the same cases described above.

* Added tooltips for the navigation buttons and navigation bar in DGIndexNV.

* Fixed a problem that caused the DGIndexNV GUI and the DGI file to disagree about the frame size in some rare cases.

* The Detect PIDs dialog now shows the PIDs in both decimal and hexadecimal.

* The Quick Start guide was revised to use DGMultiSource() by default. A second Quick Start guide is
provided for DGSource()/CUVID Server usage.

Build 2007
----------

* Fix leading non-decodable frame calculation for MPEG2 streams. Frames pulled down from non-decodable
frames are also non-decodable.

* Honor stream's specified right cropping. Note that the associated INI file option is renamed AlwaysCrop
(was AlwaysBottomCrop).

* CLI cropping arguments are now decimal.

* Check the first 10000 packets of a transport stream (was 5000) to avoid missing audio.

Build 2006
----------

* Improve GOP back near EOF.

* Delete the navigation trackbar and subsume its
functionality into the selection bar. I find the action
more logical for navigation and parsimony demands the
deletion. There is still an issue with flashing of the
bar that I am addressing. Isn't Win32 GDI wonderful?

* Improve handling of this error case: open a transport
stream for which the video PID specified in the first program in the PAT/PMT has no data.

* The cropping dialog now shows the resulting mod values
and adds a static note about fine movements.

* Cropping can now be specified via CLI. For example,

dgindexnv -i "phasecoherence.vc1" -c 8 8 8 8

* For opening program streams, increase the depth of initial scanning of the source file when looking
for audio channels. This avoids missing some audio streams that do not begin immediately.

* Fix an indexing bug for some AVC BFF field-structured streams.

Build 2005
----------

* Replace GPU->CPU async memory copy with sync copy. Sync copy is faster because it does not require a wait
loop with a sleep. You should see higher max fps figures when doing a play/preview in DGIndexNV (with playback
speed set to maximum). Note that the decode DLLs already used sync copy so they were already serving video
as fast as possible.

Build 2004
----------

* Increase max files to 5000.

* Add DGMultiDecodeNV Manual item to Help menu.

* Fix bug in the parsing architecture. This fixes Alf Bundy's issue. Thanks for pointing that out, Alf!

* Fix film % reporting for MPG and VC1.

Build 2003
----------

* Fix crash on File/Close for some streams.

* Add error popup instead of crashing for malformed MPEG2 GOPs.

* UI facelift. Hope you like it!

Build 2002
----------

* Fix leading B frame calculation for AVC.

* Fix opening of some 192-byte (MTS/M2TS) streams.

* Added frame coding field (interlaced/progressive) to the MPG info display.

Build 2001
----------

* The Field operation is removed from DGIndexNV and added as the fieldop parameter to DGDecodeNV/DGMultiDecodeNV.
This was done because the field operation has no effect on the operation of DGIndexNV and so it doesn't belong there.

* Backward stepping by GOPs (< button) is fixed for program streams.

* Lockup when serving MKV files and navigating near the end of file is fixed.

* Some performance improvements.

* Up-to-date documentation.

Build 2000
----------

* Fixes random access for MPEG2 program streams

* Fixes reversed fields in the Info dialog.
