Giter VIP home page Giter VIP logo

filmulator-gui's Introduction

filmulator-gui

A Qt Quick GUI adaptation of Filmulator --- a film emulator with all of the positives and none of the negatives.

Filmulator accepts raw files from cameras and simulates the development of film as if exposed to the same light as the camera's sensor. For various reasons, this inherently brings about several benefits:

  • Large bright regions become darker, compressing the output dynamic range.
  • Small bright regions make their surroundings darker, enhancing local contrast.
  • In bright regions, saturation is enhanced, helping retain color in blue skies, brighter skin tones, and sunsets.
  • In extremely saturated regions, the brightness is attenuated, helping retain detail e.g. in flowers.

The program's design ideology is to have the best tool for any job, and only that one tool. The tradeoff here is a slight decrease in flexibility, but gaining a greatly simplified and streamlined user interface.

Filmulate overview

Building Filmulator

This program depends on:

libtiff
libgomp
libexiv2
libjpeg
libraw
librtprocess 0.10
liblensfun 0.3.95 exactly for Windows, and the latest git version for Linux and MacOS
libcurl
libarchive

We highly encourage you to compile libraw yourself to ensure you have support for recent cameras.

It also requires Qt 5.15 or newer: open the .pro file from Qt Creator and select Build in order to run it. You may have to initialize the build configurations upon first loading the project; I suggest you add the -j# flag to the Make build parameters to speed compilation.

A note: Use a standalone git client to clone the repository initially, and then you can use Qt Creator's built-in git tools.

Building with CMake:

Inside the filmulator-gui directory, create a build directory.

Run cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr .. If you are using a binary release of Qt from them, use -DCMAKE_PREFIX_PATH=[path to the qt dir and version and arch] as an argument.

Then run make and run make install as root.

Building on MacOS:

You'll need to know the locations of a couple things in order to build this. They're not hard to find, just use Finder's search functionality to find them. Wherever they are, we need the real dynamic libraries (.dylib), not the symbolic links that point to them. That's important! If you find a symbolic link, follow it to get the real dynamic library. We need:

libomp.dylib: it should be somewhere like /opt/local/lib/libomp.dylib. If you installed from homebrew, that's probably where it is. Replace wherever it is into -DOpenMP_libomp_LIBRARY= and -fopenmp below.

libarchive.dylib: If you installed from homebrew, it probably needs to be /usr/local/Cellar/libarchive/3.4.3/include like below. Put this path into -DLibArchive_INCLUDE_DIR.

librtprocess: This needs to point towards the .dylib file for librtprocess. If you installed librtprocess from source, it's probably in /opt/local/lib/librtprocess.0.0.1.dylib like below. Wherever it is, put it into -Dlibrtprocess_dylib.

QT: If you installed this from homebrew, it's probably at /usr/local/Cellar/qt/5.13.1/. Wherever it is, put it in the export QT= command below.

Once you have all those figured out, the following commands, edited according to your locations detailed above, should build the Filmulator application on macOS.

  1. cd ~/filmulator-gui/filmulator-gui
  2. mkdir build && cd build
  3. export QT=/usr/local/Cellar/qt/5.13.1
  4. cmake -DCMAKE_BUILD_TYPE="RELEASE" -DCMAKE_CXX_COMPILER="clang++" -DCMAKE_CXX_FLAGS=-I/opt/local/include -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp /opt/local/lib/libomp/libomp.dylib -I/opt/local/include" -DOpenMP_CXX_LIB_NAMES="libomp" -DOpenMP_libomp_LIBRARY=/opt/local/lib/libomp/libomp.dylib -DCMAKE_INSTALL_PREFIX=/opt/local -DCMAKE_SHARED_LINKER_FLAGS=-L/opt/local/lib -DCMAKE_PREFIX_PATH=$(echo $QT/lib/cmake/* | sed -Ee 's$ $;$g') -G "Unix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=1 -DLibArchive_INCLUDE_DIR=/usr/local/Cellar/libarchive/3.4.3/include -Dlibrtprocess_dylib=/opt/local/lib/librtprocess.0.0.1.dylib ..
  5. make -j8 install

Using Filmulator

First, import your photos. You can select directories to import, or individual files. You can also select whether to leave the photos where they are, or to copy them into a directory structure based upon the date captured, in both the Destination Directory and the Backup Directory. These can be sorted correctly by setting the Camera UTC Offset to the timezone you set the camera's clock in, and the Local UTC Offset to the timezone where the photo was captured. Select the source directory (your card, or a directory containing your photos), and pressing the Import button will begin pulling the photos into the database and writing out the source directory.

If you choose to enqueue imported photos before you import, you can skip the Organize tab, but you should check it out anyway.

Next, go to the Organize tab, where you can select photos to enqueue. The calendar and the date histogram let you select photos from a given day, while the timezone slider lets you adjust how to 'slice' the day: it always displays from midnight to midnight.

To enqueue photos, double-click on them in the grid view in the Organize tab. To remove them from the queue, right-click on the queue entry and select Remove from queue. From either the Organize tab or from the queue, you can rate images from zero through five, and you can filter the organize tab to show only photos above a certain rating.

At this point, go to the Filmulate tab, which lets you process your photos. Double-click on a photo in the queue to load it through the Filmulation process, and set the sliders to your taste.

The tools are arranged in pipeline order: the processing they control occurs from top to bottom. Thus, we advise you mostly work top-down through the tools.

Tools and features of interest:

  • In-pipeline mini histograms: They display the distribution of the pixel brightnesses right before and right after the filmulation algorithm. Use the first one to adjust exposure compensation and highlight recovery, and use the second one to adjust the output clipping.
  • Highlight Recovery: If nothing is clipped, leave highlight recovery at 0. If there is clipping, skip right to 3. If there are clipped skin tones, 9 tends to work well, but it's really slow. 1 and 2 are useless, while 4-8 are weighted blends of 3 and 9.
  • Film Area: Here's where it gets good. The program defaults to an approximate equivalent of 36x24 film. If you reduce the film size, the algorithm accentuates brightness in larger regions. If you increase the film size, the whole image becomes slightly flatter (reduced dynamic range), but it emphasizes smaller details.
  • Drama: This is effectively the strength of the 'filminess'. Higher values reduce the dynamic range of the output; you'll see the "post-filmulator" histogram shrink towards the left. With the default film area, feel free to turn this all the way up to 100 if you need to bright down the highlights, but with large-format equivalent film area it starts to get too flat-looking past 50.

If you want the UI to appear larger on a high-pixel density display, use the User Interface Scale slider in the Settings tab to set a desired scale, save the setting, and then restart the program. While it cannot automatically read your display pixel density, this setting enables otherwise full HiDPI support.

Status

If told to make a version number for it right now, I'd put it as 0.9.0.

The editing functionality is nearly complete, missing only noise reduction. The library functionality may still be expanded and massaged, however.

But in the meantime, feel free to play around. Report any new bugs or suggestions you may have either on the subreddit or on the pixls.us forum!

filmulator-gui's People

Contributors

aferrero2707 avatar benitoite avatar carvac avatar cecca avatar cryptomilk avatar dconrad5 avatar freddii avatar heckflosse avatar hfiguiere avatar kant avatar kotton21 avatar mermerico avatar probonopd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

filmulator-gui's Issues

Queue view desyncs from backend

Sometimes, removing an image not at the front of the queue appears to remove an adjacent one (usually to the left of the selected one).

However, the correct one is in fact removed, but it's not corrected unless the program is restarted.

Allow input of more precise values

It can be hard to get a specific value using the sliders. Consider adding text input (so the user can type in a specific value) or using a key modifier to slow down the slider.

Visual indication of zoom

Show a box in the corner of the image with the overall image and the current view within it.

Aside: Remove code that was supposed to reset view but doesn't work. We don't want to reset the view

Provide visual indication when enqueuing

Currently the queue flickers (a small bug that's currently helpful), but it's not obvious what has happened if the queue is running off the screen.

Options to consider:
Flash orange on the edge of the queue
Scroll queue to the newest queued item
Animate pictures "flying" to the queue while shrinking and fading

macstack: .ORF import causing crash when importing

Olympus format causing a crash, perhaps another example of LibRaw hitting the top of stack.
Example crashing ORF https://raw.pixls.us/getfile.php/2785/nice/Olympus%20-%20E-M10%20Mark%20II%20-%2016bit%20(4:3).ORF

From the console:

Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt.
You must not let any exception whatsoever propagate through Qt code.
If that is not possible, in Qt 5 you must at least reimplement
QCoreApplication::notify() and catch all exceptions there.

libc++abi.dylib: terminating with uncaught exception of type Exiv2::BasicError<char>: tiff directory length is too large
Abort trap: 6

Crash working on DNG files

Hello,
the software keeps crashing when I try to work on DNG files; the DNG files are files converted from Samsung NX1 (natively they are .SRW)
Launching Filmulator from the terminal, these are the messages I can see when the crash happens:

FilmImageProvider::requestImage Here? imagePipeline.cpp: Opening /media/sf_CondivisaInRete/SAM_1157.dng load start:2.8e-05 load time: 9.20721ImagePipeline::processImage: Demosaic complete. ImagePipeline::processImage: Prefilmulation complete. Initialization time: 1.07989 seconds Development time: 18.6551 seconds Develop time: 5.93951 seconds Diffuse time: 10.7072 seconds Layer mix time: 1.9574 seconds Agitate time: 0.049511 seconds Output density time: 0.434866 ImagePipeline::processImage: Filmulation complete. Request time: 32.6023 seconds qml: main.qml queueItem update url Warning: Exif tag Exif.Image.ProfileLookTableData not encoded terminate called after throwing an instance of 'Exiv2::BasicError<char>' what(): Size of Exif JPEG segment is larger than 65535 bytes Annullato (core dump creato)

Undo

Undo the operation on an individual tool.

UI – Tooltip

Hey @CarVac
We just met in LGM and I saw your talk there. One person came in the Q&A up with the info that your Tab is looking the same as your Buttons. I would add that your Tool-Tip also look the same. I think you care a lot about ui-design and probably we can start working on the UI. My suggestion here tries not to make your life hard. So I suggest just a subtle change (for now ;)

Usual differentiation in UI

This is NOT my suggestion! Just to show that usually there is a differentiation in UI if the function is different

Button

Screenshot 2019-06-02 at 13 20 34

Tooltip

Screenshot 2019-06-02 at 13 20 18

Tab

Screenshot 2019-06-02 at 13 19 51

Suggestion

A – Indication-Corner

Change the top-left corner (or the one next to the thing you'd like to explain) to a hard edge not rounded.
corner

B – Readability

Remove transparency of the background. The transparency is distracting and makes the text less readable
no_transparent

requested database does not belong to the calling thread

Hi,

I am currently packaging filmulator-gui for Solus and stumbled upon a runtime error (the packaging itself went smooth).

When I try to import a picture into Filmulator it fails and the console outputs the attached error. Could this be related to the fact that I install filmulator-gui to /usr/bin and the rest of the files to /usr/lib and filmulator-gui tries to setup its database somewhere in the /usr-folder where it doesn't have write permissions?

QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
QSqlQuery::value: not positioned on a valid record
importWorker no replace, doesn't exist
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
QSqlQuery::value: not positioned on a valid record
QSqlQuery::prepare: database not open
QSqlQuery::prepare: database not open
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
paramManager ProfTcaEnabled
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightRecovery
QSqlQuery::value: not positioned on a valid record
paramManager ProfTexposureComp
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtemperature
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialDeveloperConcentration
QSqlQuery::value: not positioned on a valid record
paramManager ProfTreservoirThickness
QSqlQuery::value: not positioned on a valid record
paramManager ProfTactiveLayerThickness
QSqlQuery::value: not positioned on a valid record
paramManager ProfTcrystalsPerPixel
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialCrystalRadius
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialSilverSaltDensity
QSqlQuery::value: not positioned on a valid record
paramManager ProfTdeveloperConsumptionConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTcrystalGrowthConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsilverSaltConsumptionConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtotalDevelopmentTime
QSqlQuery::value: not positioned on a valid record
paramManager ProfTagitateCount
QSqlQuery::value: not positioned on a valid record
paramManager ProfTdevelopmentSteps
QSqlQuery::value: not positioned on a valid record
paramManager ProfTfilmArea
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsigmaConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTlayerMixConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTlayerTimeDivisor
QSqlQuery::value: not positioned on a valid record
paramManager ProfTrolloffBoundary
QSqlQuery::value: not positioned on a valid record
paramManager ProfTblackpoint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTwhitepoint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTshadowsX
QSqlQuery::value: not positioned on a valid record
paramManager ProfTshadowsY
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightsX
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightsY
QSqlQuery::value: not positioned on a valid record
paramManager ProfTvibrance
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsaturation
QSqlQuery::value: not positioned on a valid record
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
paramManager FTfilePath
QSqlQuery::value: not positioned on a valid record
paramManager FTsensitivity
QSqlQuery::value: not positioned on a valid record
paramManager FTexposureTime
QSqlQuery::value: not positioned on a valid record
paramManager FTaperture
QSqlQuery::value: not positioned on a valid record
paramManager FTfocalLength
QSqlQuery::value: not positioned on a valid record
QSqlQuery::prepare: database not open
QSqlQuery::value: not positioned on a valid record
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
paramManager ProfTcaEnabled
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightRecovery
QSqlQuery::value: not positioned on a valid record
paramManager ProfTexposureComp
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtemperature
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialDeveloperConcentration
QSqlQuery::value: not positioned on a valid record
paramManager ProfTreservoirThickness
QSqlQuery::value: not positioned on a valid record
paramManager ProfTactiveLayerThickness
QSqlQuery::value: not positioned on a valid record
paramManager ProfTcrystalsPerPixel
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialCrystalRadius
QSqlQuery::value: not positioned on a valid record
paramManager ProfTinitialSilverSaltDensity
QSqlQuery::value: not positioned on a valid record
paramManager ProfTdeveloperConsumptionConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTcrystalGrowthConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsilverSaltConsumptionConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTtotalDevelopmentTime
QSqlQuery::value: not positioned on a valid record
paramManager ProfTagitateCount
QSqlQuery::value: not positioned on a valid record
paramManager ProfTdevelopmentSteps
QSqlQuery::value: not positioned on a valid record
paramManager ProfTfilmArea
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsigmaConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTlayerMixConst
QSqlQuery::value: not positioned on a valid record
paramManager ProfTlayerTimeDivisor
QSqlQuery::value: not positioned on a valid record
paramManager ProfTrolloffBoundary
QSqlQuery::value: not positioned on a valid record
paramManager ProfTblackpoint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTwhitepoint
QSqlQuery::value: not positioned on a valid record
paramManager ProfTshadowsX
QSqlQuery::value: not positioned on a valid record
paramManager ProfTshadowsY
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightsX
QSqlQuery::value: not positioned on a valid record
paramManager ProfThighlightsY
QSqlQuery::value: not positioned on a valid record
paramManager ProfTvibrance
QSqlQuery::value: not positioned on a valid record
paramManager ProfTsaturation
QSqlQuery::value: not positioned on a valid record
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::exec: database not open
QSqlQuery::prepare: database not open
QSqlQuery::prepare: database not open
QSqlQuery::prepare: database not open
QSqlQuery::exec: database not open
imagePipeline.cpp: Opening 
load start:5e-06
processImage: Could not read input file!
QSqlDatabasePrivate::database: requested database does not belong to the calling thread.
QSqlQuery::prepare: database not open
QSqlQuery::prepare: database not open
importFile SearchID:

Building on Debian 10

Hi Carlo,

Here's my summary on what is needed to build filmulator out-of-tree on Debian 10:

Install dependencies

$ sudo apt-get install cmake git libexiv2-dev libraw-dev qt5-default libtiff5-dev libjpeg-dev qtdeclarative5-dev libqt5sql5-sqlite qml-module-qtquick2 qml-module-qtquick-dialogs qml-module-qtquick-layouts qml-module-qtquick-controls qml-module-qtqml-models2

Also build and install librtprocess.

Prepare the sources

$ git clone https://github.com/CarVac/filmulator-gui.git
$ cd filmulator-gui/filmulator-gui
$ git checkout highlightrecovery

Patch FindExiv2.cmake:

diff --git a/filmulator-gui/cmake/Modules/FindExiv2.cmake b/filmulator-gui/cmake/Modules/FindExiv2.cmake
index b2f8bd3..fe03345 100644
--- a/filmulator-gui/cmake/Modules/FindExiv2.cmake
+++ b/filmulator-gui/cmake/Modules/FindExiv2.cmake
@@ -48,11 +48,11 @@ endif (EXIV2_LIBRARY)
 
 # Get the version number from exiv2/version.hpp and store it in the cache:
 if (EXIV2_INCLUDE_DIR AND NOT EXIV2_VERSION)
-    if (EXISTS ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h)
+#    if (EXISTS ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h)
         set(EXIV_VERSION_HEADER ${EXIV2_INCLUDE_DIR}/exiv2/exv_conf.h)
-    else()
+#    else()
         set(EXIV_VERSION_HEADER ${EXIV2_INCLUDE_DIR}/exiv2/version.hpp)
-    endif()
+#    endif()
 
     file(READ ${EXIV_VERSION_HEADER} EXIV2_VERSION_CONTENT)
 
$ mkdir build
$ cd build
$ cmake ..
$ make -j [NUMOFCORES]

Run it without installing

$ cd ..
$ ./build/filmulator-gui

This is just FYI. 😄

Best,
Flössie

Tint mouseover text is wrong

Running git-master as of 2016-12-30.

The mouseover tip text for "Tint" says that negative values are magenta, but the slider only goes down to 0.1. It looks like values < 1 are magenta.

Import crash: no data gets to jpeg write

Occasionally the pipeline doesn't output anything, and the jpeg library crashes when being asked to write nothing to the image. I think.

Rebuilding fixed it, but now there are two failed images in the database with no thumbs.

We need to catch the error and remove the failures from the database if it happens.

‘float log2(float)’ conflicts with a previous declaration

I checked out the master branch, ran qmake

Then, when I ran make, I got the following:

$ make
Makefile:1198: warning: overriding recipe for target 'install_itemfolder_01'
Makefile:1189: warning: ignoring old recipe for target 'install_itemfolder_01'
Makefile:1202: warning: overriding recipe for target 'uninstall_itemfolder_01'
Makefile:1193: warning: ignoring old recipe for target 'uninstall_itemfolder_01'
g++ -c -pipe -std=c++11 -DTOUT -O3 -fprefetch-loop-arrays -fopenmp -fno-strict-aliasing -O2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I. -Iqtquick2applicationviewer -isystem /usr/include/qt -isystem /usr/include/qt/QtQuick -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtQml -isystem /usr/include/qt/QtNetwork -isystem /usr/include/qt/QtSql -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o vibranceSaturation.o core/vibranceSaturation.cpp
core/vibranceSaturation.cpp: In function ‘float log2(float)’:
core/vibranceSaturation.cpp:93:19: error: ‘float log2(float)’ conflicts with a previous declaration
 float log2(float i)
                   ^
In file included from core/filmSim.hpp:26:0,
                 from core/vibranceSaturation.cpp:1:
/usr/include/c++/6.1.1/cmath:1542:3: note: previous declaration ‘constexpr float std::log2(float)’
   log2(float __x)
   ^~~~
make: *** [Makefile:1049: vibranceSaturation.o] Error 1

MacOS: Crashes & imports not displayed

I thought I'd give building filmulator-gui on mac...
This is a crash when trying to start up filmulator-gui built on mac Mac OS X 10.12.6 w/ Qt 5.11.0. System crash report:

Process:               filmulator-gui [62965]
Path:                  /Users/USER/*/filmulator-gui.app/Contents/MacOS/filmulator-gui
Identifier:            kd6kxr.filmulator-gui
Version:               0
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           filmulator-gui [62965]
User ID:               501

Date/Time:             2018-09-12 20:53:35.061 -0700
OS Version:            Mac OS X 10.12.6 (16G1510)
Report Version:        12
Anonymous UUID:        567E9ED4-5465-6075-F9A6-523A0FD4EEEA


Time Awake Since Boot: 130000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fffaa016d42 __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fffaa104457 pthread_kill + 90
2   libsystem_c.dylib             	0x00007fffa9f7c420 abort + 129
3   org.qt-project.QtCore         	0x00000001017ff079 qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) + 9
4   org.qt-project.QtCore         	0x000000010180085f QMessageLogger::fatal(char const*, ...) const + 213
5   org.qt-project.QtCore         	0x000000010180bb4c QThread::~QThread() + 252
6   kd6kxr.filmulator-gui         	0x00000001007e79f2 FilmImageProvider::~FilmImageProvider() + 242
7   kd6kxr.filmulator-gui         	0x00000001007e7a85 non-virtual thunk to FilmImageProvider::~FilmImageProvider() + 21
8   org.qt-project.QtQml          	0x00000001014a1421 QHash<QString, QSharedPointer<QQmlImageProviderBase> >::deleteNode2(QHashData::Node*) + 49
9   org.qt-project.QtCore         	0x00000001018614f9 QHashData::free_helper(void (*)(QHashData::Node*)) + 73
10  org.qt-project.QtQml          	0x0000000101497862 QQmlEnginePrivate::~QQmlEnginePrivate() + 930
11  org.qt-project.QtQml          	0x000000010152abf3 QQmlApplicationEnginePrivate::~QQmlApplicationEnginePrivate() + 115
12  org.qt-project.QtCore         	0x00000001019ee868 QObject::~QObject() + 1880
13  org.qt-project.QtQml          	0x0000000101499572 QQmlEngine::~QQmlEngine() + 370
14  kd6kxr.filmulator-gui         	0x00000001007c5c35 main + 3269
15  libdyld.dylib                 	0x00007fffa9ee8235 start + 1

Put limits on zooming

Stop zooming out when the image is about 1/10th of the screen size or about 20x zoomed in past 100%.

Can't import .DNG converted from .SRF

My camera, the Sony Cyber Shot DSC-F828 uses Sony .SRF RAW files, which Filmulator doesn't natively support. I used Adobe DNG converter to make the .SRF a .DNG, and no matter what settings I use to convert it, Filmulator will only provide the following error in the terminal.

Error: Directory Sony2 with 25665 entries considered invalid; not read.
QSqlQuery::value: not positioned on a valid record
importWorker no replace, doesn't exist

Cloud Uploading

Eventually, I would like to have batched, tagged uploading to major online photo sharing sites like Flickr, g+, Tumblr, and Facebook.

highlightrecovery 2 crashes on macos

Enabling the highlight recovery in the highlightrecovery branch produces the following reported crash:

Thread 8 Crashed:: QQuickPixmapReader
0   dyld                          	0x000000010f17c38e __abort_with_payload + 10
1   dyld                          	0x000000010f17bb80 abort_with_payload_wrapper_internal + 82
2   dyld                          	0x000000010f17bbb2 abort_with_payload + 9
3   dyld                          	0x000000010f13ba9d dyld::halt(char const*) + 343
4   dyld                          	0x000000010f13bbc7 dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + 167
5   libdyld.dylib                 	0x00007fff63f4332e dyld_stub_binder + 282
6   ???                           	0x000000010b0aa008 0 + 4480213000
7   filmulator                    	0x000000010b07d9ef FilmImageProvider::requestImage(QString const&, QSize*, QSize const&) + 959
8   filmulator                    	0x000000010b07e202 non-virtual thunk to FilmImageProvider::requestImage(QString const&, QSize*, QSize const&) + 18
9   org.qt-project.QtQuick        	0x000000010b6a6e71 QQuickPixmapReader::processJob(QQuickPixmapReply*, QUrl const&, QString const&, QQmlImageProviderBase::ImageType, QQuickImageProvider*) + 3073
10  org.qt-project.QtQuick        	0x000000010b6a5e09 QQuickPixmapReader::processJobs() + 1641
11  org.qt-project.QtQuick        	0x000000010b6a5788 QQuickPixmapReaderThreadObject::event(QEvent*) + 24
12  org.qt-project.QtWidgets      	0x000000010c9bef12 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 306
13  org.qt-project.QtWidgets      	0x000000010c9c02ed QApplication::notify(QObject*, QEvent*) + 573
14  org.qt-project.QtCore         	0x000000010c0d954f QCoreApplication::notifyInternal2(QObject*, QEvent*) + 159
15  org.qt-project.QtCore         	0x000000010c0da722 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 850
16  org.qt-project.QtCore         	0x000000010c12f5b9 QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 73
17  org.qt-project.QtCore         	0x000000010c0d50a2 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 418
18  org.qt-project.QtCore         	0x000000010bf1f101 QThread::exec() + 113
19  org.qt-project.QtQuick        	0x000000010b6a87ee QQuickPixmapReader::run() + 286
20  org.qt-project.QtCore         	0x000000010bf28657 QThreadPrivate::start(void*) + 359
21  libsystem_pthread.dylib       	0x00007fff6414b2eb _pthread_body + 126
22  libsystem_pthread.dylib       	0x00007fff6414e249 _pthread_start + 66
23  libsystem_pthread.dylib       	0x00007fff6414a40d thread_start + 13

Windows builds

Currently there are no Windows builds available for Filmulator. Let's work together to build Filmulator on Windows and also to make build instructions which are easy to follow.

Edit by Hue

Luminance by Hue, Vibrance by Hue, Hue shift by original Hue

Copy Settings

Should be able to copy settings from one image to another.

Overdrive Mode

Tooltip: "In case of emergency, break glass and press button. This greatly increases the filminess, in case Drama 100 wasn't enough for you."

Turning the Overdrive Mode switch on would disable the agitation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.