diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-08 16:52:38 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-08 16:52:38 +0300 |
commit | a868e8623ca7218dfa363962e178293f4a8f0690 (patch) | |
tree | 2c0e08b1b9b810b60c7b19d9dac4fd6e2fb41c36 /source/blender/blenkernel | |
parent | 7079047538da71961102478a23cccdbd62c7cf9d (diff) |
- 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.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_image.h | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_writeavi.h | 7 | ||||
-rw-r--r-- | source/blender/blenkernel/BKE_writeffmpeg.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 8 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/writeavi.c | 25 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/writeffmpeg.c | 5 |
6 files changed, 32 insertions, 18 deletions
diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index 85c3c716b8b..7f18fb1624d 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -47,8 +47,8 @@ void free_image(struct Image *me); 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); diff --git a/source/blender/blenkernel/BKE_writeavi.h b/source/blender/blenkernel/BKE_writeavi.h index a8d38dda103..e2778ebb54c 100644 --- a/source/blender/blenkernel/BKE_writeavi.h +++ b/source/blender/blenkernel/BKE_writeavi.h @@ -40,19 +40,16 @@ struct RenderData; 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 } diff --git a/source/blender/blenkernel/BKE_writeffmpeg.h b/source/blender/blenkernel/BKE_writeffmpeg.h index 6ec8320f026..98c385ea2e1 100644 --- a/source/blender/blenkernel/BKE_writeffmpeg.h +++ b/source/blender/blenkernel/BKE_writeffmpeg.h @@ -63,6 +63,7 @@ struct Scene; 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); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index e3bb443fe7c..ff5b5019206 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -883,7 +883,7 @@ int BKE_imtype_is_movie(int imtype) 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 @@ int BKE_write_ibuf(Scene *scene, ImBuf *ibuf, char *name, int imtype, int subimt } -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 @@ void BKE_makepicstring(struct Scene *scene, char *string, char *base, int frame, 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); } diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c index ec3d1185179..9ff5ee00bfb 100644 --- a/source/blender/blenkernel/intern/writeavi.c +++ b/source/blender/blenkernel/intern/writeavi.c @@ -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 @@ bMovieHandle *BKE_get_movie_handle(int imtype) 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 @@ bMovieHandle *BKE_get_movie_handle(int imtype) 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 @@ bMovieHandle *BKE_get_movie_handle(int imtype) mh.start_movie = start_ffmpeg; mh.append_movie = append_ffmpeg; mh.end_movie = end_ffmpeg; + mh.get_movie_path = filepath_ffmpeg; } #endif if (imtype == R_FRAMESERVER) { @@ -111,7 +119,7 @@ bMovieHandle *BKE_get_movie_handle(int imtype) 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 @@ void makeavistring (RenderData *rd, char *string) } } -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 start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *re int quality; double framerate; - makeavistring(rd, name); + filepath_avi(name, rd); sframe = (rd->sfra); x = rectx; @@ -174,7 +182,7 @@ int start_avi(Scene *scene, RenderData *rd, int rectx, int recty, ReportList *re 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 @@ void end_avi(void) 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'; +} diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c index 5b58f0bfedc..920ff255bcc 100644 --- a/source/blender/blenkernel/intern/writeffmpeg.c +++ b/source/blender/blenkernel/intern/writeffmpeg.c @@ -75,7 +75,6 @@ #endif extern void do_init_ffmpeg(); -static void makeffmpegstring(RenderData* rd, char* string); static int ffmpeg_type = 0; static int ffmpeg_codec = CODEC_ID_MPEG4; @@ -638,7 +637,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report 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 +771,7 @@ static int start_ffmpeg_impl(struct RenderData *rd, int rectx, int recty, Report ********************************************************************** */ /* Get the output filename-- similar to the other output formats */ -static void makeffmpegstring(RenderData* rd, char* string) { +void filepath_ffmpeg(char* string, RenderData* rd) { // XXX quick define, solve! #define FILE_MAXDIR 256 |