From 02ac49cf590202e0e27bc9e8a679fb48dce19abe Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <janne@kuschku.de>
Date: Mon, 24 Feb 2020 23:11:34 +0100
Subject: [PATCH] Improve spritesheet manager

---
 src/main.rs                  |  2 +-
 src/thumbnail/extract.rs     |  3 ++-
 src/thumbnail/spritesheet.rs | 11 +++++++----
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 10f2842..b6c2e49 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,7 +9,7 @@ use crate::util::media_time::MediaTime;
 fn main() -> Result<(), failure::Error> {
     thumbnail::extract::extract(
         160, 5, 5,
-        MediaTime::from_seconds(10),
+        MediaTime::from_seconds(2),
         "/home/janne/Workspace/justflix/data/video.mp4",
         "/home/janne/Workspace/justflix/data/spritesheets"
     )?;
diff --git a/src/thumbnail/extract.rs b/src/thumbnail/extract.rs
index 7ee06a8..c8d3bd0 100644
--- a/src/thumbnail/extract.rs
+++ b/src/thumbnail/extract.rs
@@ -23,7 +23,8 @@ pub fn extract<T: AsRef<str>, U: AsRef<str>>(
         max_size,
         num_horizontal, num_vertical,
         frame_interval,
-        output_folder,
+        &output_folder,
+        "preview"
     );
 
     let mut stream: AVStream = avformat_context.find_stream(|stream| {
diff --git a/src/thumbnail/spritesheet.rs b/src/thumbnail/spritesheet.rs
index 0b822b5..251664b 100644
--- a/src/thumbnail/spritesheet.rs
+++ b/src/thumbnail/spritesheet.rs
@@ -16,11 +16,12 @@ pub struct SpritesheetManager {
     frame_interval: MediaTime,
     metadata: WebVTTFile,
     output_path: std::string::String,
+    name: std::string::String,
     initialized: bool,
 }
 
 impl SpritesheetManager {
-    pub fn new<T: AsRef<str>>(max_side: u32, num_horizontal: u32, num_vertical: u32, frame_interval: MediaTime, output_path: T) -> SpritesheetManager {
+    pub fn new<T: AsRef<str>, U: AsRef<str>>(max_side: u32, num_horizontal: u32, num_vertical: u32, frame_interval: MediaTime, output_path: T, name: U) -> SpritesheetManager {
         SpritesheetManager {
             num_horizontal,
             num_vertical,
@@ -33,6 +34,7 @@ impl SpritesheetManager {
             frame_interval,
             metadata: WebVTTFile::new(),
             output_path: std::string::String::from(output_path.as_ref()),
+            name: std::string::String::from(name.as_ref()),
             initialized: false,
         }
     }
@@ -126,7 +128,8 @@ impl SpritesheetManager {
             self.last_timestamp,
             timestamp,
             format!(
-                "spritesheet_{}.jpg#xywh={},{},{},{}",
+                "{}_{}.jpg#xywh={},{},{},{}",
+                self.name,
                 self.spritesheet_index(self.current_image - 1),
                 self.x(self.current_image - 1),
                 self.y(self.current_image - 1),
@@ -138,7 +141,7 @@ impl SpritesheetManager {
 
     fn save_spritesheet(&mut self) -> Result<(), failure::Error> {
         self.spritesheet.save(
-            format!("{}/spritesheet_{}.jpg", self.output_path, self.spritesheet_index(self.current_image))
+            format!("{}/{}_{}.jpg", self.output_path, self.name, self.spritesheet_index(self.current_image))
         ).map_err(|error| {
             format_err!("Could not write spritesheet: {}", error)
         })?;
@@ -148,7 +151,7 @@ impl SpritesheetManager {
 
     pub fn save(&mut self) -> Result<(), failure::Error> {
         self.save_spritesheet()?;
-        self.metadata.save(format!("{}/spritesheets.vtt", self.output_path)).map_err(|error| {
+        self.metadata.save(format!("{}/{}.vtt", self.output_path, self.name)).map_err(|error| {
             format_err!("Could not write spritesheet metadata: {}", error)
         })?;
         Ok(())
-- 
GitLab