最近の変更サイトマップ

MozJPEGのjpegtranによるJPEG圧縮最適化が凄い件

とても今更なんですけどね、Mozilla謹製JPEGライブラリ群の一部、jpegtranによるJPEG最適化の効果に驚愕しとるわけです。

PENTAX K-1を買ってからというものPCのストレージの減り方が半端なく、そりゃJPEG+RAWで撮ってれば1シャッターにつき60MB前後の容量を食うので当たり前なわけでありますが、冗談抜きで空き容量が逼迫しとるんですわ。1TBのSSDうち820GBをデータ用に割り当ててるのに、現時点で残り2.3GBですよ。使用量のうち8割が写真であるからして、白羽の矢が立ったのがMozJPEGというわけ。(RAWが一番容量食ってるってツッコミはなしなんだぜ。)

とりあえず急場凌ぎで、画像の品質には一切影響を与えないjpegtranで最適化してみたら、縮むこと縮むこと。元の画像サイズが大きいことも相まって、1枚あたり1MB弱ほど小さくなった。論より証拠ってなもんでスクショをご覧頂こう。

 jpegtranによるファイル容量削減結果

圧縮データの最適化、つまり無劣化でここまで縮むんだから大したもんですよ。もっとも、演算能力や処理時間の制約が厳しいデジカメで生成されたJPEGデータなので、最適化の余地が大きかろう点は考慮の必要があるだろうが…。

画像右端の「算術符号」ってのは、-arithmeticオプションで最適化した結果である。ハフマン符号最適化(-optimizeオプション)より更に小さくなっており、その効果には目を見張るばかりだが、哀しい哉、特許の関係で算術符号でエンコードされたJPEGに対応したソフトは皆無…。試した範囲では、MacOS X v10.9のプレビュー.app、Photoshop CC 2015.5、Firefox 58のいずれにおいても表示する事ができなかった。フォトショとLightroomで使えれば、手元のデジタル写真ライブラリの容量削減に大きく寄与するんだがなー。口惜しい…。

ついでに言うと、-optimizeより-arithmeticの方が処理時間が短かったりするのよね。軽くて縮むとかどんだけだよ。本当に口惜しい……。MacBook Pro (Late 2013)での処理時間は↓こんな感じ。

・-optimizeの時
real    3m35.907s
user    3m22.685s
sys     0m11.282s

・-arithmeticの時
real    3m12.291s
user    2m57.712s
sys     0m11.897s

-copy allオプションを付ければJPEGに含まれるメタデータは全て引き継がれる。少なくともexiftoolで比較した限りでは、元ファイルと最適化後のファイルでExifの相違はなかった。

個人的には元ファイルのタイムスタンプも継承したかったので、下記のようなシェルスクリプトで処理した。

#!/bin/sh
 
TARGETDIR="$1"
OUTDIR="$1/out"
FILES=`find "$TARGETDIR" -maxdepth 1 -type f -name '*.JPG'`
 
echo `pwd`
 
mkdir -p $OUTDIR
for file in $FILES; do
    echo $file
    CTIME=`GetFileInfo -d "$file"`
    MTIME=`GetFileInfo -m "$file"`
    OUTFILE="$OUTDIR/$file"
    jpegtran -optimize -progressive -copy all "$file" > "$OUTFILE"
    #jpegtran -arithmetic -progressive -arithmetic -copy all "$file" > "$OUTFILE"
    SetFile -d "$CTIME" "$OUTFILE"
    SetFile -m "$MTIME" "$OUTFILE"
done

ご覧の通り、エラー処理とか何も入れてないので、元ファイルが無関係のファイルが無くなってもしらにゃい(´・ω・`)。GetFileInfoとSetFileを使ってるのでXcodeを入れとく必要がある、つまりこのスクリプトはMac専用なんだぜ。

Macに4kモニタをDP MSTで繋いでる人はSierraにするべからず

間もなくHigh Sierraがリリースされるというのに、今更Sierraの話題でごめんね。

Macで4kモニタをDisplay Port 1.2のMST1)モードで繋げて使ってる人は、10.12にしてはいけない。もれなくマウスカーソルの挙動がバグる。ウィンドウの境界にマウスポインタを持って行くと、アイコンがウィンドウのリサイズ操作を意味する「↔」に変わるけど、この変の挙動がおかしくなる。

まず、ウィンドウ境界の判定がおかしい。ポインタの表示は「↔」とかに変わるが、実際に操作しようとすると正常に機能しない。詳しく調査はしてないけど、境界の左右どちらか幾分ズレた所に操作領域があるっぽい。そして、一度変わったポインタアイコンは、操作領域を外れても元の通常ポインタ表示(「↖」こんなやつ)に戻らない。でも機能としては通常のマウスカーソルである。

このバグはウィンドウ境界だけではなく、Finderの列幅調整などのドラッグで操作可能な部分でも起きる。

本国のフォーラムではSierraリリース直後から問題が報告されてるのに、10.12.6でも直ってない。それどころか、High Sierraのβ版でも直ってないみたい(改善はされてるらしいが何かの拍子に再発する模様)。

僕はYosemite以降のOSXがどーも肌に合わなくてMavericksを使い続けてるんだけど、そろそろ各種アプリのサポートが切られ出したから重い腰を上げてSierraに更新した矢先の仕打ちですよ。こんなこともあろうかと、別パーティションで試してたのでソッコウでMavericksに戻って事無きを得ましたけどね。

それにしても、Yosemite以降のOSXって本当に品質が悪過ぎじゃないですかね…。このバグにしたって、社内で外付け4kモニタ使ってる人がいれば一発で発覚するだろうに。まともにQAチェックもしてないんだろうね。公式で4k情報を出すくらいなんだから、最低限のチェックくらいはしてもらいたいものだね。

こんな調子じゃ当分10.9から離れられなさそう。いよいよもって10.9じゃ立ち行かなくなったら、その時はもうMacを止めるかもしれない。

参考サイト

1) Multi Stream Transport

com.hp.help.tocggeneratorのエラーログを止める

OSXのコンソールログを見ていたら2015/08/01 9:10:26.559 com.apple.launchd.peruser.501[188]: (com.hp.help.tocgenerator) Throttling respawn: Will start in 10 secondsこんなログが延々出続けていた。

ウザいのでどうにかすべくググった所、HPのフォーラムに解決方法が載ってた。ターミナルで以下のコマンドを実行せよとの事。

launchctl unload /Library/LaunchAgents/com.hp.help.tocgenerator.plist
sudo rm -f /Library/LaunchAgents/com.hp.help.tocgenerator.plist

無事、出なくなった。

Macで「ThinkPad ベーシック USB 3.0 ドック」を使う

USBケーブル1本で様々なインタフェースを追加出来る、通称USBドックと呼ばれる製品は様々あるが、ThinkPad Basic USB 3.0 Dock (4X10A06696)はUSB 3.0接続で

  • Gigabit Ether
  • DVI-I (最大2560×1600)
  • 音声入出力
  • USB 2.0ポート×2
  • USB 3.0ポート×2

と必要十分な機能を持ち、たまに直販で7000円弱で販売している非常にお買い得な製品だ(通常価格は16000円ちょい)。

これがMacBook Proで使えたら何かと便利だと思うのだが──結論から言うと、DisplayLink社の純正ドライバを入れるだけで全ての機能が問題なく使える(ちょっと嘘。DVI-Iの映像出力は試してない)。ドライバダウンロードページには「DisplayLink USB Graphics Software」しかなく、映像出力しか対応してなさそうな雰囲気だが、こいつを入れればOK。機能的に採用チップはDL-3700だと思われる。

しっかりThinkPad Basic USB 3.0 Dockと認識されているのが分かる(色々書き込みされてるのは他の日記からの使い回しだから気にすんな)。

ドック購入前にMacでの使用例を探してみるも見当たらず、人柱上等、所詮USB機器、ベンダーIDとプロダクトIDから適合ドライバを割り出して探してくりゃいいだろってなもんで、Macカテゴリに解説ページを作る気満々だったが、あまりにもあっけなく動いてしまったので面食らってるってのが本当の所。ドック本体にでかでかとDisplayLinkロゴがあって探すまでもなかった(笑)

MacのUSB 3.0が遅くなる問題(USB 2.0で認識される)

MacBook Pro Late 2013でUSB 3.0-Gigabit Ethernetアダプタを使ったら速度が全然出なかった。経験的にUSB 3.0のLANアダプタはフルスピード近く出るはずなのだが、ファイルサーバからのコピーで272Mbps程しか出ておらず、明らかに遅い。

おかしいと思いシステム情報.appで確認したところ、なんとUSB 2.0接続されてやんの。それどころか、殆ど全て、というより外付けのUSB 3.0デバイス全てが2.0扱いになっていた。

一見するとUSB 3.0で繋がっているように見えるが「USB 3.0 Hi-Speed バス」っていうのはUSB 2.0用のバスで、そちらに殆どのUSB機器がぶら下がってしまっている。黄色に色付けしたデバイスがUSB 3.0対応機器なのだが、これじゃ遅くて当然だ。

で、なんでこんなことになってるかというと、本体が“レガシーモード2)”になってるからっぽい。「BootCampアシスタント」や「システム環境設定」の起動ディスク設定でWindows(などの所謂PC向けOS)がデフォルトで立ち上がる設定になっていると、USB 2.0までの対応となってしまうようだ。

この状態だと、ブートスクリーンでOSXを選んでもUSBは2.0までの対応になってしまう。レガシーモードを抜けるには起動ディスク設定でOSXを選んで再起動すればOK。恐らく、起動ディスク設定でEFIのUSBモードの切り替えも行っているのだろうから、PRAMリセット(command+option+P+Rを押しながら電源ON)でも解除できると思われる。

USB 3.0として正しく認識されていれば、下記のような表示になる。

ESSENTIAL DOCKがHi-SppedSuperSpeedの両方にあるのは、USBの規格に因るもの。ちょっとややこしいのだけれども、USBって実は3.0と2.0以前とでは内部的な互換性はなく3)、同じUSBとは言っても全くの別物が共存しているのであーる。なので3.0対応のHUBなんかを繋ぐと、2.0と3.0の2つのHUBを繋いでいるように見えるわけ。USB3.0 Card Reader(モニタ内蔵のSDカードリーター)が相変わらずHi-Speedバスの方にくっついてるけど、良く分からんw(後日確認したところ、しっかりとSuperSpeedバスの方にぶら下がってた。)

レガシーモードのままでも速度が遅いだけで普通に使えちゃうので、実は気づいてない人が結構いるかも?USBメモリを使うくらいならUSB 2.0でも殆ど問題ないだろうし。

2) 自分が勝手に命名したものなので正式用語ではない
3) 更にUSB 3.1でこれまた大きな変更が加えられている
start.txt · 最終更新: 2016-05-07 17:46 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0