mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	create separate ImagingJpegUseJCSExtensions function
This commit is contained in:
		
							parent
							
								
									83c4d90923
								
							
						
					
					
						commit
						7725d281a5
					
				
							
								
								
									
										25
									
								
								decode.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								decode.c
									
									
									
									
									
								
							| 
						 | 
					@ -809,17 +809,6 @@ PyImaging_ZipDecoderNew(PyObject* self, PyObject* args)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "Jpeg.h"
 | 
					#include "Jpeg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define STRINGIFY(x) #x
 | 
					 | 
				
			||||||
#define TOSTRING(x) STRINGIFY(x)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// There is no way to compare versions on compile time,
 | 
					 | 
				
			||||||
// so we have to do that in runtime.
 | 
					 | 
				
			||||||
#ifdef LIBJPEG_TURBO_VERSION
 | 
					 | 
				
			||||||
char *libjpeg_turbo_version = TOSTRING(LIBJPEG_TURBO_VERSION);
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
char *libjpeg_turbo_version = NULL;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PyObject*
 | 
					PyObject*
 | 
				
			||||||
PyImaging_JpegDecoderNew(PyObject* self, PyObject* args)
 | 
					PyImaging_JpegDecoderNew(PyObject* self, PyObject* args)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -830,7 +819,6 @@ PyImaging_JpegDecoderNew(PyObject* self, PyObject* args)
 | 
				
			||||||
    char* jpegmode; /* what's in the file */
 | 
					    char* jpegmode; /* what's in the file */
 | 
				
			||||||
    int scale = 1;
 | 
					    int scale = 1;
 | 
				
			||||||
    int draft = 0;
 | 
					    int draft = 0;
 | 
				
			||||||
    int use_jcs_extensions = 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!PyArg_ParseTuple(args, "ssz|ii", &mode, &rawmode, &jpegmode,
 | 
					    if (!PyArg_ParseTuple(args, "ssz|ii", &mode, &rawmode, &jpegmode,
 | 
				
			||||||
                          &scale, &draft))
 | 
					                          &scale, &draft))
 | 
				
			||||||
| 
						 | 
					@ -843,23 +831,12 @@ PyImaging_JpegDecoderNew(PyObject* self, PyObject* args)
 | 
				
			||||||
    if (decoder == NULL)
 | 
					    if (decoder == NULL)
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef JCS_EXTENSIONS
 | 
					 | 
				
			||||||
    #if defined(LIBJPEG_TURBO_VERSION_NUMBER)
 | 
					 | 
				
			||||||
        #if LIBJPEG_TURBO_VERSION_NUMBER >= 1002010
 | 
					 | 
				
			||||||
            use_jcs_extensions = 1;
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
    #else
 | 
					 | 
				
			||||||
        if (libjpeg_turbo_version) {
 | 
					 | 
				
			||||||
            use_jcs_extensions = strcmp(libjpeg_turbo_version, "1.2.1") >= 0;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
    // libjpeg-turbo supports different output formats.
 | 
					    // libjpeg-turbo supports different output formats.
 | 
				
			||||||
    // We are choosing Pillow's native format (3 color bytes + 1 padding)
 | 
					    // We are choosing Pillow's native format (3 color bytes + 1 padding)
 | 
				
			||||||
    // to avoid extra conversion in Unpack.c.
 | 
					    // to avoid extra conversion in Unpack.c.
 | 
				
			||||||
    if (use_jcs_extensions && strcmp(rawmode, "RGB") == 0) {
 | 
					    if (ImagingJpegUseJCSExtensions() && strcmp(rawmode, "RGB") == 0) {
 | 
				
			||||||
        rawmode = "RGBX";
 | 
					        rawmode = "RGBX";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (get_unpacker(decoder, mode, rawmode) < 0)
 | 
					    if (get_unpacker(decoder, mode, rawmode) < 0)
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -406,6 +406,7 @@ extern int ImagingHexDecode(Imaging im, ImagingCodecState state,
 | 
				
			||||||
extern int ImagingJpegDecode(Imaging im, ImagingCodecState state,
 | 
					extern int ImagingJpegDecode(Imaging im, ImagingCodecState state,
 | 
				
			||||||
			     UINT8* buffer, int bytes);
 | 
								     UINT8* buffer, int bytes);
 | 
				
			||||||
extern int ImagingJpegDecodeCleanup(ImagingCodecState state);
 | 
					extern int ImagingJpegDecodeCleanup(ImagingCodecState state);
 | 
				
			||||||
 | 
					extern int ImagingJpegUseJCSExtensions(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern int ImagingJpegEncode(Imaging im, ImagingCodecState state,
 | 
					extern int ImagingJpegEncode(Imaging im, ImagingCodecState state,
 | 
				
			||||||
			     UINT8* buffer, int bytes);
 | 
								     UINT8* buffer, int bytes);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,35 @@
 | 
				
			||||||
#include "Jpeg.h"
 | 
					#include "Jpeg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define STRINGIFY(x) #x
 | 
				
			||||||
 | 
					#define TOSTRING(x) STRINGIFY(x)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// There is no way to compare versions on compile time,
 | 
				
			||||||
 | 
					// so we have to do that in runtime.
 | 
				
			||||||
 | 
					#ifdef LIBJPEG_TURBO_VERSION
 | 
				
			||||||
 | 
					char *libjpeg_turbo_version = TOSTRING(LIBJPEG_TURBO_VERSION);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					char *libjpeg_turbo_version = NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					ImagingJpegUseJCSExtensions()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int use_jcs_extensions = 0;
 | 
				
			||||||
 | 
					    #ifdef JCS_EXTENSIONS
 | 
				
			||||||
 | 
					        #if defined(LIBJPEG_TURBO_VERSION_NUMBER)
 | 
				
			||||||
 | 
					            #if LIBJPEG_TURBO_VERSION_NUMBER >= 1002010
 | 
				
			||||||
 | 
					                use_jcs_extensions = 1;
 | 
				
			||||||
 | 
					            #endif
 | 
				
			||||||
 | 
					        #else
 | 
				
			||||||
 | 
					            if (libjpeg_turbo_version) {
 | 
				
			||||||
 | 
					                use_jcs_extensions = strcmp(libjpeg_turbo_version, "1.2.1") >= 0;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					    return use_jcs_extensions;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* -------------------------------------------------------------------- */
 | 
					/* -------------------------------------------------------------------- */
 | 
				
			||||||
/* Suspending input handler                                             */
 | 
					/* Suspending input handler                                             */
 | 
				
			||||||
/* -------------------------------------------------------------------- */
 | 
					/* -------------------------------------------------------------------- */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user