summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-09-15 21:07:52 -0700
committerJames Dong <jdong@google.com>2010-09-16 11:34:20 -0700
commitdfb89914d47a5df8b9ed7e6326848ea89195d9f3 (patch)
treecca7c0c71021154c2ce88cb3095a52ffa184f87a /media/libstagefright
parent4198cececf70bf034e12f19bb87f29cc29931c39 (diff)
downloadframeworks_base-dfb89914d47a5df8b9ed7e6326848ea89195d9f3.zip
frameworks_base-dfb89914d47a5df8b9ed7e6326848ea89195d9f3.tar.gz
frameworks_base-dfb89914d47a5df8b9ed7e6326848ea89195d9f3.tar.bz2
Fixed a bug in the query to the supported profiles and levels
According to OMX spec, the levels returned is the max level settings. In fact, we could not enum all the levels. Change-Id: Ib1cba74100512800a5761c7567894c7ea5b5a452
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/OMXCodec.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 3d25a4b..cd70a3d 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -1035,7 +1035,7 @@ status_t OMXCodec::getVideoProfileLevel(
mNode, OMX_IndexParamVideoProfileLevelQuerySupported,
&param, sizeof(param));
- if (err != OK) return err;
+ if (err != OK) break;
int32_t supportedProfile = static_cast<int32_t>(param.eProfile);
int32_t supportedLevel = static_cast<int32_t>(param.eLevel);
@@ -1043,7 +1043,10 @@ status_t OMXCodec::getVideoProfileLevel(
supportedProfile, supportedLevel);
if (profile == supportedProfile &&
- level == supportedLevel) {
+ level <= supportedLevel) {
+ // We can further check whether the level is a valid
+ // value; but we will leave that to the omx encoder component
+ // via OMX_SetParameter call.
profileLevel.mProfile = profile;
profileLevel.mLevel = level;
return OK;