Commit Graph

405 Commits

Author SHA1 Message Date
Fabian Giesen
14c2993310 Merge branch 'realitix-robustify' into dev 2017-07-22 15:23:14 -07:00
Fabian Giesen
cc7f1d1e6d stb_image: Documentation fixes.
req_comp is now desired_channels and *comp is *channels_in_file.

Fixes issue #466.
2017-07-21 22:35:01 -07:00
Fabian Giesen
0674660451 stb_image: Relax raw_len validation for non-interlaced PNGs.
We used to require exact match between img_len and raw_len for
non-interlaced PNGs, but the PNG in issue #276 has extra bytes
(all zeros) at the end of the compressed DEFLATE stream.

The PNG spec doesn't have anything to say about it (that I
can tell), and if libpng accepts this, who are we to judge.

Fixes issue #276.
2017-07-21 21:55:37 -07:00
Nathan Reed
76a1a1c408 Fix variable-shadowing warnings 2017-05-11 22:49:19 -07:00
Nathan Reed
7091cb6ed6 Fix integer conversion warning 2017-05-11 22:48:46 -07:00
PopPoLoPoPpo
9bcda8bb1c Add stbi_load_16() variants to load from memory or callbacks 2017-05-05 00:39:08 +02:00
Sean Barrett
84e42c2e8d fix stbi_shiftsigned to be shifting a value that's unsigned 2017-04-28 23:35:37 -07:00
Jean-Sebastien Bevilacqua
d8796f05bf Robustify stbi__sse2_available in stb_image.h
Function `stbi__sse2_available` takes no argument,
we should be explicit by passing `void` as argument.
It will remove warnings from 'some' compilers.
2017-04-25 21:02:48 +02:00
Kevin Schmidt
97ae5fb3db Edit contributor list. 2017-04-18 17:36:48 +02:00
Kevin Schmidt
1dfdf5558d Fix STBI_NO_STDIO. 2017-04-18 16:17:27 +02:00
Sean Barrett
d795785f3d docs 2017-03-18 18:50:06 -07:00
Sean Barrett
56a61e178f reorganize contributor list (removing one redundant name and adding one new one as well) 2017-03-18 18:48:09 -07:00
Sean Barrett
c79fa78ee8 tweaks to previous merge 2017-03-18 18:42:54 -07:00
Sean Barrett
351489803f Merge branch 'phprus-patch-1' of https://github.com/phprus/stb into working 2017-03-18 18:41:15 -07:00
Sean Barrett
2de9961443 docs 2017-03-18 18:39:06 -07:00
Sean Barrett
90e8658d80 Merge branch 'fix_stbimage_pnm_load' of https://github.com/rygorous/stb into working 2017-03-18 18:37:20 -07:00
Sean Barrett
d9e7c55bd7 minor docs for last merge 2017-03-18 18:35:30 -07:00
Sean Barrett
97c58e3891 Merge branch 'fix_stbimage_gcc_sse2' of https://github.com/rygorous/stb into working 2017-03-18 18:34:17 -07:00
Sean Barrett
24fa816116 merge https://github.com/nothings/stb/pull/427 but I messed up the merge
so you don't get the automatic info you normally do
2017-03-18 18:32:35 -07:00
Sean Barrett
6d60610348 tweaks to previous merge 2017-03-18 18:15:41 -07:00
Sean Barrett
00c2545510 Merge branch 'rgb-detect' of https://github.com/jeremysawicki/stb into working 2017-03-18 18:08:00 -07:00
Sean Barrett
8fe48099cc add comment for next fix prematurely 2017-03-18 18:07:51 -07:00
Sean Barrett
5bbe1d8c2a fixes to that PR 2017-03-18 18:03:34 -07:00
Sean Barrett
55112399e6 Merge branch 'master' of https://github.com/uTox/stb into working 2017-03-18 17:47:54 -07:00
Sean Barrett
be6d13cd6d fix bug in png decoding with 1,2,4-bpp images using filter that samples previous line 2017-03-18 10:54:22 -07:00
Vladislav
667f35578b statically initialize 2017-03-08 21:16:50 +05:00
Fabian Giesen
22c72a069c stb_image: Support optional args consistently.
My guideline for the rules is the PNG loader (which I consider
"canonical"). In the _load functions, x and y are required but
comp is optional; in the _info functions, all three are optional.

Fixes issue #411 (and other related, unreported issues).
2017-03-04 21:17:09 -08:00
Fabian Giesen
3e17544873 stb_image: Give up trying to runtime-detect SSE2 on GCC.
We tried but it was nothing but trouble. New rule: with
GCC/Clang, if you're compiling with -msse2, you get always-on
SSE2 code, otherwise you don't get any. Trying to ship
anything with proper runtime dispatch requires both working
around certain bugs and some fiddling with build settings,
which runs contrary to the intent of a one-file library,
so bail on it entirely.

Fixes issue #280.
Fixes issue #410.
2017-03-04 20:49:14 -08:00
Jeremy Sawicki
9e76bb5108 stb_image: JPEG: Improved detection of RGB images 2017-03-03 16:24:21 -08:00
Gregory Mullen (grayhatter)
16c83cd5fc
Fix a pair of warnings in stb_image.h 2017-03-03 11:26:34 -08:00
Sean Barrett
6a3d4786c9 Merge branch 'unknown-marker' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:40:07 -08:00
Sean Barrett
7e389e85c1 Merge branch 'dnl-segment' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:39:31 -08:00
Sean Barrett
15c7e06dc8 Merge branch 'junk-before-marker' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:38:06 -08:00
Sean Barrett
dc6089f05b tweak fill byte PR 2017-03-03 08:37:30 -08:00
Sean Barrett
50ae79d811 Merge branch 'fill-bytes' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:36:03 -08:00
Sean Barrett
a6dc061137 tweak 16-bit quantization for clarity 2017-03-03 08:35:14 -08:00
Sean Barrett
0befbc3d78 Merge branch 'dequant-16-bits' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:31:57 -08:00
Sean Barrett
014af7b78a Merge branch 'component-ids' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:30:57 -08:00
Sean Barrett
786ac92daa tweak RGB-to-Y conversion 2017-03-03 08:30:49 -08:00
Sean Barrett
64e1799f24 Merge branch 'rgb-grayscale' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:25:29 -08:00
Sean Barrett
8905cb9a8e Merge branch 'patch-1' of https://github.com/RufUsul/stb into working 2017-03-03 08:21:46 -08:00
Sean Barrett
47685c5f84 remove deprecated old-precision jpg path from stb_image.h
tweak license reference wording
2017-03-03 08:19:09 -08:00
Sean Barrett
e248e30954 change license to public-domain AND mit (based on twitter vote) 2017-03-03 07:53:07 -08:00
Jeremy Sawicki
f5f7dc02a1 stb_image: JPEG: Provide failure reason for unknown marker 2017-03-03 01:11:34 -08:00
Jeremy Sawicki
2219a6da29 stb_image: JPEG: Accept DNL segment 2017-03-03 00:13:27 -08:00
Jeremy Sawicki
6f5677946c stb_image: JPEG: Accept non-zero junk bytes at the end of image data 2017-03-02 23:48:02 -08:00
Jeremy Sawicki
344c3f73d5 stb_image: JPEG: Accept fill bytes in stbi__grow_buffer_unsafe 2017-03-02 23:10:03 -08:00
Jeremy Sawicki
e08d398671 stb_image: JPEG: Accept 16-bit quantization tables 2017-03-02 22:32:30 -08:00
Jeremy Sawicki
34fa37bbb4 stb_image: JPEG: Accept any component IDs 2017-03-02 21:40:40 -08:00
Jeremy Sawicki
cb7ffb2408 stb_image: Update contributors 2017-03-02 18:19:21 -08:00
Jeremy Sawicki
552c548a0e stb_image: JPEG: Convert RGB to grayscale properly 2017-03-02 18:06:10 -08:00
themanagainstthetank
7e989db555 update stb_image.h
int raw_data[4] to 0, or the compiler bugs
2017-01-16 18:12:31 +08:00
Sean Barrett
96620a3a54 update version numbers 2017-01-16 00:51:24 -08:00
Sean Barrett
dead3815e2 credits 2017-01-16 00:05:58 -08:00
Sean Barrett
28c24f7b83 Merge branch 'fix-truncation' of https://github.com/sammyhw/stb into working 2017-01-15 23:58:26 -08:00
Sean Barrett
48710234f2 credits; 1/2/4-bit png fix; easy font spacing; NO_STDIO in image_write 2017-01-15 23:57:53 -08:00
Thomas Ruf
f07727a28a stb_image.h: large structures on the stack
more of "allocate large structures on the stack", this time in the forgotten stbi__jpeg_test
-> avoids the infamous _chkstk() when working with CRT
2016-12-28 14:16:45 +01:00
sammyhw
ec9db6f84b allow for all 16 bits 2016-12-15 23:49:19 -05:00
Sean Barrett
b61b7a74fa update version info 2016-12-04 05:40:21 -08:00
Sean Barrett
7bcaa93a76 Merge branch 'master' of https://github.com/Zelex/stb into merging
Also add more credits
Also fix linking multiple copies with STB_IMAGE_STATIC

Conflicts:
	stb_image.h
2016-12-04 05:38:47 -08:00
Sean Barrett
7759a2a93d fix "misleading indentation" gcc warning 2016-12-04 05:25:24 -08:00
Sean Barrett
ae241feec4 Merge branch 'stb_img_overflows' of https://github.com/rygorous/stb into working
Conflicts:
	stb_image.h
2016-12-04 05:20:57 -08:00
Sean Barrett
7736399517 return 16-bit PSDs through 16-bit API (untested) 2016-12-04 05:13:58 -08:00
Sean Barrett
e0700d8e2c 16-bit png changes 2016-11-29 04:13:17 -08:00
Sean Barrett
239a6718e1 rename stbi_load parameters to reduce confusion 2016-11-29 03:03:07 -08:00
jon
2a170daee5 warning fixes, more RGBE fix 2016-11-28 16:24:11 -06:00
jon
a2defc3d7a added support for RGBE header HDR files 2016-11-28 16:05:39 -06:00
Fabian Giesen
6b66033e18 stb_image: Fix memory leak and missing out-of-mem check.
stbi__process_frame_header had two bugs when dealing with progressive
JPEGs:
1. when malloc failed allocating raw_data, previous components'
   raw_coeff didn't get freed
2. no out-of-memory check in raw_coeff allocation

Fix both and share a bit more cleanup code in general.
2016-10-22 00:29:37 -07:00
Fabian Giesen
62f372754f stb_image: Fix HDR/PSD RLE decoders.
Runs need to be bounds checked.

Fixes issues #315, #317.
2016-10-22 00:29:37 -07:00
Fabian Giesen
02190634c2 stb_image: Overflow checking for image allocs.
Adds some helpers that check whether a product of multiple
factors (that need to be non-negative: this is enforced)
summed with another non-negative value overflows when
performed as int. Since stb_image mostly works in ints,
this seems like the safest route. Limits size of images
to 2GB but several of the decoders already enforce this
limit (or even lower ones).

Also adds wrappers for malloc that combine a mul-add-with-
overflow-check with the actual malloc, and return NULL
on failure. Then use them when allocating something that
is the product of multiple factors.

For image formats, also add a top-level "is this too big?"
check that gives a more useful error message; otherwise,
the failed mallocs result in an "out of memory" error.
The idea is that the top-level checks should be the primary
way to catch these bugs (and produce a useful error message).
But a misleading error message is still vastly preferable to
a buffer overflow exploit.

Fixes issues #310, #313, #314, #318. (Verified with the
provided test images)

Along the way, this fixes a previously unnoticed bug in
ldr_to_hdr / hdr_to_ldr (missing NULL check); these functions
are called with the result of an image decoder, so NULLs can
definitely happen.

Another bug noticed along the way is that handling of
interlaced 16-bit PNGs was incorrect. Fixing this (along
with the previous modifications) fixes issue #311.

Yet another bug noticed during this change is that reduce_png
did not check the right pointer during its out of memory
check. Fix that too.
2016-10-22 00:29:37 -07:00
Fabian Giesen
8c8d735eb7 stb_image: More input validation in deflate decoder
Fixes issue #312.
2016-10-22 00:29:37 -07:00
Sean Barrett
fdca443892 fix crash in 2.11 2016-04-02 07:29:34 -07:00
Sean Barrett
6e4154737c update version numbers, documentation, and contributors 2016-04-02 04:51:26 -07:00
Sean Barrett
7a694bdcca re-enable SSE2 code on x64 except with gcc 2016-04-02 04:01:59 -07:00
Sean Barrett
201af99d9f return correct # of channels for PNG 2016-04-02 03:49:46 -07:00
Sean Barrett
591c7f8cb3 remove white matting when loading transparent PSD 2016-04-02 03:44:50 -07:00
Sean Barrett
c03f4b3c2f Merge branch 'patch-1' of https://github.com/kinetiknz/stb 2016-04-02 02:57:34 -07:00
Sean Barrett
097a70ae38 Merge branch 'master' of https://github.com/tulrich/stb 2016-04-02 02:56:39 -07:00
Sean Barrett
a013c036f3 initialize bmp mr/mg/mb/ma properly 2016-04-02 02:54:25 -07:00
Sean Barrett
406d537b41 Merge branch 'initial_png_16bpc' of https://github.com/socks-the-fox/stb into working 2016-04-02 02:41:16 -07:00
Sean Barrett
efdfbb3c7c Merge branch 'master' into working 2016-04-01 21:43:22 -07:00
Sean Barrett
50479cb07c stb_image: allow jpegs that are rgb not YCrCb 2016-03-26 15:46:59 -07:00
Matthew Gregan
94f2ceac15 Fix typo in stbi__parse_uncompressed_block 2016-03-12 01:55:59 +13:00
Thatcher Ulrich
7e1ee2d386 Allocate large structure using malloc instead of stack. 2016-03-02 15:56:53 -05:00
Thatcher Ulrich
291ad22e84 Replace large stack allocations with dynamic allocations. 2016-03-02 15:31:07 -05:00
Craig Donner
ee6978cb68 Slightly modify the public domain license to keep it in the public domain, but make it clear that even when dedications might not be recognized that the code is still usable. Given that this isn't dual-licensing under a different license, I'm hoping this will be acceptable. 2016-02-25 12:55:44 -08:00
Socks the Fox
eb84b2179b Initial 16 bit per channel PNG support 2016-01-22 12:42:40 -06:00
Sean Barrett
30015ef464 attempt to fix unused var warnings in stb_image 2.09 2016-01-22 04:06:28 -08:00
Sean Barrett
472c4c82a4 update version history 2016-01-16 10:00:19 -08:00
Sean Barrett
ac748cba9b update contributor list, version history, version number 2016-01-16 09:57:04 -08:00
Sean Barrett
82ca643ef3 change previous explicitly-sized realloc support to be new API and unbreak old API 2016-01-16 09:47:22 -08:00
Sean Barrett
853fda6132 Merge branch 'alt_realloc' of https://github.com/romigrou/stb into working 2016-01-16 09:38:13 -08:00
Sean Barrett
c8e50127c5 contributor list 2016-01-16 09:37:34 -08:00
Sean Barrett
32d5e7ca7f Merge branch '16bit-tga' of https://github.com/DanielGibson/stb into working 2016-01-16 08:15:58 -08:00
Sean Barrett
9cb29b6b39 update and reorganize contributor list 2016-01-16 08:13:55 -08:00
Sean Barrett
5746aa023a Merge branch 'stbi_hdr_info_overread' of https://github.com/baldurk/stb into working 2016-01-16 08:05:51 -08:00
Sean Barrett
e30b75af8b update contributor list 2016-01-16 08:05:40 -08:00
Sean Barrett
c7e24f4c4c Merge branch 'master' of https://github.com/svdijk/stb into working 2016-01-16 08:03:22 -08:00
Sean Barrett
1964d53d70 update version number and version history with everything committed to date 2016-01-16 08:01:42 -08:00
Romain Bailly
7e741ffc1e Added the old size as argument to the STBI_REALLOC() and STBIW_REALLOC() macros 2016-01-14 10:34:30 +01:00
Daniel Gibson
87a0396922 stb_image.h: 16 bit TGAs don't really have an alpha channel
I claimed that if the most significant bit of a 16bit pixel is set,
it should be opaque (as is suggested by some sources on the internet),
but implemented the opposite.
If implemented "correctly", lots of 16bit TGAs become invisible.. so I
guess 16bit TGAs aren't really supposed to have an alpha-channel, or at
least most 16bit TGAs (despite having set an "alpha-bit" in the "image
descriptor byte") in the wild don't seem to work like that.

So just assume 16bit non-greyscale TGAs are always STBI_rgb without
an alpha channel.
2015-12-06 05:47:47 +01:00
Daniel Gibson
d235049322 stb_image.h: Fix TGA colormap support
* Calculate correct stb format (incl. proper 16bit support) also when
  using a colormap (palette)
* Create colormap with tga_comp, to correctly support 16bit RGB
  (instead of using tga_palette_bits/8 and just copying the data)
* For TGAs with colormap, the TGA bits per pixel field specifies the
  size of an index to the colormap - the "real" color depth
  of the image is saved in the color map specification's bits per pixel
  field. I think only 8 and 16bit indices make sense (16 should be
  supported, otherwise the colormap length could be u8 instead of u16),
  so I added support for both.
* Helper functions stbi__tga_get_comp() to calculate stb pixelformat and
  stbi__tga_read_rgb16() to read one 16bit pixel and convert it to
  24/32bit RGB(A) - for less duplicate code
2015-12-06 04:33:37 +01:00
Daniel Gibson
57409c3d15 stb_image.h: Improve stbi__tga_info() and stbi__tga_test()
* for paletted images, .._info()'s comp should be based on the palette's
  bits per pixel, not the images bits per pixel (which describes the
  size of an index into the palette and is also checked now)
* make sure the color (map) type and the image type fields of the header
  are consistent (=> if TGA color type is 1 for paletted, the TGA image
  type must be 1 or 9)
* .._test() does some more checks and uses stbi__get16le() instead of
  stbi__get16be() - TGA is little endian.
* .._test() now always rewinds (sometimes it used to do only return 0;
  without rewinding)
* remove "error check" at the beginning of stbi__tga_load(), because
  all that is already tested in stbi__tga_test()
2015-12-06 04:33:30 +01:00
Daniel Gibson
7453e1bfa4 stb_image.h: Support 15/16bit per pixel RGB(A) TGAs
stbi__tga_* assumed that 16bit TGAs were Grayscale + Alpha.
However, if the TGA imagetype is not one of the gray ones, it's 16Bit
RGB data, with 5 Bits per channel. If the TGA image descriptor field
has alpha bits (the 3 least significant ones) set, the pixel's most
significant bit is for alpha: 1 for opaque and 0 for translucent.
Furthermore people claim that TGAs can also pretend to have 15bpp,
which is the same as 16bpp but definitely without alpha.

So 15/16bpp TGAs are now decoded to STBI_rgb(_alpha).
2015-12-06 00:25:22 +01:00
baldurk
4337345c5d Prevent HDR info function from trashing stbi context by over-reading 2015-11-14 13:14:26 +01:00
Sean Barrett
297ff62859 change bmp info to use common header parser 2015-11-08 13:09:16 -08:00
Sean Barrett
876aea3dbe refactor bmp header parser for sharing with stbi_info 2015-11-08 01:22:30 -08:00
Sean Barrett
0615df6c9b allows comments in pgm/ppm headers 2015-11-08 00:45:17 -08:00
svdijk
9f1a587d22 stb_image.h: Fix/add some comments. 2015-11-05 23:34:44 +01:00
svdijk
8603c6e809 stb_image.h: Only define stbi__l2h_{gamme,scale} when needed.
This fixes a (well, actually the only) compiler warning.
2015-11-05 23:32:40 +01:00
Sean Barrett
6b8938124e Merge branch 'fix-vs2015-warnings' of https://github.com/Reedbeta/stb into working 2015-09-13 11:09:23 -07:00
Sean Barrett
d5b8af12cb fix missing "defined" in #if defined(STBI_NO_foo);
fix incorrect initialization of alpha channel for RGB PSD
2015-09-13 11:08:40 -07:00
Nathan Reed
36574182c0 Fix new VS2015 warnings in stb_image 2.07
- conversion from int to stbi_uc
- unused parameter
2015-09-13 11:00:46 -07:00
Sean Barrett
90dc93a1cc fix bug where we couldn't rewind a file that reached EOF, which can happen with < 92-byte PIC,PNM,HDR,TGA 2015-09-13 05:41:21 -07:00
Sean Barrett
28a29dd0f1 credit for michaelangel007 patch 2015-09-13 05:15:09 -07:00
Sean Barrett
ddd05479e9 Merge branch 'master' of https://github.com/Michaelangel007/stb into working 2015-09-13 05:13:57 -07:00
Sean Barrett
0eb5da55a7 er, fix typo in the fix-rmitton checkin 2015-09-13 05:12:53 -07:00
Sean Barrett
082289b528 Merge branch 'master' of https://github.com/rmitton/stb into working 2015-09-13 05:12:35 -07:00
Sean Barrett
5607c25cf4 tweak rmitton 16-bit psd patch;
adjust credits
2015-09-13 05:11:51 -07:00
Sean Barrett
69d6fd573c Merge branch 'psd16' of https://github.com/rmitton/stb into working 2015-09-13 04:58:48 -07:00
Sean Barrett
1ea670e0a5 Merge branch 'urraka-gif-patch' of https://github.com/urraka/stb into working 2015-09-13 04:49:04 -07:00
Sean Barrett
52d400741c detect all 0-alpha bmp and replace with all-255;
fix bug in reedbeta patch
2015-09-13 04:46:50 -07:00
Sean Barrett
fee80f3d83 tweaks to patch from reedbeta 2015-09-13 04:27:24 -07:00
Nathan Reed
26c98260b6 Fix warnings about "conversion to a greater size" that appear in VS2015 in x64 with /W4.
The warning concerns the return value of stbi_err, which is an int, being converted to a pointer. In VS2015 it seems casting directly from a 32-bit int to a 64-bit pointer triggers this warning. Worked around by first converting to a 64-bit int (here size_t) and then to a pointer.
2015-09-10 01:20:35 -07:00
Nathan Reed
6d613ed8ce Fix variable-shadowing warnings that appear in VS2015 on /W4 2015-09-10 01:13:54 -07:00
Sean Barrett
7ac0f9c9b0 fix typo in accidentally-checked-in stb_image.h 2015-09-03 22:55:01 -07:00
Sean Barrett
60939ec653 fix some more signed shifts 2015-09-03 11:18:40 -07:00
urraka
23dfb8c06b GIF loading improvements.
- Fixed possible memory leak.
- Fix for transparent backgrounds.
- Adapted internal function to allow proper animation loading.
2015-08-03 22:59:16 -03:00
Sean Barrett
c9859afcf9 reverse some of the public-domain-license changes that I didn't
actually want
2015-08-01 23:53:49 -07:00
Ryan Whitworth
f0e456b809 Added public domain license text 2015-08-01 14:52:12 -04:00
rmitton
6645ea5915 Fixed stupid endianness bug.
Incorrect endianness hilariously doesn't manifest _if_ the original
image was upconverted from 8-bit to 16-bit.
2015-07-24 12:00:09 -07:00
rmitton
608cbec1f5 Fixed overflow for high values.
0xffff would accidentally round to 0x10000.
2015-07-07 15:47:37 -07:00
rmitton
a371b204f5 Added support for 16-bit PSD loading.
This extends the current PSD loader to add support for 16-bit images, by
quantizing them down to 8-bit upon load.
2015-07-07 15:15:38 -07:00
rmitton
fcfa17b847 Fixed double-free in JPEG allocation
It was incorrectly setting the wrong field to NULL, causing it to get
freed again later.
2015-07-06 13:32:40 -07:00
Michaelangel007
c11532b872 Cleanup unused functions 2015-06-30 08:54:14 -06:00
Michaelangel007
2762b410fe Fix unused vars warning in stbi_is_hdr_from_file stbi_is_hdr_from_callbacks 2015-06-30 08:02:24 -06:00
Sean Barrett
aa89970d6b stb_image.h: fix *comp value when loading PSDs
stb_voxel_render.h: fix STBVOX_CONFIG_OPTIMIZED_VHEIGHT
2015-05-28 22:11:45 -07:00
Sean Barrett
947bdcd027 update version numbers & docs 2015-04-19 04:19:55 -07:00
Sean Barrett
8f9c8b682d Merge branch 'master' of https://github.com/nguillemot/stb 2015-04-19 04:17:21 -07:00
Sean Barrett
ac5e25ae01 bump stb_image to version 2.05, tweak docs 2015-04-19 04:15:33 -07:00
Fabian Giesen
f224bc2cdb stb_image: Progressive AC decoding - fix ZRL code.
The original AC decoding logic handled ZRL (runs of 16 zeros)
incorrectly.

The problem is that the original flow set r=16 and skipped the
final coeff write when s=0. This is not actually correct. The
problem is the intervening "refinement" bits.

With the original logic, even once we decrement r to 0, we keep
reading more refinement bits for subsequent coefficients until
we find the next currently-unsent AC in the current scan. That is,
it works as if it was trying to place 17 new AC values, and only
bails at the last minute from actually setting that 17th value.

This is wrong. Once we've found the 16th previously-unsent AC, we
need to stop reading refinement bits, otherwise we get out of sync
with the bit stream (which expects us to read a huffman code next).

The easiest fix is to just do what the JPEG standard implicitly
assumes anyway: treat ZRL as a run of 15 zeros followed by an
explicit magnitude-zero AC coeff. (That is, leave s=0 and actually
write s). So this is what this fix does.
2015-04-19 01:49:16 -07:00
Nicolas Guillemot
1894bede3f fix signed/unsignted compare warning 2015-04-18 21:23:34 -07:00
Sean Barrett
d710ada2f9 try to re-enable SSE2 support by default on mingw 64-bit 2015-04-15 02:31:12 -07:00
Sean Barrett
66a75195dc rename STBI_X86_TARGET to STBI__X86_TARGET 2015-04-12 09:36:01 -07:00
Sean Barrett
c83abb051a Merge branch 'mingwfix' of https://github.com/rygorous/stb into work2
Conflicts:
	stb_image.h
2015-04-12 09:33:26 -07:00
Sean Barrett
e5fde30800 merge two x86/x64 tests into one; update credits 2015-04-12 09:30:05 -07:00
Sean Barrett
c8852111cc Merge branch 'master' of https://github.com/pmj/stb into work2 2015-04-12 09:26:25 -07:00
Sean Barrett
f22efc6151 update credits/docs 2015-04-12 09:26:16 -07:00
Sean Barrett
9d7499bca6 Merge branch 'master' of https://github.com/hpesoj/stb into work2 2015-04-12 09:23:07 -07:00
Sean Barrett
040df963c8 modifications to vertical flip API:
more consistent name,
 refactor stbi_load_main to preserve old code,
 support float HDR path,
 minor bugfix
2015-04-12 09:20:31 -07:00
Sean Barrett
e3214d7ff7 Merge branch 'master' of https://github.com/nguillemot/stb into work2 2015-04-12 09:07:32 -07:00
Sean Barrett
24e50cbd5d remove asserts that are now run-time checks;
bump version and update credits;
minor whitespace changes;
2015-04-12 09:04:43 -07:00
Martins Mozeiko
b2d440cfb5 Fixing various crashes when loading jpg, png and tga images. 2015-04-11 15:51:20 -07:00
Nicolas Guillemot
c500a90375 added stbi_vertically_flip_on_load 2015-03-29 03:03:09 -07:00
Sean Barrett
0b05bde303 quick fixes w/o version updates 2015-02-22 14:26:21 -08:00
Joseph Thomson
a60912f145 Avoid GCC sign-compare warning.
GCC 4.7 gave the warning "signed and unsigned type in conditional
expression" because the ternary operator mixes signed and unsigned
integers. Fixed by casting to unsigned inside the "if" branch instead
of casting the result of the entire conditional.
2015-02-20 10:15:08 +00:00
Fabian Giesen
4b0c6f6634 stb_image: NEON and SSE2 SIMD detection fixes.
This fixes two things. First, the logic to disable SSE2 on
GCC unless "-msse2" was not specific enough, and ended up
disabling SIMD support on NEON targets entirely. Shuffle
the detection logic around to make that bit x86-specific.

Second, 32-bit MinGW assumes 16-byte aligned stacks, but this is
not in the Windows ABI and hence DLLs and callbacks don't
necessarily provide it. This caused a crash.

This can be fixed by providing the right command-line option,
which we have no control over. As a compromise, disable the SSE2
path on MinGW unless a specific #define explained in the comments
is set. That way, we default to safe (never-crashing) behavior
unless the user explicitly signals they know what they're doing.
2015-02-17 01:21:40 -08:00
Laura Dennis-Jordan
abe81006db Fixed bug where NEON code was #ifdef’d out on GCC/clang even where explicitly requested. 2015-02-05 20:49:04 +01:00
Sean Barrett
5bad081711 fix incorrectly-named assert, attempt to fix (char) cast warning (tricky since char's signedness is unknown) 2015-01-19 05:18:37 -08:00
Sean Barrett
5c121a9921 don't use SIMD on gcc if it's going to fail anyway 2015-01-17 08:32:57 -08:00
Sean Barrett
6f3bda396d credits, version number 2015-01-17 08:25:08 -08:00
Sean Barrett
68c8e4851a Merge branch 'master' of https://github.com/enginmanap/stb 2015-01-17 08:22:28 -08:00
Sean Barrett
d673e85e94 update credits 2015-01-17 08:22:19 -08:00
engin manap
50c5c8e8ca remove unused variable "ha"
this variable was causing a warning while compiling with gcc.
2015-01-12 11:41:00 +02:00
engin manap
1a9be15c1e Fix dangling else warnings 2015-01-12 11:34:48 +02:00
Sergio Gonzalez
a2df517a1a Fix for warning 4244. Cast to short 2014-12-29 18:43:57 -06:00
Sean Barrett
a7c8694d69 fix missing STBI_MALLOC 2014-12-25 11:11:59 -08:00
Sean Barrett
6e0ae49f87 update version number, minor docs 2014-12-25 01:40:04 -08:00
Fabian Giesen
febbc34a16 stb_image: Rename SSE2/NEON IDCTs to idct_simd. 2014-12-24 10:53:31 +01:00
Fabian Giesen
d92ab86c65 stb_image: Fix PNG initial size guess for 1/2/4 bpc. 2014-12-24 10:15:28 +01:00
Fabian Giesen
fb109abeaf stb_image: Update comments. 2014-12-24 10:07:52 +01:00
Sean Barrett
7f94e7e591 add #defines to allow disabling decoders for unwanted formats 2014-12-23 21:36:20 -08:00
Sean Barrett
53ca163e85 cleanup merge of ARM NEON support
tweak docs
2014-12-23 20:58:22 -08:00
Sean Barrett
de385bb6bb Merge branch 'fastjpeg' into working 2014-12-23 20:24:46 -08:00
Fabian Giesen
fd987527f1 stb_image: NEON YCbCr->RGB kernel.
Also ran a bunch of test cases to make sure the IDCT and H2V2
resamplers were correct.
2014-12-24 01:38:59 +01:00
Fabian Giesen
7d32f74d8a Merge branch 'fastjpeg' of https://github.com/nothings/stb into fastjpeg
Conflicts:
	stb_image.h
2014-12-23 23:52:12 +01:00
Sean Barrett
5b53d20c68 Put progressive JPEG AC decode logic back the way I wrote it originally (I changed it to match jpgd when I was trying to figure out why it didn't work);
add STBI__ prefixes to internal SCAN_ enum;
strip unused function arguments for progressive funcs;
tweak release notes;
forget to git commit frequently so these would all be in their own commits;
2014-12-23 05:11:36 -08:00
Sean Barrett
6403f319f7 tweak documentation
stbi__ prefix on two functions that were missing it
2014-12-21 08:30:27 -08:00
Sean Barrett
e4fb737f66 Merge branch 'ppm' into working
Conflicts:
	stb_image.h
2014-12-21 08:23:34 -08:00
Sean Barrett
49d4d3193f fix non-progressive jpegs (had commented out a line accidentally);
fix long-standing bug where gifs were just broken AFAICT
2014-12-21 08:21:17 -08:00
Sean Barrett
33e24eafa0 in progress progressive stuff 2014-12-21 07:53:05 -08:00
Fabian Giesen
a32d73dc3b stb_image: NEON integer IDCT (not yet tested!) 2014-12-21 12:55:50 +01:00
Fabian Giesen
0f3bf1564b stb_image: JPEG resampler func for NEON 2014-12-21 12:46:57 +01:00
Sean Barrett
9ad85cc8d2 tweak release docs
tweak credits
tweak revision history
remove trailing whitespace
2014-12-20 06:22:17 -08:00
Sean Barrett
b4e526d7cf PNM cleanup
fix a few old error messages
2014-12-20 06:09:23 -08:00
Sean Barrett
97949493fb Merge branch 'master' of https://github.com/kennethdmiller3/stb into ppm 2014-12-20 05:49:19 -08:00
Sean Barrett
ba5e333faf STBI_MALLOC etc.
some documentation cleanup
2014-12-20 05:46:13 -08:00
Sean Barrett
bd6b78f268 finalize scalar YCbCr conversion back-ported from SSE version;
add missing STBIDEFs to a few functions;
update documentation with full 1.49 info even though most isn't implemented yet
2014-12-20 05:13:25 -08:00
Sean Barrett
f259bf27e9 VC6:
support using inline asm for cpuid

YCbCr:
  switch SSE code to constants that match old C;
  create C version that is same as SSE;
  tiny optimization(?) of SSE
2014-12-19 04:39:04 -08:00
Fabian Giesen
b082091bcb stb_image: GCC fix for new SIMD stuff. 2014-12-18 08:31:03 -08:00
Fabian Giesen
42bb08b10b stb_image: Add SSE2 h2v2 resampling kernel. 2014-12-18 08:11:05 -08:00
Fabian Giesen
c625d24197 stb_image: First-pass stbi__sse2_available for GCC 2014-12-18 07:52:44 -08:00
Fabian Giesen
aabf2c5c49 stb_image: SSE2 YCbCr->RGB kernel 2014-12-18 07:41:41 -08:00
Fabian Giesen
d95f7acb32 stb_image: Remove old installable IDCT path. 2014-12-18 07:25:41 -08:00
Fabian Giesen
e5db25f637 stb_image: Add SSE2 IDCT for JPEG decoder.
Also add SSE2 detection for MSVC++. Detection on GCC will follow
later.
2014-12-18 07:22:42 -08:00
Fabian Giesen
fb2c841bb8 stb_image: Add more of the SSE2 skeleton. 2014-12-18 07:03:21 -08:00
Fabian Giesen
c6a3235995 stb_image: IDCT kernel func ptr in stbi__jpeg
I want to support SSE2 kernels that auto-detect. If implemented
using globals, this would trigger thread race checkers if stb_image
was used in multiple threads. Just make the kernels be explicitly
per-stbi__jpeg to avoid this.

(This commit is the first step in replacing existing STBI_SIMD
functionality.)
2014-12-18 06:49:41 -08:00
Fabian Giesen
518306517c stb_image: JPEG dequant in decode_block not IDCT.
Inside decode_block, we're still sparse, and we can use that
sparsity pattern without doing extra work to discover it.
2014-12-18 06:31:53 -08:00
Fabian Giesen
1d5652044d stb_image: JPEG fast_ac table - decode entire AC at once. 2014-12-18 06:30:42 -08:00
Fabian Giesen
a1bd1f7f1f stb_image: Faster stbi__extend_receive. 2014-12-18 06:25:42 -08:00