summaryrefslogtreecommitdiff
path: root/rpicam-apps-1.11.0-outputfilename.patch
blob: 540c6d92f4c91d9aa9101d0a6248e4c50febb3de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- rpicam-apps-original-1.11.0/core/still_options.hpp	2025-12-20 16:32:28.223308449 +0100
+++ rpicam-apps-1.11.0/core/still_options.hpp	2025-12-20 16:48:50.052707336 +0100
@@ -27,9 +27,9 @@
 			("framestart", value<uint32_t>(&v_->framestart)->default_value(0),
 			 "Initial frame counter value for timelapse captures")
 			("datetime", value<bool>(&v_->datetime)->default_value(false)->implicit_value(true),
-			 "Use date format for output file names")
+			 "Replace %s with date and time in output file names")
 			("timestamp", value<bool>(&v_->timestamp)->default_value(false)->implicit_value(true),
-			 "Use system timestamps for output file names")
+			 "Replace %u with timestamp in output file names")
 			("restart", value<unsigned int>(&v_->restart)->default_value(0),
 			 "Set JPEG restart interval")
 			("keypress,k", value<bool>(&v_->keypress)->default_value(false)->implicit_value(true),
--- rpicam-apps-original-1.11.0/apps/rpicam_still.cpp	2025-12-20 16:32:28.221836546 +0100
+++ rpicam-apps-1.11.0/apps/rpicam_still.cpp	2025-12-20 16:47:29.557173395 +0100
@@ -37,24 +37,28 @@
 
 static std::string generate_filename(StillOptions const *options)
 {
-	char filename[128];
-	std::string folder = options->Get().output; // sometimes "output" is used as a folder name
-	if (!folder.empty() && folder.back() != '/')
-		folder += "/";
+	// treat the output file name as a mask
+	char filename[2048];
 	if (options->Get().datetime)
 	{
+		// expects "%s" in the filename
 		std::time_t raw_time;
 		std::time(&raw_time);
 		char time_string[32];
 		std::tm *time_info = std::localtime(&raw_time);
-		std::strftime(time_string, sizeof(time_string), "%m%d%H%M%S", time_info);
-		snprintf(filename, sizeof(filename), "%s%s.%s", folder.c_str(), time_string, options->Get().encoding.c_str());
+		std::strftime(time_string, sizeof(time_string), "%Y%m%d%H%M%S", time_info);
+		snprintf(filename, sizeof(filename), options->Get().output.c_str(), time_string);
 	}
 	else if (options->Get().timestamp)
-		snprintf(filename, sizeof(filename), "%s%u.%s", folder.c_str(), (unsigned)time(NULL),
-				 options->Get().encoding.c_str());
+	{
+		// expects "%u" in the filename
+		snprintf(filename, sizeof(filename), options->Get().output.c_str(), (unsigned)time(NULL));
+	}
 	else
+	{
+		// expects "%d" in the filename
 		snprintf(filename, sizeof(filename), options->Get().output.c_str(), options->Get().framestart);
+	}
 	filename[sizeof(filename) - 1] = 0;
 	return std::string(filename);
 }