resutil.py - Resolve API Utilities Script - Python

Get answers to your questions about color grading, editing and finishing with DaVinci Resolve.
  • Author
  • Message
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

resutil.py - Resolve API Utilities Script - Python

PostWed Nov 20, 2019 5:18 pm

YOU MUST HAVE A PAID COPY OF STUDIO FOR THIS WORK. I'VE ONLY TESTED IT ON 16.1.1.005

So,
I dug into the API. I know there are a lot of complaints about the scant documentation. It's... not so bad IMHO. Don't get me wrong, it could be a LOT better, but it's really not that bad.

This script will be expanded on as time goes on, I may even decide to do a GUI at some point.
This is what I whipped up pretty quick and there aren't a lot of checks for validity yet. Code is commented to death so that people can see what is going on, since there aren't many examples or documentation sets for Resolve.

The API has a lot in it, way more than documented...you just have to dig into it.

I will be doing some additional documentation and examples for how you can access or do certain things on my YouTube channel located here: http://youtube.com/pressreset.

I will be doing a video on this script with in depth information on how to install it and get it working.

Right now, this code was developed on a Windows machine, but can easily work on a Mac with a few tweaks. I'll get to it at some point as I really do need it work on on Linux/FreeBSD.

https://github.com/pressreset/resutil

Run script with:
Code: Select all
resutil.py <option>


This is a script I started working on last night which will do various functions for Resolve.
Right now it will do the following:
Code: Select all
fileinit

This creates directory structure for a project where you store your projects based on the config.yml file .

Here is what it will do when you fileinit:
Look in the config.yml for filesystem location and project directory structures.
Make all relevant directories for a named project, so you can just go and drop your assets in.

Code: Select all
resolveinit (Resolve must be running locally or remote!)

This is the second process to run and it will build a Resolve project with the values from config.yml.

Here is what it will do when you resolveinit:
Look in the config.yml for all config variables.
Check that relevant project on filesystem exists.
Initiate a connection to Resolve's backend scripting process.
Load the Project Manager.
Create a new project based on whatever name you have supplied.
Set setting options for the project (frame rate etc)
Load the media pool.
Select all your footage inside the project's directories.
Create bins for each folder and sub folder, ingesting footage along the way.
If you have specifically told it to inside the config and you have set up a trigger folder it will:
Take all your Master Timeline/A Camera footage and assemble that onto a new timeline of your naming.
Look in config.yaml and create any additional bins that don't exist on filesystem (eg, titles etc).
Switch to whatever page tab you have selected to start your edit on.
Save the project.

Yes, I know... I'm kind of scant with documenting here also... but I will be adding to the documentation on github as it expands so that's where to look for more in depth documentation.

Here are some of the things I plan on adding that I need/want scripted:

clone - Offload footage from a card or other media to project folder and auto ingest.
export - Export a specific project #/current project.
archive - Archive a specific project #/current project.
render - Render a project # or submit it to render server in various formats.
proxy - Render proxies for project #, local or remote and organize them.
normal - Normalize all audio tracks to input gain individually.
average - Normalize all audio tracks input averaged.
buff - Normalize, place compressor and limit tracks.
abnormal - Undo normalize on all audio tracks.
delorean - Takes a project to a specific version, re-opens at that version.
docbrown - Takes a project back to earliest version you imported/started at.
marty - Takes a project back to the future... to the newest version.
biff - Doesn't actually do anything, just in the way.
mouth - Selects a project, takes timeline you select and reframes for Instagram.
chunk - Takes a project and breaks it into chunked timelines based on markers you've added.
camshow - Auto build multicam clip sequences for all your clips, make timeline.
shadow - Shadow a timeline to another project.
bumpit - Insert your bumpers/leaders/motion graphics automatically.
mumps - Same as bumpit, but only motion graphics, and all on new track.
reducio - Archive a project by #, and bundle a zip for internet transfer.
presto - Imports archive, submits render automatically then removes project from database.
changeo - Imports archive, cleans white space, dead clips, cut-throughs etc, re-archives.
correcto - Apply auto-correct to all clips on a timeline.
7of9 - Apply a specific REC709 lut to everything automatically.
ventura - Apply an ACE tranformation automatically.
crayola - Batch color your clips based on bins/metadata.
config - Change any config variable for whatever project from here.
att - Connect to a remote machine and run this script.
shazam - Run a whole batch of commands in sequence from the config file.
Offline
User avatar

Igor Riđanović

  • Posts: 1596
  • Joined: Thu Jul 02, 2015 5:11 am
  • Location: Los Angeles, Calif.

Re: resutil.py - Resolve API Utilities Script - Python

PostWed Nov 20, 2019 11:04 pm

That's very cool. The current features are very similar to what Resolve Projector does.
www.metafide.com - DaVinci Resolve™ Apps
Offline

Mel Matsuoka

  • Posts: 1179
  • Joined: Wed Aug 22, 2012 9:54 am
  • Location: Clarence, NY

Re: resutil.py - Resolve API Utilities Script - Python

PostWed Nov 20, 2019 11:31 pm

Nice work! Thanks for this...this will be great as a working starting point for building functional scripts for Resolve!


Sent from my iPhone using Tapatalk Pro
Resolve Studio 18.0.2 / Decklink Mini Monitor / 14" 2021 Macbook Pro Max (macOS 12.5.1, M1 Max) / 32GB RAM
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 5:25 am

Igor Riđanović wrote:That's very cool. The current features are very similar to what Resolve Projector does.


I found Resolve Projector too limited. It only makes bins.
This does whole project creation, filesystem structure, project naming, bin building, sets up your entire project and filesystem. All you have to do is put your assets into the folders once you run fileinit and it does all the rest.
But, that's only what it does right now. I only had a couple hours to build that.
There are a lot of planned features on the list there.
So I'll be building in a ton of functionality.
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 5:27 am

Mel Matsuoka wrote:Nice work! Thanks for this...this will be great as a working starting point for building functional scripts for Resolve!



Sent from my iPhone using Tapatalk Pro


Thanks and sure, if you fork the code, please distribute it as I've done so others benefit.
It's GPLv2.

There are whole ton of planned features, and I plan on doing some docs and deeper dive videos into the Resolve API on my YouTube channel since... there's limited info.
Offline
User avatar

Igor Riđanović

  • Posts: 1596
  • Joined: Thu Jul 02, 2015 5:11 am
  • Location: Los Angeles, Calif.

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 6:49 am

PRESSRESET wrote:I found Resolve Projector too limited. It only makes bins.


It creates a new project at user specified size and frame rate. Then adds any number of bins based on a template, and imports media into specific bins.
www.metafide.com - DaVinci Resolve™ Apps
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 7:55 am

Igor Riđanović wrote:
PRESSRESET wrote:I found Resolve Projector too limited. It only makes bins.


It creates a new project at user specified size and frame rate. Then adds any number of bins based on a template, and imports media into specific bins.


Huh. I was under the impression it only made bins. Well, that's cool. Thumbs up for that. Point and click adventure. I may do a GUI in QT for this... but I've only had about 4-5hrs into building it so far, and the plan is to make it do a whole ton of stuff.
Offline

Hendrik Proosa

  • Posts: 3015
  • Joined: Wed Aug 22, 2012 6:53 am
  • Location: Estonia

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 8:08 am

I have a bit off-topic question, but at the same time tied to Resolve Python API...

Is it possible to auto-crawl through all exposed classes, methods and whatnot in api and automatically build documentation or even basic list of availables from it? "Discoverable" api is nice (thanks to python for this), but it is kind of like dodging in the dark hoping something sticks. Current API documentation is pretty bad (not THAT bad, but it would mean no docs at all) and for some reason I have a feeling there is more to it than one A4 piece of paper worth.
I do stuff.
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 8:17 am

Hendrik Proosa wrote:I have a bit off-topic question, but at the same time tied to Resolve Python API...

Is it possible to auto-crawl through all exposed classes, methods and whatnot in api and automatically build documentation or even basic list of availables from it? "Discoverable" api is nice (thanks to python for this), but it is kind of like dodging in the dark hoping something sticks. Current API documentation is pretty bad (not THAT bad, but it would mean no docs at all) and for some reason I have a feeling there is more to it than one A4 piece of paper worth.


I am going to build a bunch of examples and will dump all the methods and classes for the current API. It will be on github. I'll probably do a video on it. In the short term, you can GetHelp() by:

Starting Resolve:
Open IDLE shell

Code: Select all
>>> import sys
>>> import DaVinciResolveScript as GetResolve
>>> resolve = GetResolve.scriptapp('Resolve')
>>> print(resolve.GetHelp())

Classes:
  PolylineMask
  Loader
  QueueManager
  RenderJob
  RenderSlave
  FloatLUTMacroFrame
  Parameter
  SourceOperator
  Operator
  PlainOutput
  Link
  PlainInput
  SplineEditorView
  TimelineView
  FloatViewFrame
  FuView
  FuFrame
  Preview
  GLImageViewer
  GL3DViewer
  GLViewer
  GLView
  GLPreview
  TimeRegion
  Object             - The root class of all objects in FusionScript
  List
  FlowView
  TransformMatrix
  LUT
  LookUpTable
  Image
  Gradient
  BezierSpline
  IOClass
  UITimer
  UIFont
  UITabBar
  UITreeItem
  UITree
  UIDoubleSpinBox
  UISpinBox
  UITextEdit
  UILineEdit
  UICheckBox
  UIComboBox
  UIColorPicker
  UISlider
  UILabel
  UIButton
  UIStack
  UIDialog
  UIWindow
  UIWidget
  UIItem
  UIManager
  UIActionTree
  UIActionStrip
  Event
  ActionMode
  Action
  ConfigItem
  ActionManager
  PlaybackManager
  BinManager
  BinItem
  Registry           - Represents a type of object within Fusion
  MailMessage
  ImageCacheManager
  HotkeyManager
  Composition
  FontList
  Fairlight
  ChildGroup
  ChildFrame
  FusionUI
  Fusion
  ResolveScriptable
  Timeline item
  Folder
  Timeline
  MediaPool
  Project
  Media pool item
  ProjectManager
  MediaStorage
  Resolve
  ScriptServer

>>>
Offline
User avatar

roger.magnusson

  • Posts: 3354
  • Joined: Wed Sep 23, 2015 4:58 pm

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 12:38 pm

Love the feature names. :D
Unfortunately there are several of those features that can't really be implemented using the current API. I hope it improves but progress has been very slow the last year or so.

There are also a lot of problems with what we already have. I haven't verified in the latest versions, but for instance you can't find out in which project folder the current project is located. You can't reliably load a project if it has the same name as another project in another folder, it just loads whichever project with that name the database returns, ignoring the folder path. This is for PostgreSQL, maybe it's different for disk databases.
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 3:47 pm

roger.magnusson wrote:Love the feature names. :D
Unfortunately there are several of those features that can't really be implemented using the current API. I hope it improves but progress has been very slow the last year or so.

There are also a lot of problems with what we already have. I haven't verified in the latest versions, but for instance you can't find out in which project folder the current project is located. You can't reliably load a project if it has the same name as another project in another folder, it just loads whichever project with that name the database returns, ignoring the folder path. This is for PostgreSQL, maybe it's different for disk databases.


Most of the features on that list can be implemented. The only one there that can't be implemented right now and may require either BM to update the API or some Python magic is making multicam clip sequences... but I can talk to postgres... it's just a database. You can move quite literally anything around inside the database tables you don't need the API to do everything. Just talk directly to PG.

I don't have an issue loading projects in folders... Are you passing in a string or the object and are you traversing into the sub folder?

EDIT:
Ok, just created a testing scenario where I made a fresh database inside PostGres.
Created a project 'Test Project'
Created a folder 'Test Folder'
then inside that created a project 'Test Project'
Returned to rootdir, created a second folder 'Test Project 2'
then inside that created a project 'Test Project'

So there are 3 instances of 'Test Project'

Test Project - Timeline name 'Test Project Root Folder'
-Test Folder
--Test Project - Timeline name 'Test Folder Test Project'
-Test Folder 2
--Test Project - Timeline name 'Test Folder 2 Test Project'

If I attempt to load a project 'Test Project' it works.
If I attempt to load a project 'Test Folder/Test Project' it works.
If I attempt to load a project 'Test Folder 2/Test Project' it works.
If I attempt to load a project 'Test Project' while 'Test Folder 2/Test Project' is open, it doesn't load.
This is because the current project opened is already named 'Test Project'.
Do what the Project Manager does when you switch databases.
Open a project 'Untitled Project'.
Then open your other project.

projectManager.GotoRootFolder()
projectManager.LoadProject('Test Project')
projectManager.CreateProject('Untitled Project')
projectManager.OpenFolder('Test Folder 2')
projectManager.LoadProject('Test Project')

Works great.
Last edited by PRESSRESET on Thu Nov 21, 2019 4:16 pm, edited 1 time in total.
Offline
User avatar

roger.magnusson

  • Posts: 3354
  • Joined: Wed Sep 23, 2015 4:58 pm

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:04 pm

Sure, if you want to hack the database you can do almost anything. I'm not sure the larger facilities would allow apps like that though, it's a bit risky if you're doing anything else but reading from it.

I'll see if I can recreate the project loading issue.
Offline

Mel Matsuoka

  • Posts: 1179
  • Joined: Wed Aug 22, 2012 9:54 am
  • Location: Clarence, NY

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:16 pm

I really hope BMD continues to expand the Scripting API. If it can mature to the level of what After Effects scripting API is capable of, it will truly be a game changer for NLEs. I’m surprised Adobe hasn’t really done much with scripting in Premiere, because there have been countless times I wish I could automate tasks in Premiere using a scripting interface.


Sent from my iPhone using Tapatalk Pro
Resolve Studio 18.0.2 / Decklink Mini Monitor / 14" 2021 Macbook Pro Max (macOS 12.5.1, M1 Max) / 32GB RAM
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:17 pm

roger.magnusson wrote:Sure, if you want to hack the database you can do almost anything. I'm not sure the larger facilities would allow apps like that though, it's a bit risky if you're doing anything else but reading from it.

I'll see if I can recreate the project loading issue.


I wouldn't call talking to postgres 'hack(ing) the database". It's a postgres database... I already don't use Resolve's built in database installer. I use a remote postgres cluster with a distributed cache on FreeBSD.

Please check out my response. Just checked it. :)
Last edited by PRESSRESET on Thu Nov 21, 2019 4:20 pm, edited 1 time in total.
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:18 pm

Mel Matsuoka wrote:I really hope BMD continues to expand the Scripting API. If it can mature to the level of what After Effects scripting API is capable of, it will truly be a game changer for NLEs. I’m surprised Adobe hasn’t really done much with scripting in Premiere, because there have been countless times I wish I could automate tasks in Premiere using a scripting interface.


Sent from my iPhone using Tapatalk Pro


There are a ton of things it can do that aren't in that doc. There are some things that can't be done without database interaction.
Offline
User avatar

iddos-l

  • Posts: 798
  • Joined: Sat Mar 30, 2019 7:55 pm
  • Real Name: iddo lahman

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:28 pm

PRESSRESET wrote:
There are a ton of things it can do that aren't in that doc. There are some things that can't be done without database interaction.


Hi
Can you share what things can you do that aren’t in the docs and aren’t sql manipulation?
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:37 pm

iddos-l wrote:Hi
Can you share what things can you do that aren’t in the docs and aren’t sql manipulation?


Have a look above where I explained how to use .GetHelp(), then start probing. There are a number of things you can do through Fusion's API, not just Resolve's API. Fusion is built into Resolve and many people who use Fusion use scripts. Resolve's script API is just Fusion API with a class called Resolve to control things that weren't already built into Fusion API.
Offline
User avatar

roger.magnusson

  • Posts: 3354
  • Joined: Wed Sep 23, 2015 4:58 pm

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:39 pm

Don't let my negativity put you down. It's dark for like five months here in Sweden and it probably reflects on my outlook. :lol:

I call it hacking because there's absolutely no way that BMD could officially give customer support to someone with a corrupted database if the customer has made changes to it using unsupported tools. Regardless if the tool is responsible or not.
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 4:45 pm

roger.magnusson wrote:Don't let my negativity put you down. It's dark for like five months here in Sweden and it probably reflects on my outlook. :lol:

I call it hacking because there's absolutely no way that BMD could officially give customer support to someone with a corrupted database if the customer has made changes to it using unsupported tools. Regardless if the tool is responsible or not.



lol, it's all good and sure, I get that and completely understand it.

I am trying to do everything that I can to NOT touch things in the database because they DO make table/column changes. If I had scripts which did something, it would need to send the user a warning they can screw things up AND it would need to be VERY thorough about how it does it's things in checking. Like, not allowing the user to do certain things if the Resolve version string doesn't match etc, snap shot backing up tables...

Have a look at my answer above if you are having trouble with that folder/project duplicate issue.That's how you fix it. :)
Offline
User avatar

iddos-l

  • Posts: 798
  • Joined: Sat Mar 30, 2019 7:55 pm
  • Real Name: iddo lahman

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 5:04 pm

PRESSRESET wrote:Have a look above where I explained how to use .GetHelp(), then start probing. There are a number of things you can do through Fusion's API, not just Resolve's API. Fusion is built into Resolve and many people who use Fusion use scripts. Resolve's script API is just Fusion API with a class called Resolve to control things that weren't already built into Fusion API.


Oh Ok I see,
I meant resolve API docs.
The fusion API is well documented.
There is a whole manual for it.
“Fusion 8 scripting guide.

I know about python’s help()

If In case you encounter a class or method that is not in the resolve API I would be happy to hear of it.



Sent from my iPhone using Tapatalk
Offline
User avatar

PRESSRESET

  • Posts: 26
  • Joined: Mon Nov 11, 2019 9:53 pm
  • Real Name: Preston Allen

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 5:58 pm

iddos-l wrote:Oh Ok I see,
I meant resolve API docs.
The fusion API is well documented.
There is a whole manual for it.
“Fusion 8 scripting guide.



Yeah, that's the most current guide, but I have heard there are a couple things that are out of date. I have not come across anything that is out of date yet though. Either way, inside the API dragons be.
Offline
User avatar

Igor Riđanović

  • Posts: 1596
  • Joined: Thu Jul 02, 2015 5:11 am
  • Location: Los Angeles, Calif.

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Nov 21, 2019 7:45 pm

Hendrik Proosa wrote:Is it possible to auto-crawl through all exposed classes, methods and whatnot in api and automatically build documentation or even basic list of availables from it?


The issue I see with using introspection or any other ways to map out undocumented classes and methods is that they may be undocumented for a reason and may be deprecated in future releases. As skimpy as the readme doc is, the BMD has been diligently and regularly expanding it.
www.metafide.com - DaVinci Resolve™ Apps
Offline
User avatar

Will Tejeda

  • Posts: 481
  • Joined: Fri Jul 19, 2013 10:40 pm
  • Location: Orlando, FL

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Dec 26, 2019 9:52 pm

Is there any way to configure where resolve is looking for python ?

when I open the console, resolve doesn't think my python3 is installed and just asks me to download .

Even though python3 works everywhere else on my machine.

Does resolve even need to know that? I'm basically pulling at straws at this point to see why i can't even load the library

I've tried linking directly to fusionscript.dll and bypassing the environment variables altogether and even that doesnt work

I added a bunch of print statements to the original get resolve and DaVinci resolve script python files to see where it's failing...

and it seams that everything doesnt run after the imp loader which doesnt make sense
Will Tejeda
DP/Cinematographer
Offline
User avatar

Igor Riđanović

  • Posts: 1596
  • Joined: Thu Jul 02, 2015 5:11 am
  • Location: Los Angeles, Calif.

Re: resutil.py - Resolve API Utilities Script - Python

PostThu Dec 26, 2019 11:30 pm

Wasn't imp deprecated in Python 3.x?
www.metafide.com - DaVinci Resolve™ Apps
Offline
User avatar

Will Tejeda

  • Posts: 481
  • Joined: Fri Jul 19, 2013 10:40 pm
  • Location: Orlando, FL

Re: resutil.py - Resolve API Utilities Script - Python

PostTue Dec 31, 2019 10:01 pm

So what would be the current way to do it with python 3?



So it seems like this one line is the reason I haven't ever been able to get this to work?

can anyone confirm if they're using python3 successfully ?

Image

I'm also curious how this even works behind the scenes ? is it a client-server type relationship betweem your script and resolve.... ?
Will Tejeda
DP/Cinematographer
Offline
User avatar

Igor Riđanović

  • Posts: 1596
  • Joined: Thu Jul 02, 2015 5:11 am
  • Location: Los Angeles, Calif.

Re: resutil.py - Resolve API Utilities Script - Python

PostWed Jan 01, 2020 7:58 am

Use importlib in Python 3.4. Python 3.3 and lower have imp.

I suppose you can describe the relationship between the script and the Resolve Studio as client-server. The script makes a request and the Resolve responds.
www.metafide.com - DaVinci Resolve™ Apps
Offline
User avatar

Will Tejeda

  • Posts: 481
  • Joined: Fri Jul 19, 2013 10:40 pm
  • Location: Orlando, FL

Re: resutil.py - Resolve API Utilities Script - Python

PostFri Jan 03, 2020 8:48 am

With python 2 essentially taking it's final laps this year and most versions current versions of python not having that explicit importing funcionality, it seems like a bit of an oversight that this hasn't been changed already.

I'm also having a hard time with Resolve even finding my python 3 installs (I've tried installing 3.6 as a separate install ) in the console.

I feel like there should be a way for you to set the python path outside of just environment variables like most IDE's do. Which would also make it great for testing scripts with different versions of python when needed. Maybe something like a python path setting in preferences side of things
Will Tejeda
DP/Cinematographer

Return to DaVinci Resolve

Who is online

Users browsing this forum: Bing [Bot], Ellory Yu, govind, jtlondres, panos_mts, shikawkee, VMFXBV and 216 guests