summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>2010-05-16 21:17:49 +0000
committerGwenole Beauchesne <gbeauchesne@splitted-desktop.com>2010-09-20 12:55:46 +0200
commitfa6385cd397e698d2fa7b5e08bd522c8b336e1eb (patch)
treeddffa6e1cadb88a6f62c9c3c078477ac5240296b
parentadfed50a90ff59958335e0fca2c6ca35f915e563 (diff)
Fix decoder caps to report codec aliases.
-rw-r--r--NEWS1
-rw-r--r--README1
-rw-r--r--gst-libs/gst/vaapi/gstvaapiprofile.c27
3 files changed, 19 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index 43e67459..e6ece4b9 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ Copyright (C) 2010 Splitted-Desktop Systems
Version 0.2.3 - DD.May.2010
* Fix memory leak of encoded buffers
+* Fix decoder caps to report codec aliases
* Fix VC-1 decoding through the playbin2 pipeline
Version 0.2.2 - 14.May.2010
diff --git a/README b/README
index 3c4fed13..9a28115e 100644
--- a/README
+++ b/README
@@ -71,4 +71,3 @@ Caveats
-------
* No ad-hoc parser, vaapidecoder currently relies on FFmpeg
- * MPEG-4 Part-2 (DivX) has decoding bugs
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;
}
/**