============================================================
【ソフト名】Trim Viewer
【ビルド環境】Windows 11 64bit + Microsoft .NET 7.0(ver1.0以降)
【動作環境】Windows 10 64bit + Microsoft .NET 4.8(ver0.95cまで)
【サポート】ありません。自己責任でお使いください<m(__)m>
============================================================

--------------------------------------
更新履歴や思いついたメモ
--------------------------------------



Ver 0.02bでの変更点
-------------------
・ログファイルの表示も行う
・「.ts.trim.avs」の保存機能追加
・Trim情報を表示する


Ver 0.03bでの変更点
-------------------
・Windows Presentation Foundation (WPF)でMainWindowを書き直す
・表示位置の保存機能追加


Ver 0.04bでの変更点
-------------------
・OpenCvSharpでサムネイル作成のテスト


Ver 0.05bでの変更点
-------------------
・続・OpenCvSharpでサムネイルのテスト
・Trimの開始位置の調整テスト


Ver 0.06bでの変更点
-------------------
・Adjustテスト
・数値入力テスト


Ver 0.07bでの変更点
-------------------
・OpenCVSharpのお勉強が続いています(一か月ぶりでもう忘れてます^^;)
・数値入力例外処理追加
・画像読込・画像表示作り直し
・他環境での起動確認人柱版
・「[mpeg2video @ 0000000000000000] Invalid frame dimensions 0x0. 」エラーはソースや環境が原因なのでスルーしてます
※メモリ開放周りの例外処理がまだです。


Ver 0.09bでの変更点
-------------------
・サムネイルのフレーム数変更
・フレーム読込の最適化/メモリ開放の調整
・画像読込・画像表示ほぼ作り直し(笑)
・他環境での起動確認人柱版
※メモリ開放周りの例外処理がまだです。


Ver 0.10bでの変更点
-------------------
◆先頭フレームがずれているときの調整部分で処理を軽くしました
[ボタン操作設定]
・Reset：Trimの先頭範囲の最初のフレームを中央にして、調整フレーム数０にして再描画
・ReLoad：現在の選択位置(調整位置)を中央にして再描画
・Adjust(Set)：調整位置を確定して調整フォームを終了
・Cancel：選択情報を破棄して調整フォームを終了

[追加キー操作設定]
・PageUp,PageDownで1画面前後のページを読み込みます
・カーソルキーはサムネイル画面内で選択位置を移動します
・先頭フレーム調整は±6000フレーム(約20秒)の範囲を想定
・Homeキーで0フレーム、Endキーで+6000フレームを指定します

※メモリ開放周りの例外処理が永遠に続きます。バッファ処理は外しました。OSやDLL側が持っている分だけです。


Ver 0.11bでの変更点
-------------------
・単一のTrim表示テスト(※複数非対応)
・仮フレーム表示版


Ver 0.12bでの変更点
-------------------
・サムネイルの更新タイミングの変更
・Adjust反映
・複数Trimのテスト
・TrimListで選択されたTopにHomeキー、EndにEndキーを割りあて


Ver 0.13bでの変更点
-------------------
・複数Trim読み取りの修正


Ver 0.14bでの変更点
-------------------
・音声確認用に簡易再生を付けてみた(ボツ)
※簡易再生はMediaElementを使っていて、Trim指定で1フレームの処理をしようとしているのに、
現時点では同期できないって時点で使い物にならないわけですが(^◇^;
まぁそのうち何か考えます。優先順位は「サムネイル表示」と「1フレーム単位の画像確認」が先なんで(^_^)v


Ver 0.15bでの変更点
-------------------
・Trim範囲のスライダーを付けてみた
・全体的にもっさりしてるので速度改善に努める
・プレビュー画面でショートカットキーの管理に手が回らない＆キーを変更したいので、一度リセット
・簡易再生機能オフ


Ver 0.16bでの変更点
-------------------
・しばらく内輪の要望対応で、ほぼほぼデイリーアップデートになります。
・Bufferを付けてみた。128フレーム分。
・右カーソルキーでのフレーム表示が毎回フレームを読みに行っているので、再生実時間より遅いです。
(バッファ埋めるくらい先読みさせて高速化してみたいかと・・・)


Ver 0.17bでの変更点
-------------------
・再生の遅延対策(Skip表示)※画像のみ
・Bufferの効率テスト。遅い。'`,､'`,､(ﾉ∀`)'`,､'`,､
・先読みテスト。遅い。(バッファ埋めるくらい先読みさせて高速化してみたいかと・・・甘かった)
メモリコピーとサイズ変更でうちのCPUじゃ読み込んだ方が速そう…CPU負荷は激減するけど。
ここで情報が少ないCUDAか！(笑)


Ver 0.18bでの変更点
-------------------
[設定保存]
・設定ファイルの拡張子を.xmlに合わせた(もともと中身はセクションINIからxmlに変わってただったわけですが^^;)
・読み込みエラー対処コード入れた。

[プレビュー画面]
・連続再生時のフレームの1秒間の最大読み込み数を動画のFPSにした(先読みをやめた。カーソル移動は別。)
・プレビューがトリム範囲の時は背景色を変えるようにした。余裕ができたら色指定できるようにしたいです…。

・開始位置をTrimの1番ではなく0フレームに変更
・バッファをサムネイルのみにしてメモリ使用量など負荷を減らすテスト。
(調整中：今の仕様だとプレビューもサムネイルの引き延ばしになってしまう(^◇^;)

・空きバッファ先読み処理を削除。サムネイルの読み込みである程度はOpenCVSharpとOSのキャッシュに貯まるので無くてもいいかなと。
※表示しない部分も読み込んだり、CPU使用率跳ね上がったり、レスポンスが悪くなっていた。
・CUDA周りはビルドのDLLのサイズなど諸事情を見ていろいろ断念。手軽の範囲を超える気がした。
※フレームの表示程度では使わない(使えない)部分のほうが大きい。サイズも機能も。(笑)


Ver 0.19bでの変更点
-------------------
・古いPC(i7-3770T)で再生時の負荷を調べてみた。AnyCPUは58%x64では49%。x64版中心で行きます。
※AnyCPUでは32bitが優先で使われるためと思われる。

・開始位置をTrimの1番を初期値に変更(戻した)
・サムネイルのスクロール表示対応のため、いろいろ変更。

[メモリ負荷テスト]
・スクロール表示用にバッファを増やしてみた。
・バッファサイズは256フレームに倍増。サムネイルは1/30のみ。(1920x1080フル画面で2GB前後)

[メモリ負荷テスト]
・最下部スクロール表示してみた。

今回のデバッグ用のキー
数字１キー：バッファの先頭ブロック表示
数字２キー：スクロール用バッファの表示
数字３キー：フレームのカーソル移動時にスクロールバッファも更新する/しない
※スクロールサムネイル書き込みを毎回作成しているのでかなり重いです(･･ゞﾎﾟﾘﾎﾟﾘ


Ver 0.20aでの変更点
-------------------
・Trim位置の変更
[キー(OpenBrackets):Top位置の変更
]キー(CloseBrackets):End位置の変更
※エンターキーの左のキーです


Ver 0.20bでの変更点
-------------------
・Trim位置の変更を保存できるように変更
・Play中もサムネイルスクロールできるようにしてみた
数字４キー：Play中もサムネイルの更新をする/しない


Ver 0.21bでの変更点
-------------------
・Trim位置変更時、スライダーの範囲が変更されていなかったので修正
・ts.trim.avs保存時に上書き前に.bakファイルに1世代残すように修正
・バッファ格納するデータを減らした
・サムネイル読み込み＆作成の負荷を減らした
※負荷にばらつきが出るようになったのでカーソル移動時がスムーズじゃなくなった^^;


Ver 0.22bでの変更点
-------------------
・Main画面でサムネイル表示がされるまで他のウィンドウを開けないように変更
※ここでOpenCVSharpのDLLを先読みさせています
・連続再生時にTrim選択ができないように変更
・バッファ格納するデータを表示に使うサムネイルのみに変更
・バッファ総数を256→128に減らした

・デバッグコードを減らして、ソースがまだ読める範囲で最適化してみた
数字キーの[４]キーでサムネイル更新のオン/オフのみ残してます
・全体的に重かった処理が、連続再生やキー処理で負荷の高いところで描画更新が止まったように見えるくらい最適化が進んだ^^;


Ver 0.23bでの変更点
-------------------
・Adjust設定が反映されないバグの修正
・ウィンドウサイズ変更時にスクロールセンターを再計算するように修正
・Trimの合計フレームと合計時間を表示するように修正
・複数Trimの選択変更時の動作を変更、現在位置を保持するように修正
・Trim範囲の変更時の動作を調整
・いろいろ最適化(1/30秒以内の画面更新を調整、前よりはスムーズにキー移動しているように見える…はず…)


Ver 0.24bでの変更点
-------------------
・スクロールサムネイルの更新/停止の切り替えを「S」キーに変更
・スライダー操作の調整


Ver 0.25aでの変更点
-------------------
・Trimの挿入ボタン(Insertキー)と削除ボタン(Deleteキー)を追加した
Insert(挿入)処理：現在の表示フレームを開始位置としてTrim範囲を追加。終了フレームは次のTrim範囲の開始-1フレーム
Delete(削除)処理：現在選択されているTrim範囲をリストから削除する
・キー操作の追加/変更/記載をした
・先頭Trim変更時、メインフレームのサムネイルを変更
・Trim範囲変更時に動作音を出すようにした。(Windowsバルーン)
※バグ：Trim範囲がほかの範囲と被ってもエラー処理されてない^^;


Ver 0.26bでの変更点
-------------------
◎諸事情により、うちの環境で当面の存在理由がなくなったので…この程度にしておいてやろうというﾍ(ﾟ∀ﾟﾍ)ｱﾋｬ
※本日中に手軽に実装できなところはとりあえず全部突っ込んで初期開発は終了です。

・[CM解析結果 - 詳細]の情報を使えるようにした。
・[I]キーで詳細情報を表示ます。
　詳細情報をクリックするとそのフレームに移動します(詳細情報表示中のみ)
　R-CTRL + [←][→]キーで次の詳細情報を選択します(詳細情報表示中のみ)
　選択Trim範囲以外のリスト番号を表示します。緑色のカラーの時(詳細情報表示中のみ)
・プレビューのマウス左クリックで連続再生ON/OFF。
・センターホイールで表示プレビューの番号を増減するように追加。
・移動量増加部分で、R-CTRLキーが3倍、L-CTRLキーがそれぞれ12倍増加します。
例)PageDownが+150(5秒),+450(15秒:R-CTRL+),+1800(1分:L-CTRL+),+5400(3分:両CTRL+)に変化します。

バグは使っていて気が付いたら直します。バグ報告は99%仕様ですって返しますので特にいらないっす<m(__)m>
今後出るものは、今の知識では多分直せません(^◇^;


Ver 0.27bでの変更点
-------------------
・Trim情報が１つしかないときに削除すると強制終了するバグの修正。


Ver 0.28bでの変更点
-------------------
・ログ情報を読み込むときに、前の情報がクリアされていなかったので修正
・詳細ログ判定パターンを増やした
・プレビュー画面でCM解析の詳細情報の表示[I]とスクロール情報の更新設定[S]を保存するようにした


Ver 0.29bでの変更点
-------------------
・TrimListの色調整(選択色と通常色が逆だった)
・サムネイル表示でフレームに対応したTrimRangeのカラーバーを追加


Ver 0.30bでの変更点
-------------------
・ログにエラーが出ている場合は警告するようにした
(正常に動画を読めない可能性が高いので)


Ver 0.31bでの変更点
-------------------
・カラーバーの表示がおかしかったので修正
・現在フレームの枠を表示した
(だいぶ処理が重くなってきた…)


Ver 0.32bでの変更点
-------------------
・Trim位置変更時にCM解析情報に同じフレームが登録されている場合に追従するようにした
・古い[.ts.trim.avs]がある場合表示するようにした。(ログ読み込み時→Oldに表示)
----
◆本来の使用目的ではないので、Trimの先頭位置がほかのツールとずれてもチェックすらできません<m(__)m>◆
・TSファイルを直接読めるようにした
・TSファイル読み込み時に[.ts.trim.avs]がある場合は読み込むようにした(TS読み込み時→ログからの取得の代わりに表示)
※破損ファイルなど読み込めないファイルを選択したり、標準の形式でないファイル構成などがある場合強制終了します


Ver 0.33bでの変更点
-------------------
・TS読み込み時にCM詳細リストの移動操作を行うと強制終了していたので修正
・ファイル読み込み時の初期化タイミング等細かい修正


Ver 0.34bでの変更点
-------------------
・ログ指定とTS指定で最後の読み込みフォルダ保存を分けた
・選択Trim以外のTrim範囲も表示するようにした(緑)
・表示フレームのCM詳細リスト選択位置追従がずれていたので修正
・選択TrimのTOPとEND移動の時、他の描画遅延があるとスキップ処理をしていたので削除


Ver 0.35bでの変更点
-------------------
・R-CTRLの操作を変更(左右カーソルキーのCM詳細情報選択時にTrim選択範囲も移動するようにした。以前のTrim追従無しはR-SHIFTでつかえます)
・CM情報の選択移動で強制終了する場合があったので修正


Ver 0.36bでの変更点
-------------------
■TS情報取得時に1秒間TSファイルの読み込みテストをする機能を追加
※Intel第6世代と第3世代のi7CPUでテストしたエラー結果から設定しています。
・尺の短い動画や1度アクセスした後のキャッシュに乗った状態では正しく測れない場合があります。
・1秒間に10フレーム読めない場合はTSの先頭にある情報と内容が一致していない場合があります。
(読み込み位置のシークで失敗します。タイムアウト→強制終了)
・第3世代のCPUでも「ok」が出る基準(read:16fps)になっています。
・早いCPUなどで「ok」が出てもファイルの後半で極端に速度が落ちるものもありますので、あくまでも「怪しいぞ」っていう目安です<m(__)m>


Ver 0.37bでの変更点
-------------------
・起動時の初期化調整/終了時の確認追加など
・キー操作変更(選択Trim変更のキー操作をR-CTRL+に統一)
・選択Trim情報の表示を追加
・最終Trim削除時に強制終了するバグの修正
・その他いろいろデバッグコード/操作の除去
(思ったより少ないコードで動いてた。ヘッダーもバイト単位の操作も意識することなく、さすが高級言語っすなぁ。C#がすごいんだけど。もっと頑張って書いてたつもりが、スカスカやねぇ(^◇^;)


Ver 0.38bでの変更点
-------------------
・多重起動抑制処理追加
・サムネイルの更新停止キーの設定(L-SHIFTキーが押されている場合は更新停止)


Ver 0.39bでの変更点
-------------------
・表示フレーム以外の範囲のTrim削除は行えないように修正(選択Trimを削除するときは、範囲内のフレームを表示してください)
・TrimCheck開始時の０フレーム非表示バグを修正
・DragDropで[.ts]ファイルも処理できるようにした


Ver 0.40bでの変更点
-------------------
・Insert処理時にエラーが発生していたので修正


Ver 0.41bでの変更点
-------------------
・選択Trim表示変更
・範囲変更の時のチェックを追加
※「Start位置より前のEnd指定」や「End位置より後ろのStart指定」などをできないように変更


Ver 0.42bでの変更点
-------------------
・ログファイルからのエラー情報取得を増やした
※タイムアウトから強制終了するTSファイルのチェック
(PTSが戻っている場合はほぼシークに失敗してタイムアウトしてる感じ)


Ver 0.43bでの変更点
-------------------
・開始時のプレビューが荒い。→サムネイルを表示していたものをフルで表示するように修正
・キー操作による「選択Trimの変更」処理の最適化
・OpenCVSharp4のバージョンをｖ4.1.0.20190416→ｖ4.1.1.2019.10.17に変更


Ver 0.44bでの変更点
-------------------
・TSファイル読み込み時など、CM解析詳細情報に該当するデータがないときに挙動がおかしかったので、CM解析情報の選択操作を修正した
・前回のキー操作の最適化でTrim範囲がスライダーバーに反映されないバグの修正


Ver 0.46bでの変更点
-------------------
・前回のキー操作の最適化でTrim範囲の移動後にプレビュー背景色が更新されていなかったので修正


Ver 0.47bでの変更点
-------------------
・自動生成がオンのままで多重起動ロジックが上書きクリアされていたので修正
・「S」キーでサムネイル表示を切り替えた時に、再表示するように修正
・CM詳細リストのダブルクリックで選択範囲も移動するように変更
・サムネイル作成時の読み込みフレーム数など調整


Ver 0.48bでの変更点
-------------------
・Trim追加/分割/削除時にPreviewの背景色が変更されていなかったので修正
・選択TrimのStart(少し明るく)とEnd(少し濃く)で色を変えるように変更


Ver 0.49bでの変更点
-------------------
・Trim変更が保存されないバグの修正


Ver 0.50bでの変更点
-------------------
・すでにTrim情報ファイルがある場合、CM解析情報の取得が失敗していたので修正


Ver 0.51bでの変更点
-------------------
・ボトム無効フレームを30→60(約2秒)に変更、TrimCheckフォームのクローズ処理でキャンセルも選べるようにした
・履歴を別ファイル分けるようにした


Ver 0.52bでの変更点
-------------------
・バックスペースキーでサムネイルフレームに移動する


Ver 0.53bでの変更点
-------------------
・TrimCheckウィンドウの終了時、キャンセル後にプレビューの表示が更新されなくなるバグの修正


Ver 0.54bでの変更点
-------------------
・TrimCheckウィンドウの終了時、プレビューのサイズを保存するように修正

Ver 0.55bでの変更点
-------------------
・マウス操作以外のTrim選択範囲変更時に、選択Trimの表示時間が更新されなくなっていたので修正

Ver 0.56bでの変更点
-------------------
・Trimの選択範囲が変更になった場合、プレビューが変更先のTOP位置を表示している場合に背景色が変更されない場合があったので修正

Ver 0.57bでの変更点
-------------------
・OpenCVSharpの更新4.1.1→4.2.0

Ver 0.58bでの変更点
-------------------
・ファイル選択ダイアログの初期フォルダが設定されていなかったので修正

Ver 0.58cでの変更点
-------------------
・OpenCVSharpの更新

Ver 0.59bでの変更点
-------------------
[メインウィンドウ]
・ファイル選択ダイアログのオープン時にテキストボックスのファイル名を入れるように変更
[プレビューウィンドウ]
・Trim範囲のTOPとENDを指定できるボタンを追加
・ボタンの説明に、動作割り当てキーを追加
・「ESC」キーにウィンドウクローズ処理を割り当てした

Ver 0.60bでの変更点
-------------------
・0.56bのエンバグ修正。Trimの選択範囲が変更になった場合、プレビューが変更先のTOP位置を表示している場合背景色が変更されない場合があったので修正。

Ver 0.61bでの変更点
-------------------
・OpenCVSharpの更新(ver4.3-20200405)

Ver 0.62bでの変更点
-------------------
・OpenCVSharpの更新(ver4.3-20200422)
※https://github.com/shimat/opencvsharp/commits/master
※opencv_videoio_ffmpeg430_64.dllは変更なし

Ver 0.63aでの変更点
-------------------
・Warn:外字エラーを無視するように変更

Ver 0.63bでの変更点
-------------------
・ソースの整理。先頭フレーム指定機能(1度も使ってなかったので…)/デバッグ用動画再生ソース(開始フレーム同期が取れなかった…)の削除
・エラーチェックの有効無効を選択できるようにした
・Trimの先頭・終端選択時に範囲外にTrim移動(右コントロールキー + カーソル↑/↓)しようとした時の動作を変更
メッセージと警告音を出してフレーム移動処理を無効にした(先頭・終端Trimの先頭フレームに表示フレームが移動していた)
・Log/TSのパスは終了時の表示パスではなく、開いた時のパス情報を保存するように修正

Ver 0.64bでの変更点
-------------------
・簡易的にアクセスキー&ショートカットキーを付けた。(ALT+●,CTRL+●)
・OpenCVSharpの更新(ver4.3-20200524)
※https://github.com/shimat/opencvsharp/commits/master
※opencv_videoio_ffmpeg430_64.dllは変更なし

Ver 0.65bでの変更点
-------------------
・[*.ts.trim.avs]保存時に編集フラグをリセットするようにした。
・キー操作の調整。
※アクセスキーを削除。ショートカットキーのみに。ボタンにマウスを合わせるとToolTipを表示するようにした。(CTRL+●)

Ver 0.66bでの変更点
-------------------
・.ts.trim.avsファイルをドラッグドロップすると強制終了するバグの修正(.tsチェックをすり抜けていた(^◇^;)
・Trim Area数の表示がクリアされない不都合の修正
・古い.ts.trim.avsファイルがあるときに、Logから読み込んだTrim情報のカラーを追加(緑)

Ver 0.67bでの変更点
-------------------
・サムネイルの初期化を入れた。
・TrimViewerWindowで最終Trimの背景をピンク系に変更。
(マージンの関係で次の番組の数秒がTrimに入ったりしたものを見落としてしまうため対策を…(^◇^;)

・TrimViewerWindowのフォントと背景の色を設定を追加。(デバッグ用暫定カラーがどぎついので、お好みで自由に設定してください)
※ARGB指定ですが、先頭2桁を除いた下6桁の16進数設定で行います。
System.Windows.Media.BrushConverterで変換できるもののみ。詳細は下記URL参照。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.brushconverter?view=netcore-3.1

・色設定の内訳
ColorSelectTrim：選択時-通常Trimの背景色(水色)
ColorEndTrim：選択時-最終Trimの背景色(ピンク)
ColorOtherTrim：非選択Trimの背景色(緑)

・末尾の文字
[F]：基本フレームカラー
[S]：Startフレームカラー
[E]：Endフレームカラー

デフォルトの値：
  <bgColorSelectTrimF>#FF8FA5E0</bgColorSelectTrimF>
  <bgColorSelectTrimS>#FFAFC5E0</bgColorSelectTrimS>
  <bgColorSelectTrimE>#FF6F85E0</bgColorSelectTrimE>
  <bgColorEndTrimF>#FFFF69B4</bgColorEndTrimF>
  <bgColorEndTrimS>#FF6A5ACD</bgColorEndTrimS>
  <bgColorEndTrimE>#FFFF1493</bgColorEndTrimE>
  <bgColorOtherTrimF>#FF82AF74</bgColorOtherTrimF>
  <fontColorSelectTrimF>#FF4169E1</fontColorSelectTrimF>
  <fontColorSelectTrimS>#FF0000FF</fontColorSelectTrimS>
  <fontColorSelectTrimE>#FF4B0082</fontColorSelectTrimE>
  <fontColorEndTrimF>#FFFF69B4</fontColorEndTrimF>
  <fontColorEndTrimS>#FF6A5ACD</fontColorEndTrimS>
  <fontColorEndTrimE>#FFFF1493</fontColorEndTrimE>
  <fontColorOtherTrimF>#FF006400</fontColorOtherTrimF>

Ver 0.68bでの変更点
-------------------
・OpenCVSharpの更新(ver4.3.0-20200701版)
※https://github.com/shimat/opencvsharp/commits/master
※opencv_videoio_ffmpeg430_64.dllは変更なし
・[CTRL+T]でTSファイルを選択して開いたときに、ショートカットフォーカスが逃げるので、とりあえずTsInfoにフォーカスを移動。
これでファイルオープン→Trim編集→Trim保存まで全部キーボードだけで行けるはず・・・はず（　＾ω＾）・・・

Ver 0.70bでの変更点
-------------------
・OpenCVSharpの更新(ver4.4.0-20200725版)
・FFMpeg等セキュリティーアップデートも反映されておるんじゃなかろうか？
・VS2019や.net等セキュリティーアップデート
・連続更新(再生)中はサムネイルの更新設定を変更できないように修正。

Ver 0.71bでの変更点
-------------------
・ダイアログ表示の後のFocusの位置をTextBoxLogに調整

・静止画の保存先の指定-メイン画面
[Img path]ボタンまたは[CTRL+I]キー：静止画保存先の指定

・静止画の保存-プレビュー画面
[Img]ボタンまたは[V]キー：Png 動画比オリジナル,
[P]PngFHD), [J]JpgFHD, [O]Png1280x720, [H]Jpg1280x720

Ver 0.72bでの変更点
-------------------
・Trim範囲変更時のフレーム情報が正しくなかったので修正
・コントロールキー、PageUp、PageDownキーを押したときのフレーム移動量を表示
※連続更新(スペースキー)時除く

Ver 0.73bでの変更点
-------------------
・PreviewWindow内の名称を変更
・バイアス機能を追加。PreviewWindow開くときに全Trimの開始・終了フレームにそれぞれ加算されます。
※用途：「CM解析したのに、MurdocCutterで本編開始+3GOPくらいで切り出したんだけど、CM解析はやり直したくない時」などに使います。
1.バイアス機能オフでPreviewWindow開く
2.第1Trimの開始位置合わせて、移動フレーム数をメモる
3.[Esc]キー等を押しPreviewWindowを閉じる。◆この時データ保存をしない事◆
4.「UseBias」にチェックを入れる
5.Biasに移動フレーム数を設定する(通常はマイナスになるかと思います。テンキーのマイナスキーで赤くなります)
6.PreviewWindowを開くときに計算されます。
7.PreviewWindowを閉じるときにTrimを反映させてください。この時メインウィンドウのBias設定は初期化されます。また、ふLogまたはTSを読み込んだ時も初期化されます。

Ver 0.74bでの変更点
-------------------
・OpenCVSharpのバージョン更新(ver4.4.0-20200915版)
・エラーチェックの有無にかかわらず、フォーマット変更時にエラー表示するようにした。
差し替え：->エラーチェック時に変更。

Ver 0.75bでの変更点
-------------------
・移動量の倍率の設定追加
・テンキーに移動量の設定追加

設定方法：
1度起動して終了させると設定項目が書きだされるので、プログラムのあるフォルダの[TrimViewer.xml]をテキストエディタで開き、Num1_frame～Num9_frameを好きな値に設定する。

・移動量の倍率を変更できるようにした。
※左右コントロールキーを押したときの倍率設定
今までの値(デフォルト値)
  <CtrlRKeyMagnification>3</CtrlRKeyMagnification>
  <CtrlLKeyMagnification>12</CtrlLKeyMagnification>

・テンキー1～9にジャンプフレーム数を設定できます。普段は1秒約30フレーム計算で設定してください。マイナスも使えるようになりました。
TSが30000/1001fpsの場合1000フレーム毎に1フレームずれます。移動後に微調整してください。

今までの値(デフォルト値)
ex)24min
  <Num1_frame>43200</Num1_frame>

ex)25min
  <Num2_frame>45000</Num2_frame>

ex)20sec / 一挙放送の1話間
  <Num3_frame>600</Num3_frame>

ex)1min  / 一挙放送の1話間(番宣付き)
  <Num4_frame>1800</Num4_frame>

ex)15sec
  <Num5_frame>450</Num5_frame>

ex)10sec
  <Num6_frame>300</Num6_frame>

ex)1min
  <Num7_frame>1800</Num7_frame>

ex)2minsec
  <Num8_frame>3600</Num8_frame>

ex)-10sec
  <Num9_frame>-300</Num9_frame>


※Num0は選択トリムのフレーム数を一時補間する機能を割り振り初期値0で保存はなし
ex)
1:一挙放送でフレーム数が固定の場合使えそう。第1トリムを設定したら、CTRL+Num0キーでフレーム数保存
　(TS読み込み時は先頭フレームで [キー、終了フレームで ]キーで第一トリムを作成)
2:CTRL+Num0キーを押して選択されているトリムのフレーム数をNum0キー保存(Num0に第1トリムのフレーム数がCopyされる)
3:第2トリムの先頭位置を探して、Insキーを押す(第2トリムの作成)
4:Num0を押す(第1トリムと同じフレームを移動する)
5:終端フレームを調整して、]キーで終端フレームを設定。第2トリム完了。
6:後は繰り返す

Ver 0.76bでの変更点
-------------------
・OpenCV 4.5.0 https://github.com/opencv/opencv/wiki/ChangeLog#version450
・OpenCvSharp-4.5.0-20201013
・opencv_videoio_ffmpeg450_64

Ver 0.76cでの変更点
-------------------
※ ver0.75bで追加したNumKey(テンキー)の操作法が変わっています

[画面上でオプション指定ができるようになりました]
・設定が増え要望が多々上がってきたのでOption画面作りました。一部未実装です。グレーになってます。

[NumKey(テンキー)の操作法を変更しました。L-CTRLの挙動を変更しました]
※PS1時代の身内的にはスクラッチパッドだよね！レジスタだけどね。と、通じていたのですが、わかりにくいという事で…
・R-CTRL+Numキー0～9に選択Trimのフレーム数を登録できます。CMや一挙放送など処理しやすくなるかなと。１０種類登録できます。
・L-CTRL+Numキーで移動量に-1を乗算して計算します。(L-CTRLキーで正負反転します)
・操作ミスなどケアレスミスで上書きミスをなくせるように、オプション画面でNumKeyの設定をロックできます。

Ver 0.76cでの変更点
-------------------
・カラーピッカー追加中…(Windows.Form使って手抜き工事済)
・カラー指定のフォントは文字の方の色を変更するように変更
・数値入力は数字のみを受け付けるように変更
・数値入力のコピペ禁止処理を削除

・NumKey(テンキー)の操作法をreadme.mdに追加など


Ver 0.77aでの変更点
-------------------
・OpenCvSharp-4.5.1-20210206 Update
・opencv_videoio_ffmpeg451_64.dll
https://github.com/shimat/opencvsharp

・「一時ファイル」が残ってる場合に優先読み込みする機能を追加
オプション画面で指定してください。変更時はログの再読み込みで反映されます

(これで動画中の音声の複数ストリームで外部DLLが強制終了する状況から抜け出せたらラッキーですね^^;)
手元にエラー動画がないので人柱に依頼中です。動作確認終わったらアップします。


Ver 0.77bでの変更点
-------------------
[サムネイルのバッファ]
・サムネイルのバッファ数をフレーム数で設定できるようにしました
※1秒間に10フレーム以上処理するタイミングがあるので、固定値の方が気持ち負荷が少ないのですが、メモリが少ないPCで少しでもメモリを減らしてほしいとの事で付けました
・同じサムネイルが続く不都合は「0」でオフにすることで改善するかも(たまに出るバグ)

[サムネイルのバッファ数の目安]
(FHD＆全画面で36以上 def:128 max:256)

・モニタ解像度や全画面表示などのモードにもよりますが、FHDモニタ＆全画面では42フレーム以上で1秒おきにある下のサムネイル表示部分の再作成のカクツキ時間が改善できる場合があります
※FHDモニタで連続表示時に1秒間に約42フレーム使っています。1秒毎のサムネイル更新時に約12フレーム読みに行きます。
　(遅いPCでの連続表示は1フレームの更新に33msを超えるとスキップするので、もう少し余裕がある)
　TSの目安： 29.970 (30000/1001) FPS = 33ms

・OpenCvSharp-4.5.1-20210208 Update
https://github.com/shimat/opencvsharp


Ver 0.78bでの変更点
-------------------
・VS2019とSystem.Drawing.Common.dllのアップデート(.net関連)
・OptionにNumKeyの設定時間を表示
・OptionにNumKeyのコメント追加
・デバッグ表示機能を常に有効化
・ViewerWindowでNumKey設定数とコメントをデバッグ欄に表示([D]キーで表示/非表示切替)
・各Trimの表示フレーム数が1少なかったバグを修正
・1フレームのTrimを作成できるように修正


Ver 0.78cでの変更点
-------------------
・ViewerWindowでNumKey登録時にデバッグ表示が出てしまう挙動をなくしました
・OpenCvSharp-4.5.1-20210210 Update
https://github.com/shimat/opencvsharp


すみません。固定値の設定(変数)化の為大改修やってます。0.77b以降バグが散発してますm(__)m

Ver 0.79aでの変更点
-------------------
・Option表示座標をMainWindow画面内に固定
・Bias/NumKeyの入力桁数を9桁に制限
・NumKeyのマイナス値も入力できるように拡張(マイナスのデバッグはしていません)
・L-CTRL/R-CTRL を入れ替えるチェックボックスを追加(デバッグはしていません)
・サムネイルのフレーム数設定上でデバッグコードが残っていた個所の削除。特定条件で使用メモリが減ってなかった


Ver 0.79bでの変更点
-------------------
・遠い未来でログファイルがUTF-8になる夢を見たので、そのころ更新が止まってたらTrimViewer.xmlの[UseUTF8_Log]の値を0以外にしてください
・「一時ファイル」読み込みの対応で、サムネイル/アクセステストの読み込みなども「一時ファイル」を利用するように変更

◆Ver 0.79bにて待望の「音声フォーマット切り替えでフレーム取得の遅延を回避」できることが確認されましたヽ(*^｡^*)ノ◆
・[「一時ファイル」が残ってる場合に優先読み込みする機能]で回避できます！
オプション画面で指定してください。変更時はログの再読み込みで反映されます


Ver 0.80bでの変更点
-------------------
・TSファイルを指定した時に前の編集情報の初期化が一部抜けていたのでリセットするようにした
(「一時ファイル」の情報が消えていなかったためtempファイルを参照してしまうバグの修正)


Ver 0.80cでの変更点
-------------------
・デバッグ中心です。一部TestCode追加。
・終端フレームのマージンでごまかしていたところをまじめに実装。それに伴う修正
※MainWindowで [Frame Count:176,370] の場合、ViewerWindowの表示上のフレームは [0-176,369]になります(0番フレームが1フレーム目の為)
・終端フレーム外へのアクセス時のエラー処理を追加(終端マージン0対応)

・個人的メモ：ver0.60以前のOLDコードの削除
・スライドバーの終端処理のバグ修正
・連続更新処理のが正しく動かないバグの修正
(デバッグ用の固定値が混入してしまいましたm(__)m)


[TMSR6すり合わせの準備]
・VideoCaptureAPIにて取得するフレーム数とTMSR6で出力したフレーム数を元に整合性を取りました
(数本見たところ総フレーム数が±1くらいずれるところまで接近)

・フレームが取得できない場合、表示が移動しないように修正(R-CTRL+Endキーなど)
(終端マージンがほぼいらなくなりましたが、R-CTRL+Endキーの移動がエラーでキャンセルされる場合があるので、設定は残しておきます)
エラー発生時もR-CTRL+Endキーを押しっぱなしにすることで、後ろから読めるフレームを探します。(いままで終端マージンとしていた部分のスキャン)
この移動した終端フレームと総フレーム数の差を「終端マージン」に入れることで終端へアクセスする手間が減ります


・フレーム取得のエラー時の帰値が古いバージョンのままだったため、拾えずにアクセスして強制終了していた。鵜呑みにしてコピペした綺麗すぎるソースの処理が古いソースだった。OpenCVのver2サンプルソースをそのままver4で使ってたので見直し。
たぶん、かなり、落ちにくくなったです・・・ご迷惑おかけしましたm(__)m


[終端フレームの終端マージンとは]
・パケット単位で録画していくEDCB等を使ったTSファイルの場合、動画フレーム数と動画時間が違っている場合がほとんどなので、通常は60f(2秒)程度除外することで動画の外へフレームを取りに行くことが回避できます


[TMSR6を使う前提の作業や注意点]
・OpenVC自体がFFMpeg処理系なので必然的にOpenCVSharpも同じ系統の処理になります
・TMSR6のkeyframeを使う場合は、動画は生TSではなく「TMSR6で出力した動画」をAmatsukaze(FFMpeg処理系)に食わせる事。
1)生TSの場合、AmatsukazeCM解析とTMSR6の出力フレーム数が異なります
2)TMSR6で出力した動画を使わない場合(keyframeのみ保存した場合)
　・一度Viewerを開きフレームのずれを確認する(TrimTopの移動量を調べる)
　・MainWindowに戻り「BIAS」に上記のずれているフレーム数設定してViewerを開き直してください
　・開始Trimと最終Trimで範囲外のフレームが必ず切れるので調整する事


・「TMSR6で出力した動画」を前提に機能を作成
・[.ts.trim.avs]ファイルがない場合[.keyframe]を読み込みテストを行います
・コメント行に使われる"#"の行や、数値の後ろに数値以外の文字がある場合は読み飛ばします
・TMSR6でCM解析したデータをキーフレームに設定して、.keyframeファイルに保存→TrimViewerで読み込むと大変なので、TMSR6で最低限のキーフレームに整理してからの方が後の処理が楽です
・全範囲をkeyframeにある数値行の値で分割したTrimを作成します(開始は0フレームからに)
現状では後からキーフレームを追加して後ろのTrim範囲を反転等の処理も考えられますが、本来のAmatsukazeのログからのTrimを扱う上で優先度が高い機能ではないかなと
※CM/本編の判定ができない為、すべての範囲を登録します。全登録してユーザーに処理を任せますm(__)m


気が付けば、かなりの大改修になってます。
デバッグが進むまで、生暖かく見守ってください(^◇^;


Ver 0.81aでの変更点
-------------------
・".mp4"/".mkv"もDrag&Dropで開けるようにした(一時ファイルテストの為)
・TS以外のTSAccessCheckはスキップします
・ViewerWindowの終了時MessageBoxをSkipするCheckBoxを追加(Option)
・log内のファイルパスにTSが見つからない時、succeeded→failedの順でTSファイルを探しに行きます
・.keyframeの内容をTrimのTop/Endとして読み込むCheckBoxを追加(Option)


話題が続きそろそろ自治厨が暴れると思いますので、バグ取りに専念して大人しくします。半分の機能も試せてない(^◇^;
荒れたら「ソースは全部ネットにあるから作って」と(笑)


Ver 0.81bでの変更点
-------------------
バグ報告ありがとうございますm(__)m

・動画の直接読み込み時に行うTrim自動生成の時に、終端マージンが2度引かれていたので修正(マージン60だと120引かれていた)
・.keyframeファイルがUTF-8だったでの修正(まだ仕様がつかめていないです。手探りです)
・CM解析ログの選択パスは[Amatsukaze\data\checklogs]の中の.txtファイルが対象です

・終端フレームを指定する場合は、Optionで終端マージン0に設定、CTRL+ENDで終端フレームにジャンプします
※エラーが起きた時は繰り返し押すことで -1 フレームずつ探査します(デバッグ用)


★保存周りのスクラップ＆ビルドを行いました。俗にいう「オブジェクト指向」を完全に無視(笑)
(Viewerの保存処理で終了確認やMainWindowに戻った時の処理の整合性が取れなくなってしまっため新コードに)

[ViewerWindow]
◆.trim.avsファイルの保存を CTRL+A → CTRL+S に変更(利用者が少ないうちに、メイン画面に合わせることにした)
◆サムネイルのスクロール切替を S → T に変更(上記キー変更に伴う移動)

・Trimの修正フラグは読込時の生成/保存情報との比較に変更
・Trim範囲の追加/削除位置以降のTrimに修正フラグが立つのは正常です


[MainWindow]
・ViewerWindowのTrim編集状態を継続する仕様に変更(更新反映時)
・ViewerWindowを閉じた時、avs保存状況に合わせて各種処理を変更
・ViewerWindowを閉じ更新反映時、Trim編集状態を保持し.trim.avs が保存されるまでリセットしない


取り急ぎのバグ修正からm(__)m


Ver 0.81cでの変更点
-------------------
バグ・不都合修正が続きますm(__)m

・操作時のBeep音をオンオフできるように設定を増やした(Option)
※ポップアップウィンドウのMessageBox呼び出し時の警告音は鳴りますm(__)m

[ViewerWindow]
・追加時のChangeフラグを追加フレームのみに(以前の仕様を再現)
0.8.1bの違和感の修正→「Trim範囲の追加/削除位置以降のTrimに修正フラグが立つのは正常です」
これも、注意書きをした時点で違和感があった^^;

・TrimActivationキーをZからAに変更(非選択Trimを選択)
(今後予定の「CTRL+Z」の為 Zキーを空けたm(__)m)

[MainWindow]
・Trimを新規作成する場合、0フレームからアクセスできる終端フレームをTrimに設定します
 終端マージンが60以上の場合→OpenCVSharpで取得するTotalFrameCountから計算します
 Trim(0,終端フレーム)：終端フレーム[ TotalFrameCount - 終端マージン - 1 ](-1 は 0フレームから開始の為)


(新)
※終端マージンが60未満の場合→アクセスできる終端フレームを後ろからスキャンし再設定します

　新規作成する場合=Logファイルからの作業開始ではない=一時ファイルが使えない
　一時ファイルがない状態なので終端フレームへのアクセスが担保されない
　(TMSR6出力では0～2フレーム前後の解析誤差はあるものの、ほぼ終端フレームにアクセスできる)
　TMSR6出力使用時でも終端マージンは0ではなく2にした方がストレスは貯まりません
　→TMSR6でTSをカット＆出力も前後だけ切ってAmatsukazeのCM解析に食わせる方が安全
　→(Amatsukazeで取り扱うTSの内容の都合上、CMカットなどでつなぐのは得策ではない)
　◆最後に「全フレームをエンコード」する場合はTrimを使わない。当たり前なんですが、結構忘れますよね(笑)

　終端マージンを変更可能にしたことで、終端フレーム(CTRL+End)に飛んだ時に、アクセスエラーが出るようになった
　終端マージンが60未満の場合最終フレームから１フレームずつアクセステストを行い、途中で壊れていても取得できるフレームを探します
　→Viewer起動すると中断されます

※[既知のバグ]
音声フォーマットの切替がある場合の直接読み込みや、解析では切替が無くてもSeekに時間のかかるファイルの場合正常動作しません
(フレームを読みに行ったまま帰ってこないので(^◇^;)

[aac @ 0000027a7d236980] Inconsistent channel configuration.
[aac @ 0000027a7d236980] get_buffer() failed

この手のエラーはOpenCVSharpの先のOpenCVのさらに先のFFMpegになるので、別の回避策が必要。
「OpenCVなんで音声触れなくていいのに」とみんな思っていることでしょう(^◇^;
対策されたたのに直らず、軽く6年くらいほっとかれてる感じでしょうか…Google先生でTopに来るということはみんなハマってる(笑)
https://github.com/mpv-player/mpv/issues/1782

これを解決するまでアップは保留っすな。
と、おもいつつ。
6時間ほど新しい情報をあさったものの私の力では無理かも(笑)
基本は「一時ファイル保存」を使う！（逃げ

あ、今までと変わらないから気に留めるまでもなく‥
音くらいは止めれるかなっと。メッセージボックスの音が消せない。
そのためにウィンドウ作るほどこだわってもいないので、許してもらおう(^◇^;

今更ながらGitのリポジトリ管理始めました（ここまで大事になるとは思っていなかったので^^;
TortoiseSVNもめんどくさくて10年前から使ってないので、勉強せずに行き当たりばったり使ってます
突然どこかに汚いソースが出回るときは笑ってくださいﾍ(ﾟ∀ﾟﾍ)ｱﾋｬ


Ver 0.81dでの変更点
-------------------
バグ報告ありがとうございますm(__)m
・succeeded/failedのパス生成で’￥’が抜けていたバグの修正
succeeded/failedのアクセステストでデバッグコードとリリースコードでCombineを使っていなかったので修正m(__)m


Ver 0.81eでの変更点
-------------------
・MessageBoxでも音を出にくくする処理を追加


Ver 0.82a1での変更点
-------------------
・.ts.trim.avs保存時にファイルを移動するオプションを有効化しデバッグ開始
動画ファイルや関連ファイルを移動する機能になっています。.ts.trim.avs作成に十分慣れた方でも危険な処理なので基本的には未指定で。
移動先にフォルダを確認・管理でき、自己責任で泣かない人のみ。戻して作業する場合は移動先から手作業で戻してくださいm(__)m
(決め打ちの特定の動作しかできないので普段は使わないでください。削除するとやり直しができないので移動のみにしてあります)

注１）特に種別のチェックはしていませんが.tsファイル以外の読込では使用しない
注２）MainWindowのみ(Viewerでファイルを開いているので機能しないため)
注３）参照ファイルが移動されるため、編集は継続しないでください(組み合わせ次第では継続できる場合もありますが非対応です)

・avs保存時にエンコード用フォルダに移動[ts,avs,bak]
 想定としては「録画フォルダ」または「CM解析用フォルダ」にあるTSファイルをCM解析を行い、avsファイルを保存した時に、[ts,avs,bak]ファイルを指定フォルダに移動します。
 比較的大きいTSファイルを処理するので、TS同じドライブをおすすめします(他ドライブへのコピーは時間がかかります)

・avs保存時に作業フォルダに移動[log, temp, bak, keyframe]
 ※特にlog.txtの移動はAmatsukazeの管理ファイルを侵食してしまうのでお勧めしません
 bakファイルの移動先は上記エンコードフォルダへの移動よりも優先されます(両方指定した場合はこちらの作業用ファイルフォルダに移動されます)
 比較的大きい一時ファイルを処理する場合があるので、一時ファイルと同じドライブをおすすめします(他ドライブへのコピーは時間がかかります)


Ver 0.82a2での変更点
-------------------
[.ts.trim.avs保存時にファイルを移動する]
・.err,.program.txtも.tsと一緒に移動するオプションの追加
・Optionの左側のチェックボックスに解説ToolChip追加


Ver 0.82a3での変更点
-------------------
[.ts.trim.avs保存時にファイルを移動する]
・TSファイル移動時にはTSファイル名のクリアサムネイルのクリアとViewerボタンを非アクティブに変更


Ver 0.82a4での変更点
-------------------
[.ts.trim.avs保存時にファイルを移動する]
・ファイル名の方を変更するテスト


Ver 0.82bでの変更点
-------------------
・誤操作の元なので移動したファイル名をクリアする仕様に変更
・TSファイル移動時にはTSファイル名のクリア、サムネイルのクリアとViewerボタンを非アクティブに変更
・ファイルの移動時に*.err,*.program.txtの分離フラグが処理されていなかったので修正
・たまにアクティブウィンドウが移動する→仕様です
 VBのファイル処理(移動)を呼び出しているので一定時間以上時間がかかる場合はウィンドウが開きます
 処理時間が微妙なタイミングでウィンドウが見えずに閉じるときがあるので、その場合はアクティブウィンドウが移動したように見えます
 ファイルの移動先やPCの処理能力により事象が変わります
 一応移動完了後にフォーカスを取りにいくようにはしてありますがすり抜ける場合があります


Ver 0.82cでの変更点
-------------------
[.ts.trim.avs保存時にファイルを移動する]
・移動先フォルダがない場合にフォルダを作成するようにした
※指定したフォルダは消さないで！移動しないで！そうね、無いときもあるよね…(;^_^A ｱｾｱｾ…
(フォルダがないときはエラーメッセージを表示してスキップしてた。→わかりにくかった)
報告ありがとうございますm(__)m


Ver 0.82dでの変更点
-------------------
・4.5.2.20210404 Update
https://github.com/shimat/opencvsharp
×フレームの取得ができなくなったのでアップデートをキャンセル


Ver 0.83での変更点
-------------------
・.ts.trim.avs保存時に「Amatsukazeの一時ファイル」の移動先指定を追加(ゴミ箱、強制削除指定が可能に)
・.avs保存時の移動処理が同じフォルダの場合、システム移動コマンドのコールをスキップするように修正
・.bakファイルの移動処理の挙動がおかしかったので修正(強制上書きに変更)


Ver 0.83aでの変更点
-------------------
・avs保存時の移動先に作業フォルダとゴミ箱を選べるように変更
・avs保存時の移動処理でネットワークドライブ利用時でも移動先が変わらない場合は確認画面が出ないように修正
・MainWindowのMessageBox表示時の挙動を変更（ほかアプリに影響がない範囲でなるべく最前面に表示)
・警告ダイアログの表示指定にkeyframeファイルがある場合も含めた(表示しないように設定できます)
・サムネイルを表示または.ts情報の変更があった場合最前面に表示するように変更


Ver 0.83bでの変更点
-------------------
・ViewerWindowのデバッグ表示の保存の修正


Ver 0.83cでの変更点
-------------------
・ViewerWindowのデバッグ表示の初回のバグ修正


Ver 0.84bでの変更点
-------------------
・AccessTestのオプションが反映されていなかったので修正(オフにしてもTS読込テストをしていた)
・TSオープン時の終端チェックで取得フレーム数が同じ場合はTrim更新しないように修正


Ver 0.85bでの変更点
-------------------
・ViewerWindow起動時にTrim範囲を再解析するように修正(テキストを直接修正した場合に一度保存して読み直す手間がなくなりました)
・取得した終端でTrimを再生成が働いていなかったので修正
・ViewerWindowClose時のダイアログ警告音をワーニングからインフォメーションに変更


Ver 0.86bでの変更点
-------------------
・ViewerWindowで 「CM Info 前移動(Shift + LeftArrow)」の不都合修正
エラーで引っかかり正しく動いていなかったので修正
＞ AMT[error] Exception thrown at TranscodeManager.hpp:604
＞Message: マッチするロゴが見つかりませんでした
等々。


Ver 0.87bでの変更点
-------------------
・マウスボタンのフレーム移動を追加。サムネイル上の操作になります。
左ボタン：指定したサムネイルに表示フレームに設定
右ボタン：サムネイル上で右ボタンドラッグを行う事で連続で表示フレームを変更します
1.右ボタンドラッグの移動量倍率を設定できます(option)
2.右ボタンドラッグ時に表示フレームの左右の移動量を１フレームに固定するチェックボックスを用意(option)
※倍率を大きくした時に微調整が難しくなるので用意してみた

Ver 0.88bでの変更点
-------------------
・初期化バグの修正。サムネイル上にマウスを移動すると強制終了しますm(__)m
・Optionのキャンセルボタンが機能していなかったので修正


Ver 0.89aでの変更点
-------------------
◆ バグ修正
・プレビュー画面で連続更新時に終了させるときにタイミングによってアクセスエラーができるバグの軽減
・サムネイルのバッファ数を0にした場合、メモリアクセスエラーが起きるバグの修正
◆新機能
・TimeCode切替(Fキー)：
※非表示→TimeCode→フレーム番号→TimeCode+フレーム番号→非表示のトグル
・F1-F8キーに-4～4フレーム移動を設定
・ニアパネル(近隣フレーム)の表示切替(Nキー)：フレーム前後4フレームを追加表示
※非表示→50%→75%→100%→非表示のトグル(%はサムネイルサイズ基準)
◆その他
・サムネイルの改良？(Gen11世代向け。Gen6のSkylake-i7クラスではあまり差がないかも)
高画質化と軽量化？調整、軽いコントロールに変えたりいろいろ微調整

・連続更新中にデバッグ表示にFPSを表示
※直近1秒間のフレーム更新数、合計インターバル(ms)(10ms未満の場合はスキップ)、インターバルの回数(10ms以上待った回数)

・サムネイルのキャッシュを0にした場合、表示内容の組み合わせによっては強制終了するバグがあったので修正
※0にするとサムネイルの枚数を毎回全部読みに行くので遅いです。
※SkeyLake+DDR3+HDD環境でキャッシュ16枚以上にすると1～2割くらいfpsが上がります
※MAX512指定で1GBくらいのメモリ使用量です。

VS2019のOpenCVSharpはCPU処理です。HW支援は有効になっていないNuGetモジュールを使っています
フレームレートは、SSD＞HDD＞NASのアクセス速度とメモリ速度に依存しますので、簡易化が難しい処理が多く非常に重いですm(__)m

今回の改良はSkyLake-i7-6700では負荷が高く使いにくく待っています。追加された「ニアパネル」はオフにした方が良いです。
RocketLake-i7-11700では「ニアパネル」をオンにしても
※設定変更時にすべて表示されないものがあります。(連続表示のFPSは1秒後から、サムネイルキャッシュの使用数はデバッグ情報再表示時のみ)


Ver 0.90bでの変更点
-------------------
・Preview連続更新時にWindowを閉じるとメモリリークで強制終了するバグの修正→別スレッドを停止してからWaitをいれてWindowを閉じるように修正。
・Preview連続更新時にWindowサイズを変更すると強制終了するバグの修正→Windowサイズ変更時は連続更新を止めます。フレームサイズ変更の前後でサイズを高速変更するとビットマップ変換時のサイズが変わるタイミングでメモリリーク起こすので。これ以上重くなるのもしんどいので止めました(^◇^;

・ニアパネル周りの調整
※FHD全画面以外でのセンター調整
※左右が範囲外になるときの負荷軽減(読み込み自体をスキップ)
※左右1フレーム分の幅が無い場合は非表示などなど
中のおっさんがFHDのフル画面でしか作業していないので、Windowsサイズが変わると不都合出まくると思いますm(__)m

・オリンピック放送関連の調整↓
・解析パターン追加(CM解析時にTrim範囲が出力されない時の処理を追加)
・CM解析時にTrim範囲が出力されない時にSD画像検出を追加
※某巨大掲示板で先頭にSD解像度がありその後ろにHDに解像度に切り替わるとうまく動作しないソフトがあるとかで…まぁうちのソフトもそのたぐい
(手元になくて、どんなTSデータかわからないので判定だけ^^; たぶん先頭フレームの情報とそれ以降の情報が異なるとOpenCVSharp内のFFMpegがエラーを返すはず)
※エラーダイアログをONにしている場合は「[フォーマット切り替え解析]」エラーが出ると思います


Ver 0.91aでの変更点
-------------------
◆MainWindow
・終端チェックの秒数を4s→8sに延長(LAN上の負荷時やファイルコピー時などに4秒で終わらないことがあるそうなので調整)
◆PreviewWindow
・選択フレームの選択枠のボーダーを太くした(1→2)
・NearPanelのサムネイル表示数を【Mキー】で左右8枚/4枚の切替えるように増量(重いです)
・NearPanelのセンター位置をサムネイルに合わせるように調整
・NearPanelのサイズによって重なっていたプレビューサイズとCMInfoのサイズを調整するようにした
・最下段のスクロールするサムネイルですが、【Nキー】のサムネイルモード切替で0-3番が30フレーム、4-7番が15フレームの表示切替できるように修正
・サムネイルキャッシュのソートをやめたり、サムネイル管理を簡略化等々


Ver 0.91cでの変更点(特定用途ライブラリテスト版)
-------------------
※TMSR6やMurdocCutterで「揃っていない放送波パケット（？）」をTSファイルから除外したソースのみ対応
OpenCVSharp作者さんに報告してどうこうなるようなものでもなさそうなので・・・(T.T)
「OpenCvSharp-4.5.2-20210404」以降先頭GOPが破損等の理由でOpenCV内のFFMpeg読込エラーがある場合、フレームの取得ができなくなっているもよう。

簡単にいうと、先頭GOPにエラーがあったら読み飛ばしてくれなくなった感じです^^;
使ってないのでわかりませんが、TsSplitterで綺麗に分割したら読めるかもしれない。
GOPをパケット(188バイト)という単位に分けて電波で飛ばしているので、録画開始タイミングのパケットがGOPの先頭とは限らないという事です。
地デジなどは1GOPが15フレームなのでそれなりのデータサイズになります

『MPEG2-TS（トランスポートストリーム）』については
↓簡単な説明ならこの辺りを参考に、詳細はいろいろググってください
https://hytec.co.jp/useful/video5174

・OpenCvSharp-4.5.3-20210817 Update
https://github.com/shimat/opencvsharp


Ver 0.92aでの変更点
-------------------
・サムネイルの中央変更(プレビュー画面の中央に)
・サムネイルの表示/非表示/Windowサイズ変更時のハングアップ軽減
・サムネイルサイズ指定は調整中()
・設定ファイルのバックアップを作成
・バッファ再利用の最適化


Ver 0.92bでの変更点
-------------------
・MainWindow：設定保存ボタン、自動保存のチェックボックスを追加
・PreviewWindow：スクロールサムネイル表示/非表示

※バッファ周りの見直ししたい"φ(･_.) ﾒﾓｯ!
・FHD(1920x1080)1画面で8MB、128枚でざっと1GB。32bitOSで気楽に使えるメモリを軽く超えますの。


Ver 0.92cでの変更点
-------------------
・OprionWindow：サムネイルサイズを指定できるように修正
・PreviewWindow：サムネイルサイズによって表示エリアが制限されます(サムネもプレビューも大きくすると縮小されます)
※処理能力が低いPCだと重くなってきたのでサムネイルの表示フレーム数を減らすことである程度軽くなります。気持ち程度ですが(^◇^;
すみません新しいPCにしたら無茶したくなってどんどん重くなってる…ﾍ(ﾟ∀ﾟﾍ)ｱﾋｬ
そしてキャッシュ用のバッファメモリから外れるフレームが増えてさらに重くなってたり…
そろそろ64bitOS専用に戻ろうかと。テストすらできない環境でAnyCPU(x86対応)版がまともに動いているのかどうか怪しい(笑)
そんな今後の方向性。


Ver 0.92cでの変更点
-------------------
・シフトキーアップ再描画がタイミングによって強制終了するバグの修正
・バックアップファイルをold1～5を追加（6世代までバックアップファイルを作成）

Ver 0.92fでの変更点
-------------------
・avs保存時に移動処理にチェックが入っていた場合、サムネイルを更新しているとアクセスエラーが出る場合があったので、サムネイル更新中はメッセージを表示してスキップするように修正。
・シフトキーアップ周りでフラグが消えない操作パターンがあったので修正
・サムネイル表示の微調整(数ピクセル画面外にはみ出していた描画していた)


Ver 0.93での変更点
-------------------
・スライダーバーのTrim範囲画像が最低でも1ドット表示するように修正
6時間物などでTrim10秒の場合、スライダーの上の緑のバーがほとんどの場合見えなかった。


Ver 0.93aでの変更点
-------------------
・センターフレームの緑の枠が2ドット下にずれていたので修正m(__)m


Ver 0.93bでの変更点
-------------------
・プレビューサイズの最大値をFHD(1920x1080)から制限なしに変更
※テンキーの[+]キーでFitに合わせた場合FHDに制限されていた(いままで確認できるモニタが無かった^^;)


Ver 0.94での変更点
-------------------
・TrimListの変更判定ロジックの変更(簡易テストのみ)
いままではTrim数が増えた場合の判定が行えていなかった
・MainWinodwでOptionを保存した時にメッセージを通知するように変更


Ver 0.94aでの変更点
-------------------
・[CM解析-TrimAvs]の位置が見つからない時のメッセージが見切れていたので修正
・InsertキーによるTrim分割がおかしくなっていたので修正


Ver 0.95aでの変更点
-------------------
・SHIFT＋移動キー解放後のサムネイル更新タイミングの変更


Ver 0.95bでの変更点
-------------------
・SPACE/Enterの連続更新がスキップされていたので修正


Ver 0.95cでの変更点
-------------------
・オプション画面を開いたときにNumキー移動時間が更新されなくなっていたので修正
・開発は停止っす


Ver 1.00bでの変更点
-------------------
・白内障＆緑内障対応：瞳孔開き気味で画面がまぶしいので、ダークテーマ対応？っぽくしてみた(ﾟ∀ﾟ)ｱﾋｬ
・上記対応のため動作環境が.net 7.0になった


Ver 1.00cでの変更点
-------------------
・Optionが保存できなくなっていたので修正
