internal static void ExportGif(GifExportTask exportTask)
        {
            var instance = new AndroidNativeGif(exportTask);
            var worker   = new Thread(instance.DoExportGif);

            worker.Priority = exportTask.workerPriority;
            worker.Start();
        }
Ejemplo n.º 2
0
        internal static void ExportGif(GifExportTask task)
        {
            var taskId         = task.taskId;
            var filepath       = task.filepath;
            var width          = task.clip.Width;
            var height         = task.clip.Height;
            var loop           = task.loop;
            var fps            = task.clip.FramePerSecond;
            var sampleFac      = task.sampleFac;
            var frameCount     = task.clip.Frames.Length;
            var imageData      = task.imageData;
            var threadPriority = EncodeThreadPriority(task.workerPriority);

            var gcHandleArray = new GCHandle[imageData.Length];
            var ptrArray      = new IntPtr[imageData.Length];

            for (int i = 0; i < imageData.Length; i++)
            {
                gcHandleArray[i] = GCHandle.Alloc(imageData[i], GCHandleType.Pinned);
                ptrArray[i]      = gcHandleArray[i].AddrOfPinnedObject();
            }

            if (gcHandles == null)
            {
                gcHandles = new Dictionary <int, GCHandle[]>();
            }

            gcHandles.Add(taskId, gcHandleArray);

            C.EM_ExportGif(taskId,
                           filepath,
                           width,
                           height,
                           loop,
                           fps,
                           sampleFac,
                           frameCount,
                           ptrArray,
                           threadPriority,
                           GifExportProgressCallback,
                           GifExportCompletedCallback);
        }
 internal AndroidNativeGif(GifExportTask exportTask)
 {
     myExportTask = exportTask;
 }