internal void RemoveComponent(MediaType mediaType) { lock (ComponentSyncLock) { var component = default(MediaComponent); if (mediaType == MediaType.Audio) { component = m_Audio; m_Audio = null; } else if (mediaType == MediaType.Video) { component = m_Video; m_Video = null; } else if (mediaType == MediaType.Subtitle) { component = m_Subtitle; m_Subtitle = null; } component?.Dispose(); UpdateComponentBackingFields(); } }
internal void AddComponent(MediaComponent component) { lock (ComponentSyncLock) { if (component == null) { throw new ArgumentNullException(nameof(component)); } var errorMessage = $"A component for '{component.MediaType}' is already registered."; switch (component.MediaType) { case MediaType.Audio: if (m_Audio != null) { throw new ArgumentException(errorMessage); } m_Audio = component as AudioComponent; break; case MediaType.Video: if (m_Video != null) { throw new ArgumentException(errorMessage); } m_Video = component as VideoComponent; break; case MediaType.Subtitle: if (m_Subtitle != null) { throw new ArgumentException(errorMessage); } m_Subtitle = component as SubtitleComponent; break; default: throw new NotSupportedException($"Unable to register component with {nameof(MediaType)} '{component.MediaType}'"); } UpdateComponentBackingFields(); } }