連載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コーデック



ホームページ
カテゴリ
最新コメント
カレンダー
07 | 2017/08 | 09
- - 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 31 - -
最新記事
最新トラックバック
ブログ内タグ

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

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