Fix regression after multiview, basically we appended the wrong frames
to movie file. We have to resort to use crappy workarounds with preview arguments again since preview range is only for OpenGL preview.
This commit is contained in:
@@ -795,7 +795,7 @@ static bool screen_opengl_render_anim_step(bContext *C, wmOperator *op)
|
||||
|
||||
if (is_movie) {
|
||||
ok = RE_WriteRenderViewsMovie(oglrender->reports, rr, scene, &scene->r, oglrender->mh, oglrender->sizex,
|
||||
oglrender->sizey, oglrender->movie_ctx_arr, oglrender->totvideos);
|
||||
oglrender->sizey, oglrender->movie_ctx_arr, oglrender->totvideos, PRVRANGEON != 0);
|
||||
if (ok) {
|
||||
printf("Append frame %d", scene->r.cfra);
|
||||
BKE_reportf(op->reports, RPT_INFO, "Appended frame: %d", scene->r.cfra);
|
||||
|
||||
@@ -264,7 +264,7 @@ void RE_TileProcessor(struct Render *re);
|
||||
bool RE_WriteRenderViewsImage(struct ReportList *reports, struct RenderResult *rr, struct Scene *scene, struct Object *camera, const bool stamp, char *name);
|
||||
bool RE_WriteRenderViewsMovie(struct ReportList *reports, struct RenderResult *rr, struct Scene *scene, struct RenderData *rd,
|
||||
struct bMovieHandle *mh, const size_t width, const size_t height, void **movie_ctx_arr,
|
||||
const size_t totvideos);
|
||||
const size_t totvideos, bool preview);
|
||||
|
||||
/* only RE_NewRender() needed, main Blender render calls */
|
||||
void RE_BlenderFrame(struct Render *re, struct Main *bmain, struct Scene *scene,
|
||||
|
||||
@@ -3233,7 +3233,7 @@ bool RE_WriteRenderViewsImage(ReportList *reports, RenderResult *rr, Scene *scen
|
||||
}
|
||||
|
||||
bool RE_WriteRenderViewsMovie(ReportList *reports, RenderResult *rr, Scene *scene, RenderData *rd, bMovieHandle *mh,
|
||||
const size_t width, const size_t height, void **movie_ctx_arr, const size_t totvideos)
|
||||
const size_t width, const size_t height, void **movie_ctx_arr, const size_t totvideos, bool preview)
|
||||
{
|
||||
bool is_mono;
|
||||
bool ok = true;
|
||||
@@ -3261,7 +3261,7 @@ bool RE_WriteRenderViewsMovie(ReportList *reports, RenderResult *rr, Scene *scen
|
||||
IMB_colormanagement_imbuf_for_write(ibuf, true, false, &scene->view_settings,
|
||||
&scene->display_settings, &scene->r.im_format);
|
||||
|
||||
ok &= mh->append_movie(movie_ctx_arr[view_id], rd, scene->r.sfra, scene->r.cfra,
|
||||
ok &= mh->append_movie(movie_ctx_arr[view_id], rd, preview ? scene->r.psfra : scene->r.sfra, scene->r.cfra,
|
||||
(int *) ibuf->rect, ibuf->x, ibuf->y, suffix, reports);
|
||||
|
||||
if (do_free) {
|
||||
@@ -3301,7 +3301,7 @@ bool RE_WriteRenderViewsMovie(ReportList *reports, RenderResult *rr, Scene *scen
|
||||
|
||||
ibuf_arr[2] = IMB_stereo3d_ImBuf(&scene->r.im_format, ibuf_arr[0], ibuf_arr[1]);
|
||||
|
||||
ok = mh->append_movie(movie_ctx_arr[0], rd, scene->r.sfra, scene->r.cfra, (int *) ibuf_arr[2]->rect,
|
||||
ok = mh->append_movie(movie_ctx_arr[0], rd, preview ? scene->r.psfra : scene->r.sfra, scene->r.cfra, (int *) ibuf_arr[2]->rect,
|
||||
ibuf_arr[2]->x, ibuf_arr[2]->y, "", reports);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
@@ -3331,7 +3331,7 @@ static int do_write_image_or_movie(Render *re, Main *bmain, Scene *scene, bMovie
|
||||
|
||||
/* write movie or image */
|
||||
if (BKE_imtype_is_movie(scene->r.im_format.imtype)) {
|
||||
RE_WriteRenderViewsMovie(re->reports, &rres, scene, &re->r, mh, re->rectx, re->recty, re->movie_ctx_arr, totvideos);
|
||||
RE_WriteRenderViewsMovie(re->reports, &rres, scene, &re->r, mh, re->rectx, re->recty, re->movie_ctx_arr, totvideos, false);
|
||||
}
|
||||
else {
|
||||
if (name_override)
|
||||
|
||||
Reference in New Issue
Block a user