encoding-target: Add method to get a profile by name

API: gst_encoding_target_get_profile
This commit is contained in:
Edward Hervey 2010-12-22 11:41:41 +01:00 committed by Edward Hervey
parent cdd0a9c8bb
commit c8fa8085ba
6 changed files with 60 additions and 8 deletions

View file

@ -1957,6 +1957,7 @@ gst_encoding_target_get_name
gst_encoding_target_get_category
gst_encoding_target_get_description
gst_encoding_target_get_profiles
gst_encoding_target_get_profile
gst_encoding_target_add_profile
gst_encoding_target_save
gst_encoding_target_save_to

View file

@ -95,20 +95,14 @@
*{
* GstEncodingProfile *prof = NULL;
* GstEncodingTarget *target = NULL;
* GList *tmp;
*
* target = gst_encoding_target_load_from (path);
* if (target == NULL)
* return NULL;
*
* for (tmp = target->profiles; tmp; tmp = tmp->next) {
* GstEncodingProfile *ptmp = (GstEncodingProfile*) tmp->data;
* prof = gst_encoding_target_get_profile (target, profilename);
*
* if (!strcmp(gst_encoding_profile_get_name(ptmp), profilename)) {
* prof = ptmp;
* break;
* }
* }
* gst_encoding_target_unref (target);
*
* return prof;
*}

View file

@ -152,6 +152,35 @@ gst_encoding_target_get_profiles (GstEncodingTarget * target)
return target->profiles;
}
/**
* gst_encoding_target_get_profile:
* @target: a #GstEncodingTarget
* @name: the name of the profile to retrieve
*
* Since: 0.10.32
*
* Returns: (transfer full): The matching #GstEncodingProfile, or %NULL.
*/
GstEncodingProfile *
gst_encoding_target_get_profile (GstEncodingTarget * target, const gchar * name)
{
GList *tmp;
g_return_val_if_fail (GST_IS_ENCODING_TARGET (target), NULL);
g_return_val_if_fail (name != NULL, NULL);
for (tmp = target->profiles; tmp; tmp = tmp->next) {
GstEncodingProfile *tprof = (GstEncodingProfile *) tmp->data;
if (!g_strcmp0 (gst_encoding_profile_get_name (tprof), name)) {
gst_encoding_profile_ref (tprof);
return tprof;
}
}
return NULL;
}
static inline gboolean
validate_name (const gchar * name)
{

View file

@ -85,6 +85,8 @@ const gchar *gst_encoding_target_get_name (GstEncodingTarget *target);
const gchar *gst_encoding_target_get_category (GstEncodingTarget *target);
const gchar *gst_encoding_target_get_description (GstEncodingTarget *target);
const GList *gst_encoding_target_get_profiles (GstEncodingTarget *target);
GstEncodingProfile *gst_encoding_target_get_profile (GstEncodingTarget *target,
const gchar *name);
gboolean
gst_encoding_target_add_profile (GstEncodingTarget *target, GstEncodingProfile *profile);

View file

@ -253,6 +253,30 @@ create_saveload_target (void)
return target;
}
GST_START_TEST (test_target_profile)
{
GstEncodingTarget *target;
GstEncodingProfile *prof;
target = create_saveload_target ();
/* NULL isn't a valid profile name */
ASSERT_CRITICAL (gst_encoding_target_get_profile (target, NULL));
/* try finding a profile that doesn't exist */
fail_if (gst_encoding_target_get_profile (target,
"no-really-does-not-exist"));
/* try finding a profile that exists */
prof = gst_encoding_target_get_profile (target, "pony");
fail_if (prof == NULL);
gst_encoding_profile_unref (prof);
gst_encoding_target_unref (target);
}
GST_END_TEST;
GST_START_TEST (test_saving_profile)
{
GstEncodingTarget *orig, *loaded = NULL;
@ -473,6 +497,7 @@ profile_suite (void)
tcase_add_test (tc_chain, test_profile_creation);
tcase_add_test (tc_chain, test_profile_output_caps);
tcase_add_test (tc_chain, test_target_naming);
tcase_add_test (tc_chain, test_target_profile);
if (can_write) {
tcase_add_test (tc_chain, test_loading_profile);
tcase_add_test (tc_chain, test_saving_profile);

View file

@ -85,6 +85,7 @@ EXPORTS
gst_encoding_target_get_category
gst_encoding_target_get_description
gst_encoding_target_get_name
gst_encoding_target_get_profile
gst_encoding_target_get_profiles
gst_encoding_target_get_type
gst_encoding_target_load