Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
5th July 2003, 17:35 | #1 | Link |
Moderator
Join Date: Oct 2002
Location: Seattle
Posts: 1,584
|
Helix YV12 / I420 / IYUV VfW Codecs
The Helix YUV Codecs are three almost identical Video for Windows compatible
codecs for decoding and viewing of YV12, I420 and IYUV AVI files or AviSynth scripts in all versions of Windows. Additionally, they will let you convert/encode/save as.. to any of the three formats. When converting from one YUV format to another it is a lossless conversion. 2016/12/14: New version Dec2016 by MLJ Download: HelixRC3 Thanks again to MLJ for providing this update! Here is the information provided in the package ReadThis.txt: Helix YUV Codecs RC3 - Version 1.2/1.3 by Karl Lillevold Release: December 2016 LEGAL DISCLAIMER: Great Care and very Intensive Tests where made by developing this Software before it was Released. This Software is "AS IS" and the Author can not be made liable under any Circumstances for any Damages or Data-Loss of any Kind by installing and using this Software ! The End-User agrees to these Terms silently and uses this Software on his own Risk by installing and using this Software ! It is strictly forbidden to include and distribute the Helix Codecs in so called "Codec-Packs" ! The Helix Codecs are NOT FOR SALE or Re-Distribution of ANY Kind ! All Rights Reserved ! IMPORTANT WARNING ! DO NOT USE THE "VCSWAP" TOOL BECAUSE IT MESSES UP THE FOURCC TABLE IN WINDOWS ! The "VCSwap" Tool changes all uppercase FourCC's to lowercase but many Routines inside DirectX rely on uppercase FourCC's and their Entries in the Registry to work properly. Special thanks to: Igor Pavlov - for the "7Zip" Freeware Program Nicolas OTT - for NLE and Hardware tests (Win SE to 8 ,32/64 Bit) Michael Henke - for Ingest Hardware and NLE tests Mickey Lee Jones - for IYUV Development, Fixes and INF-Script Helix YUV Codecs Features: (Fully Tested) I420: YCbCr 12 Bit Planar YUV IYUV: YCbCr 12 Bit Planar YUV (New) YV12: YCbCr 12 Bit Planar Swapped YUV Alpha Channel Support: Yes RAW VBI Support: Yes MMX CPU Support: Yes SD / HD Support: Yes DirectShow Support: Yes ActiveMovie Support: Yes Video for Windows Support: Yes QuickTime for Windows Support: Yes (AVI with I420/IYUV) AVI1 (VfW) Support: Yes AVI2 (OpenDML) Support: Yes Overlay Support: Yes Multiple Overlay Support: Yes Image Color Management (ICM) Support: Yes Interlaced Support: Yes (All SD/HD TFF/BFF Field Orders) Progressive Scan Support: Yes Progressive Segmented Support: Yes Alternating Scan Line Support: Yes Supported Frame Rates: All Supported Pixel Types: Square / Non-Square Supported Television Norms: All ITU/EBU/ATSC/SMPTE Norms Format Support for H.26x/MPEG-1/-2/-4: Yes Format Support for FFMpeg: Yes Format Support for FFDShow: Yes Format Support for AviSynth: Yes Format Support for AVC/AVCHD: Yes Format Support for UHD and Cinema: 2K (V1.2), 2K/4K/8K (V1.3 only) Support for Dual-Image 3D: Yes (V1.3 only) Extended Buffering: V1.2 = No, V1.3 = Yes System Requirements: Microsoft Windows 9x to 10 (32/64 Bit) Microsoft DirectX (Version 7,8,9 and higher recommended) Microsoft Media Player 6,7,9 and higher Apple QuickTime for Windows Version 4 to 7 and higher (Optional) Intel/AMD Processor with MMX Support for best Performance Intel/ATI/Matrox/NVidia Graphics Card with I420/IYUV/YV12 Support The Freeware "7Zip" by Igor Pavlov to unpack the Files Installation: Save the downloaded File to a Location on your Harddisk and extract the File with "7Zip". NOTE: DO NOT try to install the Codecs WITHOUT extracting the Files to a Folder on your Harddisk ! IMPORTANT: It is highly recommended to install Version 1.3 first. Version 1.2 should ONLY be used if you have a older System with a older Capture Card or Video Device. Please DO NOT mix the Version 1.2 with Version 1.3 ! If you do want to try another Version, uninstall first before you try a different Version of the Helix Codecs ! ATTENTION ! The Helix RC2 that only contained the original Helix Codecs without the new IYUV Codec is no longer available ! Installation: (Windows 9x to 10, 32/64 Bit) The Helix RC3 Codecs are available in two different Versions: "HelixRC3.7z" -> contains the new Helix 1.2/1.3 Codecs Helix Codec Version 1.2: Folder "Ver12\Helix12.inf" Helix Codec Version 1.3: Folder "Ver13\Helix13.inf" Simply right-click on the "Helix12.inf" OR "Helix13.inf" File and follow the Instructions. Windows NT to 10 Users need Admin Rights to Install the Codecs and should read the Section "Troubleshooting" in this Document in case the Installation fails on 64 Bit Systems. Windows 9x to ME Users should restart the System after the Installation completed and we highly recommend to use the "Infast" for a silent or the "Infstall" Program for a guided installation. If the Message Window "Uncertified Program" and/or "Unsigned Driver" pops up, simply click on the "OK" Button to ignore the Message and continue with the Installation. After the Installation completed, open the "Run" Command, type "dxdiag" and press the "OK" Button. DirectX Diagnostics will register now the new Helix Codecs with the DirectX Engines. Please note that the new INF-Script does NOT delete any other Codecs on your System and only replaces them in the Registry. The replaced Codecs are restored if the Helix Codecs are removed from the System via the "Uninstall" Option (Software). Other third Party Codecs are NOT restored, ONLY the native Windows Codecs ! Description: The Helix YUV Codecs encode/decode I420, IYUV and YV12 RAW Format Videos. Fast color conversions to all common RGB formats, YUY2, and of course I420, IYUV and YV12 when requested. "i420vfw.dll" encodes to I420 -> Replaces Microsoft msh263.drv (*) "iyuvvfw.dll" encodes to IYUV -> Replaces Intel iyuv_32.dll "yv12vfw.dll" encodes to YV12 -> Replaces XviD as a YV12 Decoder (*) = Up to XP. Vista to 10 uses the modified Intel Iyuv_32.dll. Otherwise identical, the encoders accept common input formats, and losslessly converts to and from both color spaces, i.e. with "Fast recompress" in VirtualDub, there is no conversion via RGB. Example for "Fast Recompress" in VirtualDub: (See Note !) I420 can be converted losslessly to IYUV but NOT to YV12 IYUV can be converted losslessly to I420 and YV12 YV12 can be converted losslessly to I420 and IYUV Note: Using "Fast Recompress" with the Helix I420 Codec to the Helix YV12 Codec WILL SWAP THE PLANAR YUV and is meant to work this way ! The Reason are MPEG-1/2/4 encoders because many NLE's install a Filter for the Color Conversion from I420 to YV12 so MPEG Videos don't encode the inverted Chroma and is reversed by the additional Filter if a Video with I420 is used. The same Filter is used during capture, encoding or decoding MPEG-1, MPEG-2 and MPEG-4 Videos. Solution 1: (Recommended) Open your I420 Video with Nic's "FourCC Changer" by either draging it to the field where the two dots are or press the Button with the two dots and navigate to the location of your Video. Then change the FourCC from "i420/I420" to "iyuv/IYUV" in both fields and press the "Apply" Button. If both Entries are upper-case, then replace them both as upper-case. In the "FourCC Description Code" Field you should insert iyuv (lower case) and in the "FourCC Used Codec" Field IYUV (upper case) because ActiveMovie uses lower case FourCC while DirectShow uses the upper case FourCC to identify the Codec. This only changes the FourCC code without re-rendering the Video and can be changed back to I420 anytime when requested. CAUTION ! Changing the FourCC from I420/IYUV to YV12 WILL SWAP THE YUV PLANES ! Solution 2: (Best alternative) Open your I420 Video in VirtualDub, select the Box "Ask for extended options after this dialog" before you press the "OK" Button and enable the Options "Force video format FOURCC code to", insert iyuv (lower case) in the "Force video codec handler FOURCC code to" insert IYUV (upper case) and click on the "OK" Button. Your I420 Video is now loaded with the IYUV Codec in VirtualDub. This has the same effect as using Nic's FourCC Changer, only that the FourCC code I420 is mapped to IYUV and not permanently changed. Solution 3: (not recommended) Open your I420 Video in VirtualDub and select the Mode "Normal Recompress" and change the Colorspace to YUY2 or YV12 in the "Video - Color Depth" Option. All Solutions will prevent a Swap in the Planar YUV Colorspace. The Helix Codecs negotiate with other Codecs in this Order: I420 (12 Bit) -> I420 12 Bit/YUY2 16 Bit/RGB24 24 Bit/RGB32 32 Bit IYUV (12 Bit) -> IYUV 12 Bit/YUY2 16 Bit/RGB24 24 Bit/RGB32 32 Bit YV12 (12 Bit) -> YV12 12 Bit/YUY2 16 Bit/RGB24 24 Bit/RGB32 32 Bit If a target Codec is able to compress I420/IYUV/YV12 then the Source Colorspace (FourCC) is not changed and remains lossless if "Fast recompress" is used in VirtualDub otherwise YUY2 or RGB24. Input for the Helix Codecs can be: YVU9 / YUY2 / RGB24 / RGB32 and UYVY -> See Note ! Note: UYVY is always mapped to RGB24 and is the default behavior of DirectX and their Components. That's why many Capture Cards and Devices only offer I420 and YUY2 as the default Color Space to prevent the mapping over RGB24 while the I420 Color Space is directly used by the Hardware. AviSynth 2.5.x: A "DirectShow" Script uses these Color Spaces: Helix I420 is decoded as YUY2 -> see Note Helix IYUV is decoded as RGB32 -> see Note Helix YV12 is decoded as YV12 Note: This is meant to work this Way and conforms to the DirectX Specs. A "AviSource" Script uses these Color Spaces: Helix I420 is decoded as YV12 -> see Note Helix IYUV is decoded as YV12 -> see Note Helix YV12 is decoded as YV12 Note: The YUV Planes are properly swapped without any Chroma Shifts. Hint: (VirtualDub Versions 1.6 to 1.10) Disable the Option "Directly decode uncompressed YCbCr Sources" under "Options - Preferences - AVI" in VirtualDub. This disables the internal YUV Codecs in VirtualDub and the external ones are used instead. Disable the "Allow Video Overlays" Option if you see a "Green Screen" during Playback or encoding in VirtualDub. Videos encoded with the Helix I420/IYUV Codecs can be played back in Apple QuickTime for Windows (YUV420). Videos encoded with VirtualDub in YV12 can be decoded with the Helix Codecs. AviSynth uses the Helix YV12 Codec instead of the XviD Decoder. Limitations: (Windows 9x to XP) The Intel IYUV Codec (I420/IYUV) is limited to 640x480, max.30 Fps. Videos encoded with the Helix Codec in this Resolution can now be decoded by the Intel Codec and vice versa. Means, a Video encoded with the Intel I420/IYUV Codec (iyuv_32.dll) can now be decoded with the Helix Codecs and Videos using the Intel 4:2:0 Codec (msh263.drv) or Intel RAW 4:2:0 (i263_32.drv) can also be decoded with the Helix Codec. Drastic YCbCr I420/IYUV/YV12 Videos can now be encoded/decoded both Ways at higher Resolutions and Frame Rates. (Fully Tested) Overview: Intel 4:2:0 (I420) -> can be decoded using the Helix 32 Bit Codec Intel RAW 4:2:0 -> can be decoded using the Helix 32 Bit Codecs Intel I420/IYUV -> can be decoded using the Helix 32 Bit Codecs Drastic I420/IYUV/YV12 -> can be used both Ways Helix I420/IYUV -> can be decoded with the Intel 32/64 Bit Codecs at a maximum Resolution of 640x480 at max. 30 Fps. Larger Resolutions and Frame Rates are NOT supported by the Intel Codecs ! The Helix Codecs are only avaliable in 32 Bit Applications on 64 Bit Systems and is meant this Way. The 64 Bit Intel Codecs will show up in the List of available Codecs instead of the Helix 32 Bit Codecs with 64 Bit Applications. Important: The Helix Codecs are RAW Codecs and don't vary in the Bitrate. A large Resolution with a high Frame Rate results in a higher Bitrate and vice versa. Most Consumer Devices are limited to VGA if the User selects I420/IYUV/YV12 to capture a Video (640x480) because Windows does not support natively higher Resolutions using these FourCC's. The Helix Codecs can be used to compress higher Resolutions that are available through YUY2 by the Capture Card or Device via VirtualDub or other Capture Software where the target Codec is selectable. [...] WARNING ! DO NOT RUN THE 64 BIT REG-FILE ON A 32 BIT SYSTEM AND VICE VERSA ! Windows 9x Users need to edit the "System.ini" File. Open this File with "NotePad" (Editor) and change the following Section: [Drivers32] VIDC.I420=i420vfw.dll VIDC.IYUV=iyuvvfw.dll VIDC.YV12=yv12vfw.dll Save the edited System.ini File and navigate to the Folder where you uncompressed the Helix Codecs. Look for the "Helix9x.reg" File and double-click on it. A Window pops up and click on the "OK" Button to add the ICM Descriptions to the Registry. Note: The "VIDC.IYUV=iyuvvfw.dll" Entry is ONLY available with the Helix Codec Version 1.2/1.3 RC3, NOT with Version 1.2/1.3 RC2 which is no longer available ! Close all Applications and restart your System to re-enable the Helix Codecs. Uninstall: Open the "Software" Applet in Windows, select the "Helix Codecs" and click on the "Remove" Button. This removes the Helix Codecs and restores the Registry and native 32 Bit Windows Codecs. Users with Windows 9x/SE/ME need to restart the System. After you uninstalled the Helix Codecs, open the "Run" Command, type "dxdiag" and press the "OK" Button. The DirectX Diagtool now re-registers the native Windows Codecs for the DirectX Engine. Known Issues: Width has to be a multiple of 4 and the Height a multiple of 2. Recommened for best Performance: 4x4 The new Installation Routine always installs all Helix Codecs and they can not be selected individually anymore to enable a lossless Transcoding from one Colorspace to another. The Helix Codecs can not be selected in some Ulead/Corel Software Versions for Compression, only for De-Compression when you captured with I420 or YV12. This is a Issue in some Ulead/Corel Versions and not a Bug in the Helix Codecs. Videos encoded with the Intel IYUV Codec can now be played back with the Helix Codecs even if the Intel IYUV Codec converts 12 Bit up to 24 Bit and vice versa while the Helix Codecs stay in 12 Bit. VirtualDub does not support I420/IYUV as a Output Format. If the "Normal Recompress" or "Full Processing" Modes are used then the Conversion is made over RGB. "Direct Stream Copy" is without any Conversion, just like the "Fast Recompress" Mode. Blue-Screen with large Resolutions using RGB32 Karl Lillevold: 7th August 2015 "forclip" informed me that if using a renderer with RGB32 output, for example VMR-9, for higher than HD resolutions (e.g. 2560x1440) the Helix YV12 converter will cause a crash. I investigated this and found that when I created version 1.3 and allowed up to 8192x8192, I failed to notice that the assembly coded YUV to RGB color converters written in 1996 are hard-coded with a 2080 pixel wide limit. Back then no one foresaw resolutions would ever need to be higher :S All I can do at the moment is add this information to the thread, as I am unable to make any modifications to the assembly code, nor in fact build the projects due to build system incompatibilities. If staying in the YUV domain, the converters work fine up to 8192. Other product names, trademarks and registered trademarks mentioned in this Document are the property of their respective holders. -EoF- For a Changelog, see ReadThis.txt in archive.
__________________
This information is provided "AS IS" with no warranties, grants no rights, and reflects my personal opinion. Last edited by karl_lillevold; 14th December 2016 at 22:19. Reason: new version Dec2016 by MLJ |
|
|