Commit c8fa8085 authored by Edward Hervey's avatar Edward Hervey Committed by Edward Hervey

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

API: gst_encoding_target_get_profile
parent cdd0a9c8
...@@ -1957,6 +1957,7 @@ gst_encoding_target_get_name ...@@ -1957,6 +1957,7 @@ gst_encoding_target_get_name
gst_encoding_target_get_category gst_encoding_target_get_category
gst_encoding_target_get_description gst_encoding_target_get_description
gst_encoding_target_get_profiles gst_encoding_target_get_profiles
gst_encoding_target_get_profile
gst_encoding_target_add_profile gst_encoding_target_add_profile
gst_encoding_target_save gst_encoding_target_save
gst_encoding_target_save_to gst_encoding_target_save_to
......
...@@ -95,20 +95,14 @@ ...@@ -95,20 +95,14 @@
*{ *{
* GstEncodingProfile *prof = NULL; * GstEncodingProfile *prof = NULL;
* GstEncodingTarget *target = NULL; * GstEncodingTarget *target = NULL;
* GList *tmp;
* *
* target = gst_encoding_target_load_from (path); * target = gst_encoding_target_load_from (path);
* if (target == NULL) * if (target == NULL)
* return NULL; * return NULL;
* *
* for (tmp = target->profiles; tmp; tmp = tmp->next) { * prof = gst_encoding_target_get_profile (target, profilename);
* GstEncodingProfile *ptmp = (GstEncodingProfile*) tmp->data;
* *
* if (!strcmp(gst_encoding_profile_get_name(ptmp), profilename)) { * gst_encoding_target_unref (target);
* prof = ptmp;
* break;
* }
* }
* *
* return prof; * return prof;
*} *}
......
...@@ -152,6 +152,35 @@ gst_encoding_target_get_profiles (GstEncodingTarget * target) ...@@ -152,6 +152,35 @@ gst_encoding_target_get_profiles (GstEncodingTarget * target)
return target->profiles; 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 static inline gboolean
validate_name (const gchar * name) validate_name (const gchar * name)
{ {
......
...@@ -85,6 +85,8 @@ const gchar *gst_encoding_target_get_name (GstEncodingTarget *target); ...@@ -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_category (GstEncodingTarget *target);
const gchar *gst_encoding_target_get_description (GstEncodingTarget *target); const gchar *gst_encoding_target_get_description (GstEncodingTarget *target);
const GList *gst_encoding_target_get_profiles (GstEncodingTarget *target); const GList *gst_encoding_target_get_profiles (GstEncodingTarget *target);
GstEncodingProfile *gst_encoding_target_get_profile (GstEncodingTarget *target,
const gchar *name);
gboolean gboolean
gst_encoding_target_add_profile (GstEncodingTarget *target, GstEncodingProfile *profile); gst_encoding_target_add_profile (GstEncodingTarget *target, GstEncodingProfile *profile);
......
...@@ -253,6 +253,30 @@ create_saveload_target (void) ...@@ -253,6 +253,30 @@ create_saveload_target (void)
return target; 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) GST_START_TEST (test_saving_profile)
{ {
GstEncodingTarget *orig, *loaded = NULL; GstEncodingTarget *orig, *loaded = NULL;
...@@ -473,6 +497,7 @@ profile_suite (void) ...@@ -473,6 +497,7 @@ profile_suite (void)
tcase_add_test (tc_chain, test_profile_creation); tcase_add_test (tc_chain, test_profile_creation);
tcase_add_test (tc_chain, test_profile_output_caps); tcase_add_test (tc_chain, test_profile_output_caps);
tcase_add_test (tc_chain, test_target_naming); tcase_add_test (tc_chain, test_target_naming);
tcase_add_test (tc_chain, test_target_profile);
if (can_write) { if (can_write) {
tcase_add_test (tc_chain, test_loading_profile); tcase_add_test (tc_chain, test_loading_profile);
tcase_add_test (tc_chain, test_saving_profile); tcase_add_test (tc_chain, test_saving_profile);
......
...@@ -85,6 +85,7 @@ EXPORTS ...@@ -85,6 +85,7 @@ EXPORTS
gst_encoding_target_get_category gst_encoding_target_get_category
gst_encoding_target_get_description gst_encoding_target_get_description
gst_encoding_target_get_name gst_encoding_target_get_name
gst_encoding_target_get_profile
gst_encoding_target_get_profiles gst_encoding_target_get_profiles
gst_encoding_target_get_type gst_encoding_target_get_type
gst_encoding_target_load gst_encoding_target_load
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment