X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvframe.C;h=76d6ae1d0e024521626e5143ab75a0ab9b5dfe8f;hp=5cd9901b3666e38eb813ac4c0d1f92da3060a741;hb=e41864cf7931bfb86f68c5d35d4578dfe161d386;hpb=ad498171bc20d8187dfa891da26d7b32a2ff0380 diff --git a/cinelerra-5.1/guicast/vframe.C b/cinelerra-5.1/guicast/vframe.C index 5cd9901b..76d6ae1d 100644 --- a/cinelerra-5.1/guicast/vframe.C +++ b/cinelerra-5.1/guicast/vframe.C @@ -874,6 +874,28 @@ int VFrame::write_png(const char *path) return 0; } +void VFrame::write_ppm(VFrame *vfrm, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + char fn[BCTEXTLEN]; + vsnprintf(fn, sizeof(fn), fmt, ap); + va_end(ap); + FILE *fp = fopen(fn,"w"); + if( !fp ) { perror("write_ppm"); return; } + VFrame *frm = vfrm; + if( frm->get_color_model() != BC_RGB888 ) { + frm = new VFrame(frm->get_w(), frm->get_h(), BC_RGB888); + frm->transfer_from(vfrm); + } + int w = frm->get_w(), h = frm->get_h(); + fprintf(fp,"P6\n%d %d\n255\n",w,h); + unsigned char **rows = frm->get_rows(); + for( int i=0; i