Photorec & TestDiskを自分でビルドする(2)

Bash on Ubuntu on Windows10上では動作可能なphotorecをビルドできないことがわかったため、cygwinでビルド。
できあがったphotorec.exeを/usr/local/bin/に置いても起動できないため、/bin直下にある cyg*.dllをphotorec.exeと同じフォルダにコピーする。また、バイナリ配布版に存在する63フォルダもphotorec.exeと同じフォルダにコピーする。
これで私家版photorecを起動することができた。

救出対象フォーマットを「ts」のみに限定しても「m2ts」が救出されてしまう理由はおそらく、file_m2ts.cのregister_header_check_ts関数の実装が

static void register_header_check_ts(file_stat_t *file_stat)
{
register_header_check(0, "G", 1, &header_check_m2t, file_stat);
register_header_check(4, "G", 1, &header_check_m2ts, file_stat);
}

となっているため。header_check_m2tsを含む行をコメントアウトすると自分の欲しい結果(1パケット188バイトのtsフォーマットのみを救出する)が得られると思われる。

Photorec & TestDiskを自分でビルドする(1)

http://www.cgsecurity.org/wiki/Developersに記載されている手順で、Bash On Ubuntu On Windows10の環境でTestDiskをビルドする。
モチベーションは、tsファイル救出のカスタマイズ。
現状、tsファイルに関しては192byteパケットのtsと188byteパケットのtsを区別していないところを、時間短縮のため、特殊用途で188byteパケットのものだけを選んで救出できるようにしたい。他にもあるけれどまずはこれを最優先で。
(ビデオカメラ撮影動画は192byteパケット、PT2/PT3の録画ファイルは188byteパケット)

configureに発生したエラーと回避策は下記の通り。

:
configure: error: At least one of ncursesw/ncurses/pdcurses/curses library must be present
% sudo apt-get install ncurses-dev
%./configure

:
configure: error: No uuid_create or uuid_generate function in library libuuid or uuidgen function present
% sudo apt-get install uuid-dev
%./configure

:
./configure: line 8208: syntax error near unexpected token `QTGUI,'
./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'
% ./configure --disable-qt
:
./configure: line 8208: syntax error near unexpected token `QTGUI,'
./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'
% ./configure --enable-qt=no
:
./configure: line 8208: syntax error near unexpected token `QTGUI,'
./configure: line 8208: ` PKG_CHECK_MODULES(QTGUI, Qt5Gui >= 5.0.0,,use_qt=false)'

むぅ、なんでだ。
見た目はconfigure構文エラーみたいやけど、9年間メンテナンスなしで放置されてるってありえるんかなぁ。
あらためて、

apt install build-essential e2fslibs-dev libncurses5-dev libncursesw5-dev ntfs-3g-dev libjpeg-dev uuid-dev zlib1g-dev qtbase5-dev qttools5-dev-tools pkg-config dh-autoreconf

をやり直して、再挑戦…したけど、駄目。なんでやろう。cygwinでは通ってbash on ubuntuでは通らないとかってあるんやろうか。

(追記)
http://rcmdnk.github.io/blog/2014/12/30/computer-automake/
を参考に、configフォルダを削除してautoreconfからやり直したらやっとmakeできるようになった。
なったけれど… sudo photorecの結果は、つれなく、"No harddisk found"になってしまう。
bash on ubuntuからはハードディスクが検索できないのか?
/dev/の下にHDDのデバイスファイルが生成されず、dfコマンドでも見えないので駄目らしい。(涙)

Windows10でMP3GainGUIが使用できない

今頃気づいた。
解決策は、MP3Gain.exe(AACGain.exe)コマンドを直接使用すること。
C++ Builder Starter Editionが無償化されたことやし自前でUIが書けたらいいんやけど。

http://blog.hogehoge.com/2016/06/Windows10-MP3Gain.htmlと、http://denspe.blog84.fc2.com/blog-entry-62.htmlを参考にして、自分の場合は、

@echo off
C:\"Program Files (x86)"\MP3Gain\mp3gain.exe /a /c /d 10.0 %*
pause

というアルバムゲイン用のバッチファイルを作成。トラックゲイン用のバッチファイルは上記の、/aを/rに変更しただけのもの。

UIがないので、ゲイン適用済みのファイルかどうかなどの確認ができないけれど、ゲインを設定することは可能になった。ただし、アクセント記号付きのアルファベットなど変な文字が含まれているファイルパスは指定できなかった。

別解として「MP3Gainについて語らないか Part 2」スレッドで投稿されている
http://www1.axfc.net/u/3664702?key=aacgainbat
も試してみたけれど、同様にアクセント記号付きのアルファベットが含まれているファイルパスは指定できなかった。


(追記)
Bash on Ubuntu on Windows10でmp3gainパッケージがインストールできるけど、動かすと

#0 0x7f7770e8231d==1802== AddressSanitizer CHECK failed: ../../../../src/libsanitizer/sanitizer_common/sanitizer_linux.cc:403 "((IsOnOf(*current_++, 's', 'p'))) != (0)" (0x0, 0x0)

な感じのログが無限に出力されるだけで何もできなかった。

現在のPC構成

少しずつ差分が更新され続けているので、現在の構成を確認。

最も古いパーツが9年半前から稼働しているマザーボードとCPU。壊れると即TV録画できなくなるので考えないといけないのだけど、手が付けられていない。
キャプチャ関係はHDMIキャプチャボードをストックしているのだけど、PCIeの空きポートがないので導入できない。

PT1,PT3の二枚刺し対応

BS/CS 3番組同時録画する必要があり、PCIeが1基余っていたのでストックしていたPT3を刺してみることに。PT3用の分波器を追加購入しないといけなかったり、PT1/2とPT3でBonDriverなどが変更になるのを注意しないといけなかったり、Spinelのサーバプロセスを一度停止させないと追加したドライバを認識させられなかったりするので、録画番組がなくなるタイミングを狙って少しずつ対応を進める。
しかし、本番の3番組録画は失敗。既存環境のPT2側のBS/CS録画が成功したり失敗したりするようになっていた。Spinel用のBonDriverフォルダにチャンネル定義ファイルを配置しないといけないようなのだけど、PT1/2用のファイルをもとにPT3用のファイルを作成したつもりが、PT1/2用のファイルを消してしまっていたらしい。事前に動作確認を入念にする時間がなかったせいで再放送のない番組を録画失敗してしまった。(T_T)

Windows10 Anniversary Update適用

動作条件が厳しくなるという話だったけれど、幸いクリアしていたのでアップグレード。ダウンロード、インストール時間を除いた再起動後の所要時間も2時間弱かかってしまった。

ディスプレイドライバ不具合など

Windows10にアップグレードして1か月が経過して初めてPCを再起動させた9/2以降、急にGeforce 7600GSでのフルHD解像度出力が「ディスプレイ ドライバーの応答停止と回復」エラーを頻発させ、ブルースクリーンでOSごと落ちてしまう現象が頻発。ドライバを入れなおしても何をやっても解決できず。7600GSドライバを削除するとOSは落ちなくなるけれど、モニタがPnP非対応モニタとしてしか認識されなくなるためフルHD対応できないどころかワイドモニタ表示もできなくなってしまうので、縦横比が非常に気持ち悪いことになってしまう。さらにアクセラレータも利かないのでマウス操作がいちいち重い。巷の情報では、Windows8対応のドライバで7600GSは使用できることになっており、9/1まではそれで正常に動作していたのだけど。

とうとうあきらめてビデオカードを交換。「応答停止」エラーはGeForceの持病という情報も見たのでGeForce恐怖症になっていたけれど、店頭には9割がたGeForceしかおいておらず、コストパフォーマンス、占有スロット数を考慮して玄人志向のGF-GT730-LE1GHD/D5を購入。パーツ交換になるけれど、幸い、Windows10のデジタルライセンスは失効しなかった。アップグレード前のライセンスがWindows8 Pro 64bit DSP版なので、ライセンスが切れたらおかしいのだけど。

このビデオカード交換の結果、市販のブルーレイソフトがPCで再生できるようになった(CPUが貧弱すぎて今まではできなかった)。また、かなり出遅れたけれどTMPGEnc 4.0 XpressでCUDA機能が使用できるようになったことを確認。今までMPEG4AVCエンコードが遅すぎて実質使用不可だったけれど、これからは使える。