public async Task <string> Decode(Color32Result image)
        {
            RecycleByteArray();
            m_Width  = (int)image.Size.x;
            m_Height = (int)image.Size.y;
            await ConvertBytes(image.ColorArr);

            ZXing.Result result = await DecodeThread();

            if (result != null)
            {
                return(result.Text);
            }
            return(null);
        }
        async Task Scan()
        {
            while (IsScanning)
            {
                Color32Result image = await UpdateCamera();

                if (image != null)
                {
                    string result = null;
                    try
                    {
                        result = await m_BarcodeDecoder.Decode(image);
                    }
                    catch (Exception e)
                    {
                        Debug.LogError($"Error in Decoder {e}");
                    }
                    if (result == null)
                    {
                        continue;
                    }


                    // Trigger attached actions
                    try
                    {
                        m_Lock = true;
                        m_Results.Add(result);
                        m_Lock = null;
                    }
                    catch (Exception e)
                    {
                        Debug.LogError(e);
                    }
                }
                else
                {
                    Debug.LogError("Update Camera Failed!");
                }

                await Task.Delay(100);
            }
        }