- 画像処理
- 設計
- モンキーパッチ
- C++
- Lua
- C#
- x86
AviUtlのバグを直す/高速化する/機能追加
Home Page: https://scrapbox.io/ePi5131/patch.aul
License: Other
タイムラインのオブジェクトへの操作を行う
eclipse_fastのLuaCommandのようなもの、というかそのまんま
設計をしっかりとやる!(素振り)
patch.aul.txt の内容を転記するか リンク があったほうがリポジトリを訪れた人にとっては分かりやすいかと思います。
プルリクが片付いたらやっておきますメモ
場合によってはオンボードGPUを使ってしまって遅い遅いということがあるらしい
まあjsonファイルなんじゃないでしょうか
デバイスの名前を指定するようにしたい 何から選べるのかを示すにはどうすればいいか考える
*(COLORREF*)(exedit + 0x44C4A + 1) = color;
HPEN* pen = (HPEN*)(exedit + 0x1538B4);
::DeleteObject(*pen);
*pen = ::CreatePen(style, width, color);
どちらかを書き換えてカスタマイズできるようにする。
概要
エラーメッセージ等なにも表示されずにクラッシュします。
patch.aulのコンソールウインドウが表示されるとこまでは進みますが、コンフィグなどのファイルが生成されません。
再現手順
AviUtlのv1.10と拡張編集のv0.92とpatch.aulのr42を組み合わせると引き起こされます。
起こってほしかったこと
正常に起動する 又は エラーログが生成される
環境
上記の通り、AviUtlと拡張編集とpatch.aulのみの環境でテストしました。
その他
突然使用不可になりました。
他のソフトウエアの影響が考えられます。
概要
コンソール画面が表示されてすぐに消えます。
AviUtlは正常に起動できていません。(クラッシュします)
再現手順
下記の環境を用意します。
aviutl.exeを実行します。
起こってほしかったこと
正常起動
環境
名称 | バージョン | 備考 |
---|---|---|
Microsoft Windows | 10.0.22621.1413 (22H2) | Windows 11 Pro ARM64 |
AviUtl | 1.10 | |
拡張編集 | 0.92 | |
patch.aul | r42 |
https://www.nicovideo.jp/watch/sm39263447 は「白魔術」(原文ママ)とかいうよくわからない方法でやってるらしいので、黒魔術でちゃんと組み直す
どうやらundo関連のバグがたくさんあるらしいので、それもついでに直してもらう
patch.aul.json を削除 → aviutl を起動、何もせず終了 → aviutl を起動
で 100% 設定ファイルが不正と出ます。
theme_cc の項目を消すと正常に起動します。
ここのデータの読み込みが失敗するのが理由だと思うのですが。
patch_text_op_size.hppにて
if (!enabled_i)return;
が無いと思いながら試しに
"text_op_size" : false
をしてみたところ対象のバグ( https://scrapbox.io/ePi5131/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97%E3%81%AE%E3%83%90%E3%82%B0 )が特定フォント起こるだけでなく、多くのフォントで挙動がおかしくなった
restorable_patch.hppらへんで問題になっているとすると、他の部分のパッチも含め問題がある可能性があるので報告です
色調補正(拡張編集)と色調補正(AviUtl本体)が存在するため
色調補正(AviUtl本体)をエイリアスやオブジェクトファイルで出力しても
読み込み時には色調補正(拡張編集)となります
案1.AviUtl本体の「色調補正」の名称を「色調補正フィルタ」にする(ぼかしフィルタ シャープフィルタのように)
→exaやexoの互換性はこのバグのせいで元から存在しないので気にしなくていい
→aviutl.iniやaupの方は色調補正の設定が初期化されそうですが影響は少なそう?
案2.トラック名の違いから頑張って判定する
→だるそう
マルチトラックで記録されたファイルを変換等をせずにAviUtl上でそのまま扱いたいため
音声ファイルや動画ファイルの音声トラックを、設定ダイアログで操作できるようにする
(マルチトラックの操作を有効にするチェックボックス とトラック数を指定するスピンボックスを追加)
別環境でビルドしてみるかーという遊びをしたらなんか設定されないことが分かったので
背景
海外版拡張編集0.92(filter[0].informationへの改変を行っているもの)を使っているとpatch.aul requires Exedit version *0.92*.
というエラーを吐く
一応0.92ではあるため、エラーの意味がよくわからない
また、そこそこ海外ユーザーはいるため、そもそもバージョン判定を省略するための設定を用意するべきである
概要
patch.aul.json
に特定のプロパティを書くと、バージョン判定を迂回することにする
patch.aul\exedit_version_ignore: boolean
とか?
没案
patch.aul
ファイル名を変えるとか... それは違くない?
その他
ExeditじゃなくてExEditだと思います!
将来的にguiでの設定が可能になったときには、この設定はguiからは変更できないようにすべきかもしれない
今static const SHA256 r940_hash(0xc7, 0xe2, 0x51, 0xde, 0xd2, 0xf8 ...
とひどいのをなんとかする
#29 (comment) と同じ感じでいいんじゃない?
背景
この機能追加は、exeditの英語版パッチではバージョン文字列も翻訳されているため、patch.aulが動作しないことから提案されたものです。
概要
提案されている機能は、exeditの英語パッチのサポート追加で、大文字小文字ファイルのコードチェックを変更することです。
このコードでは、exedit上で日本語版にある "拡張編集(exedit) version 0.92 by KENくん" という文字列をチェックしているが、英語版パッチにある "Advanced Editing version 0.92" もチェックすべきだ。
没案
?
その他
本号は機械翻訳を使用しています。
コードをいじってみたが、VISUAL STUDIOの内部ライブラリがエラーを出すのでコンパイルできず、修正もできない。
この修正は、init.cpp
のコードチェックをこのように変更することで簡単にできる:
if (strcmp(filters[0]->information, "拡張編集(exedit) version 0.92 by KENくん") != 0)
を次のように変更するだけだ:
if (strcmp(filters[0]->information, "拡張編集(exedit) version 0.92 by KENくん") + strcmp(filters[0]->information, "Advanced Editing version 0.92") != 1)
これから AviUtl を始める人がネット記事を見て r940 を入れてしまうことがあるようなので、バージョンが古いですよって教えてあげる機能があれば親切かなと思いました。
アホだろ、こんなん
途中で設定を変えられる系のパッチについて、どうするんだという問題がある
Configをもう一つ作って差分を見て違ったらクラスに送るマクロを書きますか?
・極座標変換を使う(スクリプトを使う)と落ちる
・逆に遅くなる
などが散見される これはなに?
概要
ご覧の通り、コミットが❌になっていますね
VSのコンパイルエラーです
原因
format_string
がCI環境にまだ来てないっぽい
その他
まあここに置いておいたほうがいいのかなってことでIssueにしておく
このような感じで、初心者用に
ランダム配置→震える で描画位置が壊れます
原因はlua.env
さっぱりわからない 誰か助けてくれ
ごめん あとでやる
https://github.com/hebiiro/AviUtl-Tool-patch.aul.json.gui はあるけど、やはり自分で持っておくべき
実行時に切り替えられるようにできる/したいパラメータはあるので
とても、面倒です
つらい
https://twitter.com/suisyu_chouman/status/1510090601944944647
多分規定値に戻ってしまっている なんで?なんで?なんで?なんで?なんで?
概要
個別オブジェクト
にチェックを入れた画像ループフィルタでオブジェクトを増殖させ、
その上に何かフィルタ効果を乗せると、そのフィルタが増殖するごとに付与されていく(?)
色調補正をかけて色相をいじると分かりやすいです
再現手順
画像ループ
フィルタを追加画像ループ
の 個別オブジェクト
にチェックを入れる縦
と 横
を任意の数増やす起こってほしかったこと
常に画像ループフィルタ付与前の画像で処理してほしい
https://github.com/users/ePi5131/projects/1 に進捗状況を書く、と言って何も動いてないように見える
フォーク版が大変優秀なので、皆さんはそっちを使っててもらえれば
https://scrapbox.io/ePi5131/DynamicAddressManager で考察した結果、テーブルな構造体をメモリに載せたほうが嬉しそうとなった
offset_address.hpp
は廃止してこれに置き換える
Boostプラグイン絶対潰す合同
・オブジェクトの長さが長過ぎるとグラデーション描画がループする
・オブジェクトの長さが長過ぎると右端の色が指定した色以外になる
・拡大率によっては正常に描画される
・テーマ機能のオン・オフに関わらず描画がおかしくなる
検証環境:AviUtl1.10+拡張編集0.92+patch.aul(r34)
流石にあのやり方はキモすぎ
https://scrapbox.io/ePi5131/一定時間毎に関数を実行するC++ を考えてきたのでtimer.hpp
をこれで置き換え
#10 の続きでもある
グローバル変数は初期化順序がようわからんことになるのでやめたほうがよい(1敗)
オブジェクト指向を、やります
ついでにパッチ(patch::*
)を一元管理できるクラスを生やしてみます
概要
特定の操作を行うと、BPMグリッドの設定がリセットされてしまう
再現手順
https://twitter.com/yuusyaasisutant/status/1561003282411450369
https://twitter.com/yuusyaasisutant/status/1561005425524617216
起こってほしかったこと
設定が保持される
環境
おそらくバニラ1.10/0.92
その他
これこういう再現方法だったんですね
よくわからないけどそういうことがあるらしい
ニコ動のコメントによると switch\console: true
だとダメっぽい
多分直接json弄ったりしてないのに無効なjsonだぞゴラメッセージが出ることがあるっぽい よくわからない
こうなったときのjsonをよこせ
0.93rc1から持ってくる機能
OverWriteOnProtectHelper
というクラスのRAIIでページのProtectを一時的に変更するという芸をやっている
数十バイト離れた4バイトの書き換えで同じページをいちいちWritable→Readonlyにするのはなんか嫌な気持ちになる
別に負荷にならないというならいいんだけど、そうでもないならある程度「ここにこれを書くよ」を溜め込んでおいて一気にProtectを変えて書くをやりたい
この問題は『設定ダイアログにスクロールを付ける』&『設定ダイアログを高速描画する』&『スクリプト選択コンボボックスがウィンドウ外に出現する』の条件が重なったときに発生するようです。
この条件下だと ::UpdateWindow() を呼んでも設定ダイアログに WM_CTLCOLOREDIT が送信されないようです。よって、
このような処理をしてほしいです。実際に実装してみたソースコードはこちらにあります。
https://github.com/hebiiro/AviUtl-Plugin-script_sort_patch/
背景
新規プロジェクトを作成 の画像サイズを指定するテキストボックスが短くて、Wine環境では3桁までしか入力できない
→1280x720などを指定できない
一時期Wine側が修正していたが最近再発するようになったらしい
概要
テキストボックスの長さを長くしてあげる
ダイアログリソース名はNEW_FILE
なのでなんとかしてください
その他
0.93rc1ではサイレント修正でこれが広がって改善されたので0.92にも持ってくる
これはWindowsの知識があればできるので good first issue です(ほんまか?)
スクリプト並び替え管理プラグインでドラッグアンドドロップしたあと、
::SetWindowLongA(settingDialog, GWL_WNDPROC, NULL);
が実行されてしまい、他のプラグインのサブクラス化も解除されてしまいます。
https://github.com/hebiiro/AviUtl-Plugin-script_sort_patch/
で ::SetWindowLongA()
をフックして解決する方法を実装しています。
これを patch.aul でやってほしいです。
operator""_fmt
が全滅している模様
https://godbolt.org/z/Gn8djxMW5 ざっくり検証したら古いmsvcではコンパイルできるが新しいものではできなくなってしまったらしい
私がC++規格に沿っていないコードを書いていてエラーになるようになったのか、msvcのバグを引いているのかはわからない
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.