umezawatakeshi / utvideo Goto Github PK
View Code? Open in Web Editor NEWUt Video Codec Suite - fast lossless video codec
Home Page: http://umezawatakeshi.github.io/utvideo/
License: GNU General Public License v2.0
Ut Video Codec Suite - fast lossless video codec
Home Page: http://umezawatakeshi.github.io/utvideo/
License: GNU General Public License v2.0
Hello and thank you for this excellent codec !
I have more a question than an issue.
When I use UTVideo from ffmpeg something like this:
ffmpeg -i in.avi -c:v utvideo -pix_fmt yuv422p out.avi
The chosen codec is always ULY2 in the BT601 colorspace. Is it possible to select the BT709 codec ?
Does this really have a consequence?
Best regards.
Please add Adobe Premiere Pro/Media Encoder plugins.
Thanks
I've used UTVideo on Windows and love it. But does UTVideo support macos? If so any instructions on how to install?
Hi!
There is no direct NV12 input for UT Video, so the cpu had to transform it into YV12. NV12 is more common in cameras and camcorders than YV12 format, especially all famous camcorder and camera manufacturers (Sony, Panasonic, JVC, Canon) use only the NV12 color format, when they send the signal trough HDMI output in yuv 4:2:0 colorspace.
It is a lot of CPU work to transform it to YV12, especially if you want to record video with a laptop. That unnecessary transform operation increases the CPU usage with 100-200 percent on many laptops , which has not dedicated strong videocards.
Can you make a YUV 4:2:0 NV12 version?
Thank you for your reply!
Hello Umezawatakeshi!
In many capture/recorder softwares you can choose from many types of Utvideo codecs. In some softwares however neglect my choice. For example: I chose ULH0 in Daum's Potplayer, when I want to record from an NV12 camcorder device, but somehow the result is always captured in RGB color. So the capture softwares can overwrite my original choice (ULH0) and put the video arbitrarily into RGB format? How is it possible?
Is this a bug in their potplayer?
I can't write to Potplayer, because I couldn't even register to their forum. (maybe their website has technical problems)
https://potplayer.daum.net/forum/ucp.php?mode=login
Thank you for your reply!
Best regards!
Bye!
Picture from my options in potplayer:
First:
https://i.ibb.co/FB8XbWH/k-p.png
Second:
https://i.ibb.co/vctTN85/k-p.png
Picture from the result:
Encoders crash if "Assume interlace video" option is enabled. Decoders do not crash with "interlaced" video.
「インターレース映像としてエンコード」オプションを有効にするとエンコーダがクラッシュする。インターレース映像としてエンコードされた映像をデコードしてもクラッシュはしないようだ。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 16.1.0 | Windows | VCM | ULRG |
Affected / 該当 | 15.4.0- | All / 全て | All / 全て | ULRG, ULRA, ULY2, ULY0, ULH2, ULH0 |
ULH4 converts RGB formats from/to internal format as if internal format is YUV422. ULY4 does not have this problem.
ULH4 が RGB フォーマットを内部保持形式との間で、内部保持形式が YUV422 であるかのように変換を行う。 ULY4 は問題ない。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 17.0.0 | Windows | VCM | ULH4 |
Affected / 該当 | 17.0.0 | All | All | ULH4 |
Several anti-virus engines detect malware in the latest releases:
And people report it being removed by anti-virus:
https://forum.videohelp.com/threads/396238-Utvideo-adware-malware-issues#post2575950
Hello Umezawatakeshi !
I would like to know, what are the FFMPEG settings codes of Ut video in OBS?
Thank you for your reply and help!
Picture of the issue:
https://i.ibb.co/jwn8wZq/k-p.png
Best regards!
Bye!
Add new FourCC with SIMD-friendly algorithm, which is test-implemented in https://github.com/umezawatakeshi/utvideo/tree/research-8sympack .
https://github.com/umezawatakeshi/utvideo/tree/research-8sympack でテスト実装した、 SIMD にやさしいアルゴリズムを新しい FourCC として追加する。
Windows Defender blocks UtVideo's installer as a malware. Microsoft Security Essentials on Windows 7 doesn't.
Windows Defender が UtVideo のインストーラをマルウェア扱いしてブロックする。Windows 7 上の Microsoft Security Essentials はブロックしない。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 16.0.0-16.1.1 | Windows 8.1/10 | - | - |
Affected / 該当 | 16.0.0-16.1.1 | Windows 8.1/10 | - | - |
In pre-AVX2 (SSE 4.1 and later) environment, UMRG/UMRA intraframe encoding result is wrong when the remainder of width divided by 64 is 32. Decode result is corerct.
SSE4.1 が使えて AVX2 が使えない環境において、幅が 64 で割って 32 余る数の場合に UMRG/UMRA でのフレーム内圧縮時のエンコード結果が間違っている。デコード結果は正しい。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 20.5.0 | All | All | UMRG, UMRA |
Affected / 該当 | 20.5.0 | All | All | UMRG, UMRA |
Add r210 input/output to UQRG. VirtualDub2 (formerly VirtualDub FilterMod) 41980 seems to support r210.
UQRG に r210 での入出力を追加する。 VirtualDub2 (旧称 VirtualDub FilterMod) 41980 はコーデックに対して r210 で入出力することができるようだ。
Hi Umezawatakeshi!
I have a capture device which only support YUV I420, however Ut video had to transform it in its internal format YV12.
Right?
I used the Virtualdub2 software, however during the compression process the colors are reversed (like swap U and V channels)
Can you make an edit, which will automatically transform it to the right colors?
1000 Thanks!
Have a nice day!
Windows Defender blocks UtVideo's installer as a malware. Microsoft Security Essentials on Windows 7 doesn't.
Windows Defender が UtVideo のインストーラをマルウェア扱いしてブロックする。Windows 7 上の Microsoft Security Essentials はブロックしない。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 16.0.0-16.1.1 | Windows 8.1/10 | - | - |
Affected / 該当 | 16.0.0-16.1.1 | Windows 8.1/10 | - | - |
ref: https://forum.doom9.org/showthread.php?p=1797641
I'm trying to register manually for quick silent install/uninstall.
Registry entries are the same for my method and your installer.
Ut is not visible as VFW with my method.
Your install .iss refers to utv_mft.dll which I do not find.
How to manually register Ut .dll files as VFW on Windows x64?
Release Mac version as dmg file instead of zip file and make it easily installable by dragging & dropping its component file. This must be more user-friendly.
Mac 版を zip ファイルではなく dmg ファイルで配布し、それをマウントしたウィンドウ内でコンポーネントファイルをドラッグ&ドロップすることによって簡単にインストールできるようにする。そちらの方がユーザーフレンドリーであろう。
たびたびすいません。
MacでXcodeでビルドしようとすると、以下の様なエラーが出ます。
ImageCodec.hの読み込み漏れだと思うのですが。
In file included from utv_qt/QTCodec.cpp:6:
utv_qt/QTCodec.h:21:60: error: unknown type name 'CodecInfo'; did you mean
'FolderInfo'?
pascal ComponentResult QTCodecGetCodecInfo(CQTCodec _glob, CodecInfo *info);
^~~~~~~~~
FolderInfo
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h:252:41: note:
'FolderInfo' declared here
typedef struct FolderInfo FolderInfo;
^
utv_qt/QTCodec.cpp:15:2: warning: 'GetComponentInfo' is deprecated: first
deprecated in OS X 10.8 [-Wdeprecated-declarations]
GetComponentInfo((Component)self, &cd, 0, 0, 0);
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h:503:1: note:
'GetComponentInfo' has been explicitly marked deprecated here
GetComponentInfo(
^
utv_qt/QTCodec.cpp:17:2: warning: 'SetComponentInstanceStorage' is deprecated:
first deprecated in OS X 10.8 [-Wdeprecated-declarations]
SetComponentInstanceStorage(self, (Handle)glob);
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h:878:1: note:
'SetComponentInstanceStorage' has been explicitly marked deprecated here
SetComponentInstanceStorage(
^
utv_qt/QTCodec.cpp:23:2: warning: 'OpenADefaultComponent' is deprecated: first
deprecated in OS X 10.8 [-Wdeprecated-declarations]
OpenADefaultComponent(cd.componentType, kBaseCodecType, &glob->d...
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h:1022:1: note:
'OpenADefaultComponent' has been explicitly marked deprecated here
OpenADefaultComponent(
^
utv_qt/QTCodec.cpp:24:2: error: use of undeclared identifier
'ComponentSetTarget'
ComponentSetTarget(glob->delegateComponent, self);
^
utv_qt/QTCodec.cpp:32:3: warning: 'CloseComponent' is deprecated: first
deprecated in OS X 10.8 [-Wdeprecated-declarations]
CloseComponent(glob->delegateComponent);
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Components.h:593:1: note:
'CloseComponent' has been explicitly marked deprecated here
CloseComponent(ComponentInstance aComponentInstance) __OSX_AVAI...
^
utv_qt/QTCodec.cpp:50:60: error: unknown type name 'CodecInfo'; did you mean
'FolderInfo'?
pascal ComponentResult QTCodecGetCodecInfo(CQTCodec *glob, CodecInfo *info)
^~~~~~~~~
FolderInfo
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h:252:41: note:
'FolderInfo' declared here
typedef struct FolderInfo FolderInfo;
^
utv_qt/QTCodec.cpp:53:2: error: unknown type name 'CodecInfo'; did you mean
'FolderInfo'?
CodecInfo *_tempCodecInfo;
^~~~~~~~~
FolderInfo
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Finder.h:252:41: note:
'FolderInfo' declared here
typedef struct FolderInfo FolderInfo;
^
utv_qt/QTCodec.cpp:54:25: error: no member named 'typeName' in 'FolderInfo'
char name[sizeof(info->typeName)];
~~~~ ^
utv_qt/QTCodec.cpp:56:52: error: use of undeclared identifier
'codecInfoResourceType'
err = GetComponentResource((Component)glob->self, codecInfoResou...
^
utv_qt/QTCodec.cpp:61:2: warning: 'DisposeHandle' is deprecated: first
deprecated in OS X 10.8 [-Wdeprecated-declarations]
DisposeHandle((Handle)tempCodecInfo);
^
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MacMemory.h:1278:1: note:
'DisposeHandle' has been explicitly marked deprecated here
DisposeHandle(Handle h) __OSX_AVAI...
^
utv_qt/QTCodec.cpp:67:9: error: no member named 'typeName' in 'FolderInfo'
info->typeName[0] = (unsigned char)strlen(name);
~~~~ ^
utv_qt/QTCodec.cpp:69:15: error: no member named 'typeName' in 'FolderInfo'
dst = info->typeName + 1;
~~~~ ^
5 warnings and 8 errors generated.
make: *** [utv_qt/QTCodec.o] Error 1
Hi Umezawatakeshi!
Can you implement a YUV option to switch between limited TV (16-235) and full PC (0-255) colorspace?
It would be very important!
Thank you very much!
With HitFilm, decoders output one per two frames. If DMO decoders are disabled, VCM decoders output frames correctly.
HitFilm で映像クリップを配置した時、デコーダが1フレームおきにしかフレームを出力しない。DMO デコーダを無効にすると、VCM デコーダが代わりに動いて正常にデコードされる。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 16.1.0 | Windows | DMO | ULRG |
Affected / 該当 | ? | Windows | DMO | Probably all / おそらく全て |
QuickTime Player crashes when it plays UtVideo mov files written by iMovie. AVI files container-converted by ffmpeg from the mov files are safe. AVI files written by Windows application and mov files container-converted by ffmpeg from the AVI files are also safe.
いつからかは分からないが、 iMovie で出力した UtVideo の mov ファイルを QuickTime Player で再生するとクラッシュする。その mov ファイルを ffmpeg でコンテナ変換した AVI ファイルではクラッシュしない。Windows アプリケーションで出力した AVI ファイルや、それをコンテナ変換した mov ファイルでもクラッシュしない。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 19.0.1 | Mac | QuickTime | All |
Affected / 該当 | ? | Mac | QuickTime | All |
Sorry about not being more clearer.
Starting from v20.4.0, Vegas doesn't allow to open UTVideo configuration dialog ("Configure..." button is disabled).
The issue is only with the configuration dialog, encoding/decoding itself is working fine.
Version 20.3.0 works fine in Vegas.
VirtualDub2 has no issues with any version.
Seems like the incompatibility was introduced in commit 344e70e.
My guess is that Vegas calls the codec incorrectly, and the corresponding check in VCMCodec
should be relaxed as a workaround.
There's another report for a different application, but the bug is probably the same:
https://forums.guru3d.com/threads/msi-afterburner-external-vfw-codec-recording-not-working.432000/#post-5871279
Add assembly language version of huffman encode/decode routines for 10-bit symbols, which are used in UQxx.
UQxx で使われる 10 ビットシンボル用のハフマンエンコード/デコードルーチンを追加する。
I can download the suit just fine but the codec wont show in mmd after installation, and i cant just use the utvideo installer because I get an error. when ever I click it it just says "Windows cannot access the specified device, path, or file" error when you try to install, update or start a program or file". I've tried running as admin from my admin profile, I have full permissions, there is no "shortcut tab" as I have not been able to install yet, and I cannot unblock without receiving the same error. what can I do?
Hello,
Could you please implement support for YUV420P16. I want to use utvideo and virtualdub2 for my lossless encodes.
Thank you!
Dear Umezawatakeshi!
Can you expand the AVX/AVX2 CPU support for th 4:2:0 8bit formats too? Especially for the ULH0 NV12 and YV12 input formats.
I read an Utvideo history in this webpage: http://umezawa.dyndns.info/archive/utvideo/utvideo-19.0.1-readme.en.html
....and I realized that higher colorspaces have AVX/AVX2 support since a long time.
It would mean high improvement of performance in YUV 4:2:0 compression!
I often record 4K camera videos with UT video to mini laptop via HDMI-USB3 converter stick, when I walking on the streets.
Thank you for your reply!
Best regards!
Bye!
Add GStreamer plugin. API/ABI of GStreamer is stable in version 1.0. Adding GStreamer plugin makes Ut Video Codec Suite to be used on Linux, etc.
GStreamer プラグインを追加する。 GStreamer の API/ABI はバージョン 1.0 で安定になった。 GStreamer プラグインを追加することで、 Linux などでの利用が可能となる。
はじめまして。ffmpegをインストールしようとしたところ、 --enable-libutvideo
というフラグがあったのでこちらにたどり着きました。
こちらのソースを利用させていただいて、Homebrewでlibutvideo.dylibを作ろうとしているのですが
(Homebrew/homebrew-core#729)
、アセンブリコードの部分の取り扱いが分からないため、スタティクしか作れていません。
そもそもはQuickTimeのplug-in向けなので、共有ライブラリ向けに書かれていない可能性もあると思うのですが、当方はスクリプト専門なので、何がどうならbundleではなく共有ライブラリに出来るのかすらわかっていません。すいません。
ffmpegの人達がやっていると思われる libutvideoをbuildするプロジェクトのMakefile(https://github.com/qyot27/libutvideo/blob/buildsystem/GNUmakefile)
では、共有ライブラリを作るときにはアセンブリコードのファイルを除外するようにしているようなのですが、ということはやはり、アセンブリコードの部分は共有ライブラリ向けに書かれていないということなのでしょうか?
作者からすると目的外の話ですいませんが、ご回答いただければ幸いです。
hello, do you have a website link to show readme.en.html?
Add AVX2-optimized routines. (may be small performance increase)
AVX2 版のルーチンを追加する。ただし、効果は小さいかもしれない。
Add YUV444 variants to ULxx family.
ULxx ファミリに YUV444 のバリアントを追加する。
I use Behold TV software to capture UTVideo ASF files.
On my old PC (i7-6700K, 4 cores), Frame divide count
had the default value 8, and everything worked fine.
After upgrading to i9-13900K (8 P-cores, E-cores disabled), exactly the same settings result in the undecodable output.
After adjusting Frame divide count
to 16, everything is back to normal.
If you won't be able to reproduce this, I can share the sample output.
Add MFT (Media Foundation Transforms) codec. Recently I have found an NLE software that uses Media Foundation and doesn't use DirectShow nor VCM.
MFT コーデックを再び追加する。 DirectShow や VCM は使わないが Media Foundation を使う編集ソフトを最近見つけたので。(ゆっくりムービーメーカー4)
P016 Planar, 4:2:0, 16-bit input and output support for vdub2.
Currently, there exist integration tests, but do not exist unit tests.
現状、結合テストは存在するが、ユニットテストは存在しない。
If the frame divide count is explicitly set to the number larger than 64, codecs behave indefinitely. Note that the frame divide count is never larger than 64 if "Same as # of logical processors" is checked.
フレーム分割数を明示的に 64 より大きい数に指定すると、コーデックが不定な挙動を示す。なお、「論理プロセッサ数と同じにする」をチェックしている場合、フレーム分割数は必ず 64 以下になるので、この問題を踏まない。
version / バージョン | Interface / インターフェース | FourCC | |
---|---|---|---|
Confirmed / 確認 | 20.6.0 | VCM | UMRG, UQRG |
Affected / 該当 | 2.1.0 and later / 2.1.0 以降 | All | All |
ULxx does not return error while being set wrong codec configuration.
ULxx の VCM 版で、誤った設定で ICSetState を呼んでもエラーを返さない。恐らく他の方法で設定した場合も同様。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 19.0.1 | Windows | VCM | ULxx |
Affected / 該当 | ? | ? | ? | ULxx |
When YUV444 and 422 variants convert internal format to ARGB, they set wrong alpha value.
YUV444 および 422 のバリアントで ARGB で出力する際に誤ったアルファ値を設定してしまう。
version / バージョン | OS | Interface / インターフェース | FourCC | |
---|---|---|---|---|
Confirmed / 確認 | 18.0.0 | Mac | QuickTime | ULY4, ULH4 |
Affected / 該当 | 17.1.0- | Mac | QuickTime | ULY4, ULH4, ULY2, ULH2 |
Add P210 input/output to UQY2. VirtualDub FilterMod supports P210 input/output.
UQY2 に P210 での入出力を追加する。 VirtualDub FilterMod はコーデックに対して P210 で入出力することができる。
Add NV12 input/output to ULY0/ULH0. NV12 is the preferred YUV420 format for DirectX VA.
ULY0/ULH0 に NV12 での入出力を追加する。 NV12 は DirectX VA で最も好ましい YUV420 フォーマットである。
Hello Umezawatakeshi!
I realized that ULH0 codec has an NV12 input support, however I suprised that it can not handle the I420.
Can you add support for it?
Thank you!
I think the difference between I420 and NV12 is well known for you.
The I420:
It has the luma "luminance" plane Y first, then the U chroma plane and last the V chroma plane.
The two chroma planes (blue and red projections) are sub-sampled in both the horizontal and vertical dimensions by a factor of 2. That is to say, for a 2×2 square of pixels, there are 4 Y samples but only 1 U sample and 1 V sample.
This format requires 4×8+8+8=48 bits per 4 pixels, so its depth is 12 bits per pixel.
I420 is by far the most common format in VLC. Most video decoders output raw pictures in I420 format.
A graphical illustration: Each letter represents one bit.
For a single I420 pixel: YYYYYYYY UU VV
For a 50-pixel I420 frame: YYYYYYYY×50 UU×50 VV×50 (or Y×8×50 U×2×50 V×2×50 for short)
For an n-pixel I420 frame: Y×8×n U×2×n V×2×n
The NV12
Related to I420, NV12 has one luma "luminance" plane Y and one plane with U and V values interleaved.
In NV12, chroma planes (blue and red) are subsampled in both the horizontal and vertical dimensions by a factor of 2.
For a 2×2 group of pixels, you have 4 Y samples and 1 U and 1 V sample.
It can be helpful to think of NV12 as I420 with the U and V planes interleaved.
Here is a graphical representation of NV12. Each letter represents one bit:
For 1 NV12 pixel: YYYYYYYY UVUV
For a 2-pixel NV12 frame: YYYYYYYYYYYYYYYY UVUVUVUV
For a 50-pixel NV12 frame: Y×8×50 (UV)×2×50
For a n-pixel NV12 frame: Y×8×n (UV)×2×n
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.