15.2. パラメータコントローラのセットアップ

最初のステップは、コントロールする必要のあるパラメータを選択することです。パラメータを選択すると、動作を細かく調整するのに必要なコントローラオブジェクトが返されます。


  controller = gst_object_control_properties(object, "prop1", "prop2",...);
    

次に、補間モードを選択することができます。中間値がどのように決まるかは、補間モードによって左右されます。たとえば、コントローラサブシステムは、パラメータの変更をスムーズにすることによって、ギャップを埋めることができます。コントロール可能な GObject の各プロパティは、異なる方法で補間することができます。


  gst_controller_set_interpolation_mode(controller,"prop1",mode);
    

最後にコントロールポイントを設定する必要があります。これらのコントロールポイントは、タイムスタンプ付きの GValue です。タイムスタンプの時間に達すると、値はアクティブになります。アクティブになっても、値はリストに残ります。たとえば、パイプラインが (セグメント化されたシークを使って) ループを実行する場合、コントロール曲線も同様に繰り返されます。


  gst_controller_set (controller, "prop1" ,0 * GST_SECOND, value1);
  gst_controller_set (controller, "prop1" ,1 * GST_SECOND, value2);
    

コントローラサブシステムは、組み込みのライブモードを持っています。パラメータにタイムスタンプ付きのコントロール値が割り当てられている場合でも、g_object_set() を使えば、GObject のプロパティを変更することができます。この方法は、GObject のプロパティを GUI ウィジェットにバインドする場合に非常に便利です。ユーザーがウィジェットで値を調整したら、それに応じて GObject のプロパティを設定できます。設定された値は、次のタイムスタンプ付き値によって上書きされるまで有効になります。この方法は、スムーズ化されたパラメータでも同様に使用できます。