/// <summary> /// Return any features required by /// </summary> /// <param name="data"></param> /// <param name="module"></param> /// <returns></returns> public static ClipFeatures GetMissingClipFeatures(LipSyncData data, AutoSyncModule module) { var req = module.GetCompatibilityRequirements(); ClipFeatures metCriteria = 0; if (data.clip) { metCriteria |= ClipFeatures.AudioClip; } if (!string.IsNullOrEmpty(data.transcript)) { metCriteria |= ClipFeatures.Transcript; } if (data.phonemeData != null && data.phonemeData.Length > 0) { metCriteria |= ClipFeatures.Phonemes; } if (data.emotionData != null && data.emotionData.Length > 0) { metCriteria |= ClipFeatures.Emotions; } if (data.gestureData != null && data.gestureData.Length > 0) { metCriteria |= ClipFeatures.Gestures; } // Compare masks return((req & metCriteria) ^ req); }
/// <summary> /// Check if the supplied LipSyncData clip is compatible with a particular module. /// </summary> /// <param name="data"></param> /// <param name="module"></param> /// <returns></returns> public static bool CheckIsClipCompatible(LipSyncData data, AutoSyncModule module) { var req = module.GetCompatibilityRequirements(); ClipFeatures metCriteria = 0; if (data.clip) { metCriteria |= ClipFeatures.AudioClip; } if (!string.IsNullOrEmpty(data.transcript)) { metCriteria |= ClipFeatures.Transcript; } if (data.phonemeData != null && data.phonemeData.Length > 0) { metCriteria |= ClipFeatures.Phonemes; } if (data.emotionData != null && data.emotionData.Length > 0) { metCriteria |= ClipFeatures.Emotions; } if (data.gestureData != null && data.gestureData.Length > 0) { metCriteria |= ClipFeatures.Gestures; } // Compare masks var isFeatureCompatible = ((req & metCriteria) ^ req) == ClipFeatures.None; if (isFeatureCompatible) { if ((req & ClipFeatures.AudioClip) == ClipFeatures.AudioClip) { var outcome = true; return(outcome); } return(true); } else { return(false); } }