diff options
author | Andreas Huber <andih@google.com> | 2009-10-08 11:02:27 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2009-10-08 14:21:58 -0700 |
commit | 36efa039efaae4526791336cb688032d22b34bec (patch) | |
tree | 8bb2b193530f7c606475e2863be843eb8cce58e6 /media/libmedia/IOMX.cpp | |
parent | 479ededc5b55e63ea9b425cbe465c93bb8b8b3dc (diff) | |
download | frameworks_av-36efa039efaae4526791336cb688032d22b34bec.zip frameworks_av-36efa039efaae4526791336cb688032d22b34bec.tar.gz frameworks_av-36efa039efaae4526791336cb688032d22b34bec.tar.bz2 |
Some decoders will return an error on OMX_EmptyThisBuffer to indicate that they don't support the media format, deal with this.
Diffstat (limited to 'media/libmedia/IOMX.cpp')
-rw-r--r-- | media/libmedia/IOMX.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index 0cec7bb..e74f1a9 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -289,15 +289,17 @@ public: return reply.readInt32(); } - virtual void fill_buffer(node_id node, buffer_id buffer) { + virtual status_t fill_buffer(node_id node, buffer_id buffer) { Parcel data, reply; data.writeInterfaceToken(IOMX::getInterfaceDescriptor()); data.writeIntPtr((intptr_t)node); data.writeIntPtr((intptr_t)buffer); - remote()->transact(FILL_BUFFER, data, &reply, IBinder::FLAG_ONEWAY); + remote()->transact(FILL_BUFFER, data, &reply); + + return reply.readInt32(); } - virtual void empty_buffer( + virtual status_t empty_buffer( node_id node, buffer_id buffer, OMX_U32 range_offset, OMX_U32 range_length, @@ -310,7 +312,9 @@ public: data.writeInt32(range_length); data.writeInt32(flags); data.writeInt64(timestamp); - remote()->transact(EMPTY_BUFFER, data, &reply, IBinder::FLAG_ONEWAY); + remote()->transact(EMPTY_BUFFER, data, &reply); + + return reply.readInt32(); } virtual status_t get_extension_index( @@ -601,7 +605,7 @@ status_t BnOMX::onTransact( node_id node = (void*)data.readIntPtr(); buffer_id buffer = (void*)data.readIntPtr(); - fill_buffer(node, buffer); + reply->writeInt32(fill_buffer(node, buffer)); return NO_ERROR; } @@ -617,9 +621,10 @@ status_t BnOMX::onTransact( OMX_U32 flags = data.readInt32(); OMX_TICKS timestamp = data.readInt64(); - empty_buffer( - node, buffer, range_offset, range_length, - flags, timestamp); + reply->writeInt32( + empty_buffer( + node, buffer, range_offset, range_length, + flags, timestamp)); return NO_ERROR; } |