private bool StartMovie(bool loop, bool allowYUV) { Loop = loop; if (_movieHandle < 0) { _movieHandle = AVProQuickTimePlugin.GetInstanceHandle(); } #if AVPRO_UNITY_4_X AVProQuickTimePlugin.SetActive(_movieHandle, IsActive); #endif bool sourceValid = false; bool loadedOK = false; switch (_movieSource) { case AVProQuickTimePlugin.MovieSource.LocalFile: if (!string.IsNullOrEmpty(Filename)) { sourceValid = true; byte[] utf8 = Encoding.UTF8.GetBytes(Filename); int size = Marshal.SizeOf(typeof(byte)) * (utf8.Length + 1); IntPtr ptr = Marshal.AllocHGlobal(size); Marshal.Copy(utf8, 0, ptr, utf8.Length); Marshal.WriteByte(ptr, utf8.Length, 0); loadedOK = AVProQuickTimePlugin.LoadMovieFromFile(_movieHandle, ptr, Loop, allowYUV); Marshal.FreeHGlobal(ptr); } break; case AVProQuickTimePlugin.MovieSource.URL: if (!string.IsNullOrEmpty(Filename)) { sourceValid = true; loadedOK = AVProQuickTimePlugin.LoadMovieFromURL(_movieHandle, Filename, Loop, allowYUV); } break; case AVProQuickTimePlugin.MovieSource.Memory: sourceValid = true; loadedOK = AVProQuickTimePlugin.LoadMovieFromMemory(_movieHandle, _movieMemoryPtr, _movieMemoryLength, Loop, allowYUV); break; } if (sourceValid) { if (loadedOK) { PlayState = PlaybackState.Loading; } else { Debug.LogWarning("[AVProQuickTime] Movie failed to load"); Close(); } } else { Debug.LogWarning("[AVProQuickTime] Invalid movie file specified"); Close(); } return(_movieHandle >= 0); }