Esempio n. 1
0
    private JobMemory ScheduleYuvToRgbJob(List <Av1Frame> frames, int frameNumber)
    {
        var jobMemory = JobMemory.Rent(frames.Count, frameNumber);

        jobMemory.ScheduleJob(frames);

        return(jobMemory);
    }
Esempio n. 2
0
    void OnDestroy()
    {
        _rawTextures.ForEach(Object.Destroy);
        foreach (var ivfAv1Decoder in _ivfAv1Decoders)
        {
            ivfAv1Decoder?.Dispose();
        }
        foreach (var jobMemory in _jobMemories)
        {
            jobMemory.jobHandle.Complete();
            jobMemory.Dispose();
        }

        JobMemory.DestroyPool();
    }
Esempio n. 3
0
        public static JobMemory Rent(int frameCount, int frameNumber)
        {
            JobMemory jobMemory;

            if (Pool.Count > 0)
            {
                var index = Pool.Count - 1;
                jobMemory = Pool[index];
                Pool.RemoveAt(index);
            }
            else
            {
                jobMemory = new JobMemory(frameCount);
            }

            jobMemory.frameNumber = frameNumber;

            return(jobMemory);
        }
Esempio n. 4
0
    private void UpdateTextureFromCompletedJob()
    {
        while (_jobMemories.Count > 0 && _jobMemories.Peek().jobHandle.IsCompleted&& _freeTextureQueue.Count > 0)
        {
            _stopwatch.Restart();

            var jobMemory = _jobMemories.Dequeue();
            jobMemory.jobHandle.Complete();

            var texture = _freeTextureQueue.Dequeue();
            texture.SetPixelData(jobMemory._rgbList, 0);
            texture.Apply();
            _decodedQueue.Enqueue(texture);

            foreach (var ivfAv1Decoder in _ivfAv1Decoders)
            {
                ivfAv1Decoder.CheckConsumedFrameNumber(jobMemory.frameNumber);
            }
            JobMemory.Return(jobMemory);

            _stopwatch.Stop();
            Debug.Log($"UpdateTextureFromCompletedJob 1 Cycle {_stopwatch.ElapsedMilliseconds}");
        }
    }
Esempio n. 5
0
 public static void Return(JobMemory jobMemory)
 {
     Pool.Add(jobMemory);
 }