PrimoBurner(tm) for C++  4.7
CD, DVD and Blu-ray Software Development Kit
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
Release Notes
---------------
OS Requirements
---------------

* Windows 7 SP1 and above
* Mac OS X 10.7 and above
* Ubuntu 16.04 LTS

--------------------
Runtime Dependencies
--------------------

Ubuntu
------

These libraries are loaded dynamically by AVBlocks to handle the corresponding image format (jpeg/tiff/png):

* libjpeg.so.8  - JPEG Library
* libtiff.so.5  - TIFF Library and Utilities
* libpng12.so.0 - PNG Reference Library

This library is  needed by AVBlocks, `libAVBlocks.so` will not load without these libraries:

* libtbb.so.2   - Intel Threading Building Blocks - used for multi-core parallel processing on Linux.

To install all dependencies you can run this command in Terminal:

	sudo apt-get install libjpeg8 libtiff5 libpng12-0 libtbb2


-----------------
Demo Restrictions
-----------------

The read/write speeds are limited as follows:

* CD-R, CD-ROM: 8x
* CD-RW: 4x
* DVD write-once, DVD-ROM: 4x
* DVD rewritable: 2x
* Blu-ray: 1x

Those restrictions are removed when a valid license is passed to the PrimoBurner library.


Release Notes - PrimoBurner - Version 4.7.1 (21 May 2017)
=========================================================

** User Story
    * [PB-240] - Update AVBlocks to 2.2.1

** Bug
    * [PS-40] - Mac: Crash when enumerating devices in which there are discs with volume names shorter than 10 characters


Release Notes - PrimoBurner - Version 4.7.0 (21 Jan 2017)
=========================================================

** User Story
    * [PB-224] - DeviceEnum: Windows: Do not require drive letters during device enumeration
    * [PB-227] - Library: Windows: Support devices that do not have drive letters assigned.
    * [PB-230] - Samples: New 'enum_devices` sample
    * [PB-232] - Mac: Provide 32-Bit + 64-Bit universal lib for Mac
    * [PB-236] - Update AVBlocks to 2.2
    * [PB-237] - Linux: Use Qt5 in GUI samples


Release Notes - PrimoBurner - Version 4.6.1 (14 Mar 2016)
=========================================================

** Technical Story
    * [PB-225] - Update AVBlocks to 1.26


Release Notes - PrimoBurner - Version 4.6.0 (21 Jan 2016)
=========================================================

** Improvement
    * [PB-220] - Samples: Windows: Upgrade sample projects to Visual Studio 2015
    * [PB-221] - Samples: Windows: Deprecate the CLR2 .NET projects
    * [PB-222] - Update AVBlocks to 1.25


Release Notes - PrimoBurner - Version 4.5.0 (29 Jun 2015)
=========================================================

** New Feature
    * [PB-216] - Device: Write+Verify recording mode for DVD-RAM and BD-RE media

** Improvement
    * [PB-217] - Device: Rename `Device.BDRWriteVerification` to `Device.BDWriteVerify`
    * [PB-218] - Update AVBlocks to version 1.19

** Bug
    * [PB-215] - System.EntryPointNotFoundException: Unable to find an entry point named 'TocTrack_adr' in DLL


Release Notes - PrimoBurner - Version 4.4.2 (23 Apr 2015)
=========================================================

** Improvement
    * [PB-204] - Samples: Mac: Upgrade C++ samples to Qt 5.x
    * [PB-210] - Update AVBlocks to 1.18

** Bug
    * [PB-203] - Mac: Pure virtual function called exception in ReadCDSession sample
    * [PB-209] - Device: Device.WriteTransferRate returns zero for BD-RE media


Release Notes - PrimoBurner - Version 4.4.1 (05 Feb 2015)
=========================================================

** New Feature
    * [PB-188] - Samples: .NET: New MultiAudioCD sample

** Improvement
    * [PB-185] - Docs: .NET: Fix the code sample in the DiscLayout and DiscArchive docs
    * [PB-186] - Docs: C++: Fix the code sample in the DiscArchive docs
    * [PB-191] - Update AVBlocks to version 1.16


Release Notes - PrimoBurner - Version 4.4.0 (09 Jan 2015)
=========================================================

** Improvement
    * [PB-97] - Docs: C++: Add a page that describes the API changes for PrimoBurner 4

** Bug
    * [PB-179] - .NET: CachePolicy.CacheSmallFiles causes entry point exception
    * [PB-182] - .NET: ErrorFacility enum has the wrong values for Mac and POSIX subsytems
    * [PB-183] - C++: AVBlocks libraries are missing from the C++ distribution


Release Notes - PrimoBurner - Version 4.3.0 (22 Nov 2014)
=========================================================

** Improvement

    * [PB-141] - Samples: C++: BluRayBurner: Add Close Track and Close Session options
    * [PB-142] - Samples: C++: BluRayBurner: Choose format type and subtype before formatting.

** Bug

    * [PB-131] - Write errors on PIONEER , BD-RW   BDR-206D v9.56
    * [PB-140] - Wrong seconds in B0 pointer when writing CD using WriteMethod::RawDao2352.
    * [PB-143] - Device::isMediaFormatted reports false for formatted BD-R with spare areas (BD-R SRM-POW)
    * [PB-144] - Last written DVD ECC block and BD Cluster is padded with zeros. This affects random disc writes.
    * [PB-145] - Partially formatted DVD-RW media is reported as blank on some LITE-ON devices.


Release Notes - PrimoBurner - Version 4.2.1
===========================================

** Bug

    * [PB-119] - Cannot obtain exclusive access to devices on Windows XP SP3


Release Notes - PrimoBurner - Version 4.1.1
===========================================

** Bug

    * [PB-103] - .NET: DVDBurner sample app crashes when trying to burn a DVD-Video disc


Release Notes - PrimoBurner - Version 4.0.2
===========================================

** New Feature

	* New DiscArchive and DiscLayout interfaces for creating archives on optical discs.
	* New License API. License info for PrimoBurner 3.x not compatible with PrimoBurner 4.x.
	* Streamlined error reporting through a helper ErrorInfo interface. It is provided by all major interfaces like (DataDisc, AudioCD, etc.)

** Improvement

	* PB-1: AudioPlugins replaced by AVBlocks.
	* PB-5: Do not impose UI restrictions (popup) when in demo mode
	* PB-6: Remove VS2005 projects
	* PB-26: Convert installers to self-extracting archives.
	* PB-32: Write the PrimoBurner.log file to user's home folder when log filename is not set in enableTraceLog().
	* PB-34: Move cache related properties in DataDisc to sub-interface (as in UdfVolumeProps)
	* PB-43: Old licenses are not supported (C++ and .NET)
	* PB-83: Change Device.callerName default value from NULL to "PrimoBurner SDK"
	* Remove the UTF-8 build configurations on all platforms. Provide only UTF-16 builds.
	* Provide only online documentation.

** Bug

	* PB-15: Error when reading CD-TEXT on certain devices
	* PB-31: Write errors on BDR-206 and BDR-207
	* PB-37: Enforcing demo speeds may cause a PB read/write methods to fail
	* PB-39: Return original error when retrying Write_10_2A in WriterService::Write
	* PB-41: EndDVDTrack fails on Optiarc DVD RW AD-5280S
	* PB-49: BluRayBurner sample crashes when there are no burner devices connected to the system
	* PB-62: Reduce library size by stripping non-global symbols and dead code (OS X)
	* PB-73: Uniform collections. Where possible all collections in PrimoBurner provide the same operations.
	* PB-77: Write CD in raw mode leaks memory
	* PB-79: CDSession::setNextSession() leaks memory
	* PB-80: Change CDSession::rawPoint() implementation to return a reference that doesn't have to be released.
	* PB-91: Device.Eject() hangs after recording has been interrupted
	* PB-93: Max length ISO/Joliet filenames without extension cause buffer overwrite.

Release Notes - PrimoBurner 3 - Version 3.6.12
==============================================

** Bug

    * [OLDPB-6] - Windows: Binaries are not signed with Microsoft Authenticode.

Release Notes - PrimoBurner 3 - Version 3.6.11
==============================================

** Improvement

    * [OLDPB-37] - Device: Log the capacity and available space of the device cache on write error.

** Bug

    * [OLDPB-31] - Write errors on PIONEER , BD-RW   BDR-206D v9.56
    * [OLDPB-35] - Device reports wrong buffer capacity. The capacity reported is for the read buffer instead of the write buffer.

Release Notes - PrimoBurner 3 - Version 3.6.10
==============================================

** Improvement

    * [OLDPB-28] - Mac: Migrate to Xcode 5 / Apple LLVM 5.0 / clang 5.0 / Target SDK 10.7
    * [OLDPB-29] - Windows: C++: Deprecate Visual Studio 2008

Release Notes - PrimoBurner 3 - Version 3.6.9
=============================================

** Bug

    * [OLDPB-19] - Device.Eject() hangs after recording has been interrupted.
    * [OLDPB-20] - Max length ISO/Joliet filenames without extension cause buffer overwrite.
    * [OLDPB-22] - Cannot obtain exclusive access to devices on Windows XP SP3.

-------------
Version 3.6.8
-------------

Fixes
-----
OLDPB-14: Error when reading CD-TEXT on certain devices.
OLDPB-15: Strip non-global symbols (reduce library size).
OLDPB-16: OSX DMG installer does not show License.
OLDPB-17: Write CD in raw mode leaks memory.
OLDPB-18: Write CD in raw mode without CDText causes access violation.


-------------
Version 3.6.7
-------------

** Task
    * [OLDPB-3] - Remove the UTF-8 builds on Windows.
    * [OLDPB-7] - Update build to use PrimoScsi 1.2.2
    * [OLDPB-9] - Remove Visual Studio 2005 projects.
    * [OLDPB-10] - Installers: Add a link to the online documentation and remove the PDF and CHM help files.

Fixes
-----
OLDPB-13: Device.GetMaxWriteSpeedKB() leaks memory.


-------------
Version 3.6.6
-------------

Fixes
-----

OLDPB-2: BluRayBurner sample crashes when there are no burner devices connected to the system
OLDPB-1: IDevice::EndDVDTrack fails on Optiarc DVD RW AD-5280S


-------------
Version 3.6.5
-------------

New
---

* 2411: DataDisc: added property to specify the bootable disc Platform ID.


-------------
Version 3.6.4
-------------

Fixed
-----

* 2410: Bootable disc checksum. The checksum in the el torito validation entry is incorrectly calculated. On some PC's the boot CD is causing the BIOS to return "selected boot device not available".



-------------
Version 3.6.3
-------------

Fixed
-----

* 2405: A boot image created with DataDisc gives the following error when booting: CDBOOT: Couldn't find BOOTMGR


-------------
Version 3.6.2
-------------

New
---

* 2306: Added IDeviceEnum::GetItemFromSystemPath method which allows the creation of IDevice objects using a system specific device path.
  Also added IDevice::GetSystemPath method which returns the system path associated with the device.

Fixed
-----

* 2374: Windows: When a client application registers for a device notification via IEngine::SetCallback a thread is spawned that occupies the CPU (1 core) at 100%.

-------------
Version 3.6.1
-------------

Fixed
-----

* 2063: IDiscCopy reports "Invalid image file" when reading DVD images


-------------
Version 3.6.0
-------------

New
---

* 2028: BluRayBurner sample update
* 1994: Add BD copy functionality in IDiscCopy interface
* 1989: Windows and Linux: Update DataBurnerCmd sample to burn on blank DVD+RW media.
* 1987: Wundows: Update PrimoConfig.h to use int types defined in stdint.h file for projects created on VS 2010 or higher
* 1986: Update samples to use PrimoBurner.h header file instead of hpCDE.h header file.
* 1984: Implement device change notification handling as part of PrimoBurner SDK (added IEngine::SetCallback method and IEngineCallback interface)
* 1767: Modify HPCDE_NO_DEPRECATED macro to turn on/off deprecated warnings


-------------
Version 3.5.9
-------------

New
---

* 1974: Video DVD: add method/property to define whether to perform strict or loose validation of the Video DVD structure
* 1972: Define code page to use when writing/reading CD-Text
* 1971: Add method to get/set CD-Text language
* 1957: Linux: Added Qt BluRayBurner sample to Ubuntu distribution.
* 1647: Mac: Update samples with GetErrorMessage
* 1619: Linux: DataBurnerCmd sample added


Fixed
-----

* 1969: Video DVD: Reading IFO structure throws an exception if the structure is invalid
* 1968: ISO 9660 issue: files with no extensions are recorded with ";1" at the end of their names instead of ".;1"
* 1960: Write Video DVD structure with lower case filenames.


-------------
Version 3.5.8
-------------

New
---

* Mac: Added Qt BluRayBurner sample for Mac OS X.


-------------
Version 3.5.7
-------------

New
---

* 1846: Deprecate VIDEODVD_VIDEO_TS_VOB_SIZE error code and add new error codes for the cases when VIDEODVD_VIDEO_TS_VOB_SIZE was previously reported.
	The new error codes are:
		VIDEODVD_VIDEO_TS_VOB_NOT_FOUND,
		VIDEODVD_VIDEO_TS_VOB_NOT_EXPECTED,
		VIDEODVD_VIDEO_TS_VOB_IFO_INCORRECT_SIZE

Fixed
-----

* 1851: Windows: Disconnecting external device results in application freezing
* 1847: Calling IDevice::GetMediaCapacity for DVD-ROM DL reports only the blocks from the first layer


-------------
Version 3.5.6
-------------

New
---

* 1815: AudioCD: Hidden track: allow user data in the first two seconds of the pregap
* 1811: Exclusive device access for Windows Vista and Windows 7
* 1805: BlockDevice trace log

Fixed
-----
* 1818: Device: On some devices GetWriteSpeeds returns unusually high speeds for CD media
* 1813: BlockDevice: EndDVDTrack takes a long time on Windows 7 64Bit

-------------
Version 3.5.5
-------------

Fixed
-----

* 1768: DataDisc - burning large image files with file size greater than 4 GB


-------------
Version 3.5.4
-------------

New
---

* 1757: Add 'Create hidden track' feature to AudioBurner sample
* 1736: Linux: Add Qt samples to Ubuntu distribution. The new samples are AudioBurner, DiscCopy and DVDBurner. Each of the samples comes with a NetBeans 'C/C++ Qt Application' project.


-------------
Version 3.5.3
-------------

New
---

* 1713 Linux: Convert PrimoBurner dynamic libraries (AudioCD, DataCD, DiscCopy, hpCDE, VideoDVD) to single dynamic library called libPrimoBurner.so
* 1704 Linux: PrimoAudio library is renamed to AudioBlocks. PrimoAudio.h is renamed to AudioBlocks.h.
* Linux: PrimoBurner supports only UTF-8: libPrimoBurnerUtf8.so (x86) and libPrimoBurner64Utf8.so (x64)
* The following header files have been deprecated:
	hpCDE.h file is replaced by PrimoBurner.h
	hpCDEUtf8.h is replaced by PrimoBurnerUtf8.h


Fixed
-----

* 1706 Change UDF implementation to support files with unlimited fragments (extents).


-------------
Version 3.5.2
-------------

New
---

* 1712 Mac: Convert PrimoBurner libraries (AudioCD, DataCD, DiscCopy, hpCDE, VideoDVD) to single dynamic library called libPrimoBurner.dylib.
* 1708 Mac: Static libraries are no loger included with the OEM and Enterprise distributions.
* 1704 Mac: PrimoAudio library is renamed to AudioBlocks. PrimoAudio.h is renamed to AudioBlocks.h.
* 1703 Mac: Create universal (64Bit and 32Bit) distributions for Mac SDK 10.5 and 10.6.
* 1696 Mac: Replace Mac OS X installers with simple tar.gz distributions.

* Mac: PrimoBurner now supports only two character sets - UTF16 and UTF8.
	The PrimoBurner libraries are as follows:
		UTF-16 - libPrimoBurnerUtf16.dylib
		UTF-8  - libPrimoBurnerUtf8.dylib
	The libraries and compiled samples in PrimoBurner SDK 10.4 target only i386 architecture.
	The libraries and compiled samples in PrimoBurner SDK 10.5 and SDK 10.6 are universal binaries which target both i386 and x86_64 architectures.

* The following header files are deprecated:
	hpcde.h file is replaced by PrimoBurner.h
	hpCDEUtf8.h is replaced by PrimoBurnerUtf8.h
	hpCDEUtf16.h is replaced by PrimoBurnerUtf16.h


-------------
Version 3.5.1
-------------

New
---

* 1711 Windows: Convert PrimoBurner libraries (AudioCD, DataCD, DiscCopy, hpCDE, VideoDVD) to single dynamic library called PrimoBurner.dll. The new PrimoBurner dynamic library does not depend on any C/C++ runtime libraries.
* 1710 Windows: Static libraries are no longer included with the OEM and Enterprise distributions.
* 1705 Windows: Sample projects for VC 2010.
* 1704 Windows: PrimoAudio library is renamed to AudioBlocks. PrimoAudio.h is renamed to AudioBlocks.h.
* Windows: PrimoBurner now supports only two character sets - UTF-16 (also known as just Unicode) and UTF-8.
These could be linked into client projects regardless of whether "Treat wchar_t is built-in type" setting is ON or OFF.
	The PrimoBurner libraries are as follows:
		UTF-16 - PrimoBurner.dll (32-bit) and PrimoBurner64.dll (64-bit)
		UTF-8  - PrimoBurnerUtf8.dll (32-bit) and PrimoBurner64Utf8.dll (64-bit)
* The following header files are deprecated:
	hpcde.h file is replaced by PrimoBurner.h
	hpCDEUtf8.h is replaced by PrimoBurnerUtf8.h


-------------
Version 3.0.8
-------------

New
---

* 1690: Add GetSystemErrorDomain to IAudioCD, IDataDisc, IDiscCopy and IBlockDevice interfaces
* 1656: Mac: DiscCopy.qt sample - update the code in BurnerException.h to use GetErrorMessage methods to display appropriate error descriptions.
* 1654: Extend IAudioCD to allow audio ripping in WAV, WMA and OGG using the new PrimoAudio writer plug-ins.
* 1649: IAudioCD - ability to set index 1 (pregap) for the first track (allows creation of hidden track)
* 1619: Windows: DataBurnerCmd and DataReaderCmd samples added

Fixed
-----

* 1387: Report errors in IAudioCD when WriteToCD fails to read the input audio file

Deprecated Classes
------------------

The following classes and enumerations have been deprecated and will be removed from the next version PrimoBurner:

IAudioFileRef - replaced by the IAudioInputRef class.
IAudioFileListRef - replaced by the IAudioInputListRef class.
EAudioSource - replaced by the EAudioStorage enum.

Deprecated Methods
------------------

The following methods have been deprecated and will be removed from the next version PrimoBurner:

Library:

CreateAudioFile - Please use the CreateAudioInput method.

-

IAudioCD:

GetFileLength - Please use the GetInputLength method.
GetAudioFilesRef - Please use the GetAudioInputsRef method.
GetErrorFileRef - Please use the GetErrorInputRef method.

-

IAudioInput(was IAudioFile):

SetAudioSource - Please use the SetStorageType method.
GetAudioSource - Please use the GetStorageType method.

Deprecated Enum Values
-----------------------

The following enumeration values have been deprecated and will be removed from the next version PrimoBurner:

EAudioCDStatus:

AUDIOCD_STATUS_INITIALIZING_AUDIO_DECODER - not used anymore.

-

EAudioCDError:

AUDIOCD_NO_SOURCE_FILES - Please use the AUDIOCD_NO_INPUT value.
AUDIOCD_SOURCE_FILE_ERROR - Please use the AUDIOCD_INPUT_ERROR value.


-------------
Version 3.0.7
-------------

New
---

* 1632: Add ability to read media Id of DVD and Blu-ray Discs
* 1626: Use IDevice::GetErrorMessage in Windows C++ samples
* 1625: Add GetErrorMessage method to IDevice
* 1613: Add PrimoBurner version to file systems' developer ID string
* 1571: Reorganize samples

Fixed
-----

* 1624: Define all SUCCESS error codes to 0
* 1548: ReadBufferCapacity_5C should not be called if the burning is not active
* 1543: Linux: Read CD-TEXT fails on certain devices
* 1510: Update the AudioCDBurner and ReadCDText samples to use the new CDTT_GENRE_TEXT attribute
* 1505: Write CD+G data when copying CDs (RAW only)
* 1460: Add missing SCSI sense errors to primo::scsi::EScsiSenseError enumeration


-------------
Version 3.0.6
-------------

Fixed
-----

* 1564: Updated Mac OS X samples to use Qt 4.6
* 1560: Device.GetWriteSpeeds() does not return all possible write speeds
* 1524: Unhandled exception in CopyDisc sample
* 1522: Mac installation contains unnecessary files
* 1275: TRACKINFOEX.RecordedSize is not correct for DVD+R, CD-R, CD-RW
* 822: Device.MaxWriteSpeedKB is not correct for some devices

-------------
Version 3.0.5
-------------

Fixed
-----

* 1546: Read device buffer capacity only when burning is in progress.
* 1535: Mac: Samples: XCode2: DiscCopy sample does not start.
* 1523: Trace log enhancements
* 1520: Log the MMC error, the current write address and the number of blocks when write command fails.
* 1498: Retry write command after some MMC errors
* 1494: HL-DT-ST, BD-RE  GGW-H20N  vXJ03: 0x030C02 WRITE ERROR � AUTO-REALLOCATION FAILED
* 1491: DiscCopy: Write CD-TEXT when copying CD in RAW mode
* 923: DataDisc: file progress reports PercentWritten over 100%.

-------------
Version 3.0.4
-------------

Breaking Changes
----------------

As of 3.0.4 you will need to reference the primo::burner namespace explicitly in your code. To do that insert a "using namespace primo::burner;" statement immediately after the inclusion of hpCDE.h, e.g.

#include "hpCDE.h"
using namespace primo::burner;


New
---

* 1492: Added new CDTT_GENRE_TEXT = 0x90 to ECdTextType enumeration. Use the new CDTT_GENRE_TEXT attribute for getting/setting the genre description. To get/set the genre code use the CDTT_GENRE attribute.
* 1436: IDiscCopy can now copy DVD-R DL discs recorded in "Layer Jump" mode.

Fixed
-----

* 1497: The following ISO9660 issues were fixed:

	1) (ref. ISO 8.4.26.1) Date Time format has an incorrect Year attribute: The value must be in the range 1..9999
	2) (ref. ISO 6.8.1.3) The length of the directory is incorrect.
	3) (ref. ISO 7.2) In each fixed-length field the content of which is specified, the characters shall be left-justified and any remaining byte positions on the right shall be set to (20).
	4) (ref. ISO 9.3) The records of a Directory shall be ordered according to the  value of the File Identifier.
	5) (ref. DVD-2 3.7.3 (RPB 8)/A-15) The Path Table Records specified no Directory Identifier
	6) (ref. DVD A.14) The System Use field must contain the Copyright Management Information

* 1492: CD-Text genre writing/reading is broken.
* 1386: IAudioCD reports wrong burn progress when burning in Track-At-Once (TAO) mode.
* 1385: An empty track is written if the audio input is a stream, decoded in memory and a CD session has not been specified.
* 1378: IDiscCopy: When the source disc originally contains a session with several tracks in it, the destination disc will have several sessions with one track in each session.
* 672: IDataDisc::GetImageLayout() returns an image layout with wrong file creation times


-------------
Version 3.0.3
-------------

New Features
------------

* UDF revisions up to 2.6 are now supported by IDataDisc.
* Burning Blu-ray Video file structure from BDMV and BDAV folders is now supported.
* New IDiscCopy interface for easy CD and DVD disc copying. Supports disc-to-image, image-to-disc and disc-to-disc direct copy.
* IBlockDevice supports all types of Blu-ray media.

------------
Version 2.58
------------

Fixes
-----

* 1426: Device enumeration hangs and in some cases the device is lost and a system reboot is required. This happens only on Windows XP SP2 and with LG devices only.
* 1425: Device enumeration takes long time (30 seconds) on Windows Vista. This happens with some LG devices, but other vendors may be affected too.


------------
Version 2.55
------------

Fixes

-----

* 1366: IDataDisc does not use all the space on fully formatted DVD-RW RO media.
* 1342: IDevice::ReadCDSessionLayout always scans indexes.

------------
Version 2.54
------------

Fixes

-----

* 1327: Test burn of data in Track-At-Once mode fails.
* 1325: CD ISRC and MCN codes not recorded accurately.
* 1319: IDVDFeaturesRef::GetCanReadDVDRam not correct with some devices.
* 1318: DVD-RW RO: After quick format IDevice::GetMediaIsBlank returns FALSE.
* 1314: DVD-RW RO: Write fails if the disc is fully formatted on SONY BDRW BWU-100A 1.0a.
* 1279: CD writing modes not detected on Samsung SH-S162L.
* 924: IDevice::GetInternalCacheUsedSpace returns wrong value on some SONY devices.

------------
Version 2.53
------------

New Features
------------

* 1323: Added IDevice::GetCDFeaturesRef method. The new method gets the CD read/write capabilities of the device.
For more information please see the ICDFeaturesRef documentation.
* 1278: Added IEngine::CreateDeviceFromHandle to allow creating IDevice instance from operating system handle.

------------
Version 2.52
------------

Fixes
-----

* 1213: CD-TEXT is not written properly if album text has not been set.
* 1212: Force device power calibration before DVD-RW erase and format.
* 1210: DVD-RW RO: READTRACKINFOEX::dwRecordedSize value is wrong.
* 1208: Memory leak in DataFileRipping sample.

------------
Version 2.51
------------

New Features
------------

* Windows: Added Visual Studio 2008 projects.
* Mac: Added XCode 3.x projects and support for Mac OS 10.5.

Fixes
-----

* 1068: File extensions in AudioPlugins.config should not be case sensitive.

------------
Version 2.50
------------

New Features
------------

* Windows: Device enumeration has been rewritten to use the SetupDiXXX API.
* IAudioCD was enhanced to use PrimoAudio plugins. Currently there is DirectShow plugin for Windows and CoreAudio plugin for Mac. Plugins for different audio formats will be added in the future. For more details, see the documentation of the new IAudioFormat, IAudioFile and IAudioPluginInfo interfaces.

Fixes
-----

* 1128: BlockDevice sample sets wrong file size when files are bigger than 4GB. The problem is in the sample code.

------------
Version 2.22
------------

New Features
------------

* Added DVD-RAM support.

Fixes
-----

* 1137 - RAW CD burning produces discs with unreadable second session. This happens only when ICDSession raw points are not set.
* 1062 - IDataDisc::WriteToDisc leaks memory.
* 970 - Problem with CD-Text on Optiarc AD-7200A
* 927 - ECdTextGenreCode - CDTG_SPOKEN_WORD has wrong value and CDTG_SOUNDTRACK is missing.
* 925 - ECdTextGenreCode - CDTG_RYTHMANDBLUES was renamed to CDTG_RHYTHM_AND_BLUES

------------
Version 2.21
------------

New Features
------------

* Windows: Added native wchar_t configurations for DLL and static libraries. This allows compilation of code that uses wchar_t as a native type (not as unsigned short) on Windows.


Fixes
-----

* 696: IMediaInfo::GetDvdCssCppm returns true, regardless of whether a disc is CSS-protected or not. This happens on most TSSTcorp and some PIONEER devices.

------------
Version 2.20
------------

Visual Studio 2003/Visual C++ 7.1 Notes
---------------------------------------

Static linking is no longer supported for Visual C++ 7.1 projects.
However, you can still use the PrimoBurner dynamic link libraries (DLLs).

New Features
------------

* 997: Added IUdfExtent and IUdfExtentList interfaces. The new interfaces allow multiple extents to be specified for UDF files.
* 996: Windows: Added static libraries for Visual C++ 2008

Fixes
-----

* 994: IDataDisc::WriteImageToDisc sends DATACD_STATUS_INITIALIZING twice.
* 990: IDataDisc::LoadFromDisc leaks memory. In some cases the buffer used for reading was not properly freed.

Deprecated Classes
------------------

The following classes and enumerations have been deprecated and will be removed from the next version PrimoBurner:

hpCDE - replaced by the Library class.
IBDVersionEnumeratorRef - replaced by the IBDVersionListRef class.
ICDTrackMode - replaced by the ICDMode class.
IDeviceEnumerator/IDeviceCollection - replaced by the IDeviceEnum class.
ISpeedEnumerator/ISpeedCollection - replaced by the ISpeedEnum class.
ISpeedDescriptor - replaced by the ISpeedDescRef class.
EDeviceEnumeratorError/EDeviceCollectionError - replaced by the EDeviceEnumError enum.

Deprecated Methods
------------------

The following methods have been deprecated and will be removed from the next version PrimoBurner:

ICDSession:

AppendTrack - Please use the GetTracksRef and the ICDTrackListRef::Add methods.
RemoveTrack - Please use the GetTracksRef and the ICDTrackListRef::RemoveAt
GetTrack - Please use the GetTracksRef and the ICDTrackListRef::GetItem methods.
GetTracksCount - Please use the GetTracksRef and the ICDTrackListRef::GetCount methods.
RemoveAllTracks - Please use the GetTracksRef and the ICDTrackListRef::Clear methods.

-

ICDTrack:

SetTrackStart - Please use the SetStart method.
GetTrackStart - Please use the GetStart method.
SetTrackEnd - Please use the SetEnd method.
GetTrackEnd - Please use the GetEnd method.
GetTrackLength - Please use the GetLength method.
GetTotalTrackLength - Please use the GetTotalLength method.

AppendIndex - Please use the GetIndexesRef and the ICDIndexListRef::Add methods.
RemoveIndex - Please use the GetIndexesRef and the ICDIndexListRef::Remove methods.
GetIndex - Please use the GetIndexesRef and the ICDIndexListRef::GetItem methods.
SetIndex - Please use the GetIndexesRef and the ICDIndexListRef::SetItem methods.
GetIndexCount - Please use the GetIndexesRef and the ICDIndexListRef::GetCount methods.
RemoveAllIndices - Please use the GetIndexesRef and the ICDIndexListRef::Clear methods.

AppendMode - Please use the GetModesRef and the ICDModeListRef::Add methods.
RemoveMode - Please use the GetModesRef and the ICDModeListRef::Remove methods.
GetMode - Please use the GetModesRef and the ICDModeListRef::GetItem methods.
SetMode - Please use the GetModesRef and the ICDModeListRef::SetItem methods.
GetModeCount - Please use the GetModesRef and the ICDModeListRef::GetCount methods.
RemoveAllModes - Please use the GetModesRef and the ICDModeListRef::Clear methods.

-

IDataFile:

AddItem - Please use the GetChildrenRef and the IDataFileListRef::Add methods.
RemoveItem - Please use the GetChildrenRef and the IDataFileListRef::RemoveAt methods.
GetItem - Please use the GetChildrenRef and the IDataFileListRef::GetItem methods.
GetItemIndex - Please use the GetChildrenRef and the IDataFileListRef::GetIndexOf methods.
SetItem - Please use the GetChildrenRef and the IDataFileListRef::SetItem methods.
GetCount - Please use the GetChildrenRef and the IDataFileListRef::GetCount methods.

-

IDevice:

WriteClearBuffer - Please use the ClearOutputBuffer method.
WriteLockBuffer - Please use the LockOutputBuffer method.
WriteUnlockBuffer - Please use the UnlockOutputBuffer method.
EnableMediaChangeNotification - Please use the EnableMCN and DisableMCN methods.
GetSupportedWriteSpeeds - Please use the GetWriteSpeeds method.

-

ISpeedEnum(was ISpeedCollection/ISpeedEnumerator):

GetItem - Please use the GetItemRef method instead.

-

Library(was hpCDE):

CreateCDTrackMode: Please use the CreateCDMode method.


------------
Version 2.10
------------

New Features
------------

* 612: IDataDisc::WriteImageToDisc and IDataDisc::WriteImageToDiscEx will write Mode2 Form1 sectors
when IDataDisc::SetCdRomXA is set to TRUE. This is valid for CD media only.

------------
Version 2.09
------------

New Features
------------

* 675: UDF file access permissions should be set to READ/EXECUTE by default.
* 611: Added the IUdfFilePropsRef interface and the IDataFile::GetUdfFilePropsRef method.
These new interfaces will allow setting of various UDF file properties.
For now you can set only the file and directory access permissions.

Fixes
-----

* 677: Mac OS: DataDisc could not read files form read-only volumes (e.g. Windows partition on dual boot Intel Macs).
* 676: Mac OS: DVDBurner.qt4 sample crashes.
* 674: DataDisc sends the status "'Initializing" twice when burning ISO image.

------------
Version 2.08
------------

New Features
------------

* 627: Added IDevice::GetDVDFeaturesRef method. The new method gets the DVD read/write capabilities of the device.
For more information please see the IDVDFeaturesRef documentation.

* 590: Added IDevice::GetBDFeaturesRef method. The new method gets the Blu-ray Disc read/write capabilities of the device.
The following classes were also added: IBDFeatures, IBDVersionEnumerator and IBDVersion.
For more information please see the IBDFeaturesRef documentation.

Fixes
-----

* 625: Burning produces unreadable discs on some devices when DVD+RW media is used.
* 542: Free space is not reported correctly for CD-R and CD-RW media.
* 539: Partially formatted DVD+RW are reported as blank.

------------
Version 2.07
------------

New Features
------------

* Added IDevice::LockOutputBufferEx method. This method is similar to IDevice::LockOutputBuffer but additionally returns the current block size.


Fixes
-----

* As of this release support for HFS has been discontinued.
* As of this release support for (S)VCD has been discontinued.
* All deprecated functions have been removed from the API. If you used such methods you will have to modify your code to use the corresponding functions in the new API.
* IDataFile::GetItem and IDataFile::Find method no longer return a copy of IDataFile object. To get a true copy of the returned object call the Clone method on the returned object.
* The IDataFile::AddItem method does not copy the IDataFile object passed in the parameter any more. Instead it uses the supplied pointer directly and increments an internal reference counter to keep track of the instance. This may affect existing logic which counted on IDataFile copying all data into a new object.

------------
Version 2.06
------------

Fixes
-----

* ISSUE2176: Media not ejected if a DVD+RW background format is pending. This has been observed for MATSHITA drives but some other drives may be affected as well.
* ISSUE2164: After interrupting a burning process, cannot burn DVD anymore without manually ejecting and inserting again the DVD.

------------
Version 2.05
------------

Fixes
-----

* ISSUE2158: IDevice returns DISCDEVICE_INVALID_FORMAT_TYPE after the second fragment (session) on LG devices when using DVD-RW in Restricted Overwrite mode.

------------
Version 2.04
------------

New Features
------------

* UDF filename encoding and allocation descriptors control via the new IUdfVolumeSettings interface.

Fixes
-----

* ISSUE2079: _non_rtti_object exception in IDataDisc::SetImageLayout11(). This affects only the Visual C++ 2003 build.
* ISSUE2078: Mac OS X: Device enumeration does not work on Japanese Mac OS X.
* ISSUE2051: Long filenames are cut to 94 characters(UDF) / 96 characters(Joliet).
* ISSUE2050: IDataDisc::LoadFromFile fails with DATADISC_INVALID_STRUCTURE when reading certain Joliet images.


------------
Version 2.03
------------

Fixes
-----

* ISSUE2021: DataBurner, DataBurnerEx and PacketBurnerEx samples: When trying to add a source folder, the application comes back with the message "Please select a valid path.".
* ISSUE1981: IDataDisc::CreateImageFile causes memory exception when working with large number of files (> 10000).

------------
Version 2.02
------------

New Features
------------

* Blu-ray Disc burning including BD-R 2x and BD-RE 25GB 2x, and BD-R DL 2x and BD-RE DL 2x 50GB.
* Fast device enumeration.
* UTF-8 and UTF-16 libraries.
* PrimoBurner now supports Mac OS X 10.3 and later.

Fixes
-----

* ISSUE1934: Unreadable characters resulting from IDataDisc::LoadFromDisc method when image on disc is ISO9660:1999.

------------
Version 1.99
------------

New Features
------------

* Added IDevice::GetReadPossible method. It allows you to detect whether the device reads CD-ROM, CD-R and CD-RW discs. Apparently some of the new Blu-ray burners do not read CDs which required the addition of this method.
* Modified IDevice19::GetSupportedWriteSpeeds to return the maximum write speed instead of empty collection for devices which do not report write speed descriptors.

Fixes
-----

* ISSUE1490: IBlockDevice does not finalize properly DVD-RW formatted for Restricted Overwrite. That may cause DVD-RW to be unreadable by some DVD-ROM devices.
* ISSUE1489: DVD-RW media is detected as not blank on some NEC drives. The device reports more free space than the disc capacity.

Deprecated Methods
------------------

The following methods were removed from the API. They have been deprecated for the past two years.

* IDevice10::WriteSetBurnProof: BUffer UnderRuN Proof recording feature will be used automatically when it is supported by device.

* IDevice10::ReadCreateBuffer and IDevice10::ReadDestroyBuffer: Please use IDevice11::ReadCreateBuffer11 and IDevice11::ReadDestroyBuffer11 instead.

* IDevice10::ReadATAPI: Please use IDevice11::ReadAudio or IDevice11::ReadData method instead.

------------
Version 1.98
------------

New Features
------------

* New IScsiInterface class. It can be used to send SCSI command description blocks directly to the device. To create obtain a new instance of IScsiInterface use the IDevice19::GetScsiInterface method.

* Enhanced read and write speed control. There is a new method of IDevice19 called GetSupportedWriteSpeeds. It returns a collection of speed descriptors for all write speeds supported by a device.

Fixes
-----

* BUG: Unhandled exception on Windows Vista BETA2 CTP Builds 5270 and 5308.

------------
Version 1.96
------------

New Features
------------

* Added two new property-methods to the IDevice19 interface to allow getting the format and erase progress without implementing IDeviceCallback13. The new methods are Get/SetEraseProgress and Get/SetFormatProgress.

Fixes
-----

* BUG: File time of existing folders changes to the current date when deleting folders from an existing CD/DVD layout.
* BUG: File time of the special "." and ".." files is not set to the date of the corresponding folders from the disc layout.
* BUG: When burning DVD Video folders and if padding is required between some file the engine attempts to burn the padding sectors twice. This results in intermittent errors when burning DVD video on DVD-RW and DVD-R in Disc-At-Once mode.


Fixes
-----

* BUG: Filetime not preserved when burning data layouts loaded from CD or DVD.
* BUG: Application hangs during DVD session finalization on Samsung and LG burners.

Version 1.94

Fixes
-----

* BUG: DVD writing speed defaults to 4x. Affected devices were HP, NEC and Sony DVD+RW/-RW burners.
* BUG: IDevice reports the burning has completed in the middle of session closing or while writing disc lead out. This affects HP burners when using CD-R/RW media. It does not happen with DVD media.

Version 1.93

New Features
------------

* Improved power calibration logic for CD-R/RW. Optimum Power Calibration (OPC) is now performed, only when a device reports that it needs OPC. Otherwise OPC step is skipped. That leads to improved burning start (10~20 sec faster). It should lead to longer life of CD-RWs too.

Fixes
-----

* BUG: DataBurnerEx sample does not set the file time when creating the image file structure. That was causing problems with some programs like some DICOM viewers (more specifically ezDicom.exe) that rely on the file having valid date time stamps.

Version 1.92

New Features
------------

* UNICODE libraries

Fixes
-----

* BUG: The C++ edition installation does not install the VC80 runtime automatically. VC80 runtime is required to run the compiled samples that use MFC.
* BUG: The C++ edition installation requires .NET Framework 2.0. That was due to a false dependency in the installation project.


Version 1.91

New Features
------------

* Added a new method to the IDevice interface for enabling/disabling media change notifications.

Fixes
-----

* There was a problem with the reference counting in IEngine implementation when used in multiple threads. A bug has been introduced with the 1.7x releases and apparently has been flying under the radar since then. It is now fixed.


Version 1.81

New Features
------------

* Added ability to set volume creation time for data images. See the SetVolumeCreationTime and GetVolumeCreationTime methods of the IDataDisc18 interface. This feature works for Joliet, ISO and Joliet-ISO images.

* Improved loading of UDF image structure for third party images (not created with hpCDE).

* Added the SetLicenseInfo method to IEngine interface. The method will be used to set the license information.

* Burning on DVD+RW allows physical overwriting of files already on the disc. This behavior can be controlled with the new SetDataOverwrite method of the IDataDisc interface. This feature is supported only on DVD+RW currently. Future releases will include support also for Restricted Overwrite DVD-RW.

* Added the WriteUnlockBufferEx method to the IDevice interface. This new method allows specifying the disc address to which the data blocks in the buffer should be written. This method must be used with caution and requires good understanding of the DVD physical format and specifications.


Fixes
-----

* IDataDisc::Dismount functionality got broken in 1.80. Now it is fixed.



Version 1.80

New Features
------------

* Added 64-Bit sample projects (x64 architectures only) and binaries. The 64-Bit libraries were compiled with Visual Studio 2005 64-Bit. 64-Bit binaries for Visual Studio.NET 2003 and Visual Studio 6.0 will be available in one of the releases following 1.80.

* Added Visual Studio 2005 32-Bit sample projects.

* Added IMG_TYPE_UNKNOWN = 0x0000 to EImageType enumeration.

Fixes
-----

* Updated the DataBurnerEx sample to handle also DVD media.

* 32-Bit binaries will now work on 64-Bit platform as well.


Version 1.78

Fixes
-----

C++

- Fixed: Hang on Windows XP when writing to certain models of FireWire and USB enclosures.


Version 1.76

Fixes
-----

C++

- Fixed: Skip Power Calibration when not necessary. This leads to faster device initialization when burning DVDs.
- Fixed: GetVolumeLabel returns empty string for Joliet and ISO images.
- Fixed: Sometimes device is not released properly to the operating system. This affects Windows 2000, XP and 2003.

.NET

- Fixed: IDataFile::GetFileTime property returns wrong date and time.


Version 1.75

Fixes
-----

- Fixed: IDevice::ReadTOC fails for DVD-ROM media. The problem appears with some Plextor burners.
- Fixed: IDevice::ReadData does not use the device cache. This resulted in slow DVD reading.

Version 1.74

New Features
------------

- ICprmDevice interface was added to the API to allow reading the structures needed to implement CPRM. Currently works with DVD-RW CPRM media only.


Version 1.72

New Features
------------

- Added Video CD.

Version 1.71

New Features
------------

- Added support for DVD-R Double Layer both Disk-At-Once and Incremental recording. Layer jump recording was postponed for a later version.
- Added support for files > 4GB (UDF only).

Fixes
-----

- Fixed a bug in Hfs that was leading to a corrupt image when the Hfs sector size is greater than 2048 bytes.


Version 1.68

New Features
------------

- Added ability to dismount cd/dvd volume when calling IDataDisc::WriteToDisc and IDataDisc::WriteImageToDisc methods.Volume dismounting works on Windows XP, NT and 2000 platforms only and allows Windows to refresh the CD/DVD volume information without ejecting the disc.

- Added GetIsFinalized, SetTempDiscID, GetTempDiscID methods to IBlockDevice.


Fixes
-----


Version 1.66

New Features
------------


Fixes
-----

- Device object not released properly resulting in "Access Denied" error when trying to access it from another application.

Version 1.65

New Features
------------

- Specify boot load segment and boot sector count for bootable data discs.
- Suppress filename version string (";1") when creating ISO9660 discs and images.
- Sorting by filename for ISO


Fixes
-----

- "No emulation" boot emulation does not work; creates non-bootable CDs/DVDs


Version 1.64

Fixes
-----

- Max write speed improperly detected for DVD+R on some drives.
- Incorrect capacity reported for CD-R and CD-RW

Version 1.63

Fixes
-----

- On some devices IDevice::GetMediaCapacity returns the size of the first session only.

New Features
------------

New interface added - IBlockDevice - to allow incremental burning of data of unknown size.
There is new sample BlockDevice that shows how to use the IBlockDevice interface.


Version 1.61

Fixes
-----

- Files greater that > 1GB may not be written correctly when UDF is used.

- GetMediaProfile on MMC1 older devices

- RAW mode CD burning produces CDs that some Philips drives cannot read.

- IDevice::GetMediaIsBlank returns TRUE for DVD media regardless of the state of the disc

- IDataFile::Find method, case sensitive find not working.


New Features
------------

- IMediaInfo interface - future versions will extend the functionality with additional properties
and methods. Right now it can be used to detect if the media is DVD CSS (CPPM) or CPRM writable media.

- IDevice::GetMediaInfo

- IDataFile::Merge, IDataFile::GetParent, IDataFile::GetItemIndex

- IDevice::GetMediaCapacity, IDevice::GetMediaFreeSpace (replaces IDevice::GetAvailableBlocks)


API Changes
-----------

IDevice

Starting from 1.61 IDevice will inherit from the latest device interface (currently IDevice16).
That will require changes to the existing code to use IDevice  wherever the code uses IDevice11
through IDevice16.  In the future releases IDevice will always inherit from the latest device interface
and changes to the code will not be required when new functionality is introduced.

IDataDisc

Starting from 1.61 IDataDisc will inherit from the latest data disc interface (currently IDataDisc15).

IDeviceCollection

Starting from 1.61 IDeviceCollection will inherit from the latest device collection interface (currently IDeviceCollection12).