OSDN Git Service

Merge \\\"DO NOT MERGE SoftAAC2: fix crash on all-zero adts buffer\\\" into klp-dev...
[android-x86/frameworks-av.git] / camera / ICameraRecordingProxyListener.cpp
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 //#define LOG_NDEBUG 0
18 #define LOG_TAG "ICameraRecordingProxyListener"
19 #include <camera/ICameraRecordingProxyListener.h>
20 #include <binder/IMemory.h>
21 #include <binder/Parcel.h>
22 #include <utils/Log.h>
23
24 namespace android {
25
26 enum {
27     DATA_CALLBACK_TIMESTAMP = IBinder::FIRST_CALL_TRANSACTION,
28 };
29
30 class BpCameraRecordingProxyListener: public BpInterface<ICameraRecordingProxyListener>
31 {
32 public:
33     BpCameraRecordingProxyListener(const sp<IBinder>& impl)
34         : BpInterface<ICameraRecordingProxyListener>(impl)
35     {
36     }
37
38     void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& imageData)
39     {
40         ALOGV("dataCallback");
41         Parcel data, reply;
42         data.writeInterfaceToken(ICameraRecordingProxyListener::getInterfaceDescriptor());
43         data.writeInt64(timestamp);
44         data.writeInt32(msgType);
45         data.writeStrongBinder(imageData->asBinder());
46         remote()->transact(DATA_CALLBACK_TIMESTAMP, data, &reply, IBinder::FLAG_ONEWAY);
47     }
48 };
49
50 IMPLEMENT_META_INTERFACE(CameraRecordingProxyListener, "android.hardware.ICameraRecordingProxyListener");
51
52 // ----------------------------------------------------------------------
53
54 status_t BnCameraRecordingProxyListener::onTransact(
55     uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
56 {
57     switch(code) {
58         case DATA_CALLBACK_TIMESTAMP: {
59             ALOGV("DATA_CALLBACK_TIMESTAMP");
60             CHECK_INTERFACE(ICameraRecordingProxyListener, data, reply);
61             nsecs_t timestamp = data.readInt64();
62             int32_t msgType = data.readInt32();
63             sp<IMemory> imageData = interface_cast<IMemory>(data.readStrongBinder());
64             dataCallbackTimestamp(timestamp, msgType, imageData);
65             return NO_ERROR;
66         } break;
67         default:
68             return BBinder::onTransact(code, data, reply, flags);
69     }
70 }
71
72 // ----------------------------------------------------------------------------
73
74 }; // namespace android
75