mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 03:32:46 +00:00
(RPNG) Move more variables to rpng_t struct
This commit is contained in:
parent
a46a819e2d
commit
99d869abca
@ -257,7 +257,7 @@ bool rpng_nbio_load_image_argb_iterate(uint8_t *buf,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool rpng_nbio_load_image_argb_process(uint8_t *inflate_buf,
|
bool rpng_nbio_load_image_argb_process(struct rpng_t *rpng,
|
||||||
struct png_ihdr *ihdr,
|
struct png_ihdr *ihdr,
|
||||||
struct idat_buffer *idat_buf, uint32_t **data,
|
struct idat_buffer *idat_buf, uint32_t **data,
|
||||||
uint32_t *palette,
|
uint32_t *palette,
|
||||||
@ -274,14 +274,14 @@ bool rpng_nbio_load_image_argb_process(uint8_t *inflate_buf,
|
|||||||
if (ihdr->interlace == 1) /* To be sure. */
|
if (ihdr->interlace == 1) /* To be sure. */
|
||||||
inflate_buf_size *= 2;
|
inflate_buf_size *= 2;
|
||||||
|
|
||||||
inflate_buf = (uint8_t*)malloc(inflate_buf_size);
|
rpng->inflate_buf = (uint8_t*)malloc(inflate_buf_size);
|
||||||
if (!inflate_buf)
|
if (!rpng->inflate_buf)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
stream.next_in = idat_buf->data;
|
stream.next_in = idat_buf->data;
|
||||||
stream.avail_in = idat_buf->size;
|
stream.avail_in = idat_buf->size;
|
||||||
stream.avail_out = inflate_buf_size;
|
stream.avail_out = inflate_buf_size;
|
||||||
stream.next_out = inflate_buf;
|
stream.next_out = rpng->inflate_buf;
|
||||||
|
|
||||||
if (inflate(&stream, Z_FINISH) != Z_STREAM_END)
|
if (inflate(&stream, Z_FINISH) != Z_STREAM_END)
|
||||||
{
|
{
|
||||||
@ -304,11 +304,11 @@ bool rpng_nbio_load_image_argb_process(uint8_t *inflate_buf,
|
|||||||
if (ihdr->interlace == 1)
|
if (ihdr->interlace == 1)
|
||||||
{
|
{
|
||||||
if (!png_reverse_filter_adam7(*data,
|
if (!png_reverse_filter_adam7(*data,
|
||||||
ihdr, inflate_buf, stream.total_out, palette))
|
ihdr, rpng->inflate_buf, stream.total_out, palette))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (!png_reverse_filter(*data,
|
else if (!png_reverse_filter(*data,
|
||||||
ihdr, inflate_buf, stream.total_out, palette))
|
ihdr, rpng->inflate_buf, stream.total_out, palette))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -318,9 +318,7 @@ bool rpng_nbio_load_image_argb(const char *path, uint32_t **data,
|
|||||||
unsigned *width, unsigned *height)
|
unsigned *width, unsigned *height)
|
||||||
{
|
{
|
||||||
size_t file_len;
|
size_t file_len;
|
||||||
uint8_t *buff_data = NULL;
|
|
||||||
struct nbio_t* nbread = NULL;
|
struct nbio_t* nbread = NULL;
|
||||||
uint8_t *inflate_buf = NULL;
|
|
||||||
struct idat_buffer idat_buf = {0};
|
struct idat_buffer idat_buf = {0};
|
||||||
struct png_ihdr ihdr = {0};
|
struct png_ihdr ihdr = {0};
|
||||||
uint32_t palette[256] = {0};
|
uint32_t palette[256] = {0};
|
||||||
@ -339,7 +337,7 @@ bool rpng_nbio_load_image_argb(const char *path, uint32_t **data,
|
|||||||
(void)ptr;
|
(void)ptr;
|
||||||
(void)looped;
|
(void)looped;
|
||||||
|
|
||||||
buff_data = (uint8_t*)ptr;
|
rpng.buff_data = (uint8_t*)ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -347,27 +345,27 @@ bool rpng_nbio_load_image_argb(const char *path, uint32_t **data,
|
|||||||
char header[8];
|
char header[8];
|
||||||
|
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
header[i] = buff_data[i];
|
header[i] = rpng.buff_data[i];
|
||||||
|
|
||||||
if (memcmp(header, png_magic, sizeof(png_magic)) != 0)
|
if (memcmp(header, png_magic, sizeof(png_magic)) != 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
buff_data += 8;
|
rpng.buff_data += 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
struct png_chunk chunk = {0};
|
struct png_chunk chunk = {0};
|
||||||
|
|
||||||
if (!read_chunk_header(buff_data, &chunk))
|
if (!read_chunk_header(rpng.buff_data, &chunk))
|
||||||
GOTO_END_ERROR();
|
GOTO_END_ERROR();
|
||||||
|
|
||||||
if (!rpng_nbio_load_image_argb_iterate(
|
if (!rpng_nbio_load_image_argb_iterate(
|
||||||
buff_data, &chunk, palette, &ihdr, &idat_buf,
|
rpng.buff_data, &chunk, palette, &ihdr, &idat_buf,
|
||||||
&rpng))
|
&rpng))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
buff_data += 4 + 4 + chunk.size + 4;
|
rpng.buff_data += 4 + 4 + chunk.size + 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -379,7 +377,7 @@ bool rpng_nbio_load_image_argb(const char *path, uint32_t **data,
|
|||||||
if (!rpng.has_ihdr || !rpng.has_idat || !rpng.has_iend)
|
if (!rpng.has_ihdr || !rpng.has_idat || !rpng.has_iend)
|
||||||
GOTO_END_ERROR();
|
GOTO_END_ERROR();
|
||||||
|
|
||||||
rpng_nbio_load_image_argb_process(inflate_buf,
|
rpng_nbio_load_image_argb_process(&rpng,
|
||||||
&ihdr, &idat_buf, data, palette,
|
&ihdr, &idat_buf, data, palette,
|
||||||
width, height);
|
width, height);
|
||||||
|
|
||||||
@ -389,7 +387,7 @@ end:
|
|||||||
free(*data);
|
free(*data);
|
||||||
if (idat_buf.data)
|
if (idat_buf.data)
|
||||||
free(idat_buf.data);
|
free(idat_buf.data);
|
||||||
if (inflate_buf)
|
if (rpng.inflate_buf)
|
||||||
free(inflate_buf);
|
free(rpng.inflate_buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,8 @@ struct rpng_t
|
|||||||
bool has_idat;
|
bool has_idat;
|
||||||
bool has_iend;
|
bool has_iend;
|
||||||
bool has_plte;
|
bool has_plte;
|
||||||
|
uint8_t *inflate_buf;
|
||||||
|
uint8_t *buff_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool rpng_load_image_argb(const char *path, uint32_t **data,
|
bool rpng_load_image_argb(const char *path, uint32_t **data,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user