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