JOB ETA in Aftereffects Plugin

Something that has been a constant issue for me in our workflow is that the AE plugin does not show anything in the Estimated Remaining Render Time field when rendering a final output (not image sequences) even though the plugin knows:

  • When the job started
  • What frame we are on
  • How many total frames to render

To solve this for myself I have a python script that takes the current running time, and percent complete and spits out an estimate based on the information given when the job might be done.

py guess-o-meter.py
Enter Running Time (H:M:S) 1:15:00
Enter Complete %: 33

Start Time: 2023-02-08 09:27:24.424097
ETA:             2023-02-08 13:14:40.787733
Time to Go:  2:32:16.363636

This is often all the detail I need, however, it’s a manual process that is very inconvenient when I have 20 or 30 jobs of different lengths rendering.

I look a look at the AE plugin and some other plugins and found that perhaps if I update the plugin in the HandleStdoutFrameProgress I might be able to force Deadline to populate these fields.

taking some guesses at how this might work I think I would need to manipulate the following?:

self.RemainingTime = “00:01:00”
self.CurrentFrame = 0
self.ElapsedTime = “00:02:00”
self.AverageTime = “00:00:01”

Messing around I have not found the magic key to get this working.

Is there some way I can give the plugin a hint as to what the ETA should be?

The Estimated Remaining Render Time on the Job panel is not populated by the job plugin but its a separate C# code running on the job for the monitor. Here is a function which is calculating the estimate:

        public double GetEstimatedRemainingTime()
        {
            double estimatedRemainingTime;

            double completedFrames = this.m_completedFrames;
            double framesLength = this.Frames.Length;
			double renderingChunks = this.m_renderingChunks;
			double remainingFrames = framesLength - renderingChunks - completedFrames;

			if (completedFrames > 0 && renderingChunks > 0) // job has been started
            {
				double avgSecondsPerFrame = this.TotalRenderTime.TotalSeconds / completedFrames;
				double estimatedQueuedRemaining = remainingFrames * avgSecondsPerFrame;

				//divide by Workers working on job to get 'real' time
				estimatedRemainingTime = estimatedQueuedRemaining / renderingChunks;
			}
            else
            {
                estimatedRemainingTime = Double.MaxValue;
            }

            return estimatedRemainingTime;
        }

Is there a delay on populating the estimate rendering time or it doesn’t show anything in the Monitor job panel?

Thanks for the information.

It doesn’t show anything in all of the time I’ve used the AE plugins.

For example, this is all I see in the jobs panel.

image

So entering this into my script I get close, it’s obviously not perfect but close enough for my needs.

guess-o-meter
Running Time (H:M:S) 0:8:17
Complete %: 6.83
Start: Time: 2023-02-12 10:21:59.681608
ETA: 2023-02-12 12:23:16.401959
Time to Go: 1:52:59.720351

I would expect these to take between 1 and 2 hours.