diff options
Diffstat (limited to 'gst-libs/gst/vaapi/gstvaapiprofile.c')
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapiprofile.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapiprofile.c b/gst-libs/gst/vaapi/gstvaapiprofile.c index 1c9f5610..40c9760a 100644 --- a/gst-libs/gst/vaapi/gstvaapiprofile.c +++ b/gst-libs/gst/vaapi/gstvaapiprofile.c @@ -285,18 +285,27 @@ gst_vaapi_profile_get_va_profile(GstVaapiProfile profile) GstCaps * gst_vaapi_profile_get_caps(GstVaapiProfile profile) { - const GstVaapiProfileMap * const m = get_profiles_map(profile); - GstCaps *caps; - - if (!m) - return NULL; + const GstVaapiProfileMap *m; + GstCaps *out_caps, *caps; - caps = gst_caps_from_string(m->caps_str); - if (!caps) + out_caps = gst_caps_new_empty(); + if (!out_caps) return NULL; - gst_caps_set_simple(caps, "profile", G_TYPE_STRING, m->profile_str, NULL); - return caps; + for (m = gst_vaapi_profiles; m->profile; m++) { + if (m->profile != profile) + continue; + caps = gst_caps_from_string(m->caps_str); + if (!caps) + continue; + gst_caps_set_simple( + caps, + "profile", G_TYPE_STRING, m->profile_str, + NULL + ); + gst_caps_merge(out_caps, caps); + } + return out_caps; } /** |