FC2ブログ
 

連載2 画像転送システム その11

今回はコーデックの固有ステータスを制御します。

固有ステータスと言うのは各コーデックにより内容が異なる為一概に言えませんが多くの場合はコーデックの設定内容を含んでいます。例えばAMVコーデックで言えばハーフサイズのON/OFFやマルチスレッドの設定など設定画面の内容が含まれています。これらのステータスをコーデックから取得したり、逆にアプリケーション側からコーデックへステータスを設定したりする事ができます。

コーデックからステータスを取得するにはICM_GETSTATEメッセージを使います。
第1パラメータにステータスを格納するバッファのアドレス、第2パラメータにバッファのサイズを設定しますが、第1パラメータをNULLにするとステータスを格納するのに必要なバッファサイズを返すので最初はバッファサイズの取得、次にバッファの確保、最後にステータスの取得と三段階で処理しましょう。

次に、ステータスの設定です。利用するのはICM_SETSTATEメッセージです。
こちらは第1パラメータにステータスが格納されたバッファのアドレス、第2パラメータにバッファサイズを指定するだけです。

BOOL GetSetState( void )
{
    HIC hic = ICOpen( ICTYPE_VIDEO, dwFcc, ICMODE_COMPRESS );
    if (hic == NULL)return FALSE;
 
    // 1.バッファサイズの取得
    DWORD dwSize = ICSendMessage( hic, ICM_GETSTATE, (DWORD)NULL, (DWORD)NULL );
    if (dwSize)
    {
        // 2.バッファの確保
        void *lpState = malloc( dwSize );
        if (lpState == NULL)
        {
            ICClose( hic );
            return FALSE;
        }
        // 3.ステータスの取得
        ICSendMessage( hic, ICM_GETSTATE, (DWORD)lpState, (DWORD)dwSize );
 
        // ステータスを設定
        ICSendMessage( hic, ICM_SETSTATE, (DWORD)lpState, (DWORD)dwSize );
 
        free( lpState );
    }
    ICClose( hic );
    return TRUE;
}

上の例では取得したステータスをそのまま設定するので意味ないですが、アマレココの場合には設定Aから設定Dまで別々にコーデックのステータスを取得し管理する事で同じコーデックに対しても異なる設定で録画できるようになっています。

また、ファンタジーリモートではクライアント側でコーデックの管理を一括しています。
その為、接続時にクライアント側のコーデックのステータスを取得しそれをサーバーへ送信、サーバー側は受信したステータスをコーデックに設定という流れになっています。

このようにステータスを上手く管理する事でアプリケーションの利便性が向上しますので是非とも活用したい機能です。但し全てのコーデックがステータスの取得、設定に対応しているわけではないのでその点は気を付けましょう。
関連記事


コメントの投稿

 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
03 | 2021/04 | 05
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ AMVコーデック アマレココ アマレコVR Oculus アマミキ! Quest コーデック gQuest SC500 動画配信 Pico GO 4K ファンタジーリモート アマレコライト プラグイン G2 AMV4 oculus SC512 ライブ機能 Unity デスクトップキャプチャ AVX2 FAQ 質問コーナー リモートソフト HDキャプチャ ニコニコ動画 DirectShow レゴ 組み換え 遅延 可変再生速度 LEGO 解説動画 XL2420T 2 GV-USB2 120Hz アマステ 液晶モニター AMV2MT PS4 倍速液晶 デインターレース ベンチマーク Pro MonsterX3A Intensity ffmpeg 31024 Rift WindowsMR VideoKeeper2 Alternate 31006 designs UtVideo AVX XCAPTURE-1 SD-USB2CAP4 RGBキャプチャ 32ZP2 RDT233WX-Z GV-USB Shadow T2 RYZEN Play キャプチャーツール イベント 倍速駆動 シンクライアント リプレイ機能 SD-USB2CUP4 擬似NTSCキャプチャ プレビュー DirectShowFilter IntensityPro モノステ DC-HD1 Livetube AtomでHDキャプチャ LameACM GV-USB3 キャプチャカード 可逆圧縮 GPU使用率 SKnet SSE 録画 オーバーレイ XCapture-1 Kabelake LAVFilters Preferred MR Windows 90Hz 新アマレコVR VRコントローラー フレーム間圧縮 Filter Tweaker SteamVR VR動画 音ズレ フィギュア MonsterXU3.0R 音遅延 新プレイヤー機能 MP3 ゲームスムーズモード 倍速補完処理 32ZP32 額縁遅延 REGZA ZP3 Haswell 電源オプション MPC ハイパースレッディングテクノロジー HT 31021 インストール OBS HDCP HDMI QSV NVEnc 液晶テレビ 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面