12 #ifndef hifi_MediaTypeLibrary_h
13 #define hifi_MediaTypeLibrary_h
20 #include "HifiTypes.h"
25 FileSignature(
const std::string& bytes,
int byteOffset) :
27 byteOffset(byteOffset) {
29 FileSignature(
const FileSignature& fileSignature) :
30 bytes(fileSignature.bytes),
31 byteOffset(fileSignature.byteOffset) {
41 MediaType(
const std::string& name) :
45 MediaType(
const MediaType& mediaType) :
47 extensions(mediaType.extensions),
48 webMediaTypes(mediaType.webMediaTypes),
49 fileSignatures(mediaType.fileSignatures) {
51 MediaType& operator=(
const MediaType&) =
default;
53 static MediaType NONE;
56 std::vector<std::string> extensions;
57 std::vector<std::string> webMediaTypes;
58 std::vector<FileSignature> fileSignatures;
61 class MediaTypeLibrary {
63 using ID =
unsigned int;
64 static const ID INVALID_ID { 0 };
66 ID registerMediaType(
const MediaType& mediaType);
67 void unregisterMediaType(
const ID&
id);
69 MediaType getMediaType(
const ID&
id)
const;
71 ID findMediaTypeForData(
const hifi::ByteArray& data)
const;
72 ID findMediaTypeForURL(
const hifi::URL& url)
const;
73 ID findMediaTypeForWebID(
const std::string& webMediaType)
const;
80 Entry(
const ID&
id,
const MediaType& mediaType) :
82 mediaType(mediaType) {
88 std::vector<Entry> _mediaTypes;