public void Dispose()
 {
     Close();
     if (_formatConverter != null)
     {
         _formatConverter.Dispose();
         _formatConverter = null;
     }
 }
Example #2
0
	public void Dispose()
	{
		Close();
		if (_formatConverter != null)
		{
			_formatConverter.Dispose();
			_formatConverter = null;
		}
	}
Example #3
0
	private bool PrepareMovie()
	{
		if (_movieSource != AVProQuickTimePlugin.MovieSource.Memory)
		{
			if (!AVProQuickTimePlugin.LoadMovieProperties(_movieHandle))
			{
				Debug.LogWarning("[AVProQuickTime] Failed loading movie properties");
				Close();
				return false;
			}
		}

		RequiresFlipY = false;
		AVProQuickTimePlugin.SetVolume(_movieHandle, _volume);
		AVProQuickTimePlugin.SetAudioBalance(_movieHandle, _audioBalance);
		Width = AVProQuickTimePlugin.GetWidth(_movieHandle);
		Height = AVProQuickTimePlugin.GetHeight(_movieHandle);
		FrameCount = (uint)(AVProQuickTimePlugin.GetFrameCount(_movieHandle));
		DurationSeconds = AVProQuickTimePlugin.GetDurationSeconds(_movieHandle);
		FrameRate = AVProQuickTimePlugin.GetFrameRate(_movieHandle);
		PixelFormat = (AVProQuickTimePlugin.PixelFormat)AVProQuickTimePlugin.GetFramePixelFormat(_movieHandle);
		
		IsPrepared = true;
		PlayState = PlaybackState.Loaded;
		Debug.Log("[AVProQuickTime] loaded movie " + Filename + "[" + Width + "x" + Height + " @ " + FrameRate + "hz] " + PixelFormat.ToString() + " " + DurationSeconds + " sec " + FrameCount + " frames");
			
		// Movie may not be visual, it could be audio so check width and height
		if (Width > 0 && Height > 0)
		{
			if (Width <= 8192 && Height <= 8192)
			{
				if (PixelFormat != AVProQuickTimePlugin.PixelFormat.Unknown)
				{
					IsVisual = true;
	
					if (_formatConverter == null)
					{
						_formatConverter = new AVProQuickTimeFormatConverter();
					}

					bool flipX = false;
					bool flipY = true;
					if (_ignoreFlips)
					{
						if (flipY)
						{
							RequiresFlipY = true;
						}

						flipX = flipY = false;
					}

					if (!_formatConverter.Build(_movieHandle, Width, Height, PixelFormat, _yuvHD, flipX, flipY))
					{
						Debug.LogWarning("[AVProQuickTime] unable to convert video format");
						Width = Height = 0;
						if (_formatConverter != null)
						{
							_formatConverter.Dispose();
							_formatConverter = null;
						}
					}
				}
				else
				{
					Debug.LogWarning("[AVProQuickTime] unknown video format");
					Width = Height = 0;
					if (_formatConverter != null)
					{
						_formatConverter.Dispose();
						_formatConverter = null;
					}
				}
			}
			else
			{
				Debug.LogError("[AVProQuickTime] Movie resolution is too large");
				Width = Height = 0;
				if (_formatConverter != null)
				{
					_formatConverter.Dispose();
					_formatConverter = null;
				}
			}
		}
		else
		{
			// No video frame found, must be audio?
			Width = Height = 0;
			if (_formatConverter != null)
			{
				_formatConverter.Dispose();
				_formatConverter = null;
			}
		}

		return true;
	}
    private bool PrepareMovie()
    {
        if (_movieSource != AVProQuickTimePlugin.MovieSource.Memory)
        {
            if (!AVProQuickTimePlugin.LoadMovieProperties(_movieHandle))
            {
                Debug.LogWarning("[AVProQuickTime] Failed loading movie properties");
                Close();
                return(false);
            }
        }

        AVProQuickTimePlugin.SetVolume(_movieHandle, _volume);
        AVProQuickTimePlugin.SetAudioBalance(_movieHandle, _audioBalance);
        Width           = AVProQuickTimePlugin.GetWidth(_movieHandle);
        Height          = AVProQuickTimePlugin.GetHeight(_movieHandle);
        FrameCount      = (uint)(AVProQuickTimePlugin.GetFrameCount(_movieHandle));
        DurationSeconds = AVProQuickTimePlugin.GetDurationSeconds(_movieHandle);
        FrameRate       = AVProQuickTimePlugin.GetFrameRate(_movieHandle);
        PixelFormat     = (AVProQuickTimePlugin.PixelFormat)AVProQuickTimePlugin.GetFramePixelFormat(_movieHandle);

        IsPrepared = true;
        PlayState  = PlaybackState.Loaded;
        Debug.Log("[AVProQuickTime] loaded movie " + Filename + "[" + Width + "x" + Height + " @ " + FrameRate + "hz] " + PixelFormat.ToString() + " " + DurationSeconds + " sec " + FrameCount + " frames");

        // Movie may not be visual, it could be audio so check width and height
        if (Width > 0 && Height > 0)
        {
            if (Width <= 4096 && Height <= 4096)
            {
                if (PixelFormat != AVProQuickTimePlugin.PixelFormat.Unknown)
                {
                    IsVisual = true;

                    if (_formatConverter == null)
                    {
                        _formatConverter = new AVProQuickTimeFormatConverter();
                    }
                    if (!_formatConverter.Build(_movieHandle, Width, Height, PixelFormat, _yuvHD, false, true))
                    {
                        Debug.LogWarning("[AVProQuickTime] unable to convert video format");
                        Width = Height = 0;
                        if (_formatConverter != null)
                        {
                            _formatConverter.Dispose();
                            _formatConverter = null;
                        }
                    }
                }
                else
                {
                    Debug.LogWarning("[AVProQuickTime] unknown video format");
                    Width = Height = 0;
                    if (_formatConverter != null)
                    {
                        _formatConverter.Dispose();
                        _formatConverter = null;
                    }
                }
            }
            else
            {
                Debug.LogError("[AVProQuickTime] Movie resolution is too large");
                Width = Height = 0;
                if (_formatConverter != null)
                {
                    _formatConverter.Dispose();
                    _formatConverter = null;
                }
            }
        }
        else
        {
            // No video frame found, must be audio?
            Width = Height = 0;
            if (_formatConverter != null)
            {
                _formatConverter.Dispose();
                _formatConverter = null;
            }
        }

        return(true);
    }