c28e92e856stb_vorbis: use const char* when appropriate
Ronny Chevalier
2014-08-03 23:43:54 +02:00
e05ebdbf1eMy guess is people who care about premultiply also care about color space.
Jorge Rodriguez
2014-07-31 19:37:42 -07:00
d75488b0e8Do the multiply inline, it should be a tad faster and not corrupt our data.
Jorge Rodriguez
2014-07-31 19:00:48 -07:00
13acfca829I had the whole premultiply thing backwards.
Jorge Rodriguez
2014-07-31 18:46:00 -07:00
21c7c8f5d9Another stab at the api, offering classes of functions for different common tasks.
Jorge Rodriguez
2014-07-31 18:04:57 -07:00
8063ea0952Specify a channel as having premultiplied alpha and use it to un-premultiply all other channels before resampling.
Jorge Rodriguez
2014-07-31 17:20:00 -07:00
fdc979e48bSome minor ports for Linux. No idea how it worked at all in Windows with STB_RESIZE_IMPLEMENTATION instead of STB_RESAMPLE_IMPLEMENTATION.
Jorge Rodriguez
2014-07-30 17:30:25 -07:00
985ac75251When doing a perfect po2 nearest neighbor downsample don't allow -0.5 and 0.5 to both contribute to a texel or you'll get a double tap.
Jorge Rodriguez
2014-07-30 09:27:42 -07:00
c2449acc3eTests for edge behavior
Jorge Rodriguez
2014-07-30 09:14:38 -07:00
1fcbe0daafFix shorts. Add test cases for shorts.
Jorge Rodriguez
2014-07-30 00:16:13 -07:00
7ead9a748dFix. Ring buffers are a height value.
Jorge Rodriguez
2014-07-29 23:09:41 -07:00
043fa28c11Same deal with height.
Jorge Rodriguez
2014-07-29 23:02:56 -07:00
ebe0473d8bAdd a test suite to do a bunch of different resizes to find problems. One problem found was an incorrect calculation of texel support how many margin texels needed when downsampling. When downsampling we need to spread out the support of each contributing texel, so to compensate you need more margin texels.
Jorge Rodriguez
2014-07-29 22:50:06 -07:00
d96c97298cThis is still faster than the function pointer solution, and neater.
Jorge Rodriguez
2014-07-29 16:22:22 -07:00
3a3e06029eThis is definitely faster than the function pointer solution.
Jorge Rodriguez
2014-07-29 12:11:03 -07:00
9bd5abb52dBoth versions run within the margin of error on my machine so we'll go with the simpler one.
Jorge Rodriguez
2014-07-29 11:44:32 -07:00
5dff80ed31Trying some different strategies for optimizing the decoder. The code in #ifdef 1 is slightly faster by my measurements, but a whole lot uglier.
Jorge Rodriguez
2014-07-29 11:39:42 -07:00
ef3a460ec4Some better looking horners save another multiplication.
Jorge Rodriguez
2014-07-27 00:55:47 -07:00
7d47582578Support for 16 and 32 bit integer images, and float images.
Jorge Rodriguez
2014-07-27 00:09:22 -07:00
6c8cac0a66Support for sRGB color space.
Jorge Rodriguez
2014-07-26 23:44:45 -07:00
41dc4c476cIn some situations with certain filter kernels with negative values it's possible to generate valid results > 1.0, so saturate it before we write it to make sure it doesn't overflow. Also fix incorrect filter radius while downsampling.
Jorge Rodriguez
2014-07-26 22:49:56 -07:00
af1ed58f51Add wrap, fix reflect so it doesn't wrap.
Jorge Rodriguez
2014-07-26 19:30:13 -07:00
69af963c42Add catmull rom filter. Also, move the debug asserts for values <= 1 to the very end of the process. This will make these bugs a lot harder to find, but because some filter kernels have negative values it's possible for the buffers to have values > 1 up until the point where it's converted back to an int.
Jorge Rodriguez
2014-07-26 14:52:28 -07:00
12acf87eecWhen downsampling start the buffer loop at -filter_texel_margin to make sure that all contributors get their taps in at the ring buffer.
Jorge Rodriguez
2014-07-26 13:56:23 -07:00
155c71fb90Reorder these loops because I think we get a cache win if we write the entire ring buffer entry at once.
Jorge Rodriguez
2014-07-26 13:12:48 -07:00
01fb58d6b4Add a bicubic filter.
Jorge Rodriguez
2014-07-26 13:07:04 -07:00
a95da9ee1dUnroll the multiply-add loops. At the cost of a function pointer dereference we get a whole lot of conditionals eliminated. Should be a solid win once the debug asserts are gone.
Jorge Rodriguez
2014-07-26 12:04:39 -07:00
7abd4ccf34Support for filters with larger support. Initial support for edge behavior.
Jorge Rodriguez
2014-07-26 11:51:02 -07:00
62ff271c7aI put it in the to do list and now I can close my browser tab.
Jorge Rodriguez
2014-07-25 00:08:23 -07:00
81c1ddf110Keeping a list of suggestions so I don't forget them.
Jorge Rodriguez
2014-07-25 00:00:40 -07:00
27926e78b8Make consistent tests for whether we're doing upsampling or downsampling of width and height. Don't request memory for horizontal buffer or encode buffer if we don't need it.
Jorge Rodriguez
2014-07-24 23:50:14 -07:00
666c025710Fix non uniform scaling where out_w < in_w && out_h > in_h.
Jorge Rodriguez
2014-07-24 23:32:25 -07:00
736596ba09Fix non uniform scaling where out_w > in_w && out_h < in_h.
Jorge Rodriguez
2014-07-24 23:27:29 -07:00
178e301ea4Fix upsampling, avoid dereferencing in an inner loop.
Jorge Rodriguez
2014-07-24 22:54:35 -07:00
9e726bb3e4The vertical resampling pass. Now all elements of the upscale algorithm are in place.
Jorge Rodriguez
2014-07-24 14:20:18 -07:00
152965f334Decode enough scanlines into a ring buffer to make sure that we have enough source scanlines to do a vertical sampling.
Jorge Rodriguez
2014-07-24 00:47:00 -07:00
158effb62aMore accurate names. Smaller size for contributors memory, more accurate to what's needed.
Jorge Rodriguez
2014-07-23 23:08:06 -07:00
55c5f0b3a0Beginning of a more sophisticated resample algorithm, starting with calculating filter contributions per scan line.
Jorge Rodriguez
2014-07-23 22:17:56 -07:00
ee8e926317even more resampling notes
Sean Barrett
2014-07-22 12:45:24 -07:00
92b08aa98amore resampling notes
Sean Barrett
2014-07-22 12:39:29 -07:00
6f779fb67awhoops imageresampler link
Sean Barrett
2014-07-22 12:17:43 -07:00
9c9a68787dimageresampler library reference
Sean Barrett
2014-07-22 12:16:11 -07:00
3e8a89cad1more resampler notes
Sean Barrett
2014-07-22 11:57:46 -07:00
c27ccec436resampler prototypes
Sean Barrett
2014-07-22 11:37:54 -07:00
63cce5c70acreated stb_resample_ideas.txt
Sean Barrett
2014-07-22 10:05:01 -07:00
0155bd3ab6We are going to support SRGB.
Jorge Rodriguez
2014-07-21 19:51:11 -07:00
ba861fa493Allow specifying a stride.
Jorge Rodriguez
2014-07-21 18:01:05 -07:00
06b7b00696It does nothing now but I want to support edge behavior in the future.
Jorge Rodriguez
2014-07-21 16:14:32 -07:00
c27c5b6fbeThere's really no point in returning the output buffer.
Jorge Rodriguez
2014-07-21 15:36:43 -07:00