WOmxObserver.cpp revision 517b0e090680e378f056677201426ed9dc325c65
1#include "WOmxObserver.h" 2 3#include <vector> 4 5#include <cutils/native_handle.h> 6#include <frameworks/native/include/binder/Binder.h> 7 8#include "Conversion.h" 9 10namespace android { 11namespace hardware { 12namespace media { 13namespace omx { 14namespace V1_0 { 15namespace implementation { 16 17// LWOmxObserver 18LWOmxObserver::LWOmxObserver(sp<IOmxObserver> const& base) : mBase(base) { 19} 20 21void LWOmxObserver::onMessages(std::list<omx_message> const& lMessages) { 22 hidl_vec<Message> tMessages; 23 std::vector<native_handle_t*> handles(lMessages.size()); 24 tMessages.resize(lMessages.size()); 25 size_t i = 0; 26 for (auto const& message : lMessages) { 27 wrapAs(&tMessages[i], &handles[i], message); 28 ++i; 29 } 30 mBase->onMessages(tMessages); 31 for (auto& handle : handles) { 32 native_handle_delete(handle); 33 } 34} 35 36::android::IBinder* LWOmxObserver::onAsBinder() { 37 return nullptr; 38} 39 40// TWOmxObserver 41TWOmxObserver::TWOmxObserver(sp<IOMXObserver> const& base) : mBase(base) { 42} 43 44Return<void> TWOmxObserver::onMessages(const hidl_vec<Message>& tMessages) { 45 std::list<omx_message> lMessages; 46 for (size_t i = 0; i < tMessages.size(); ++i) { 47 lMessages.push_back(omx_message{}); 48 wrapAs(&lMessages.back(), tMessages[i]); 49 } 50 mBase->onMessages(lMessages); 51 return Return<void>(); 52} 53 54} // namespace implementation 55} // namespace V1_0 56} // namespace omx 57} // namespace media 58} // namespace hardware 59} // namespace android 60