Skip to content

Commit 2c15a9f

Browse files
committed
add gif decoder via stbi
not adding encoder (not available in stbi)
1 parent 0871ce9 commit 2c15a9f

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

libgpujpeg/gpujpeg_common.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ enum gpujpeg_image_file_format {
325325
/// RGBA file format, simple data format without header [R G B A] [R G B A] ...
326326
GPUJPEG_IMAGE_FILE_RGBA,
327327
GPUJPEG_IMAGE_FILE_BMP,
328+
GPUJPEG_IMAGE_FILE_GIF,
328329
GPUJPEG_IMAGE_FILE_PNG,
329330
GPUJPEG_IMAGE_FILE_TGA,
330331
/// PNM file format

src/gpujpeg_common.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ gpujpeg_image_get_file_format(const char* filename)
393393
{ "jpeg", GPUJPEG_IMAGE_FILE_JPEG},
394394
{ "jfif", GPUJPEG_IMAGE_FILE_JPEG},
395395
{ "bmp", GPUJPEG_IMAGE_FILE_BMP},
396+
{ "gif", GPUJPEG_IMAGE_FILE_GIF},
396397
{ "png", GPUJPEG_IMAGE_FILE_BMP},
397398
{ "tga", GPUJPEG_IMAGE_FILE_TGA},
398399
//{ "pbm", GPUJPEG_IMAGE_FILE_PNM},
@@ -441,6 +442,7 @@ static enum { FF_CS_NONE, FF_CS_RGB, FF_CS_YCBCR } get_file_type_cs(enum gpujpeg
441442
case GPUJPEG_IMAGE_FILE_RGB:
442443
case GPUJPEG_IMAGE_FILE_RGBA:
443444
case GPUJPEG_IMAGE_FILE_BMP:
445+
case GPUJPEG_IMAGE_FILE_GIF:
444446
case GPUJPEG_IMAGE_FILE_PNG:
445447
case GPUJPEG_IMAGE_FILE_TGA:
446448
case GPUJPEG_IMAGE_FILE_PGM:
@@ -1289,6 +1291,7 @@ gpujpeg_image_get_properties(const char *filename, struct gpujpeg_image_paramete
12891291
param_image->pixel_format = GPUJPEG_420_U8_P0P1P2;
12901292
break;
12911293
case GPUJPEG_IMAGE_FILE_BMP:
1294+
case GPUJPEG_IMAGE_FILE_GIF:
12921295
case GPUJPEG_IMAGE_FILE_PNG:
12931296
case GPUJPEG_IMAGE_FILE_TGA:
12941297
case GPUJPEG_IMAGE_FILE_PAM:

src/utils/image_delegate.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ static void*
5858
gpujpeg_cuda_realloc_sized_host(void* ptr, int oldsz, int newsz);
5959
#define STBI_NO_JPEG
6060
#define STBI_NO_PSD
61-
#define STBI_NO_GIF
6261
#define STBI_NO_HDR
6362
#define STBI_NO_PIC
6463
#define STBI_NO_PNM
@@ -448,6 +447,10 @@ stbi_save_delegate(const char* filename, const struct gpujpeg_image_parameters*
448447
if ( strcasecmp(ext, "bmp") == 0 ) {
449448
write.func = stbi_write_bmp;
450449
}
450+
else if ( strcasecmp(ext, "gif") == 0 ) {
451+
ERROR_MSG("[stbi] Only gif decoder is present, the encoder is not supported!\n");
452+
return -1;
453+
}
451454
else if ( strcasecmp(ext, "png") == 0 ) {
452455
write.func_stridden = stbi_write_png;
453456
stride_bytes = param_image->width * comp_count;
@@ -501,6 +504,10 @@ stbi_image_probe_delegate(const char* filename, enum gpujpeg_image_file_format f
501504
param_image->color_space = GPUJPEG_RGB;
502505
param_image->pixel_format = GPUJPEG_444_U8_P012;
503506
}
507+
else if ( comp == 4 ) {
508+
param_image->color_space = GPUJPEG_RGB;
509+
param_image->pixel_format = GPUJPEG_4444_U8_P0123;
510+
}
504511
else {
505512
ERROR_MSG("[stbi] Unsupported channel count %d for %s\n", comp, filename);
506513
return -1;
@@ -577,6 +584,7 @@ tst_image_load_delegate(const char* filename, size_t* image_size, void** image_d
577584
image_load_delegate_t gpujpeg_get_image_load_delegate(enum gpujpeg_image_file_format format) {
578585
switch (format) {
579586
case GPUJPEG_IMAGE_FILE_BMP:
587+
case GPUJPEG_IMAGE_FILE_GIF:
580588
case GPUJPEG_IMAGE_FILE_PNG:
581589
case GPUJPEG_IMAGE_FILE_TGA:
582590
return stbi_load_delegate;
@@ -607,6 +615,7 @@ image_probe_delegate_t gpujpeg_get_image_probe_delegate(enum gpujpeg_image_file_
607615
{
608616
switch (format) {
609617
case GPUJPEG_IMAGE_FILE_BMP:
618+
case GPUJPEG_IMAGE_FILE_GIF:
610619
case GPUJPEG_IMAGE_FILE_PNG:
611620
case GPUJPEG_IMAGE_FILE_TGA:
612621
return stbi_image_probe_delegate;
@@ -637,6 +646,7 @@ image_save_delegate_t gpujpeg_get_image_save_delegate(enum gpujpeg_image_file_fo
637646
{
638647
switch (format) {
639648
case GPUJPEG_IMAGE_FILE_BMP:
649+
case GPUJPEG_IMAGE_FILE_GIF:
640650
case GPUJPEG_IMAGE_FILE_PNG:
641651
case GPUJPEG_IMAGE_FILE_TGA:
642652
return stbi_save_delegate;

0 commit comments

Comments
 (0)