MediaHTTP.h revision 1b86fe063badb5f28c467ade39be0f4008688947
11b86fe063badb5f28c467ade39be0f4008688947Andreas Huber/* 21b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Copyright (C) 2013 The Android Open Source Project 31b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * 41b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 51b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * you may not use this file except in compliance with the License. 61b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * You may obtain a copy of the License at 71b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * 81b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 91b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * 101b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * Unless required by applicable law or agreed to in writing, software 111b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 121b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * See the License for the specific language governing permissions and 141b86fe063badb5f28c467ade39be0f4008688947Andreas Huber * limitations under the License. 151b86fe063badb5f28c467ade39be0f4008688947Andreas Huber */ 161b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 171b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#ifndef MEDIA_HTTP_H_ 181b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 191b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#define MEDIA_HTTP_H_ 201b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 211b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include <media/stagefright/foundation/AString.h> 221b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 231b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#include "include/HTTPBase.h" 241b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 251b86fe063badb5f28c467ade39be0f4008688947Andreas Hubernamespace android { 261b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 271b86fe063badb5f28c467ade39be0f4008688947Andreas Huberstruct IMediaHTTPConnection; 281b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 291b86fe063badb5f28c467ade39be0f4008688947Andreas Huberstruct MediaHTTP : public HTTPBase { 301b86fe063badb5f28c467ade39be0f4008688947Andreas Huber MediaHTTP(const sp<IMediaHTTPConnection> &conn); 311b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 321b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual status_t connect( 331b86fe063badb5f28c467ade39be0f4008688947Andreas Huber const char *uri, 341b86fe063badb5f28c467ade39be0f4008688947Andreas Huber const KeyedVector<String8, String8> *headers, 351b86fe063badb5f28c467ade39be0f4008688947Andreas Huber off64_t offset); 361b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 371b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual void disconnect(); 381b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 391b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual status_t initCheck() const; 401b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 411b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual ssize_t readAt(off64_t offset, void *data, size_t size); 421b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 431b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual status_t getSize(off64_t *size); 441b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 451b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual uint32_t flags(); 461b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 471b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual status_t reconnectAtOffset(off64_t offset); 481b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 491b86fe063badb5f28c467ade39be0f4008688947Andreas Huberprotected: 501b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual ~MediaHTTP(); 511b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 521b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual sp<DecryptHandle> DrmInitialization(const char* mime); 531b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual void getDrmInfo(sp<DecryptHandle> &handle, DrmManagerClient **client); 541b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual String8 getUri(); 551b86fe063badb5f28c467ade39be0f4008688947Andreas Huber virtual String8 getMIMEType() const; 561b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 571b86fe063badb5f28c467ade39be0f4008688947Andreas Huberprivate: 581b86fe063badb5f28c467ade39be0f4008688947Andreas Huber status_t mInitCheck; 591b86fe063badb5f28c467ade39be0f4008688947Andreas Huber sp<IMediaHTTPConnection> mHTTPConnection; 601b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 611b86fe063badb5f28c467ade39be0f4008688947Andreas Huber KeyedVector<String8, String8> mLastHeaders; 621b86fe063badb5f28c467ade39be0f4008688947Andreas Huber AString mLastURI; 631b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 641b86fe063badb5f28c467ade39be0f4008688947Andreas Huber bool mCachedSizeValid; 651b86fe063badb5f28c467ade39be0f4008688947Andreas Huber off64_t mCachedSize; 661b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 671b86fe063badb5f28c467ade39be0f4008688947Andreas Huber sp<DecryptHandle> mDecryptHandle; 681b86fe063badb5f28c467ade39be0f4008688947Andreas Huber DrmManagerClient *mDrmManagerClient; 691b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 701b86fe063badb5f28c467ade39be0f4008688947Andreas Huber void clearDRMState_l(); 711b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 721b86fe063badb5f28c467ade39be0f4008688947Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(MediaHTTP); 731b86fe063badb5f28c467ade39be0f4008688947Andreas Huber}; 741b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 751b86fe063badb5f28c467ade39be0f4008688947Andreas Huber} // namespace android 761b86fe063badb5f28c467ade39be0f4008688947Andreas Huber 771b86fe063badb5f28c467ade39be0f4008688947Andreas Huber#endif // MEDIA_HTTP_H_ 78