Skip to content

Commit 19a2c9e

Browse files
committed
This is DeepDrill 3.0
1 parent aaf213c commit 19a2c9e

File tree

3 files changed

+30
-26
lines changed

3 files changed

+30
-26
lines changed

DeepDrill.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,7 @@
11421142
50CF8E562694848800887FFC /* Debug */ = {
11431143
isa = XCBuildConfiguration;
11441144
buildSettings = {
1145+
ALLOW_TARGET_PLATFORM_SPECIALIZATION = NO;
11451146
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
11461147
CLANG_CXX_LIBRARY = "compiler-default";
11471148
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
@@ -1178,15 +1179,18 @@
11781179
50CF8E572694848800887FFC /* Release */ = {
11791180
isa = XCBuildConfiguration;
11801181
buildSettings = {
1182+
ALLOW_TARGET_PLATFORM_SPECIALIZATION = NO;
11811183
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
11821184
CLANG_CXX_LIBRARY = "compiler-default";
11831185
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
11841186
CODE_SIGN_ENTITLEMENTS = DeepDrill.entitlements;
11851187
CODE_SIGN_IDENTITY = "-";
11861188
CODE_SIGN_STYLE = Automatic;
11871189
DEAD_CODE_STRIPPING = YES;
1190+
DEBUG_INFORMATION_FORMAT = dwarf;
11881191
DEVELOPMENT_TEAM = 3NG65ZLYW7;
11891192
ENABLE_HARDENED_RUNTIME = YES;
1193+
GCC_OPTIMIZATION_LEVEL = 3;
11901194
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
11911195
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
11921196
GCC_WARN_SHADOW = YES;

docs/Tutorials/ZoomVideos.md

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
In this tutorial, you will learn how to create Mandelbrot zoom videos using the DeepDrill toolchain. In particular, you will learn how to compute the following video:
44

5-
<iframe width="560" height="315" src="https://www.youtube.com/embed/Ayc5bE9nmTA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
5+
<iframe width="560" height="315" src="https://www.youtube.com/embed/M3H2cODlDRc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
66

77
Unlike calculating still images, creating a zoom video requires a much more sophisticated workflow. For example, multiple keyframes must be calculated and stitched together in the right way. To simplify the process, video creation has been divided into three phases. In the first phase, `deepmake` is used to create a Makefile and a larger number of input files. In the second phase, the Makefile is executed to compute all keyframe images via seperate invocations to `deepdrill`. In the last phase, `deepzoom` is executed to assemble the final video by calculating intermediate frames.
88

@@ -18,22 +18,20 @@ To set up a workflow in this directory, we launch `deepmake` with the following
1818
```
1919
The application first tells you how many files will be created and asks for your permission to proceed:
2020
```
21-
DeepMake 2.0 - (C)opyright Dirk W. Hoffmann
21+
DeepMake 3.0 - (C)opyright Dirk W. Hoffmann
2222
23-
79 files will be created. Do you want to proceed [no]?
23+
182 files will be created.
24+
0 files will be skipped or modified.
25+
26+
Do you want to proceed [y]?
2427
```
25-
After confirming with `yes` or `y`, `deepmake` generates all files:
28+
After confirming by hitting return, `deepmake` generates all necessary files:
2629
```none
27-
DeepMake 2.0 - (C)opyright Dirk W. Hoffmann
28-
29-
79 files will be created. Do you want to proceed [no]? yes
30-
31-
Generating project file: ................................. 0.00 sec
32-
Generating 75 location files: ................................. 0.01 sec
33-
Generating profile: ................................. 0.00 sec
30+
Generating zoomer ini file: ................................. 0.00 sec
31+
Generating 180 ini files: ................................. 0.07 sec
3432
Generating Makefile: ................................. 0.00 sec
3533
36-
Total time: 0.01 sec
34+
Total time: 0.08 sec
3735
```
3836
Let's have a more detailed look at the configuration file. Besides providing the location and iteration parameters, the following key-value pairs are defined:
3937
```INI
@@ -55,7 +53,7 @@ Let's take a closer look at the files DeepDrill created in the project directory
5553
- `deepzoom.ini`
5654
This file contains several key-value pairs which will be picked up by `deepzoom` to assemble the final video. It plays no role in the creation of the keyframe images.
5755

58-
- `keyframe_0.ini` to 'keyframe_80.ini'
56+
- `keyframe_0.ini` to 'keyframe_180.ini'
5957
These configuration files are used to calculate the keyframes. They are composed out of the configuration files that were passed in as command line arguments when the workflow was set up.
6058

6159
- `Makefile`
@@ -64,40 +62,41 @@ Let's take a closer look at the files DeepDrill created in the project directory
6462
## Computing all keyframes
6563

6664
For our tutorial project, DeepDrill has created the following Makefile:
67-
6865
```Make
69-
# Generated by DeepDrill 2.0 on Tue Jun 13 18:19:24 2023
66+
# Generated by DeepDrill 3.0
7067
#
7168
# Copyright (C) Dirk W. Hoffmann. www.dirkwhoffmann.de
7269
# Licensed under the GNU General Public License v3
7370

7471
DEEPDRILL = /Users/hoff/tmp/dd/./deepdrill
7572
DEEPZOOM = /Users/hoff/tmp/dd/./deepzoom
76-
MAPS = $(patsubst %.loc,%.map,$(wildcard *_*.loc))
77-
VIDEO = spider.mov
78-
MAPFLAGS = -b -v
73+
MAPS = $(patsubst %.ini,%.map,$(wildcard *_*.ini))
74+
VIDEO = deepzoom.mov
7975

8076
.PHONY: all maps clean
8177

8278
all: maps
8379

8480
maps: $(MAPS)
8581

86-
%.map: %.loc
87-
@$(DEEPDRILL) $(MAPFLAGS) -p spider.prf -o $*.map -o $*.jpg $*.loc > $*.log
82+
%.map: %.ini
83+
@$(DEEPDRILL) -b -v $*.ini -o $*.map -o $*_preview.jpg image.width=320 image.height=200 > $*.log
84+
85+
%.jpg: %.map
86+
@$(DEEPDRILL) -v $*.ini $*.map -o $*.jpg
8887

8988
$(VIDEO): $(IMAGES)
90-
@$(DEEPZOOM) $(MOVFLAGS) spider.prj -o $(VIDEO)
89+
@$(DEEPZOOM) "deepzoom.ini" -o $(VIDEO)
9190

9291
clean:
93-
rm *.mov *.map *.jpg *.log
92+
@rm *.mov *.map *.jpg *.log
9493
```
9594
The Makefile defines two major goals: One is to create the map files from the location files and the other one is to compose the final video. To create all map files, we change to the project directory and run the Make utility:
9695
```shell
9796
cd project
9897
make -j4
9998
```
100-
The `-j` option instructs Make to run multiple jobs in parallel, four jobs in this case. Although this option is not mandatory, its use is strongly recommended as it significantly reduces the overall computation time.
99+
The `-j` option instructs Make to run multiple jobs in parallel, four in this case. Although this option is not mandatory, its use is strongly recommended as it significantly reduces the overall computation time.
101100

102101
Depending on the performance of your machine, it may take a while to calculate all images. DeepDrill informs about the current progress by outputting brief status information:
103102
```none
@@ -125,6 +124,6 @@ After successful completion, the project directory contains a map file and an im
125124

126125
The final step is to combine all the keyframes into a zoom video by calling `make` with the `spider.mov` target as argument:
127126
```shell
128-
make spider.mov
127+
make deepzoom.mov
129128
```
130-
This target executes a separate tool called `deepzoom` which stiches together all previously computed keyframes. After completion, file `spider.mov` will be created, which contains the final video.
129+
This target executes a separate tool called `deepzoom` which stiches together all previously computed keyframes. After completion, file `deepzoom.mov` will be created, which contains the final video.

src/dmake/DeepMake.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ DeepMake::run()
7373
auto project = opt.files.outputs.front();
7474
add(project / "Makefile");
7575
add(project / AssetManager::iniFile());
76-
for (isize i = 0; i < opt.video.keyframes; i++) {
76+
for (isize i = 0; i <= opt.video.keyframes; i++) {
7777
add(project / AssetManager::iniFile(i));
7878
}
7979

@@ -93,6 +93,7 @@ DeepMake::run()
9393

9494
if (s == "y" || s == "yes" || s == "") {
9595

96+
log::cout << log::endl;
9697
Maker(*this, opt).generate();
9798
return;
9899
}

0 commit comments

Comments
 (0)