9月
05
どれくらいの人が気づいているか分かりませんが、現在のバージョンでは横幅が 4 の倍数でなければいけないといった制約はなく、それどころか奇数でも動くようになっています。奇数でも動くようにするために、プログラム側(特にアセンブラバージョン)では、かなり汚い部分があります。アライメントの問題もありますし、できればこういうのはナシにしたいところです(今更
一般的に使われる映像の横幅といえば、恐らく 320, 360, 512, 640, 720, 1280, 1920 あたりだと思います。これらは全部 8 の倍数なので、一般的に使われる映像だけを相手にするのであれば、8 の倍数でなければいけないという制約をつけることで処理効率(とソースコードの可読性)を上げることができます。また、360 を相手にしないのであれば、8 ではなく 16 の倍数にすることができ、より処理効率を上げることができます。
で、ここで質問です。
- 横幅が 8 の倍数でなければならないという制約をつけたとして、どれくらい困りますか?
- 同様に 16 の倍数(360が対象外になる)だとどうですか?
- 同様に 32 の倍数(360と720が対象外になる)だとどうですか?
具体的にどう困るか説明がなくて単に困るとだけ書いてある場合は見なかったことにします。
なお、縦に関しては 2 の倍数でなければならないという制約を入れようと思っています。偶数ならたぶん誰も困らないし。本当は 8 の倍数にしたいところですが、どうですかね。
追記:
制約を入れたいメインの理由は「汚いコードをメンテしたくない」なので、モードを分けて制約から外れるものも残す、というのは全く意味がありません。
いまだに704×396という解像度を扱う私としては縦が8倍数にされると、その、なんだ、困る。
横幅ですが16倍数ならばまだいいかもしれないが流石に32倍数はやりすぎな感がする。しかし汎用性と言う意味では8倍数あたりがやはり最適かと。
704×396 って何じゃー!と思ってググったら SD な 16:9 のデジタル放送をキャプった後クリッピングするサイズなのね。
16と32の倍数以外アホになる世界のウメザワはちょっと汎用性がないかな?
個人的には奇数で扱う事は無いとして、8の倍数くらいが良いと思いますぅ
エンコード前に吐き出すファイル”のみ”を視野に入れるなら問題ないと思うのですが、
こういった可逆コーデックを使う用途として中間だけでなく
編集途中のテンポラリとして利用する事もある(私もたまに書き出す)ので、
奇数制限は取り払ったとしても縦横2の倍数かYV12の縦を考慮した4の倍数程度は
保証したほうがトラブルの種にならず利用価値や用途を限定せずに済み魅力的だと思う。
どうしても端数が出る部分(画面の端)はブランクを付加して処理しつつ、
データをスライスしてしまえば良さそうな感じも?(現在のMPEG系のように)。
当方は1920×1080でキャプしているので横は8、16、32、
縦8でも問題ありません。
ただキャプ後のエンコにもこの制約が絡んでくるのでしたら横は全部いいのですが、縦が810にリサイズしてエンコする事が多いので8の倍数だと困ります。
縦480の16:9映像の横解像度って853.333333で、近いところで852を使用したりして、これが8の倍数ではなかったりします。
使う人がいるのかわかりませんが、縦についてはワンセグの320×180があるのでこれも8の倍数ではないですね。
ある動画からクロップしたものをべつな動画の素材としてつかうこともあるからそいつもUtで扱いたいんだけれど、8ピクセルどころか奇数もあるんだよなー。ニコマス特化なら解像度制限は結構いやかも。
一回クロップして無圧縮にしたあと、アルファ足して8の倍数でUtでエンコしなおしとか面倒くさい。
作者の方向性として速度UPが優先されてるし、32倍辺りで最速を目指し手良いのでは?
利用者は限定されるかもしれないけどHuffyuvを大きく超えられるならば、満足度は上がるかと。
UtVideo便利に使用させていただいております。
主に地デジソースの中間ファイルの作成に使っております。
ご存じの通り1440×1080の4:3の動画では黒塗りの部分をのぞくと
1080×1080であり、ここで一端中間ファイルにしますので
横の倍数は最低でも8でお願いできればと思います。