Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Video Creation #25

Merged
merged 27 commits into from
Feb 26, 2018
Merged

Fix Video Creation #25

merged 27 commits into from
Feb 26, 2018

Conversation

cjmayo
Copy link
Collaborator

@cjmayo cjmayo commented Feb 19, 2018

This is on top of #24.

Hopefully fixes #7, transcode option --use_rgb is not supported in 1.1.7 and problems with the image list too. As latest transcode is I believe 7 years old and looks like it won't work with ImageMagick 7 I've changed the code to use ffmpeg direct. The video is set to webm format.

I removed the threading and used GLib.spawn_async instead. As well as simplifying the code a plus is that it can now detect success/failure and the user can cancel generation. I haven't implemented progress reporting though.

Added the ability to type the video filename straight into the Directory dialog.

Fixed a bug in that all the settings in the Director dialog were set to 0 on opening.

Usual tidy up and fix as many deprecation warnings as possible.

This does generate video but worth checking it is as expected.

The ffmpeg file list format can support durations for each listed frame so some savings may be possible by using that.

Creating objects as a side effect of importing a module creates a new
object each time and can lead to unexpected behaviour.

Remove attempted workaround.
Simplify the layout using Gtk.Paned and reduce the number of Gtk.Boxes.

Allows user to expand the settings.
Fix strange behaviour from partially initialised dialogs by replacing
global management code with straightforward use of objects.
PainterDialog needs to be non-modal to allow the user to click on the
fractal.
BrowserDialog objects are parentless to allow the user to reposition
away from the fractal and see applied changes.

Current formula and file are selected when the dialog is opened.

A new dialog is created on each use. Converting to an object level
dialog that is hidden between uses would require a review of the dialog
and browser_model.
Ensure they remain fully in scope after adding to the MainWindow
toolbar.
This reverts commit a89e39c.

A workaround no longer needed now that fourway is a widget.
Options passed to transcode no longer work. transcode has not been
updated for years, has been removed from Debian, and uses ffmpeg itself.
If the file chooser dialog is opened start with the entered file.
Simplify layout using a GtkButtonBox.
@cjmayo
Copy link
Collaborator Author

cjmayo commented Feb 20, 2018

Video uses VP9, mention that in docs and commit message.

All values were being set to zero.
Specifying the video codec seems necesary to produce a quality
output. Use open WebM format with VP9 encoding

Also:
- captures output status from ffmpeg
- kills ffmpeg when user quits
Avoid user having to enter all the details again.
@edyoung edyoung merged commit 2f9289f into fract4d:python3 Feb 26, 2018
@edyoung
Copy link
Member

edyoung commented Feb 26, 2018

Sorry for delay, I have been out of town. I have added you to the collaborators list, please feel free to make any changes to python3 branch. Hopefully we can merge that back to master fairly soon...

@cjmayo
Copy link
Collaborator Author

cjmayo commented Feb 27, 2018

No hurry. I've got another batch on the go - I think that will then be it for the minimum needed to switch over to Python 3 - assuming the selection box performance is acceptable now. Even a few minor improvements included!. Just need a bit more time to tidy it up.

Thanks for the invite.

@cjmayo
Copy link
Collaborator Author

cjmayo commented Mar 4, 2018

I've pushed to the python3 branch. That is all I have (except something on the icons which I will post on that issue) - which is just as well because it is quite a lot. N.B. to review especially: I have removed unused code from both fract4d and frac4dgui, saving what looked like it was stand-alone to fractutils. Also removed fractutils from installation in setup.py, some of it still needs conversion and I think at least the executables need to go somewhere other than site-packages. I'll summarise some of the more interesting items to try and make it a bit easier to digest:

User visible

Additions:

Main window size is saved on exit and restored on startup
Explorer menu and toolbar items work together
Option to set the cache directory
Add filter for video file
Queue dialog automatically hides when render complete

Changes:

Don't install fractutils. Conversion to Python 3 is not complete and installing executables in site-packages is not very convenient.
Updated README for requirements

Fixes:

Save as hi-res was overwriting Save as current dialog
Allow director dialog to be hidden and then be reshown with current settings (needed to add multiple keyframes from current fractal)
Restore display size on return from full screen mode

Developer

Changes:

Rewrite comand-line options with argparse
Write all test output to temporary directory
async parameter renamed to asynchronous because async will be a reserved word in Python 3.7
Unused Python scripts removed from fract4d and fract4dgui, if executable moved to fractutils.
gnofract4d now creates a fractconfig.T object and passes it to MainWindow or fractmain.T instead of it being a side effect of importing fractconfig.
GUI user preferences are now an object belonging to MainWindow instead of a side effect of importing preferences.

Fixes:
Get profiling working with Python 3

@cjmayo cjmayo deleted the video branch November 21, 2018 17:30
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Feb 17, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Feb 17, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Feb 17, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Feb 20, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 9, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 9, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 9, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 20, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 20, 2020
da2ce7 pushed a commit to da2ce7/fract4d-gnofract4d that referenced this pull request Apr 20, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants