diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-05 22:03:48 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-01-05 22:03:48 +0400 |
commit | f7647dc96d6b30b0ecf2d571dc8e8fe2a5440f63 (patch) | |
tree | 4dc52656718a74e66c163e89ac85b72719b8e2fa /source/blender/editors/screen/screendump.c | |
parent | 5233aea8fb6513d94d4cceba43833aa75fc09810 (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.c | 11 |
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 |