AVBlocks for .NET  1.20
Audio and Video Software Development Kit
Release Notes
AVBlocks SDK for .NET Release Notes

-----------------------
OS / CLR Requirements
-----------------------

* AVBlocks.clr4 - Windows 7 SP1 and above / CLR4 (.NET Framework 4.0/4.5/4.5.1)
* AVBlocks.clr2 - Windows 7 SP1 and above / CLR2 (.NET Framework 2.0/3.0/3.5)

--------------------------
Redistributable Components
--------------------------

Windows
-------
* AVBlocks.dll
* AVBlocks.clr2.x86.dll
* AVBlocks.clr4.x86.dll

* AVBlocks64.dll
* AVBlocks.clr2.x64.dll
* AVBlocks.clr4.x64.dll

------------
Dependencies
------------
AVBlocks.NET does not depend on the C/C++ runtime libraries.
However it uses AVBlocks SDK for C++: either AVBlocks.dll (x86) or AVBlocks64.dll (x64).

This library is loaded dynamically by AVBlocks to do Windows Media (ASF) muxing and demuxing.
Note: This library is not present by default on Windows "N" versions, or on Windows versions without Windows Media Player:

* wmvcore.dll 

This library is loaded dynamically by AVBlocks when Windows Media codecs (WMA/WMV) are used:

* msdmo.dll

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

The following restrictions exist when operating in demo mode:

* If a video stream is processed a demo logo is overlaid in each video frame.
* If an audio stream is processed a short demo sample is mixed with the original track at random places.


Release Notes - AVBlocks - Version 1.20.0 (11 Jul 2015)
=======================================================

This release has been tested on Windows 10 Insider Preview 10074.

** New Feature
    * [AVB-233] - Presets: Additional HTTP Live Streaming presets
    * [AVB-698] - Transcoder: Intel QuickSync hardware acceleration for H.264 encoding
    * [AVB-707] - Transcoder: AMD Video Coding Engine hardware acceleration for H.264 encoding

** Improvement
    * [AVB-510] - Docs: Presets: Document stream and parameter settings used in presets.
    * [AVB-684] - MediaSocket: MediaSocket.FromMediaInfo should call MediaInfo.Load
    * [AVB-693] - Change the demo watermark text
    * [AVB-708] - Transcoder: Return more specific error code and message when frame has uneven dimensions

    * [PC-36] - Muxers: MP4: Support writing MP4 files bigger than 4GB
    * [PC-101] - Demuxers: MP4: Support reading MP4 files bigger than 4GB

** Bug
    * [AVB-688] - Transcoder: Video is truncated when MPEG-2 TS is transcoded to DVD_NTSC_PCM preset
    * [AVB-689] - Transcoder: Some MPEG-2 TS streams cannot be transcoded in push mode

	
Release Notes - AVBlocks - Version 1.19.0 (25 May 2015)
=======================================================

** New Feature
    * [AVB-147] - Presets: HDV 720P / HDV 1080i encoding presets
    * [AVB-232] - Presets: Additional MP4 presets
    * [AVB-570] - Transcoder: Deliver MPEG-2 TS packets and decoded elementary streams to different outputs of the same transcoder

** Bug
    * [AVB-65] - Transcoding a wmv input (with non-explicit/missing fps) to mp4 output fails with a muxer error
    * [AVB-357] - The test "mpg_convert_vsize_convert_abitrate" fails on OS X
    * [AVB-676] - Demuxers: The MPEG-TS demuxer cannot process more than 20 streams
    * [AVB-683] - Audio decoder (Mpeg Audio, AAC) flush does not work. Some audio samples are lost.
    * [AVB-686] - Docs: C++: Nested namespaces under primo::avblocks::Preset are not visible
    * [AVB-687] - The test "mpegts_h264_aac_to_mp4_remux" produces an output with damaged audio.


Release Notes - AVBlocks - Version 1.18.0 (10 Apr 2015)
=======================================================

** New Feature
    * [AVB-569] - Transcoder: Support MPEG-2 TS packets as output. 
    * [AVB-572] - Transcoder: Filter MPEG-2 TS packet by program number or packet ID
    * [AVB-653] - Transcoder: Mux up to 96Khz, 1-7 channel, 16 bit LPCM in MPEG-2 transport stream

** Improvement
    * [AVB-201] - Samples: Windows: C++: Add precompiled header for MetaInfo sample
    * [AVB-202] - Samples: Windows: C++: Add precompiled header for AVInfo sample
    * [AVB-207] - Samples: YUVEncoder: C++ and .NET: Use default options when started without command line parameters
    * [AVB-208] - Samples: StreamDecoder: C++ and .NET: Use default options when started without command line parameters
    * [AVB-209] - Samples: StreamEncoder: C++ and .NET: Use default options when started without command line parameters
    * [AVB-215] - Samples: AVInfo: C++ and .NET: Use a default media file when started without parameters
    * [AVB-216] - Samples: MetaInfo: C++ and .NET: Use a default media file when started without parameters
    * [AVB-411] - Samples: Slideshow: Use ipad.mp4.h264.720p preset as default when preset not set via command line
    * [AVB-412] - Samples: Slideshow: Present the same choice of presets in .NET and C++ on all platforms
    * [AVB-478] - Samples: AVInfo and MetaInfo: C++: Update to use `primo::ref` and `auto`
    * [AVB-528] - Params: C++: Add the missing ParamList::addByteArray method
    * [AVB-673] - StreamInfo: Rename `StreamInfo.ProgramID` to `StreamInfo.ProgramNumber`

** Bug
    * [AVB-610] - Muxer: Setting Param.Muxer.MP4.FastStartUseTempFile to true produces black video with no audio
    * [AVB-651] - Visual artifacts when encoding from YUV to H.264


Release Notes - AVBlocks - Version 1.17.0 (14 Mar 2015)
=======================================================

** New Feature
    * [AVB-183] - Samples: New MP4Muxer sample
    * [AVB-527] - Transcoder: Support MPEG-2 TS in Transcoder.Push
    * [AVB-559] - Samples: .NET: New ImageGrabber WPF sample

** Improvement
    * [AVB-320] - Codecs: AAC: Convert bitstream from ADIF to ADTS to avoid re-encoding.
    * [AVB-529] - Samples: CaptureDS: Set capture format without using the built-in property page
    * [AVB-534] - Docs: Improve the MediaPin.Connection docs
    * [AVB-536] - Demuxers: MPEG2-TS: Generate a separate data stream for Program Specific Information (PSI) tables 
    * [AVB-554] - MediaInfo: Extend to report system subtype

** Bug
    * [AVB-560] - Cannot parse a wav file containing a muLaw audio stream
    * [AVB-573] - Transcoder.Pull returns multiple PCM audio samples with the same startTime
    * [AVB-578] - Cannot read an MPEG-2 Program Stream encoded with PrimoMpeg
    * [AVB-601] - Crash in Transcoder.Open when the input is a raw G.711 or G.726 file (no container)
    * [AVB-609] - Muxer: Output artefacts when using Param.Muxer.MP4.FastStart with some clips


Release Notes - AVBlocks - Version 1.16.0 (05 Feb 2015)
=======================================================

** New Feature
    * [AVB-557] - Samples: New VideoSplitter sample that shows how to split a file to short clips

** Bug
    * [AVB-565] - Cannot transcode mulaw (wav) to mp3
    * [AVB-577] - Race condition when using Transcoder.Open from multiple threads.

	
Release Notes - AVBlocks - Version 1.15.0 (09 Jan 2015)
=======================================================

** New Feature
    * [PC-72]   - Detect Teletext stream in TS
    * [AVB-333] - Demuxers:  MP4: Support PCM audio tracks ('sowt' and 'twos' codecs) 
    * [AVB-525] - StreamInfo: ProgramID and StreamID properties for multi-program transport streams (mpeg2-ts)
    * [AVB-538] - MediaInfo: Allow data stream processing via a Push method

** Improvement
    * [AVB-173] - MediaBuffer: Improve MediaBuffer interface and Buffer helper class
    * [AVB-437] - .NET: Avoid memory copy between managed and unmanaged code
    * [AVB-546] - Demuxers: MP4: Support ctts atom version 1
    * [AVB-552] - Fix VCD related presets to produce MPEG1-PS
    * [AVB-553] - .NET: Add MediaSocket.StreamSubType to the .NET API

** Bug
    * [AVB-425] - Samples: CaptureDS: Recording stops with an error after only a few seconds
    * [AVB-535] - Demuxers: MPEG-TS: PAT has to be the first packet in a captured TS file in order to detect available programs and streams
    * [AVB-543] - AAC stream not recognized in a MOV container
    * [AVB-551] - Crash when using MPEG_PES stream type for output.
	

Release Notes - AVBlocks - Version 1.14.0 (01 Nov 2014)
=======================================================

** New Feature
    * [AVB-500] - Transcoder: Support H.264 interlaced video output
    * [AVB-503] - Support *.MOD and *.TOD file formats
    * [AVB-504] - Add picture type to MediaSample
    * [AVB-517] - Support *.M2T file format
	
** Improvement
    * [AVB-475] - MPEG-2 Encoder: Improve performance and quality in restricted VBR mode
    * [AVB-506] - Params: MediaSocket and MediaPin.Params collections should be readily available.
    * [AVB-509] - MediaInfo: Windows: Return the correct error message for known COM errors.
    * [AVB-512] - Params: C++: Add convenience "add" methods to ParamList, e.g. ParamList::addInt(const char_t* name, int64_t value)
    * [AVB-520] - Docs: Add class diagrams

** Bug
    * [AVB-507] - MediaSocket: Calling FromMediaInfo multiple times creates media sockets linked to the same StreamInfo instance


Release Notes - AVBlocks - Version 1.13.1 (11 Oct 2014)
=======================================================

** Bug
    * [AVB-513] - Cannot play H.264 MP4 video on Windows 7 SP1

	
Release Notes - AVBlocks - Version 1.13.0 (04 Oct 2014)
=======================================================

** New Feature
    * [AVB-319] - Add a parameter to force/request re-encoding in case the input and output formats are equivalent
    * [AVB-486] - Presets: Add a preset for fast H.264 encoding
    * [AVB-487] - Samples: C++: New ReEncode sample
    * [AVB-488] - Samples: .NET: New ReEncode sample

** Improvement
    * [AVB-63] - H.264 Encoder: Improve performance by using all CPU cores.
    * [AVB-310] - MP4: Remux H.264 without transcoding
    * [AVB-403] - Installer: Windows: Replace the current self-extracting RAR packages with zip archives
    * [AVB-450] - API: Add enums or named constants for allowed and documented parameter values
    * [AVB-489] - Docs: Windows: .Net: Include XML documentation for Visual Studio
    * [AVB-490] - Docs: Mac: Include  a docset for XCode
    * [AVB-499] - Presets: BDAV: Encode H.264 video with 4 slices per picture if level is 4.1

	
Release Notes - AVBlocks - Version 1.12.0 (25 Aug 2014)
=======================================================

** New Feature
    * [AVB-406] - Transcoder: H.264 Decoder: Optimize for 4K / 2160p / 30fps playback
    * [AVB-462] - Add more MPEG-1/2 encoding parameters (I/P/B pics, VBV buffer size)
    * [AVB-470] - Samples: CaptureDS sample in VB.NET
	
** Improvement
    * [AVB-419] - BDAV: Pad last LPCM frame to 5ms at end of stream
    * [AVB-430] - VideoOverlay filter should work in place to avoid needless memory copy
    * [AVB-431] - Apply ColorSpaceConverter and Resize filter in order that guarantees an intermediate frame with the smallest size. 
    * [AVB-432] - Transcoder: Pull: MediaBuffer should stay valid until parent MediaSample is released. 
    * [AVB-433] - Samples: New AVMixer sample shows how to compress and multiplex YUV video and LPCM audio into H.264, AAC, MP4
    * [AVB-458] - CaptureDS sample: add custom output sockets and recording without audio input

** Bug
    * [AVB-424] - Samples: CaptureDS crashes when recording to webm.vp8.vorbis preset
    * [AVB-435] - H264 Encoder: Mac: Visual defects in the video produced by the AVMixer sample
    * [AVB-439] - Samples: Segmentation fault in console samples when output preset is not specified
    * [AVB-446] - Transcoder: .NET: Input configured with MediaSocket.File does not work
    * [AVB-459] - MPEG 1/2 Video encoder: TV system/standard is always PAL
    * [AVB-472] - TIFF images cannot be opened/parsed on a clean Ubuntu 14.04
    * [AVB-473] - Crash when encoding mpeg-1 video on 8 core system
	
	
Release Notes - AVBlocks - Version 1.11.0 (25 Jun 2014)
=======================================================

** Bug
    * [AVB-218] - Samples: H264NaluDecoder ignores the --frame and ---rate command line options. 
    * [AVB-392] - H.264 decoder high CPU usage
    * [AVB-393] - Demo logo is upside down when transcoder output is set to BGR24 BottomUp

** Improvement
    * [AVB-210] - Samples: Rename PullPushDecoder sample to H264NaluDecoder
    * [AVB-211] - Samples: AudioConverter: Handle .dat, .mpe, .mpeg, .mpeg4, .ogm in File Open dialog
    * [AVB-212] - Samples: VideoConverter: Handle .dat, .mpe, .mpeg, .mpeg4, .ogm in File Open dialog
    * [AVB-222] - Samples: Add reference counting to the sample FileStream implementation.
    * [AVB-383] - Samples: Rename the `ImageSequence` sample to `Slideshow`
    * [AVB-400] - AVBlocks-Samples: Wiki: Simplify end-user instructions
    * [AVB-402] - Samples: Rename DirectShowInput sample to InputDS

** New Feature
    * [AVB-154] - Blu-ray Encoding Presets (.m2ts)
    * [AVB-354] - Samples: C++: PlayerGL sample for Windows
    * [AVB-355] - Samples: .NET: PlayerGL sample for Windows
    * [AVB-377] - Support LPCM in a BDAV format (M2TS)
    * [AVB-379] - Support AVC/H.264 in a BDAV format (M2TS)

Release Notes - AVBlocks - Version 1.10.0 (5 May 2014)
======================================================

** Bug
    * [AVB-259] - The video frame rate filter is not used when it is set explicitly
    * [AVB-367] - Missing sample-resources subfolders in windows packages.
    * [AVB-368] - Progress report causes out of range exception in sample app.
    * [AVB-373] - Aspect ratio not detected for an H.264/AVC stream in MP4 container
    * [AVB-375] - Cannot transcode from WMA Lossless to WMA Pro

** Improvement
    * [AVB-237] - Redefine presets as nested namespaces / classes.
    * [AVB-299] - Better documentation of H.264 encoder parameters.
    * [AVB-348] - Make stream detection more robust
    * [AVB-364] - Samples: ImageSequence in VB.NET
    * [AVB-374] - Write aspect ratio in the MP4 container when an  H.264/AVC stream has non-square pixels
    * [AVB-376] - C++ API: Replace MediaSocket static creating functions with Library equivalents

** New Feature
    * [AVB-328] - API: Add functions to get library version and description
    * [AVB-359] - New AccessUnitDelimiters H.264 encoder parameter

** Story
    * [AVB-365] - Samples: C++: CaptureDS sample for Windows
    * [AVB-366] - Samples: .NET: CaptureDS sample
	
Release Notes - AVBlocks - Version 1.9.0 (23 Mar 2014)
======================================================

** Bug
    * [AVB-136] - Demo version fails when video output is set to NV12 YUV
    * [AVB-219] - Transcoder returns `Operation not implemented` (facility:5 code:5) when output color format is set to `Gray` 
    * [AVB-301] - Converting H.264 4K (mp4) to a AVBlocks preset produces a small file with no video stream
    * [AVB-325] - Transcoder stops with an error when decoding specific MPEG-4 Visual streams
    * [AVB-330] - Crash when an H.264 stream is decoded repeatedly many times
    * [AVB-331] - Incorrect ID3v2 header size written when using MP3 presets
    * [AVB-334] - WebM splitter does not report normalized DAR (e.g.1280/720 instead of 16/9)
    * [AVB-336] - MPEG Audio splitter does not fill the StreamSubtype info
    * [AVB-341] - Demuxer / Splitter names reported as NULL for certain splitters
    * [AVB-342] - Images cannot be opened/parsed on clean Ubuntu 12.04
    * [AVB-343] - Linux: UnsupportedFormat (instead of MissingDependency) error when loading images on fresh Ubuntu 12.04
    * [AVB-347] - MPEG4-Visual decoder does not ignore stuffing bytes
    * [AVB-352] - Some streams may cause access violation in the MPEG-4 Visual decoder

    * [PC-43] - Heap corruption in MP4 muxer when a stream is configured with framerate=0

** Improvement
    * [AVB-302] - Reduce the jitter in the video frame rate converter to less than +125 ms / -45 ms.
    * [AVB-338] - Change ErrorInfo.Message to return an empty string instead of NULL.
    * [AVB-346] - Linux: Include the missing library name as a hint in case of MissingDependency error

** New Feature
    * [AVB-322] - Pass AAC streams from the MP4 demuxer to the MP4 muxer without re-encoding

** Story
    * [PC-54] - Enable placing of mpeg2 video in a mp4 container
	
** Task
    * [AVB-329] - API Docs: Clarify MediaBuffer usage in Transcoder.Push
    * [AVB-349] - API Docs: Update the description of StreamType.H264 and StreamSubType.AVC1
    * [AVB-351] - API Docs: Document the `ConcealDefects` parameter
	

Release Notes - AVBlocks - Version 1.8.1 (18 Jan 2014)
======================================================

** Bug
    * [AVB-318] - Crash while decoding MP4 with AAC audio at 44.1 KHz


Release Notes - AVBlocks - Version 1.8.0 (15 Dec 2013)
======================================================

** Bug
    * [AVB-297] - Transcoding WMV to MPEG2 produces output shorter than the input

** Epic
    * [AVB-298] - H.264 Decoder: Provide a way to override Video Usability Information / VUI (spans multiple releases)
		** Sub-task
			* [AVB-307] - Add Param.Decoder.Video.H264.VUI.MaxDecFrameBuffering

Release Notes - AVBlocks - Version 1.7.0 (29 Nov 2013)
======================================================

** Bug
    * [AVB-224] - ErrorFacility constants in .NET are not the same as the C++ constants
    * [AVB-273] - Null message for the new UnlicensedFeature error
    * [AVB-290] - Push decoding broken for H.264 interlaced streams in some specific cases

    * [PC-41] - Transcoder uses the bitrate in input VideoStreamInfo instead of output VideoStreamInfo.
    * [PC-47] - MP4 container does not work with B frames

** Improvement
    * [AVB-225] - Use explicit values for public enumerations and document the actual values
    * [AVB-266] - Segment Param.Video parameters by function
    * [AVB-267] - Parameter refactoring
    * [AVB-274] - When printing errors sample apps must check for a null error message
    * [AVB-288] - API Docs: Update Transcoder.Flush documentation
    * [AVB-292] - Keep the input scan type if the output is not set explicitly
    * [AVB-293] - Rename InterlaceType to ScanType (Breaking change)
    * [AVB-295] - Change VideoStreamInfo.ScanType default value from ScanType.Progressive to ScanType.Unknown (Breaking change)

** Story
    * [AVB-155] - Transcoder: Push / pull support for MPEG-4 Visual elementary stream
    * [AVB-195] - Enable Crop/Pad parameters
    * [AVB-196] - Make sure that the video is not distorted if the input/output aspect ratios differ
    * [AVB-252] - Production version should return error if it finds that a license has expired.


Release Notes - AVBlocks - Version 1.6.1 (11 Oct 2013)
======================================================

** Bug
    * [AVB-189] - iPad / H.264 / AAC and iPad / H.264 HD / AAC presets produce choppy audio.
    * [AVB-199] - .NET: ImageSequence sample could not find input images
    * [AVB-229] - Build scripts may include sample code from the wrong branch
    * [AVB-245] - Windows: .NET: StreamEncoder and YuvEncoder samples: Duplicate extension of output filename, e.g. `.mp4.mp4` instead of just `.mp4`.    


Release Notes - AVBlocks - Version 1.6.0 (12 Sep 2013)
======================================================

** Breaking Changes
    * [AVB-167] Rename ColorFormat.RGBXyz to ColorFormat.BGRXyz
    * [AVB-142] Remove ColorFormat.YUV_VC1

** New Feature
    * [AVB-166] - G.711 and G.726 codecs

** Bug
    * [AVB-145] - MediaInfo returns InvalidOperation error when the input stream is invalid.
    * [AVB-163] - MPEG-4 Visual: MP4 demuxer will not group the headers and data for "I" frames (in some border cases).
    * [AVB-170] - Transcoder fails to decode a video frame in pull mode

** Improvement
    * [AVB-158] - Allow to set the output VideoStreamInfo stride
    * [AVB-165] - Load Wmvcore.dll dynamically. The dll is not present on all Windows systems.
    * [AVB-179] - Handle .dat, .mpe, .mpeg, .mpeg4, and .ogm file extensions
    * [AVB-172] - Remove assertions from Release build
    * [AVB-187] - Load msdmo.dll dynamically when needed for the Windows Media codecs.


Release Notes - AVBlocks - Version 1.5.0 (16 Aug 2013)
======================================================

** Bug
    * [AVB-128] - VideoStreamInfo.FrameBottomUp set to true is not processed correctly in Transcoder
    * [AVB-162] - Stuffing bytes not discarded when decoding MPEG-4 Visual elementary stream

** Epic
    * [AVB-124] - MP4 muxing for video streaming / progressive download / fast start.


Release Notes - AVBlocks - Version 1.4.0 (4 July 2013)
======================================================

** Bug
    * [AVB-126] - .NET: LicenseStatusFlags.DemoBuild is not defined.

** New Feature
    * [AVB-117] - StreamEncoder sample
    * [AVB-118] - DirectShowInput sample
    * [AVB-120] - Transcoder.Push for compressed raw video streams (H.264 only)


Release Notes - AVBlocks - Version 1.3.0 (16 June 2013)
=======================================================

** Bug
    * [AVB-122] - Crash in Transcoder.Open with video input that has no stream or file set.

** Improvement
    * [AVB-106] - Split MediaInfo sample to AVInfo and MetaInfo samples.

** New Feature
    * [AVB-98] - New ImageSequence sample
    * [AVB-100] - New YuvEncoder sample

----------------------------
Version 1.2.1 (14 May 2013)
----------------------------

** Bug
    * [AVB-92] - Last 2 frames in MPEG2 Video encoded stream are not the same as in the input.
    * [AVB-101] - MPEG2 video encoder does not generate sequence_end code

----------------------------
Version 1.2.0  (30 Apr 2013)
----------------------------

Changed
-------

* AVB-88: Rename Transcoder.Write and Transcoder.Read to Transcoder.Push and Transcoder.Pull


Fixed
-----
* AVB-89: Transcoder ignores framerate for YUV input
* AVB-93: Add strong name to the AVBlocks assemblies


-------------
Version 1.1.0
-------------

New
---

* AVBlocks can read/write Ogg(Vorbis).
* AVBlocks can write Windows Media Audio (Windows only).
* The transcoder can encode images to video (for producing DVD-Video compatible videos with a single frame).
* Metadata support. The transcoder can read/write metadata for certain formats (Wav, Mp3, Ogg/Vorbis, Window Media). The MediaInfo class can read metadata.
* The transcoder can seek in the input. (for compressed audio the seeking is not precise per pcm sample)
* The transcoder can read output in descrete steps (Transcoder::read). Convenient when uncompressed audio or video is required.
* The transcoder can be used by specifying only input and output filenames (minimum settings).
* Existing samples ported to Mac OS X and Linux (Ubuntu).
* MediaInfo sample extended to show existing metadata (pictures are saved to files).
* AVB-22: The frame rate filter can be explicitly set in order to compensate for missing video frames.

Fixed
-----

* AVB-4: Mp3 length is reported as zero.
* AVB-5: Inconsistent collections API.
* AVB-8: The MediaSample::endTime property is used for two different purposes. 
* AVB-13: Allow AVB to be loaded and used more than once in a single process.
* AVB-14: Wav file duration is reported in milliseconds while it should be in seconds.
* AVB-16: The transcoded file is shorter than the source file.
* AVB-21: A/V sync issues in MPEG-PS. 
* AVB-30: MPEG2 Muxer generates corrupt output.
* AVB-35: MPEG2 muxer output does not contain DTS in the PES packet header.


-------------
Version 1.0.1
-------------

Preliminary version