static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts) { mp_image_t *dmpi = (mp_image_t *)mpi->priv; if(!(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK))){ dmpi=vf_get_image(vf->next,mpi->imgfmt, MP_IMGTYPE_EXPORT, 0, mpi->width, mpi->height); vf_clone_mpi_attributes(dmpi, mpi); dmpi->planes[0]=mpi->planes[0]; dmpi->planes[1]=mpi->planes[1]; dmpi->planes[2]=mpi->planes[2]; dmpi->stride[0]=mpi->stride[0]; dmpi->stride[1]=mpi->stride[1]; dmpi->stride[2]=mpi->stride[2]; dmpi->width=mpi->width; dmpi->height=mpi->height; } if(vf->priv->shot) { if (vf->priv->shot==1) vf->priv->shot=0; gen_fname(vf->priv); if (vf->priv->fname[0]) { if (!vf->priv->store_slices) scale_image(vf->priv, dmpi); write_png(vf->priv); } vf->priv->store_slices = 0; } return vf_next_put_image(vf, dmpi, pts); }
void io_com_dump(MPI_Comm comm, const Coords *coords, const char *name, long id, int n, const int *ii, const float3 *rr) { char fname[FILENAME_MAX] = {0}, *data; long nchar = 0; EMALLOC(MAX_CHAR_PER_LINE * n, &data); if (m::is_master(comm)) UC(os_mkdir(BASE)); gen_fname(name, id, fname); UC(nchar = swrite(coords, n, ii, rr, /**/ data)); write_mpi(comm, fname, nchar, data); EFREE(data); }