00001 #ifndef Impala_Basis_Quids_h
00002 #define Impala_Basis_Quids_h
00003
00004 #include "Basis/String.h"
00005 #include "Basis/Quid.h"
00006
00007 namespace Impala
00008 {
00009
00010
00011 static const int QUID_CLASS_UNKNOWN = 0;
00012 static const int QUID_CLASS_SHOT = 1;
00013 static const int QUID_CLASS_KEYFRAME = 2;
00014 static const int QUID_CLASS_FRAME = 3;
00015 static const int QUID_CLASS_LABEL = 4;
00016 static const int QUID_CLASS_IMAGE = 5;
00017 static const int QUID_CLASS_VIDEO = 6;
00018 static const int QUID_CLASS_CODEBOOK = 7;
00019 static const int QUID_CLASS_BOX = 8;
00020
00021
00022 inline int
00023 StringToQuidClass(CString s)
00024 {
00025 if (s == "Shot")
00026 return QUID_CLASS_SHOT;
00027 if (s == "Keyframe")
00028 return QUID_CLASS_KEYFRAME;
00029 if (s == "Frame")
00030 return QUID_CLASS_FRAME;
00031 if (s == "Label")
00032 return QUID_CLASS_LABEL;
00033 if (s == "Image")
00034 return QUID_CLASS_IMAGE;
00035 if (s == "Video")
00036 return QUID_CLASS_VIDEO;
00037 if (s == "Codebook")
00038 return QUID_CLASS_CODEBOOK;
00039 if (s == "Box")
00040 return QUID_CLASS_BOX;
00041 return QUID_CLASS_UNKNOWN;
00042 }
00043
00044 inline String
00045 QuidClassToString(int c)
00046 {
00047 switch (c)
00048 {
00049 case QUID_CLASS_SHOT: return "Shot";
00050 case QUID_CLASS_KEYFRAME: return "Keyframe";
00051 case QUID_CLASS_FRAME: return "Frame";
00052 case QUID_CLASS_LABEL: return "Label";
00053 case QUID_CLASS_IMAGE: return "Image";
00054 case QUID_CLASS_VIDEO: return "Video";
00055 case QUID_CLASS_CODEBOOK: return "Codebook";
00056 case QUID_CLASS_BOX: return "Box";
00057 }
00058 return "unknown";
00059 }
00060
00061 inline String
00062 QuidClassToString(Quid q)
00063 {
00064 int c = QuidClass(q);
00065 return QuidClassToString(c);
00066 }
00067
00068 inline Quid
00069 MakeQuidShot(int qSet, int qObject, int id)
00070 {
00071 return (((Quid) QUID_CLASS_SHOT) << QUID_CLASS_SHIFT) |
00072 (((Quid) qSet) << QUID_SET_SHIFT) |
00073 (((Quid) qObject) << QUID_OBJECT_SHIFT) |
00074 (((Quid) id) << QUID_ID_SHIFT);
00075 }
00076
00077 inline Quid
00078 MakeQuidKeyframe(int qSet, int qObject, int id)
00079 {
00080 return (((Quid) QUID_CLASS_KEYFRAME) << QUID_CLASS_SHIFT) |
00081 (((Quid) qSet) << QUID_SET_SHIFT) |
00082 (((Quid) qObject) << QUID_OBJECT_SHIFT) |
00083 (((Quid) id) << QUID_ID_SHIFT);
00084 }
00085
00086 inline Quid
00087 MakeQuidFrame(int qSet, int qObject, int id)
00088 {
00089 return (((Quid) QUID_CLASS_FRAME) << QUID_CLASS_SHIFT) |
00090 (((Quid) qSet) << QUID_SET_SHIFT) |
00091 (((Quid) qObject) << QUID_OBJECT_SHIFT) |
00092 (((Quid) id) << QUID_ID_SHIFT);
00093 }
00094
00095 inline Quid
00096 MakeQuidLabel(int id)
00097 {
00098 return (((Quid) QUID_CLASS_LABEL) << QUID_CLASS_SHIFT) |
00099 (((Quid) id) << QUID_ID_SHIFT);
00100 }
00101
00102 inline Quid
00103 MakeQuidImage(int qSet, int id)
00104 {
00105 return (((Quid) QUID_CLASS_IMAGE) << QUID_CLASS_SHIFT) |
00106 (((Quid) qSet) << QUID_SET_SHIFT) |
00107 (((Quid) id) << QUID_ID_SHIFT);
00108 }
00109
00110 inline Quid
00111 MakeQuidVideo(int qSet, int id)
00112 {
00113 return (((Quid) QUID_CLASS_VIDEO) << QUID_CLASS_SHIFT) |
00114 (((Quid) qSet) << QUID_SET_SHIFT) |
00115 (((Quid) id) << QUID_ID_SHIFT);
00116 }
00117
00118 inline Quid
00119 MakeQuidCodebook(int qDataClass, int qSet, int id)
00120 {
00121 return (((Quid) QUID_CLASS_CODEBOOK) << QUID_CLASS_SHIFT) |
00122 (((Quid) qDataClass) << QUID_SET_SHIFT) |
00123 (((Quid) qSet) << QUID_OBJECT_SHIFT) |
00124 (((Quid) id) << QUID_ID_SHIFT);
00125 }
00126
00127 }
00128
00129 #endif