void Update()
    {
        if (m_Source == null || m_Filename == null)
        {
            return;
        }

        if (m_width != m_Source.width || m_height != m_Source.height)
        {
            m_width  = m_Source.width;
            m_height = m_Source.height;
            m_Pipeline.SetupEncoding(m_Filename, m_Source.width, m_Source.height);
            m_Pipeline.Play();
        }

        var pixels = m_Source.GetPixels32();
        var handle = GCHandle.Alloc(pixels, GCHandleType.Pinned);

        m_Pipeline.ConsumeImage(handle.AddrOfPinnedObject(), pixels.Length * 4);
        handle.Free();
    }