[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