Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-01-05 22:03:48 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-01-05 22:03:48 +0400
commitf7647dc96d6b30b0ecf2d571dc8e8fe2a5440f63 (patch)
tree4dc52656718a74e66c163e89ac85b72719b8e2fa /source/blender/editors/screen/screendump.c
parent5233aea8fb6513d94d4cceba43833aa75fc09810 (diff)
Fix #29796: Poor screencast quality with any AVI Codec
Looks like some codecs depends on valid PTS set for frame to encode frame in right way. PTS is calculating based on current frame number appending to stream which is stored in render data. So use rd.cfra in screenshot_startjob() instead of keeping own variable for reporting current frame number. Now codecs should be happy and work nice.
Diffstat (limited to 'source/blender/editors/screen/screendump.c')
-rw-r--r--source/blender/editors/screen/screendump.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c
index 31aab956754..fe2dc1fb913 100644
--- a/source/blender/editors/screen/screendump.c
+++ b/source/blender/editors/screen/screendump.c
@@ -278,7 +278,6 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
ScreenshotJob *sj= sjv;
RenderData rd= sj->scene->r;
bMovieHandle *mh= BKE_get_movie_handle(sj->scene->r.im_format.imtype);
- int cfra= 1;
/* we need this as local variables for renderdata */
rd.frs_sec= U.scrcastfps;
@@ -303,9 +302,9 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
if(sj->dumprect) {
if(mh) {
- if(mh->append_movie(&rd, cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports)) {
- BKE_reportf(&sj->reports, RPT_INFO, "Appended frame: %d", cfra);
- printf("Appended frame %d\n", cfra);
+ if(mh->append_movie(&rd, rd.cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, &sj->reports)) {
+ BKE_reportf(&sj->reports, RPT_INFO, "Appended frame: %d", rd.cfra);
+ printf("Appended frame %d\n", rd.cfra);
} else
break;
}
@@ -314,7 +313,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
char name[FILE_MAX];
int ok;
- BKE_makepicstring(name, rd.pic, sj->bmain->name, cfra, rd.im_format.imtype, rd.scemode & R_EXTENSION, TRUE);
+ BKE_makepicstring(name, rd.pic, sj->bmain->name, rd.cfra, rd.im_format.imtype, rd.scemode & R_EXTENSION, TRUE);
ibuf->rect= sj->dumprect;
ok= BKE_write_ibuf(ibuf, name, &rd.im_format);
@@ -338,7 +337,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float
*do_update= 1;
- cfra++;
+ rd.cfra++;
}
else