[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25833] trunk/blender: - RNA support for returning copied strings from functions, flagging strings as PROP_THICK_WRAP does this.

Campbell Barton ideasman42 at gmail.com
Fri Jan 8 14:52:38 CET 2010


Revision: 25833
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25833
Author:   campbellbarton
Date:     2010-01-08 14:52:38 +0100 (Fri, 08 Jan 2010)

Log Message:
-----------
- RNA support for returning copied strings from functions, flagging strings as PROP_THICK_WRAP does this.
- scene.render_data.frame_path(frame=num), returns the output path for rending images of video.
- scene.render_data.file_extension, readonly attribute, gives the extension ".jpg", ".mov" etc
- player support was guessing names, use the above functions to get the actual names used, accounting for #'s replacing numbers.

Modified Paths:
--------------
    trunk/blender/release/scripts/op/screen_play_rendered_anim.py
    trunk/blender/release/scripts/ui/properties_render.py
    trunk/blender/source/blender/blenkernel/BKE_image.h
    trunk/blender/source/blender/blenkernel/BKE_writeavi.h
    trunk/blender/source/blender/blenkernel/BKE_writeffmpeg.h
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/writeavi.c
    trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/screen/screendump.c
    trunk/blender/source/blender/editors/space_file/writeimage.c
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/makesrna/intern/makesrna.c
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_internal.h
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/makesrna/intern/rna_scene_api.c
    trunk/blender/source/blender/nodes/intern/CMP_nodes/CMP_outputFile.c
    trunk/blender/source/blender/python/intern/bpy_rna.c
    trunk/blender/source/blender/quicktime/apple/quicktime_export.c
    trunk/blender/source/blender/quicktime/quicktime_export.h
    trunk/blender/source/blender/render/intern/source/pipeline.c

Modified: trunk/blender/release/scripts/op/screen_play_rendered_anim.py
===================================================================
--- trunk/blender/release/scripts/op/screen_play_rendered_anim.py	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/release/scripts/op/screen_play_rendered_anim.py	2010-01-08 13:52:38 UTC (rev 25833)
@@ -29,39 +29,6 @@
 import os
 import platform
 
-# from BKE_add_image_extension()
-img_format_exts = {
-    'IRIS': '.rgb',
-    'RADHDR': '.hdr',
-    'PNG': 'png',
-    'TARGA': 'tga',
-    'RAWTARGA': 'tga',
-    'BMP': 'bmp',
-    'TIFF': 'tif',
-    'OPENEXR': 'exr',
-    'MULTILAYER': 'exr',
-    'CINEON': 'cin',
-    'DPX': 'dpx',
-    'JPEG': 'jpg',
-    'JPEG2000': 'jp2',
-    'QUICKTIME_QTKIT': 'mov',
-    'QUICKTIME_CARBON': 'mov',
-    'AVIRAW': 'avi',
-    'AVIJPEG': 'avi',
-    'AVICODEC': 'avi',
-    'XVID': 'avi',
-    'THEORA': 'ogg',
-    }
-
-movie_formats = ('QUICKTIME_QTKIT',
-                'QUICKTIME_CARBONTKIT',
-                'AVIRAW',
-                'AVIJPEG',
-                'AVICODEC',
-                'XVID',
-                'THEORA')
-
-
 def guess_player_path(preset):
     if preset == 'BLENDER24':
         player_path = 'blender'
@@ -112,17 +79,14 @@
         if player_path == '':
             player_path = guess_player_path(preset)
 
-        # doesn't support ### frame notation yet
-        if rd.file_format in movie_formats:
-            file = "%s%04d_%04d" % (file_path, sce.start_frame, sce.end_frame)
-        elif preset in ('BLENDER24', 'DJV', 'CUSTOM'):
-            file = "%s%04d" % (file_path, sce.start_frame)
-        elif preset in ('FRAMECYCLER', 'RV'):
-            file = "%s#" % file_path
+        if preset in ('FRAMECYCLER', 'RV'):
+            # replace the number with '#'
+            file_a, file_b = rd.frame_path(frame=0), rd.frame_path(frame=1)
+            file = ''.join([(c if file_b[i] == c else "#") for i, c in enumerate(file_a)])
+        else:
+            # works for movies and images
+            file = rd.frame_path(frame=sce.start_frame)
 
-        if rd.file_extensions:
-            file += '.' + img_format_exts[rd.file_format]
-
         cmd = [player_path]
         # extra options, fps controls etc.
         if preset == 'BLENDER24':

Modified: trunk/blender/release/scripts/ui/properties_render.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_render.py	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/release/scripts/ui/properties_render.py	2010-01-08 13:52:38 UTC (rev 25833)
@@ -292,7 +292,7 @@
 
         if wide_ui:
             col = split.column()
-        col.prop(rd, "file_extensions")
+        col.prop(rd, "use_file_extension")
         col.prop(rd, "use_overwrite")
         col.prop(rd, "use_placeholder")
 

Modified: trunk/blender/source/blender/blenkernel/BKE_image.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_image.h	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/BKE_image.h	2010-01-08 13:52:38 UTC (rev 25833)
@@ -47,8 +47,8 @@
 void	BKE_stamp_info(struct Scene *scene, struct ImBuf *ibuf);
 void	BKE_stamp_buf(struct Scene *scene, unsigned char *rect, float *rectf, int width, int height, int channels);
 int		BKE_write_ibuf(struct Scene *scene, struct ImBuf *ibuf, char *name, int imtype, int subimtype, int quality);
-void	BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, int imtype);
-void	BKE_add_image_extension(struct Scene *scene, char *string, int imtype);
+void	BKE_makepicstring(char *string, char *base, int frame, int imtype, int use_ext);
+void	BKE_add_image_extension(char *string, int imtype);
 int		BKE_ftype_to_imtype(int ftype);
 int		BKE_imtype_to_ftype(int imtype);
 int		BKE_imtype_is_movie(int imtype);

Modified: trunk/blender/source/blender/blenkernel/BKE_writeavi.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_writeavi.h	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/BKE_writeavi.h	2010-01-08 13:52:38 UTC (rev 25833)
@@ -40,19 +40,16 @@
 struct ReportList;
 struct Scene;
 
-int start_avi(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
-void end_avi(void);
-int append_avi(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
-void makeavistring (struct RenderData *rd, char *string);
-
 typedef struct bMovieHandle {
 	int (*start_movie)(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
 	int (*append_movie)(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
 	void (*end_movie)(void);
 	int (*get_next_frame)(struct RenderData *rd, struct ReportList *reports); /* optional */
+	void (*get_movie_path)(char *string, struct RenderData *rd); /* optional */
 } bMovieHandle;
 
 bMovieHandle *BKE_get_movie_handle(int imtype);
+void BKE_makeanimstring(char *string, struct RenderData *rd);
 
 #ifdef __cplusplus
 }

Modified: trunk/blender/source/blender/blenkernel/BKE_writeffmpeg.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_writeffmpeg.h	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/BKE_writeffmpeg.h	2010-01-08 13:52:38 UTC (rev 25833)
@@ -63,6 +63,7 @@
 extern int start_ffmpeg(struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports);
 extern void end_ffmpeg(void);
 extern int append_ffmpeg(struct RenderData *rd, int frame, int *pixels, int rectx, int recty, struct ReportList *reports);
+void filepath_ffmpeg(char* string, struct RenderData* rd);
 
 extern void ffmpeg_set_preset(struct RenderData *rd, int preset);
 extern void ffmpeg_verify_image_type(struct RenderData *rd);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-01-08 13:52:38 UTC (rev 25833)
@@ -883,7 +883,7 @@
 	return 0;
 }
 
-void BKE_add_image_extension(Scene *scene, char *string, int imtype)
+void BKE_add_image_extension(char *string, int imtype)
 {
 	char *extension="";
 	
@@ -1409,7 +1409,7 @@
 }
 
 
-void BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, int imtype)
+void BKE_makepicstring(char *string, char *base, int frame, int imtype, int use_ext)
 {
 	if (string==NULL) return;
 
@@ -1422,8 +1422,8 @@
 	BLI_convertstringcode(string, G.sce);
 	BLI_convertstringframe(string, frame);
 
-	if(scene->r.scemode & R_EXTENSION) 
-		BKE_add_image_extension(scene, string, imtype);
+	if(use_ext)
+		BKE_add_image_extension(string, imtype);
 		
 }
 

Modified: trunk/blender/source/blender/blenkernel/intern/writeavi.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/writeavi.c	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/intern/writeavi.c	2010-01-08 13:52:38 UTC (rev 25833)
@@ -45,6 +45,11 @@
 #include "BKE_writeavi.h"
 #include "AVI_avi.h"
 
+/* callbacks */
+static int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports);
+static void end_avi(void);
+static int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports);
+static void filepath_avi(char *string, RenderData *rd);
 
 /* ********************** general blender movie support ***************************** */
 
@@ -67,6 +72,7 @@
 	mh.append_movie= append_avi;
 	mh.end_movie= end_avi;
 	mh.get_next_frame = NULL;
+	mh.get_movie_path = filepath_avi;
 	
 	/* do the platform specific handles */
 #ifdef __sgi
@@ -86,6 +92,7 @@
 		mh.start_movie= start_qt;
 		mh.append_movie= append_qt;
 		mh.end_movie= end_qt;
+		mh.get_movie_path = filepath_qt;
 	}
 #endif
 #ifdef WITH_FFMPEG
@@ -93,6 +100,7 @@
 		mh.start_movie = start_ffmpeg;
 		mh.append_movie = append_ffmpeg;
 		mh.end_movie = end_ffmpeg;
+		mh.get_movie_path = makeffmpegstring;
 	}
 #endif
 	if (imtype == R_FRAMESERVER) {
@@ -111,7 +119,7 @@
 static AviMovie *avi=NULL;
 static int sframe;
 
-void makeavistring (RenderData *rd, char *string) 
+static void filepath_avi (char *string, RenderData *rd)
 {
 	char txt[64];
 
@@ -128,7 +136,7 @@
 	}
 }
 
-int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports)
+static int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *reports)
 {
 	int x, y;
 	char name[256];
@@ -136,7 +144,7 @@
 	int quality;
 	double framerate;
 	
-	makeavistring(rd, name);
+	filepath_avi(name, rd);
 
 	sframe = (rd->sfra);
 	x = rectx;
@@ -174,7 +182,7 @@
 	return 1;
 }
 
-int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
+static int append_avi(RenderData *rd, int frame, int *pixels, int rectx, int recty, ReportList *reports)
 {
 	unsigned int *rt1, *rt2, *rectot;
 	int x, y;
@@ -218,3 +226,12 @@
 	avi= NULL;
 }
 
+/* similar to BKE_makepicstring() */
+void BKE_makeanimstring(char *string, RenderData *rd)
+{
+	bMovieHandle *mh= BKE_get_movie_handle(rd->imtype);
+	if(mh->get_movie_path)
+		mh->get_movie_path(string, rd);
+	else
+		string[0]= '\0';
+}

Modified: trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c	2010-01-08 11:14:30 UTC (rev 25832)
+++ trunk/blender/source/blender/blenkernel/intern/writeffmpeg.c	2010-01-08 13:52:38 UTC (rev 25833)
@@ -75,7 +75,7 @@
 #endif
 
 extern void do_init_ffmpeg();
-static void makeffmpegstring(RenderData* rd, char* string);
+static void makeffmpegstring(char* string, RenderData* rd);
 
 static int ffmpeg_type = 0;
 static int ffmpeg_codec = CODEC_ID_MPEG4;
@@ -638,7 +638,7 @@
 	do_init_ffmpeg();
 
 	/* Determine the correct filename */
-	makeffmpegstring(rd, name);
+	filepath_ffmpeg(name, rd);
 	fprintf(stderr, "Starting output to %s(ffmpeg)...\n"
 		"  Using type=%d, codec=%d, audio_codec=%d,\n"
 		"  video_bitrate=%d, audio_bitrate=%d,\n"
@@ -772,7 +772,7 @@

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list