Git Product home page Git Product logo

utvideo's People

Contributors

umezawatakeshi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

utvideo's Issues

UTVideo and ffmpeg

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.

Mac install?

I've used UTVideo on Windows and love it. But does UTVideo support macos? If so any instructions on how to install?

There is no direct NV12 input, so the cpu had to transform it into YV12. IT is an unnecessary painful work for a lot of CPU

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!

How can I defend my selected UTvideo format from the arbitrary decision of a capture software?

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:

https://i.ibb.co/6XgxnkL/k-p.png

Encoders crash if "Assume interlace video" option is enabled / 「インターレース映像としてエンコード」オプションを有効にするとエンコーダがクラッシュする

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 incorrectly / ULH4 が RGB フォーマットを内部保持形式との間で誤った変換を行う

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

Windows Defender blocks UtVideo's installer as a malware / Windows Defender が UtVideo のインストーラをマルウェア扱いしてブロックする

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 - -

UMRG/UMRA encoding result is wrong when the remainder of width divided by 64 is 32 / 幅が 64 で割って 32 余る数の場合に UMRG/UMRA でのエンコード結果が間違っている

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

New YUV color format?

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 / Windows Defender が UtVideo のインストーラをマルウェア扱いしてブロックする

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 - -

Release Mac version as dmg file instead of zip file / Mac 版を zip ファイルではなく dmg ファイルで配布する

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 ファイルで配布し、それをマウントしたウィンドウ内でコンポーネントファイルをドラッグ&ドロップすることによって簡単にインストールできるようにする。そちらの方がユーザーフレンドリーであろう。

Add feature to disable some of codec interfaces on the basis of process name / プロセス名に基づいて一部のコーデックインターフェースを無効にする機能を追加する

Add feature to disable some of codec interfaces on the basis of process name. For example, We have to disable DMO interface to use UtVideo with HitFilm (see #4)

プロセス名に基づいて一部のコーデックインターフェースを無効にする機能を追加する。たとえば、 HitFilm では DMO インターフェースを無効にしないとうまく動作しない。(#4 を参照)

error: unknown type name 'CodecInfo'

たびたびすいません。
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

With HitFilm, decoders output one per two frames / HitFilm で映像クリップを配置した時、デコーダが1フレームおきにしかフレームを出力しない

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 with UtVideo mov files written by iMovie / iMovie で出力した UtVideo の mov ファイルを QuickTime Player で再生するとクラッシュする

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

Vegas doesn't open configuration dialog for UTVideo 20.4.0+

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

I get a windows error when using the exe installer

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?

Can you expand the AVX/AVX2 CPU support for the 4:2:0 8bit (ULH0) formats too?

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 / GStreamer プラグインを追加する

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 などでの利用が可能となる。

Macで共有ライブラリは作れますか?

はじめまして。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)
では、共有ライブラリを作るときにはアセンブリコードのファイルを除外するようにしているようなのですが、ということはやはり、アセンブリコードの部分は共有ライブラリ向けに書かれていないということなのでしょうか?

作者からすると目的外の話ですいませんが、ご回答いただければ幸いです。

Add YUV444 variants / YUV444 のバリアントを追加する

Add YUV444 variants to ULxx family.

  • FourCCs should be ULY4 (BT. 601) and ULH4 (BT. 709).
  • Supported input/output raw formats should be:
    • YV24 (native format)
    • RGB family

ULxx ファミリに YUV444 のバリアントを追加する。

  • FourCC は ULY4 (BT. 601) および ULH4 (BT. 709) になるべき。
  • サポートされる入出力フォーマットは以下のようになるべき
    • YV24 (ネイティブフォーマット)
    • RGB ファミリ

Frame divide count silently breaks encoding on a CPU with more cores

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 codec again / MFT コーデックを再び追加する

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)

Indeterminate behavior in case of frame divide count larger than 64 / フレーム分割数が 64 より大きい場合に動作がおかしい

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

When YUV444 and 422 variants convert internal format to ARGB, they set wrong alpha value / YUV444 および 422 のバリアントで ARGB で出力する際に誤ったアルファ値を設定してしまう

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

I420 input color support for ULH0 Codec

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.

https://wiki.videolan.org/YUV

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.