Exemplo n.º 1
0
        void encoding()
        {
            while (!quitEncodeThread_)
            {
                if (framesToEncode_.Count >= 1)
                {
                    var frame = framesToEncode_.Dequeue();
                    int res   = NativeRecorder.EncodeDesktopFrame(frame.Data, frame.TimeMilliSeconds * 0.001f);
                    if (res == (int)APIResult.Fatal)
                    {
                        Debug.LogErrorFormat("Fatal error occurred when encoding");
                        break;
                    }
                    else if (res != 0)
                    {
                        Debug.LogErrorFormat("Failed to encode");
                        continue;
                    }
                }
                else
                {
                    System.Threading.Thread.Sleep(100); // sleep 100ms if there is no frame to encode.
                }
            }

            // flush
            while (framesToEncode_.Count >= 1)
            {
                var frame = framesToEncode_.Dequeue();
                int res   = NativeRecorder.EncodeDesktopFrame(frame.Data, frame.TimeMilliSeconds * 0.001f);
                if (res == (int)APIResult.Fatal)
                {
                    Debug.LogErrorFormat("Fatal error occurred when encoding (Flush)");
                    break;
                }
                else if (res != (int)APIResult.OK)
                {
                    Debug.LogErrorFormat("Failed to encode (Flush)");
                    continue;
                }
            }
        }