+// input_buffer is ONE image
+// fragment_size is the size of this image (fragment)
+bool CreateOneFrame (std::ostream *fp, void *input_buffer, int fragment_size,
+ int image_width, int image_height, int numZ, int sample_pixel, int quality, JpegVector &v)
+{
+ struct jpeg_compress_struct cinfo;
+ int row_stride; /* physical row width in image buffer */
+ size_t beg = fp->tellp();
+ bool r = InitializeJpeg(fp, fragment_size, image_width, image_height,
+ sample_pixel, quality, cinfo, row_stride);
+ assert( r );
+ (void)numZ;
+
+ uint8_t *pbuffer = (uint8_t*)input_buffer;
+ //int i;
+ //for(i=0; i<numZ; ++i)
+// {
+ r = WriteScanlines(cinfo, pbuffer, row_stride);
+ assert( r );
+// pbuffer+=fragment_size; //shift to next image
+
+ //Upodate frag size
+// size_t end = fp->tellp();
+// std::cerr << "DIFF: " << end-beg << std::endl;
+
+// JpegPair &jp = v[i];
+// jp.second = end-beg;
+ //beg = end; //
+ // }
+
+ r = FinalizeJpeg(cinfo);
+ assert( r );
+ size_t end = fp->tellp();
+ static int i = 0;
+ JpegPair &jp = v[i];
+ jp.second = end-beg;
+
+ if( ((end-beg) % 2) )
+ {
+ fp->put( '\0' );
+ jp.second += 1;
+ }
+ assert( !(jp.second % 2) );
+ std::cerr << "DIFF: " << i <<" -> " << jp.second << std::endl;
+
+ ++i;
+
+ //JpegPair &jp = v[0];
+ //jp.second = 15328;
+
+ return true;
+}
+
+//bool CreateMultipleFrames (std::ostream *fp, void *input_buffer, int fragment_size,
+// int image_width, int image_height, int sample_pixel, int quality, JpegVector &v)
+//{
+//}
+
+#define WITHOFFSETTABLE 1
+