• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2009 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 #ifndef DATA_SOURCE_H_
18 
19 #define DATA_SOURCE_H_
20 
21 #include <sys/types.h>
22 #include <media/stagefright/MediaErrors.h>
23 #include <media/DataSourceBase.h>
24 #include <media/IDataSource.h>
25 #include <utils/Errors.h>
26 #include <utils/RefBase.h>
27 #include <utils/threads.h>
28 #include <drm/DrmManagerClient.h>
29 
30 
31 namespace android {
32 
33 class String8;
34 
35 class DataSource : public DataSourceBase, public virtual RefBase {
36 public:
DataSource()37     DataSource() {}
38 
39     // returns a pointer to IDataSource if it is wrapped.
getIDataSource()40     virtual sp<IDataSource> getIDataSource() const {
41         return nullptr;
42     }
43 
toString()44     virtual String8 toString() {
45         return String8("<unspecified>");
46     }
47 
reconnectAtOffset(off64_t)48     virtual status_t reconnectAtOffset(off64_t /*offset*/) {
49         return ERROR_UNSUPPORTED;
50     }
51 
52     ////////////////////////////////////////////////////////////////////////////
53 
54     // for DRM
55     virtual sp<DecryptHandle> DrmInitialization(const char * /*mime*/ = NULL) {
56         return NULL;
57     }
58 
getUri()59     virtual String8 getUri() {
60         return String8();
61     }
62 
getUri(char * uriString,size_t bufferSize)63     virtual bool getUri(char *uriString, size_t bufferSize) final {
64         int ret = snprintf(uriString, bufferSize, "%s", getUri().c_str());
65         return ret >= 0 && static_cast<size_t>(ret) < bufferSize;
66     }
67 
getMIMEType()68     virtual String8 getMIMEType() const {
69         return String8("application/octet-stream");
70     }
71 
72 protected:
~DataSource()73     virtual ~DataSource() {}
74 
75 private:
76     DataSource(const DataSource &);
77     DataSource &operator=(const DataSource &);
78 };
79 
80 }  // namespace android
81 
82 #endif  // DATA_SOURCE_H_
83