private void DisposeCheck(MediaEncoderHandle handle) { if (!IsCreated(handle)) { throw new ObjectDisposedException("Media Encoder handle already disposed!"); } }
internal unsafe MediaEncoderHandle Instantiate <T>() where T : class, IMediaEncoder, new() { InternalEncoderData encoder = new InternalEncoderData(); encoder.VHandle.Index = m_Encoders.Count; encoder.VHandle.Version = 1; encoder.m_TypeIndex = -1; encoder.m_encoderInterface = new T(); m_Encoders.Add(encoder); var versionedHandler = m_Encoders[encoder.VHandle.Index]; var handle = new MediaEncoderHandle(versionedHandler.VHandle); var mediaEncoderType = typeof(T); for (var i = 0; i < m_Types.Count; ++i) { if (m_Types[i] == mediaEncoderType) { encoder.m_TypeIndex = i; break; } } if (encoder.m_TypeIndex == -1) { encoder.m_TypeIndex = m_Types.Count; m_Types.Add(mediaEncoderType); } return(handle); }
public void Destroy(MediaEncoderHandle handle) { VersionCheck(handle.m_VersionHandle); var encoder = m_Encoders[handle.m_VersionHandle.Index]; encoder.m_encoderInterface.Dispose(); encoder.m_encoderInterface = null; encoder.VHandle.Version++; }
internal bool Is <T>(MediaEncoderHandle handle) where T : struct, IMediaEncoder { if (Exists(handle)) { var index = m_Encoders[handle.m_VersionHandle.Index].m_TypeIndex; if (index < m_Types.Count && index >= 0) { return(m_Types[index] == typeof(T)); } } return(false); }
public bool AddSamples(MediaEncoderHandle handle, NativeArray <float> interleavedSamples) { DisposeCheck(handle); return(m_Encoders[handle.m_VersionHandle.Index].m_encoderInterface.AddSamples(interleavedSamples)); }
public bool AddFrame(MediaEncoderHandle handle, Texture2D texture, MediaTime time) { DisposeCheck(handle); return(m_Encoders[handle.m_VersionHandle.Index].m_encoderInterface.AddFrame(texture, time)); }
public bool AddFrame(MediaEncoderHandle handle, int width, int height, int rowBytes, TextureFormat format, NativeArray <byte> data, MediaTime time) { DisposeCheck(handle); return(m_Encoders[handle.m_VersionHandle.Index].m_encoderInterface.AddFrame(width, height, rowBytes, format, data, time)); }
public void Construct(MediaEncoderHandle handle, string path, VideoTrackAttributes vAttr, NativeArray <AudioTrackAttributes> aAttr) { DisposeCheck(handle); m_Encoders[handle.m_VersionHandle.Index].m_encoderInterface.Construct(path, vAttr, aAttr); }
public void Construct(MediaEncoderHandle handle, string path, List <IMediaEncoderAttribute> attributes) { DisposeCheck(handle); m_Encoders[handle.m_VersionHandle.Index].m_encoderInterface.Construct(path, attributes); }
public bool IsCreated(MediaEncoderHandle handle) { VersionCheck(handle.m_VersionHandle); return(m_Encoders[handle.m_VersionHandle.Index].IsCreated); }
public bool Exists(MediaEncoderHandle handle) { return(handle.m_VersionHandle.Index >= 0 && handle.m_VersionHandle.Index < m_Encoders.Count && handle.m_VersionHandle.Version == m_Encoders[handle.m_VersionHandle.Index].VHandle.Version); }