vaapidecode: only expose supported profiles when needed.

JPEG and VP8 codecs do not really support the concept of "profile". So,
don't try to expose any set that wouldn't be supported by jpegparse, or
ivfparse for instance.

https://bugzilla.gnome.org/show_bug.cgi?id=739713
https://bugzilla.gnome.org/show_bug.cgi?id=739714
This commit is contained in:
Gwenole Beauchesne 2014-11-12 07:46:53 +01:00
parent 8f71f74c5d
commit d1b7dc21f8
2 changed files with 9 additions and 8 deletions

View file

@ -131,12 +131,13 @@ static const GstVaapiProfileMap gst_vaapi_profiles[] = {
},
#if VA_CHECK_VERSION(0,32,0)
{ GST_VAAPI_PROFILE_JPEG_BASELINE, VAProfileJPEGBaseline,
"image/jpeg", "baseline"
"image/jpeg", NULL
},
#endif
#if VA_CHECK_VERSION(0,35,0)
{GST_VAAPI_PROFILE_VP8, VAProfileVP8Version0_3,
"video/x-vp8", "Version0_3"},
{ GST_VAAPI_PROFILE_VP8, VAProfileVP8Version0_3,
"video/x-vp8", NULL
},
#endif
{ 0, }
};

View file

@ -924,15 +924,15 @@ gst_vaapidecode_ensure_allowed_caps(GstVaapiDecode *decode)
if (!media_type_name)
continue;
profile_name = gst_vaapi_profile_get_name(profile);
if (!profile_name)
continue;
caps = gst_caps_from_string(media_type_name);
if (!caps)
continue;
structure = gst_caps_get_structure (caps, 0);
gst_structure_set (structure, "profile", G_TYPE_STRING, profile_name, NULL);
profile_name = gst_vaapi_profile_get_name(profile);
if (profile_name)
gst_structure_set(structure, "profile", G_TYPE_STRING,
profile_name, NULL);
allowed_caps = gst_caps_merge(allowed_caps, caps);
}