diff options
author | James Dong <jdong@google.com> | 2010-09-15 21:07:52 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-09-16 11:34:20 -0700 |
commit | dfb89914d47a5df8b9ed7e6326848ea89195d9f3 (patch) | |
tree | cca7c0c71021154c2ce88cb3095a52ffa184f87a /media/libstagefright | |
parent | 4198cececf70bf034e12f19bb87f29cc29931c39 (diff) | |
download | frameworks_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.cpp | 7 |
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, ¶m, 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; |