Fix T37591: 'Extensions' option ignored for movies.
authorCampbell Barton <ideasman42@gmail.com>
Mon, 25 Nov 2013 05:59:10 +0000 (16:59 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 25 Nov 2013 05:59:10 +0000 (16:59 +1100)
source/blender/blenkernel/intern/writeavi.c
source/blender/blenkernel/intern/writeffmpeg.c
source/blender/blenlib/BLI_path_util.h
source/blender/blenlib/intern/path_util.c
source/blender/quicktime/apple/qtkit_export.m

index ff6212f6b09c45600f4769d637fce877e5e492bd..1d29ef70d8b84c98624c82dba69917d08bf94369 100644 (file)
@@ -132,9 +132,16 @@ static void filepath_avi(char *string, RenderData *rd)
 
        BLI_make_existing_file(string);
 
-       if (!BLI_testextensie(string, ".avi")) {
-               BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
-               strcat(string, ".avi");
+       if (rd->scemode & R_EXTENSION) {
+               if (!BLI_testextensie(string, ".avi")) {
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+                       strcat(string, ".avi");
+               }
+       }
+       else {
+               if (BLI_path_frame_check_chars(string)) {
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+               }
        }
 }
 
index bcf5e712eff4fdfb0ae38a213318db11a5e0a59b..ff4300c34e995577bb0710ae34bbcda393e81141 100644 (file)
@@ -1023,23 +1023,32 @@ void BKE_ffmpeg_filepath_get(char *string, RenderData *rd)
                sprintf(autosplit, "_%03d", ffmpeg_autosplit_count);
        }
 
-       while (*fe) {
-               if (BLI_strcasecmp(string + strlen(string) - strlen(*fe), *fe) == 0) {
-                       break;
+       if (rd->scemode & R_EXTENSION) {
+               while (*fe) {
+                       if (BLI_strcasecmp(string + strlen(string) - strlen(*fe), *fe) == 0) {
+                               break;
+                       }
+                       fe++;
                }
-               fe++;
-       }
 
-       if (*fe == NULL) {
-               strcat(string, autosplit);
+               if (*fe == NULL) {
+                       strcat(string, autosplit);
 
-               BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
-               strcat(string, *exts);
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+                       strcat(string, *exts);
+               }
+               else {
+                       *(string + strlen(string) - strlen(*fe)) = 0;
+                       strcat(string, autosplit);
+                       strcat(string, *fe);
+               }
        }
        else {
-               *(string + strlen(string) - strlen(*fe)) = 0;
+               if (BLI_path_frame_check_chars(string)) {
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+               }
+
                strcat(string, autosplit);
-               strcat(string, *fe);
        }
 }
 
index 9b461db4bcd780486f1ab43f05d8ba9778aeecc0..0cffa2860148c75cb769070c953bc367c4ed7420 100644 (file)
@@ -158,6 +158,7 @@ bool BLI_has_parent(char *path);
 bool BLI_path_abs(char *path, const char *basepath);
 bool BLI_path_frame(char *path, int frame, int digits);
 bool BLI_path_frame_range(char *path, int sta, int end, int digits);
+bool BLI_path_frame_check_chars(const char *path);
 bool BLI_path_cwd(char *path);
 void BLI_path_rel(char *file, const char *relfile);
 
index 4b8ee6e28476547b75f767a52ac4e0aaf3b5e048..3900ee014dc99dea35dbe426213d583d2f76376a 100644 (file)
@@ -719,6 +719,15 @@ bool BLI_path_frame_range(char *path, int sta, int end, int digits)
        return false;
 }
 
+/**
+ * Check if we have '#' chars, usable for #BLI_path_frame, #BLI_path_frame_range
+ */
+bool BLI_path_frame_check_chars(const char *path)
+{
+       int ch_sta, ch_end;  /* dummy args */
+       return stringframe_chars(path, &ch_sta, &ch_end);
+}
+
 /**
  * If path begins with "//", strips that and replaces it with basepath directory. Also converts
  * a drive-letter prefix to something more sensible if this is a non-drive-letter-based system.
index 8cf91e44c777e7824ec9e09087eeb3d9dd214b24..0c193df38619c5bb1fbc51ba505a4afcef3a1f40 100644 (file)
@@ -242,14 +242,17 @@ void filepath_qt(char *string, RenderData *rd)
        BLI_path_abs(string, G.main->name);
        
        BLI_make_existing_file(string);
-       
-       if (!BLI_testextensie(string, ".mov")) {
-               /* if we don't have any #'s to insert numbers into, use 4 numbers by default */
-               if (strchr(string, '#')==NULL)
-                       strcat(string, "####"); /* 4 numbers */
 
-               BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
-               strcat(string, ".mov");
+       if (rd->scemode & R_EXTENSION) {
+               if (!BLI_testextensie(string, ".mov")) {
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+                       strcat(string, ".mov");
+               }
+       }
+       else {
+               if (BLI_path_frame_check_chars(string)) {
+                       BLI_path_frame_range(string, rd->sfra, rd->efra, 4);
+               }
        }
 }