1e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman/*
2e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Copyright 2015 The Android Open Source Project
3e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman *
4e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Licensed under the Apache License, Version 2.0 (the "License");
5e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * you may not use this file except in compliance with the License.
6e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * You may obtain a copy of the License at
7e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman *
8e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman *      http://www.apache.org/licenses/LICENSE-2.0
9e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman *
10e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * Unless required by applicable law or agreed to in writing, software
11e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * distributed under the License is distributed on an "AS IS" BASIS,
12e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * See the License for the specific language governing permissions and
14e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman * limitations under the License.
15e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman */
16e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
17e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
18e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#ifndef ANDROID_MEDIA_RESOURCE_H
19e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#define ANDROID_MEDIA_RESOURCE_H
20e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
21e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <binder/Parcel.h>
22e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#include <utils/String8.h>
23e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
24e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramannamespace android {
25e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
26e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanclass MediaResource {
27e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramanpublic:
28e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    enum Type {
29e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kUnspecified = 0,
30e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kSecureCodec,
31e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kNonSecureCodec,
32e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kGraphicMemory
33e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    };
34e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
35e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    enum SubType {
36e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kUnspecifiedSubType = 0,
37e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kAudioCodec,
38e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        kVideoCodec
39e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    };
40e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
41e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MediaResource();
42e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MediaResource(Type type, uint64_t value);
43e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    MediaResource(Type type, SubType subType, uint64_t value);
44e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
45e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    void readFromParcel(const Parcel &parcel);
46e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    void writeToParcel(Parcel *parcel) const;
47e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
48e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    String8 toString() const;
49e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
50e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    bool operator==(const MediaResource &other) const;
51e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    bool operator!=(const MediaResource &other) const;
52e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
53e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    Type mType;
54e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    SubType mSubType;
55e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    uint64_t mValue;
56e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman};
57e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
58e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramaninline static const char *asString(MediaResource::Type i, const char *def = "??") {
59e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    switch (i) {
60e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kUnspecified:    return "unspecified";
61e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kSecureCodec:    return "secure-codec";
62e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kNonSecureCodec: return "non-secure-codec";
63e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kGraphicMemory:  return "graphic-memory";
64e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        default:                             return def;
65e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    }
66e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}
67e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
68e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatramaninline static const char *asString(MediaResource::SubType i, const char *def = "??") {
69e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    switch (i) {
70e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kUnspecifiedSubType: return "unspecified";
71e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kAudioCodec:         return "audio-codec";
72e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        case MediaResource::kVideoCodec:         return "video-codec";
73e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman        default:                                 return def;
74e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman    }
75e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}
76e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
77e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman}; // namespace android
78e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman
79e2b43843fd12783188edd2c54188ea8d26864788Vijay Venkatraman#endif  // ANDROID_MEDIA_RESOURCE_H
80