summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-11-26 13:48:41 -0800
committerGerrit Code Review <noreply-gerritcodereview@google.com>2012-11-26 13:48:41 -0800
commit79fd685323e34e0fde22d17fd6848d33f171f4ae (patch)
tree09a1ecfaea315eddab950e1f192cafe4cfd25796 /media
parent5865ddf769d368d714af630aba18392ea1387bc7 (diff)
parent717fd3d4328abf524978ce9c125ab8ae8d6bffad (diff)
downloadframeworks_av-79fd685323e34e0fde22d17fd6848d33f171f4ae.zip
frameworks_av-79fd685323e34e0fde22d17fd6848d33f171f4ae.tar.gz
frameworks_av-79fd685323e34e0fde22d17fd6848d33f171f4ae.tar.bz2
Merge "MediaCodec: Add a method for getting the component name"
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/MediaCodec.cpp44
1 files changed, 40 insertions, 4 deletions
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index 56e6df0..cb8a651 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -302,6 +302,20 @@ status_t MediaCodec::getOutputFormat(sp<AMessage> *format) const {
return OK;
}
+status_t MediaCodec::getName(AString *name) const {
+ sp<AMessage> msg = new AMessage(kWhatGetName, id());
+
+ sp<AMessage> response;
+ status_t err;
+ if ((err = PostAndAwaitResponse(msg, &response)) != OK) {
+ return err;
+ }
+
+ CHECK(response->findString("name", name));
+
+ return OK;
+}
+
status_t MediaCodec::getInputBuffers(Vector<sp<ABuffer> > *buffers) const {
sp<AMessage> msg = new AMessage(kWhatGetBuffers, id());
msg->setInt32("portIndex", kPortIndexInput);
@@ -534,16 +548,15 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
CHECK_EQ(mState, INITIALIZING);
setState(INITIALIZED);
- AString componentName;
- CHECK(msg->findString("componentName", &componentName));
+ CHECK(msg->findString("componentName", &mComponentName));
- if (componentName.startsWith("OMX.google.")) {
+ if (mComponentName.startsWith("OMX.google.")) {
mFlags |= kFlagIsSoftwareCodec;
} else {
mFlags &= ~kFlagIsSoftwareCodec;
}
- if (componentName.endsWith(".secure")) {
+ if (mComponentName.endsWith(".secure")) {
mFlags |= kFlagIsSecure;
} else {
mFlags &= ~kFlagIsSecure;
@@ -1171,6 +1184,25 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
break;
}
+ case kWhatGetName:
+ {
+ uint32_t replyID;
+ CHECK(msg->senderAwaitsResponse(&replyID));
+
+ if (mComponentName.empty()) {
+ sp<AMessage> response = new AMessage;
+ response->setInt32("err", INVALID_OPERATION);
+
+ response->postReply(replyID);
+ break;
+ }
+
+ sp<AMessage> response = new AMessage;
+ response->setString("name", mComponentName.c_str());
+ response->postReply(replyID);
+ break;
+ }
+
default:
TRESPASS();
}
@@ -1240,6 +1272,10 @@ void MediaCodec::setState(State newState) {
mActivityNotify.clear();
}
+ if (newState == UNINITIALIZED) {
+ mComponentName.clear();
+ }
+
mState = newState;
cancelPendingDequeueOperations();