gst_plugins_base/gst-libs/gst/interfaces/mixertrack.c
changeset 16 8e837d1bf446
parent 0 0e761a78d257
child 30 7e817e7e631c
equal deleted inserted replaced
15:4b0c6ed43234 16:8e837d1bf446
    39 enum
    39 enum
    40 {
    40 {
    41   ARG_0,
    41   ARG_0,
    42   ARG_LABEL,
    42   ARG_LABEL,
    43   ARG_UNTRANSLATED_LABEL,
    43   ARG_UNTRANSLATED_LABEL,
       
    44   ARG_INDEX,
    44   ARG_MIN_VOLUME,
    45   ARG_MIN_VOLUME,
    45   ARG_MAX_VOLUME,
    46   ARG_MAX_VOLUME,
    46   ARG_FLAGS,
    47   ARG_FLAGS,
    47   ARG_NUM_CHANNELS
    48   ARG_NUM_CHANNELS
    48 };
    49 };
   100   object_klass->set_property = gst_mixer_track_set_property;
   101   object_klass->set_property = gst_mixer_track_set_property;
   101 
   102 
   102   g_object_class_install_property (object_klass, ARG_LABEL,
   103   g_object_class_install_property (object_klass, ARG_LABEL,
   103       g_param_spec_string ("label", "Track label",
   104       g_param_spec_string ("label", "Track label",
   104           "The label assigned to the track (may be translated)", NULL,
   105           "The label assigned to the track (may be translated)", NULL,
   105           G_PARAM_READABLE));
   106           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
   106 
   107 
   107   /**
   108   /**
   108    * GstMixerTrack:untranslated-label
   109    * GstMixerTrack:untranslated-label
   109    *
   110    *
   110    * The untranslated label of the mixer track, if available. Mixer track
   111    * The untranslated label of the mixer track, if available. Mixer track
   116    * Since: 0.10.13
   117    * Since: 0.10.13
   117    **/
   118    **/
   118   g_object_class_install_property (object_klass, ARG_UNTRANSLATED_LABEL,
   119   g_object_class_install_property (object_klass, ARG_UNTRANSLATED_LABEL,
   119       g_param_spec_string ("untranslated-label", "Untranslated track label",
   120       g_param_spec_string ("untranslated-label", "Untranslated track label",
   120           "The untranslated label assigned to the track (since 0.10.13)",
   121           "The untranslated label assigned to the track (since 0.10.13)",
   121           NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
   122           NULL,
       
   123           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
       
   124 
       
   125   /**
       
   126    * GstMixerTrack:index
       
   127    *
       
   128    * Index of the mixer track, if available. Mixer track implementations
       
   129    * must set this at construct time. This can be used to discern between
       
   130    * multiple tracks with identical labels.
       
   131    *
       
   132    * Since: 0.10.21
       
   133    */
       
   134   g_object_class_install_property (object_klass, ARG_INDEX,
       
   135       g_param_spec_uint ("index", "Index",
       
   136           "Track index", 0, G_MAXUINT,
       
   137           0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
   122 
   138 
   123   g_object_class_install_property (object_klass, ARG_MIN_VOLUME,
   139   g_object_class_install_property (object_klass, ARG_MIN_VOLUME,
   124       g_param_spec_int ("min_volume", "Minimum volume level",
   140       g_param_spec_int ("min-volume", "Minimum volume level",
   125           "The minimum possible volume level", G_MININT, G_MAXINT,
   141           "The minimum possible volume level", G_MININT, G_MAXINT,
   126           0, G_PARAM_READABLE));
   142           0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
   127 
   143 
   128   g_object_class_install_property (object_klass, ARG_MAX_VOLUME,
   144   g_object_class_install_property (object_klass, ARG_MAX_VOLUME,
   129       g_param_spec_int ("max_volume", "Maximum volume level",
   145       g_param_spec_int ("max-volume", "Maximum volume level",
   130           "The maximum possible volume level", G_MININT, G_MAXINT,
   146           "The maximum possible volume level", G_MININT, G_MAXINT,
   131           0, G_PARAM_READABLE));
   147           0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
   132 
   148 
   133   g_object_class_install_property (object_klass, ARG_FLAGS,
   149   g_object_class_install_property (object_klass, ARG_FLAGS,
   134       g_param_spec_uint ("flags", "Flags",
   150       g_param_spec_uint ("flags", "Flags",
   135           "Flags indicating the type of mixer track",
   151           "Flags indicating the type of mixer track",
   136           0, G_MAXUINT, 0, G_PARAM_READABLE));
   152           0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
   137 
   153 
   138   g_object_class_install_property (object_klass, ARG_NUM_CHANNELS,
   154   g_object_class_install_property (object_klass, ARG_NUM_CHANNELS,
   139       g_param_spec_int ("num_channels", "Number of channels",
   155       g_param_spec_int ("num-channels", "Number of channels",
   140           "The number of channels contained within the track",
   156           "The number of channels contained within the track",
   141           0, G_MAXINT, 0, G_PARAM_READABLE));
   157           0, G_MAXINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
   142 
   158 
   143 #if 0
   159 #if 0
   144   signals[SIGNAL_RECORD_TOGGLED] =
   160   signals[SIGNAL_RECORD_TOGGLED] =
   145       g_signal_new ("record_toggled", G_TYPE_FROM_CLASS (klass),
   161       g_signal_new ("record_toggled", G_TYPE_FROM_CLASS (klass),
   146       G_SIGNAL_RUN_LAST,
   162       G_SIGNAL_RUN_LAST,
   174   mixer_track->min_volume = mixer_track->max_volume = 0;
   190   mixer_track->min_volume = mixer_track->max_volume = 0;
   175   mixer_track->flags = 0;
   191   mixer_track->flags = 0;
   176   mixer_track->num_channels = 0;
   192   mixer_track->num_channels = 0;
   177 }
   193 }
   178 
   194 
   179 /* FIXME 0.11: move this as a member into the mixer track structure */
   195 /* FIXME 0.11: move these as members into the mixer track structure */
   180 #define MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL "gst-mixer-track-ulabel"
   196 #define MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL "gst-mixer-track-ulabel"
       
   197 #define MIXER_TRACK_OBJECT_DATA_KEY_INDEX "index"
   181 
   198 
   182 static void
   199 static void
   183 gst_mixer_track_get_property (GObject * object, guint prop_id, GValue * value,
   200 gst_mixer_track_get_property (GObject * object, guint prop_id, GValue * value,
   184     GParamSpec * pspec)
   201     GParamSpec * pspec)
   185 {
   202 {
   193       break;
   210       break;
   194     case ARG_UNTRANSLATED_LABEL:
   211     case ARG_UNTRANSLATED_LABEL:
   195       g_value_set_string (value,
   212       g_value_set_string (value,
   196           (const gchar *) g_object_get_data (G_OBJECT (mixer_track),
   213           (const gchar *) g_object_get_data (G_OBJECT (mixer_track),
   197               MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL));
   214               MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL));
       
   215       break;
       
   216     case ARG_INDEX:
       
   217       g_value_set_uint (value,
       
   218           GPOINTER_TO_INT (g_object_get_data (G_OBJECT (mixer_track),
       
   219                   MIXER_TRACK_OBJECT_DATA_KEY_INDEX)));
   198       break;
   220       break;
   199     case ARG_MIN_VOLUME:
   221     case ARG_MIN_VOLUME:
   200       g_value_set_int (value, mixer_track->min_volume);
   222       g_value_set_int (value, mixer_track->min_volume);
   201       break;
   223       break;
   202     case ARG_MAX_VOLUME:
   224     case ARG_MAX_VOLUME:
   226     case ARG_UNTRANSLATED_LABEL:
   248     case ARG_UNTRANSLATED_LABEL:
   227       g_object_set_data_full (G_OBJECT (mixer_track),
   249       g_object_set_data_full (G_OBJECT (mixer_track),
   228           MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL,
   250           MIXER_TRACK_OBJECT_DATA_KEY_UNTRANSLATED_LABEL,
   229           g_value_dup_string (value), (GDestroyNotify) g_free);
   251           g_value_dup_string (value), (GDestroyNotify) g_free);
   230       break;
   252       break;
       
   253     case ARG_INDEX:
       
   254       g_object_set_data (G_OBJECT (mixer_track),
       
   255           MIXER_TRACK_OBJECT_DATA_KEY_INDEX,
       
   256           GINT_TO_POINTER (g_value_get_uint (value)));
       
   257       break;
   231     default:
   258     default:
   232       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
   259       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
   233       break;
   260       break;
   234   }
   261   }
   235 }
   262 }