12013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown/* 22013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * Copyright (C) 2012 The Android Open Source Project 32013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * 42013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 52013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * you may not use this file except in compliance with the License. 62013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * You may obtain a copy of the License at 72013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * 82013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 92013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * 102013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * Unless required by applicable law or agreed to in writing, software 112013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 122013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * See the License for the specific language governing permissions and 142013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown * limitations under the License. 152013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown */ 162013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 172013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#ifndef ANDROID_IREMOTEDISPLAYCLIENT_H 182013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#define ANDROID_IREMOTEDISPLAYCLIENT_H 192013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 202013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#include <stdint.h> 212013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#include <sys/types.h> 222013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 232013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#include <utils/RefBase.h> 242013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#include <binder/IInterface.h> 252013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#include <binder/Parcel.h> 262013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 272013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brownnamespace android { 282013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 29484566c410afdfbc4b6bc5aa1732aef37428a5b8Andy McFaddenclass IGraphicBufferProducer; 302013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 312013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brownclass IRemoteDisplayClient : public IInterface 322013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown{ 332013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brownpublic: 342013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown DECLARE_META_INTERFACE(RemoteDisplayClient); 352013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 362013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown enum { 372013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Flag: The remote display is using a secure transport protocol such as HDCP. 382013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown kDisplayFlagSecure = 1 << 0, 392013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown }; 402013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 412013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown enum { 422013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Error: An unknown / generic error occurred. 43ced24b36bbeed1ddd086a9304a9639c04ffe0962Jeff Brown kDisplayErrorUnknown = 1, 442013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Error: The connection was dropped unexpectedly. 45ced24b36bbeed1ddd086a9304a9639c04ffe0962Jeff Brown kDisplayErrorConnectionDropped = 2, 462013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown }; 472013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 482013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Indicates that the remote display has been connected successfully. 492013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Provides a surface texture that the client should use to stream buffers to 502013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // the remote display. 51484566c410afdfbc4b6bc5aa1732aef37428a5b8Andy McFadden virtual void onDisplayConnected(const sp<IGraphicBufferProducer>& bufferProducer, 522013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown uint32_t width, uint32_t height, uint32_t flags) = 0; // one-way 532013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 542013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Indicates that the remote display has been disconnected normally. 55ced24b36bbeed1ddd086a9304a9639c04ffe0962Jeff Brown // This method should only be called once the client has called 'dispose()' 56ced24b36bbeed1ddd086a9304a9639c04ffe0962Jeff Brown // on the IRemoteDisplay. 572013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // It is currently an error for the display to disconnect for any other reason. 582013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown virtual void onDisplayDisconnected() = 0; // one-way 592013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 602013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // Indicates that a connection could not be established to the remote display 612013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown // or an unrecoverable error occurred and the connection was severed. 622013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown virtual void onDisplayError(int32_t error) = 0; // one-way 632013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown}; 642013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 652013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 662013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown// ---------------------------------------------------------------------------- 672013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 682013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brownclass BnRemoteDisplayClient : public BnInterface<IRemoteDisplayClient> 692013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown{ 702013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brownpublic: 712013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown virtual status_t onTransact( uint32_t code, 722013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown const Parcel& data, 732013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown Parcel* reply, 742013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown uint32_t flags = 0); 752013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown}; 762013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 772013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown}; // namespace android 782013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown 792013a54981d4ffb036dff279b88cc9f08c0ee1c2Jeff Brown#endif // ANDROID_IREMOTEDISPLAYCLIENT_H 80