11900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen/* 21900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** 31900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** Copyright 2015, The Android Open Source Project 41900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** 51900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** Licensed under the Apache License, Version 2.0 (the "License"); 61900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** you may not use this file except in compliance with the License. 71900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** You may obtain a copy of the License at 81900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** 91900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** http://www.apache.org/licenses/LICENSE-2.0 101900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** 111900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** Unless required by applicable law or agreed to in writing, software 121900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** distributed under the License is distributed on an "AS IS" BASIS, 131900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 141900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** See the License for the specific language governing permissions and 151900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen** limitations under the License. 161900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen*/ 171900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 181900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#define LOG_TAG "IMediaCodecService" 191900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen//#define LOG_NDEBUG 0 201900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 211900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#include <utils/Log.h> 221900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#include <stdint.h> 231900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#include <sys/types.h> 241900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#include <binder/Parcel.h> 251900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen#include <media/IMediaCodecService.h> 261900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 271900e77bac4276f247f80fd06d19316cac598f57Marco Nelissennamespace android { 281900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 291900e77bac4276f247f80fd06d19316cac598f57Marco Nelissenenum { 301900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen GET_OMX = IBinder::FIRST_CALL_TRANSACTION 311900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen}; 321900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 331900e77bac4276f247f80fd06d19316cac598f57Marco Nelissenclass BpMediaCodecService : public BpInterface<IMediaCodecService> 341900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen{ 351900e77bac4276f247f80fd06d19316cac598f57Marco Nelissenpublic: 3664a2870d8515fd914638c60803db86dbd92f5b06Chih-Hung Hsieh explicit BpMediaCodecService(const sp<IBinder>& impl) 371900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen : BpInterface<IMediaCodecService>(impl) 381900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen { 391900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen } 401900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 411900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen virtual sp<IOMX> getOMX() { 421900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen Parcel data, reply; 431900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen data.writeInterfaceToken(IMediaCodecService::getInterfaceDescriptor()); 441900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen remote()->transact(GET_OMX, data, &reply); 451900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen return interface_cast<IOMX>(reply.readStrongBinder()); 461900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen } 471900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 481900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen}; 491900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 501900e77bac4276f247f80fd06d19316cac598f57Marco NelissenIMPLEMENT_META_INTERFACE(MediaCodecService, "android.media.IMediaCodecService"); 511900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 521900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen// ---------------------------------------------------------------------- 531900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 541900e77bac4276f247f80fd06d19316cac598f57Marco Nelissenstatus_t BnMediaCodecService::onTransact( 551900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) 561900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen{ 571900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen switch (code) { 581900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 591900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen case GET_OMX: { 601900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen CHECK_INTERFACE(IMediaCodecService, data, reply); 611900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen sp<IOMX> omx = getOMX(); 621900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen reply->writeStrongBinder(IInterface::asBinder(omx)); 631900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen return NO_ERROR; 641900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen } 651900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen default: 661900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen return BBinder::onTransact(code, data, reply, flags); 671900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen } 681900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen} 691900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 701900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen// ---------------------------------------------------------------------------- 711900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen 721900e77bac4276f247f80fd06d19316cac598f57Marco Nelissen} // namespace android 73