Cleanup: remove historic, blender-only jpeg io

This commit is contained in:
Campbell Barton 2015-10-14 20:13:57 +11:00
parent ad58310161
commit 2635f5b2c8
2 changed files with 1 additions and 150 deletions

View File

@ -124,12 +124,6 @@ enum eImbTypes {
#define RAWTGA 1
#define JPG_STD 0
#define JPG_VID 1
#define JPG_JST 2
#define JPG_MAX 3
#define JPG_MSK 0x03
#ifdef WITH_TIFF
#define TIF_16BIT (1 << 8 )
#endif

View File

@ -54,12 +54,6 @@
#include "IMB_colormanagement.h"
#include "IMB_colormanagement_intern.h"
// #define IS_jpg(x) (x->ftype & JPG) // UNUSED
#define IS_stdjpg(x) ((x->foptions.flag & JPG_MSK) == JPG_STD)
// #define IS_vidjpg(x) ((x->foptions & JPG_MSK) == JPG_VID) // UNUSED
#define IS_jstjpg(x) ((x->foptions.flag & JPG_MSK) == JPG_JST)
#define IS_maxjpg(x) ((x->foptions.flag & JPG_MSK) == JPG_MAX)
/* the types are from the jpeg lib */
static void jpeg_error(j_common_ptr cinfo) ATTR_NORETURN;
static void init_source(j_decompress_ptr cinfo);
@ -70,20 +64,6 @@ static void memory_source(j_decompress_ptr cinfo, const unsigned char *buffer, s
static boolean handle_app1(j_decompress_ptr cinfo);
static ImBuf *ibJpegImageFromCinfo(struct jpeg_decompress_struct *cinfo, int flags);
/*
* In principle there are 4 jpeg formats.
*
* 1. jpeg - standard printing, u & v at quarter of resolution
* 2. jvid - standard video, u & v half resolution, frame not interlaced
*
* type 3 is unsupported as of jul 05 2000 Frank.
*
* 3. jstr - as 2, but written in 2 separate fields
*
* 4. jmax - no scaling in the components
*/
static int jpeg_default_quality;
static int ibuf_foptions;
@ -304,14 +284,6 @@ static ImBuf *ibJpegImageFromCinfo(struct jpeg_decompress_struct *cinfo, int fla
jpeg_start_decompress(cinfo);
if (ibuf_foptions == 0) {
ibuf_foptions = JPG_STD;
if (cinfo->max_v_samp_factor == 1) {
if (cinfo->max_h_samp_factor == 1) ibuf_foptions = JPG_MAX;
else ibuf_foptions = JPG_VID;
}
}
if (flags & IB_test) {
jpeg_abort_decompress(cinfo);
ibuf = IMB_allocImBuf(x, y, 8 * depth, 0);
@ -640,124 +612,9 @@ static int save_stdjpeg(const char *name, struct ImBuf *ibuf)
return 1;
}
static int save_vidjpeg(const char *name, struct ImBuf *ibuf)
{
FILE *outfile;
struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
struct my_error_mgr jerr;
if ((outfile = BLI_fopen(name, "wb")) == NULL) return 0;
jpeg_default_quality = 90;
cinfo->err = jpeg_std_error(&jerr.pub);
jerr.pub.error_exit = jpeg_error;
/* Establish the setjmp return context for jpeg_error to use. */
if (setjmp(jerr.setjmp_buffer)) {
/* If we get here, the JPEG code has signaled an error.
* We need to clean up the JPEG object, close the input file, and return.
*/
jpeg_destroy_compress(cinfo);
fclose(outfile);
remove(name);
return 0;
}
init_jpeg(outfile, cinfo, ibuf);
/* adjust scaling factors */
if (cinfo->in_color_space == JCS_RGB) {
cinfo->comp_info[0].h_samp_factor = 2;
cinfo->comp_info[0].v_samp_factor = 1;
}
write_jpeg(cinfo, ibuf);
fclose(outfile);
jpeg_destroy_compress(cinfo);
return 1;
}
static int save_jstjpeg(const char *name, struct ImBuf *ibuf)
{
char fieldname[1024];
struct ImBuf *tbuf;
int oldy, returnval;
tbuf = IMB_allocImBuf(ibuf->x, ibuf->y / 2, 24, IB_rect);
tbuf->ftype = ibuf->ftype;
tbuf->foptions = ibuf->foptions;
tbuf->flags = ibuf->flags;
oldy = ibuf->y;
ibuf->x *= 2;
ibuf->y /= 2;
IMB_rectcpy(tbuf, ibuf, 0, 0, 0, 0, ibuf->x, ibuf->y);
sprintf(fieldname, "%s.jf0", name);
returnval = save_vidjpeg(fieldname, tbuf);
if (returnval == 1) {
IMB_rectcpy(tbuf, ibuf, 0, 0, tbuf->x, 0, ibuf->x, ibuf->y);
sprintf(fieldname, "%s.jf1", name);
returnval = save_vidjpeg(fieldname, tbuf);
}
ibuf->y = oldy;
ibuf->x /= 2;
IMB_freeImBuf(tbuf);
return returnval;
}
static int save_maxjpeg(const char *name, struct ImBuf *ibuf)
{
FILE *outfile;
struct jpeg_compress_struct _cinfo, *cinfo = &_cinfo;
struct my_error_mgr jerr;
if ((outfile = BLI_fopen(name, "wb")) == NULL) return 0;
jpeg_default_quality = 100;
cinfo->err = jpeg_std_error(&jerr.pub);
jerr.pub.error_exit = jpeg_error;
/* Establish the setjmp return context for jpeg_error to use. */
if (setjmp(jerr.setjmp_buffer)) {
/* If we get here, the JPEG code has signaled an error.
* We need to clean up the JPEG object, close the input file, and return.
*/
jpeg_destroy_compress(cinfo);
fclose(outfile);
remove(name);
return 0;
}
init_jpeg(outfile, cinfo, ibuf);
/* adjust scaling factors */
if (cinfo->in_color_space == JCS_RGB) {
cinfo->comp_info[0].h_samp_factor = 1;
cinfo->comp_info[0].v_samp_factor = 1;
}
write_jpeg(cinfo, ibuf);
fclose(outfile);
jpeg_destroy_compress(cinfo);
return 1;
}
int imb_savejpeg(struct ImBuf *ibuf, const char *name, int flags)
{
ibuf->flags = flags;
if (IS_stdjpg(ibuf)) return save_stdjpeg(name, ibuf);
if (IS_jstjpg(ibuf)) return save_jstjpeg(name, ibuf);
if (IS_maxjpg(ibuf)) return save_maxjpeg(name, ibuf);
return save_vidjpeg(name, ibuf);
return save_stdjpeg(name, ibuf);
}