大家好!
有个疑问,camera service 的 callback:
void Camera::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2)
{
    sp<CameraListener> listener;
    {
        Mutex::Autolock _l(mLock);
        listener = mListener;
    }
    if (listener != NULL) {
        listener->notify(msgType, ext1, ext2);
    }
}class ICameraClient: public IInterface
{
public:
    DECLARE_META_INTERFACE(CameraClient);    virtual void  notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2) = 0;
    virtual void  dataCallback(int32_t msgType, const sp<IMemory>& data) = 0;
    virtual void dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const     sp<IMemory>& data) = 0;
};是怎么和驱动联系起来的呢?不是很理解……
我是菜鸟,请高手指教!!!

解决方案 »

  1.   

    Client在调用设置callback的调用最终还是调用到了camera.cpp中的callback函数,进而将具体内容通过callback反馈给上层应用做出相应的处理。
    Client::Client(const sp<CameraService>& cameraService,
            const sp<ICameraClient>& cameraClient, pid_t clientPid)
      

  2.   

    libcameraservice.so 会调用camera驱动库
    camera的应用会通过binder机制和cameraservice协作,这大概就是你的回调和驱动之间的联系吧