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