Merge "graphics: update BOARD_HAS_FLIPPED_SCREEN function to work with 16bpp or 32bpp" into twrp2.5
diff --git a/Android.mk b/Android.mk
index 1471db1..da06b9a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -73,6 +73,11 @@
#LOCAL_STATIC_LIBRARIES += libselinux
#LOCAL_CFLAGS += -DHAVE_SELINUX -g
endif # HAVE_SELINUX
+ifneq ($(wildcard external/libselinux/Android.mk),)
+ LOCAL_C_INCLUDES += external/libselinux/include
+ LOCAL_STATIC_LIBRARIES += libselinux
+ LOCAL_CFLAGS += -DHAVE_SELINUX -g
+endif
# This binary is in the recovery ramdisk, which is otherwise a copy of root.
# It gets copied there in config/Makefile. LOCAL_MODULE_TAGS suppresses
@@ -293,8 +298,7 @@
$(LOCAL_PATH)/applypatch/Android.mk
#includes for TWRP
-include $(commands_recovery_local_path)/libjpegtwrp/Android.mk \
- $(commands_recovery_local_path)/injecttwrp/Android.mk \
+include $(commands_recovery_local_path)/injecttwrp/Android.mk \
$(commands_recovery_local_path)/htcdumlock/Android.mk \
$(commands_recovery_local_path)/gui/Android.mk \
$(commands_recovery_local_path)/mmcutils/Android.mk \
diff --git a/crypto/fs_mgr/fs_mgr.c b/crypto/fs_mgr/fs_mgr.c
index bebb252..02f3ac5 100644
--- a/crypto/fs_mgr/fs_mgr.c
+++ b/crypto/fs_mgr/fs_mgr.c
@@ -167,7 +167,7 @@
* then return an empty buffer. This effectively ignores lines that are too long.
* On EOF, return null.
*/
-static char *getline(char *buf, int size, FILE *file)
+static char *fs_mgr_getline(char *buf, int size, FILE *file)
{
int cnt = 0;
int eof = 0;
@@ -241,7 +241,7 @@
}
entries = 0;
- while (getline(line, sizeof(line), fstab_file)) {
+ while (fs_mgr_getline(line, sizeof(line), fstab_file)) {
/* if the last character is a newline, shorten the string by 1 byte */
len = strlen(line);
if (line[len - 1] == '\n') {
@@ -268,7 +268,7 @@
fseek(fstab_file, 0, SEEK_SET);
cnt = 0;
- while (getline(line, sizeof(line), fstab_file)) {
+ while (fs_mgr_getline(line, sizeof(line), fstab_file)) {
/* if the last character is a newline, shorten the string by 1 byte */
len = strlen(line);
if (line[len - 1] == '\n') {
diff --git a/data.cpp b/data.cpp
index 5fa6814..65f706e 100644
--- a/data.cpp
+++ b/data.cpp
@@ -1044,6 +1044,8 @@
strcpy(version, TW_VERSION_STR);
fwrite(version, sizeof(version[0]), strlen(version) / sizeof(version[0]), fp);
fclose(fp);
+ TWFunc::copy_file("/etc/recovery.fstab", "/cache/recovery/recovery.fstab", 0644);
+ PartitionManager.Output_Storage_Fstab();
sync();
LOGINFO("Version number saved to '%s'\n", Path.c_str());
}
diff --git a/exfat/dump/dumpexfat.8 b/exfat/dump/dumpexfat.8
index 36fb28a..7fea065 100644
--- a/exfat/dump/dumpexfat.8
+++ b/exfat/dump/dumpexfat.8
@@ -13,7 +13,7 @@
.B \-u
]
[
-.B \-v
+.B \-V
]
.I device
@@ -33,7 +33,7 @@
Dump ranges of used sectors starting from 0 and separated with spaces. May be
useful for backup tools.
.TP
-.BI \-v
+.BI \-V
Print version and copyright.
.SH EXIT CODES
diff --git a/exfat/dump/main.c b/exfat/dump/main.c
index fa80903..8650d51 100644
--- a/exfat/dump/main.c
+++ b/exfat/dump/main.c
@@ -140,13 +140,13 @@
static void usage(const char* prog)
{
- fprintf(stderr, "Usage: %s [-s] [-u] [-v] <device>\n", prog);
+ fprintf(stderr, "Usage: %s [-s] [-u] [-V] <device>\n", prog);
exit(1);
}
int main(int argc, char* argv[])
{
- char** pp;
+ int opt;
const char* spec = NULL;
bool sb_only = false;
bool used_sectors = false;
@@ -154,24 +154,26 @@
printf("dumpexfat %u.%u.%u\n",
EXFAT_VERSION_MAJOR, EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
- for (pp = argv + 1; *pp; pp++)
+ while ((opt = getopt(argc, argv, "suV")) != -1)
{
- if (strcmp(*pp, "-s") == 0)
- sb_only = true;
- else if (strcmp(*pp, "-u") == 0)
- used_sectors = true;
- else if (strcmp(*pp, "-v") == 0)
+ switch (opt)
{
+ case 's':
+ sb_only = true;
+ break;
+ case 'u':
+ used_sectors = true;
+ break;
+ case 'V':
puts("Copyright (C) 2011-2013 Andrew Nayenko");
return 0;
- }
- else if (spec == NULL)
- spec = *pp;
- else
+ default:
usage(argv[0]);
+ }
}
- if (spec == NULL)
+ if (argc - optind != 1)
usage(argv[0]);
+ spec = argv[optind];
if (sb_only)
return dump_sb(spec);
diff --git a/exfat/exfat-fuse/Android.mk b/exfat/exfat-fuse/Android.mk
index 9627835..f6ec20a 100644
--- a/exfat/exfat-fuse/Android.mk
+++ b/exfat/exfat-fuse/Android.mk
@@ -12,7 +12,7 @@
bootable/recovery/exfat/libexfat \
bootable/recovery/fuse/include
LOCAL_SHARED_LIBRARIES += libz libc libexfat libdl
-LOCAL_STATIC_LIBRARIES += libfuse
+LOCAL_STATIC_LIBRARIES += libfusetwrp
include $(BUILD_EXECUTABLE)
diff --git a/exfat/exfat-fuse/main.c b/exfat/exfat-fuse/main.c
index 0023b9d..53ce2fe 100644
--- a/exfat/exfat-fuse/main.c
+++ b/exfat/exfat-fuse/main.c
@@ -92,7 +92,7 @@
struct exfat_node* node;
struct exfat_iterator it;
int rc;
- char name[EXFAT_NAME_MAX + 1];
+ char name[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
exfat_debug("[%s] %s", __func__, path);
@@ -118,7 +118,7 @@
}
while ((node = exfat_readdir(&ef, &it)))
{
- exfat_get_name(node, name, EXFAT_NAME_MAX);
+ exfat_get_name(node, name, sizeof(name) - 1);
exfat_debug("[%s] %s: %s, %"PRId64" bytes, cluster 0x%x", __func__,
name, IS_CONTIGUOUS(*node) ? "contiguous" : "fragmented",
node->size, node->start_cluster);
@@ -242,14 +242,24 @@
return 0;
}
-#ifdef __APPLE__
static int fuse_exfat_chmod(const char* path, mode_t mode)
{
+ const mode_t VALID_MODE_MASK = S_IFREG | S_IFDIR |
+ S_IRWXU | S_IRWXG | S_IRWXO;
+
exfat_debug("[%s] %s 0%ho", __func__, path, mode);
- /* make OS X utilities happy */
+ if (mode & ~VALID_MODE_MASK)
+ return -EPERM;
return 0;
}
-#endif
+
+static int fuse_exfat_chown(const char* path, uid_t uid, gid_t gid)
+{
+ exfat_debug("[%s] %s %u:%u", __func__, path, uid, gid);
+ if (uid != ef.uid || gid != ef.gid)
+ return -EPERM;
+ return 0;
+}
static int fuse_exfat_statfs(const char* path, struct statvfs* sfs)
{
@@ -292,7 +302,7 @@
static void usage(const char* prog)
{
- fprintf(stderr, "Usage: %s [-d] [-o options] [-v] <device> <dir>\n", prog);
+ fprintf(stderr, "Usage: %s [-d] [-o options] [-V] <device> <dir>\n", prog);
exit(1);
}
@@ -311,9 +321,8 @@
.mkdir = fuse_exfat_mkdir,
.rename = fuse_exfat_rename,
.utimens = fuse_exfat_utimens,
-#ifdef __APPLE__
.chmod = fuse_exfat_chmod,
-#endif
+ .chown = fuse_exfat_chown,
.statfs = fuse_exfat_statfs,
.init = fuse_exfat_init,
.destroy = fuse_exfat_destroy,
@@ -398,7 +407,7 @@
int debug = 0;
struct fuse_chan* fc = NULL;
struct fuse* fh = NULL;
- char** pp;
+ int opt;
printf("FUSE exfat %u.%u.%u\n",
EXFAT_VERSION_MAJOR, EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
@@ -410,40 +419,39 @@
return 1;
}
- for (pp = argv + 1; *pp; pp++)
+ while ((opt = getopt(argc, argv, "dno:Vv")) != -1)
{
- if (strcmp(*pp, "-o") == 0)
+ switch (opt)
{
- pp++;
- if (*pp == NULL)
- usage(argv[0]);
- mount_options = add_option(mount_options, *pp, NULL);
+ case 'd':
+ debug = 1;
+ break;
+ case 'n':
+ break;
+ case 'o':
+ mount_options = add_option(mount_options, optarg, NULL);
if (mount_options == NULL)
return 1;
- }
- else if (strcmp(*pp, "-d") == 0)
- debug = 1;
- else if (strcmp(*pp, "-v") == 0)
- {
+ break;
+ case 'V':
free(mount_options);
puts("Copyright (C) 2010-2013 Andrew Nayenko");
return 0;
- }
- else if (spec == NULL)
- spec = *pp;
- else if (mount_point == NULL)
- mount_point = *pp;
- else
- {
+ case 'v':
+ break;
+ default:
free(mount_options);
usage(argv[0]);
+ break;
}
}
- if (spec == NULL || mount_point == NULL)
+ if (argc - optind != 2)
{
free(mount_options);
usage(argv[0]);
}
+ spec = argv[optind];
+ mount_point = argv[optind + 1];
if (exfat_mount(&ef, spec, mount_options) != 0)
{
diff --git a/exfat/exfat-fuse/mount.exfat-fuse.8 b/exfat/exfat-fuse/mount.exfat-fuse.8
index 83d2e63..b7e9d56 100644
--- a/exfat/exfat-fuse/mount.exfat-fuse.8
+++ b/exfat/exfat-fuse/mount.exfat-fuse.8
@@ -9,10 +9,16 @@
.B \-d
]
[
+.B \-n
+]
+[
.B \-o
.I options
]
[
+.B \-V
+]
+[
.B \-v
]
.I device dir
@@ -21,7 +27,7 @@
.B mount.exfat-fuse
is a free exFAT file system implementation with write support. exFAT is a
simple file system created by Microsoft. It is intended to replace FAT32
-removing some of it's limitations. exFAT is a standard FS for SDXC memory
+removing some of its limitations. exFAT is a standard FS for SDXC memory
cards.
.SH COMMAND LINE OPTIONS
@@ -30,13 +36,19 @@
.BI \-d
Enable debug logging and do not detach from shell.
.TP
+.BI \-n
+Ignored.
+.TP
.BI \-o " options"
File system specific options. For more details see
.B FILE SYSTEM OPTIONS
section below.
.TP
-.BI \-v
+.BI \-V
Print version and copyright.
+.TP
+.BI \-v
+Ignored.
.SH FILE SYSTEM OPTIONS
.TP
diff --git a/exfat/fsck/exfatfsck.8 b/exfat/fsck/exfatfsck.8
index 985500c..40d7c85 100644
--- a/exfat/fsck/exfatfsck.8
+++ b/exfat/fsck/exfatfsck.8
@@ -7,7 +7,7 @@
.SH SYNOPSIS
.B exfatfsck
[
-.B \-v
+.B \-V
]
.I device
@@ -19,7 +19,7 @@
.SH COMMAND LINE OPTIONS
Command line options available:
.TP
-.BI \-v
+.BI \-V
Print version and copyright.
.SH EXIT CODES
diff --git a/exfat/fsck/main.c b/exfat/fsck/main.c
index 9eefd74..e865641 100644
--- a/exfat/fsck/main.c
+++ b/exfat/fsck/main.c
@@ -23,6 +23,7 @@
#include <exfat.h>
#include <exfatfs.h>
#include <inttypes.h>
+#include <unistd.h>
#define exfat_debug(format, ...)
@@ -39,18 +40,18 @@
{
if (CLUSTER_INVALID(c))
{
- char name[EXFAT_NAME_MAX + 1];
+ char name[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
- exfat_get_name(node, name, EXFAT_NAME_MAX);
+ exfat_get_name(node, name, sizeof(name) - 1);
exfat_error("file `%s' has invalid cluster 0x%x", name, c);
rc = 1;
break;
}
if (BMAP_GET(ef->cmap.chunk, c - EXFAT_FIRST_DATA_CLUSTER) == 0)
{
- char name[EXFAT_NAME_MAX + 1];
+ char name[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
- exfat_get_name(node, name, EXFAT_NAME_MAX);
+ exfat_get_name(node, name, sizeof(name) - 1);
exfat_error("cluster 0x%x of file `%s' is not allocated", c, name);
rc = 1;
}
@@ -76,7 +77,7 @@
return;
path_length = strlen(path);
- entry_path = malloc(path_length + 1 + EXFAT_NAME_MAX);
+ entry_path = malloc(path_length + 1 + UTF8_BYTES(EXFAT_NAME_MAX) + 1);
if (entry_path == NULL)
{
exfat_error("out of memory");
@@ -95,7 +96,8 @@
}
while ((node = exfat_readdir(ef, &it)))
{
- exfat_get_name(node, entry_path + path_length + 1, EXFAT_NAME_MAX);
+ exfat_get_name(node, entry_path + path_length + 1,
+ UTF8_BYTES(EXFAT_NAME_MAX));
exfat_debug("%s: %s, %"PRIu64" bytes, cluster %u", entry_path,
IS_CONTIGUOUS(*node) ? "contiguous" : "fragmented",
node->size, node->start_cluster);
@@ -124,33 +126,34 @@
static void usage(const char* prog)
{
- fprintf(stderr, "Usage: %s [-v] <device>\n", prog);
+ fprintf(stderr, "Usage: %s [-V] <device>\n", prog);
exit(1);
}
int main(int argc, char* argv[])
{
- char** pp;
+ int opt;
const char* spec = NULL;
struct exfat ef;
printf("exfatfsck %u.%u.%u\n",
EXFAT_VERSION_MAJOR, EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
- for (pp = argv + 1; *pp; pp++)
+ while ((opt = getopt(argc, argv, "V")) != -1)
{
- if (strcmp(*pp, "-v") == 0)
+ switch (opt)
{
+ case 'V':
puts("Copyright (C) 2011-2013 Andrew Nayenko");
return 0;
- }
- else if (spec == NULL)
- spec = *pp;
- else
+ default:
usage(argv[0]);
+ break;
+ }
}
- if (spec == NULL)
+ if (argc - optind != 1)
usage(argv[0]);
+ spec = argv[optind];
if (exfat_mount(&ef, spec, "ro") != 0)
return 1;
diff --git a/exfat/label/exfatlabel.8 b/exfat/label/exfatlabel.8
index 429f3cc..dd2ef1c 100644
--- a/exfat/label/exfatlabel.8
+++ b/exfat/label/exfatlabel.8
@@ -7,7 +7,7 @@
.SH SYNOPSIS
.B exfatlabel
[
-.B \-v
+.B \-V
]
.I device
[
@@ -35,7 +35,7 @@
.SH COMMAND LINE OPTIONS
Command line options available:
.TP
-.BI \-v
+.BI \-V
Print version and copyright.
.SH EXIT CODES
diff --git a/exfat/label/main.c b/exfat/label/main.c
index 8a429d5..5595035 100644
--- a/exfat/label/main.c
+++ b/exfat/label/main.c
@@ -29,7 +29,7 @@
int rc = 0;
for (pp = argv + 1; *pp; pp++)
- if (strcmp(*pp, "-v") == 0)
+ if (strcmp(*pp, "-V") == 0)
{
printf("exfatlabel %u.%u.%u\n", EXFAT_VERSION_MAJOR,
EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
@@ -39,7 +39,7 @@
if (argc != 2 && argc != 3)
{
- fprintf(stderr, "Usage: %s [-v] <device> [label]\n", argv[0]);
+ fprintf(stderr, "Usage: %s [-V] <device> [label]\n", argv[0]);
return 1;
}
diff --git a/exfat/libexfat/exfat.h b/exfat/libexfat/exfat.h
index 3e4223e..a6a9f70 100644
--- a/exfat/libexfat/exfat.h
+++ b/exfat/libexfat/exfat.h
@@ -46,6 +46,7 @@
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define DIV_ROUND_UP(x, d) (((x) + (d) - 1) / (d))
#define ROUND_UP(x, d) (DIV_ROUND_UP(x, d) * (d))
+#define UTF8_BYTES(c) ((c) * 6) /* UTF-8 character can occupy up to 6 bytes */
#define BMAP_GET(bitmap, index) \
(((uint8_t*) bitmap)[(index) / 8] & (1u << ((index) % 8)))
@@ -98,8 +99,7 @@
bool dirty;
}
cmap;
- char label[EXFAT_ENAME_MAX * 6 + 1]; /* a character can occupy up to
- 6 bytes in UTF-8 */
+ char label[UTF8_BYTES(EXFAT_ENAME_MAX) + 1];
void* zero_cluster;
int dmask, fmask;
uid_t uid;
diff --git a/exfat/libexfat/node.c b/exfat/libexfat/node.c
index c2ee0da..f89b573 100644
--- a/exfat/libexfat/node.c
+++ b/exfat/libexfat/node.c
@@ -44,8 +44,8 @@
{
if (--node->references < 0)
{
- char buffer[EXFAT_NAME_MAX + 1];
- exfat_get_name(node, buffer, EXFAT_NAME_MAX);
+ char buffer[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
+ exfat_get_name(node, buffer, sizeof(buffer) - 1);
exfat_bug("reference counter of `%s' is below zero", buffer);
}
@@ -293,9 +293,9 @@
*/
if (real_size != (*node)->size)
{
- char buffer[EXFAT_NAME_MAX + 1];
+ char buffer[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
- exfat_get_name(*node, buffer, EXFAT_NAME_MAX);
+ exfat_get_name(*node, buffer, sizeof(buffer) - 1);
exfat_error("`%s' real size does not equal to size "
"(%"PRIu64" != %"PRIu64")", buffer,
real_size, (*node)->size);
@@ -303,9 +303,9 @@
}
if (actual_checksum != reference_checksum)
{
- char buffer[EXFAT_NAME_MAX + 1];
+ char buffer[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
- exfat_get_name(*node, buffer, EXFAT_NAME_MAX);
+ exfat_get_name(*node, buffer, sizeof(buffer) - 1);
exfat_error("`%s' has invalid checksum (0x%hx != 0x%hx)",
buffer, actual_checksum, reference_checksum);
goto error;
@@ -389,7 +389,7 @@
goto error;
}
if (utf16_to_utf8(ef->label, label->name,
- sizeof(ef->label), EXFAT_ENAME_MAX) != 0)
+ sizeof(ef->label) - 1, EXFAT_ENAME_MAX) != 0)
goto error;
break;
@@ -493,8 +493,8 @@
node->flags &= ~EXFAT_ATTRIB_CACHED;
if (node->references != 0)
{
- char buffer[EXFAT_NAME_MAX + 1];
- exfat_get_name(node, buffer, EXFAT_NAME_MAX);
+ char buffer[UTF8_BYTES(EXFAT_NAME_MAX) + 1];
+ exfat_get_name(node, buffer, sizeof(buffer) - 1);
exfat_warn("non-zero reference counter (%d) for `%s'",
node->references, buffer);
}
@@ -1051,5 +1051,6 @@
exfat_pwrite(ef->dev, &entry, sizeof(struct exfat_entry_label),
co2o(ef, cluster, offset));
+ strcpy(ef->label, label);
return 0;
}
diff --git a/exfat/mkfs/Android.mk b/exfat/mkfs/Android.mk
index bccd7c9..8c48c77 100644
--- a/exfat/mkfs/Android.mk
+++ b/exfat/mkfs/Android.mk
@@ -11,7 +11,7 @@
bootable/recovery/exfat/libexfat \
bootable/recovery/fuse/include
LOCAL_SHARED_LIBRARIES += libz libc libexfat libdl
-LOCAL_STATIC_LIBRARIES += libfuse
+LOCAL_STATIC_LIBRARIES += libfusetwrp
include $(BUILD_EXECUTABLE)
diff --git a/exfat/mkfs/main.c b/exfat/mkfs/main.c
index 97e465a..12bb838 100644
--- a/exfat/mkfs/main.c
+++ b/exfat/mkfs/main.c
@@ -188,14 +188,14 @@
{
fprintf(stderr, "Usage: %s [-i volume-id] [-n label] "
"[-p partition-first-sector] "
- "[-s sectors-per-cluster] [-v] <device>\n", prog);
+ "[-s sectors-per-cluster] [-V] <device>\n", prog);
exit(1);
}
int main(int argc, char* argv[])
{
const char* spec = NULL;
- char** pp;
+ int opt;
int spc_bits = -1;
const char* volume_label = NULL;
uint32_t volume_serial = 0;
@@ -205,53 +205,38 @@
printf("mkexfatfs %u.%u.%u\n",
EXFAT_VERSION_MAJOR, EXFAT_VERSION_MINOR, EXFAT_VERSION_PATCH);
- for (pp = argv + 1; *pp; pp++)
+ while ((opt = getopt(argc, argv, "i:n:p:s:V")) != -1)
{
- if (strcmp(*pp, "-s") == 0)
+ switch (opt)
{
- pp++;
- if (*pp == NULL)
- usage(argv[0]);
- spc_bits = logarithm2(atoi(*pp));
+ case 'i':
+ volume_serial = strtol(optarg, NULL, 16);
+ break;
+ case 'n':
+ volume_label = optarg;
+ break;
+ case 'p':
+ first_sector = strtoll(optarg, NULL, 10);
+ break;
+ case 's':
+ spc_bits = logarithm2(atoi(optarg));
if (spc_bits < 0)
{
- exfat_error("invalid option value: `%s'", *pp);
+ exfat_error("invalid option value: `%s'", optarg);
return 1;
}
- }
- else if (strcmp(*pp, "-n") == 0)
- {
- pp++;
- if (*pp == NULL)
- usage(argv[0]);
- volume_label = *pp;
- }
- else if (strcmp(*pp, "-i") == 0)
- {
- pp++;
- if (*pp == NULL)
- usage(argv[0]);
- volume_serial = strtol(*pp, NULL, 16);
- }
- else if (strcmp(*pp, "-p") == 0)
- {
- pp++;
- if (*pp == NULL)
- usage(argv[0]);
- first_sector = strtoll(*pp, NULL, 10);
- }
- else if (strcmp(*pp, "-v") == 0)
- {
+ break;
+ case 'V':
puts("Copyright (C) 2011-2013 Andrew Nayenko");
return 0;
- }
- else if (spec == NULL)
- spec = *pp;
- else
+ default:
usage(argv[0]);
+ break;
+ }
}
- if (spec == NULL)
+ if (argc - optind != 1)
usage(argv[0]);
+ spec = argv[optind];
dev = exfat_open(spec, EXFAT_MODE_RW);
if (dev == NULL)
diff --git a/exfat/mkfs/mkexfatfs.8 b/exfat/mkfs/mkexfatfs.8
index 7d3ffec..5f6ba3d 100644
--- a/exfat/mkfs/mkexfatfs.8
+++ b/exfat/mkfs/mkexfatfs.8
@@ -23,7 +23,7 @@
.I sectors-per-cluster
]
[
-.B \-v
+.B \-V
]
.I device
@@ -55,7 +55,7 @@
32 KB if volume size is from 256 MB to 32 GB,
128 KB if volume size is 32 GB or larger.
.TP
-.BI \-v
+.BI \-V
Print version and copyright.
.SH EXIT CODES
diff --git a/fixPermissions.cpp b/fixPermissions.cpp
index 5d4b0d2..2fa1b66 100644
--- a/fixPermissions.cpp
+++ b/fixPermissions.cpp
@@ -59,7 +59,7 @@
return -1;
}
- gui_print("Fixing /data/app permisions...\n");
+ gui_print("Fixing /data/app permissions...\n");
if ((fixDataApps()) != 0) {
return -1;
}
@@ -111,7 +111,7 @@
closedir(d);
}
} else {
- gui_print("Fixing /data/data permisions...\n");
+ gui_print("Fixing /data/data permissions...\n");
if ((fixDataData("/data/data/")) != 0) {
return -1;
}
diff --git a/fuse/Android.mk b/fuse/Android.mk
index 59cd9b3..3bd1616 100644
--- a/fuse/Android.mk
+++ b/fuse/Android.mk
@@ -42,7 +42,7 @@
-D_FILE_OFFSET_BITS=64 \
-DFUSE_USE_VERSION=26
-LOCAL_MODULE := libfuse
+LOCAL_MODULE := libfusetwrp
LOCAL_MODULE_TAGS := optional
include $(BUILD_STATIC_LIBRARY)
@@ -61,6 +61,6 @@
LOCAL_MODULE := fusexmp
LOCAL_MODULE_TAGS := optional
-LOCAL_STATIC_LIBRARIES := libfuse
+LOCAL_STATIC_LIBRARIES := libfusetwrp
include $(BUILD_EXECUTABLE)
diff --git a/gui/Android.mk b/gui/Android.mk
index 35d877b..7ac4bac 100644
--- a/gui/Android.mk
+++ b/gui/Android.mk
@@ -22,8 +22,7 @@
keyboard.cpp \
input.cpp \
blanktimer.cpp \
- partitionlist.cpp \
- ../minuitwrp/graphics.c
+ partitionlist.cpp
ifneq ($(TWRP_CUSTOM_KEYBOARD),)
LOCAL_SRC_FILES += $(TWRP_CUSTOM_KEYBOARD)
@@ -31,6 +30,7 @@
LOCAL_SRC_FILES += hardwarekeyboard.cpp
endif
+LOCAL_SHARED_LIBRARIES += libminuitwrp libc libstdc++
LOCAL_MODULE := libguitwrp
# Use this flag to create a build that simulates threaded actions like installing zips, backups, restores, and wipes for theme testing
diff --git a/gui/devices/1024x600/res/images/background.jpg b/gui/devices/1024x600/res/images/background.jpg
index 6ff8d4d..2ac48e0 100644
--- a/gui/devices/1024x600/res/images/background.jpg
+++ b/gui/devices/1024x600/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/1024x600/res/images/backgroundbottom.jpg b/gui/devices/1024x600/res/images/backgroundbottom.jpg
deleted file mode 100644
index cb48680..0000000
--- a/gui/devices/1024x600/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x600/res/images/backgroundside.jpg b/gui/devices/1024x600/res/images/backgroundside.jpg
deleted file mode 100644
index 91ede1e..0000000
--- a/gui/devices/1024x600/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x600/res/images/large_black.png b/gui/devices/1024x600/res/images/large_black.png
deleted file mode 100644
index f1f4fa1..0000000
--- a/gui/devices/1024x600/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x600/res/ui.xml b/gui/devices/1024x600/res/ui.xml
index 4835d82..5979c50 100755
--- a/gui/devices/1024x600/res/ui.xml
+++ b/gui/devices/1024x600/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Regular-20" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="994" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="570" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="250" y="5" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1259,6 +1236,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/1024x768/res/images/background.jpg b/gui/devices/1024x768/res/images/background.jpg
index 6ff8d4d..2ac48e0 100644
--- a/gui/devices/1024x768/res/images/background.jpg
+++ b/gui/devices/1024x768/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/1024x768/res/images/backgroundbottom.jpg b/gui/devices/1024x768/res/images/backgroundbottom.jpg
deleted file mode 100644
index 04aede0..0000000
--- a/gui/devices/1024x768/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x768/res/images/backgroundside.jpg b/gui/devices/1024x768/res/images/backgroundside.jpg
deleted file mode 100644
index b3eba28..0000000
--- a/gui/devices/1024x768/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x768/res/images/large_black.png b/gui/devices/1024x768/res/images/large_black.png
deleted file mode 100644
index aaf8d3b..0000000
--- a/gui/devices/1024x768/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1024x768/res/ui.xml b/gui/devices/1024x768/res/ui.xml
index dd53da4..86cfdda 100644
--- a/gui/devices/1024x768/res/ui.xml
+++ b/gui/devices/1024x768/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Regular-20" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="994" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="738" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="250" y="5" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1259,6 +1236,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/1080x1920/res/images/top-bar.jpg b/gui/devices/1080x1920/res/images/top-bar.jpg
index 5277f59..5121a03 100644
--- a/gui/devices/1080x1920/res/images/top-bar.jpg
+++ b/gui/devices/1080x1920/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/1080x1920/res/ui.xml b/gui/devices/1080x1920/res/ui.xml
index 1c757fa..e23086a 100644
--- a/gui/devices/1080x1920/res/ui.xml
+++ b/gui/devices/1080x1920/res/ui.xml
@@ -179,7 +179,7 @@
<variable name="backup_button_row2" value="1220" />
<variable name="mount_list_height" value="1035" />
<variable name="mount_storage_row" value="1240" />
- <variable name="storage_list_height" value="1313" />
+ <variable name="storage_list_height" value="1000" />
<variable name="wipe_list_height" value="1305" />
<variable name="wipe_button_y" value="975" />
<variable name="slidervalue_w" value="1060" />
@@ -2097,6 +2097,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/1280x800/res/images/background.jpg b/gui/devices/1280x800/res/images/background.jpg
index 3f9257d..d9681c6 100644
--- a/gui/devices/1280x800/res/images/background.jpg
+++ b/gui/devices/1280x800/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/1280x800/res/images/backgroundbottom.jpg b/gui/devices/1280x800/res/images/backgroundbottom.jpg
deleted file mode 100644
index 432ca4d..0000000
--- a/gui/devices/1280x800/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1280x800/res/images/backgroundside.jpg b/gui/devices/1280x800/res/images/backgroundside.jpg
deleted file mode 100644
index bc3c8ab..0000000
--- a/gui/devices/1280x800/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1280x800/res/images/large_black.png b/gui/devices/1280x800/res/images/large_black.png
deleted file mode 100644
index 43e0cc7..0000000
--- a/gui/devices/1280x800/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1280x800/res/ui.xml b/gui/devices/1280x800/res/ui.xml
index 8babda1..4a066a3 100644
--- a/gui/devices/1280x800/res/ui.xml
+++ b/gui/devices/1280x800/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Regular-20" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="1250" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="770" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="250" y="5" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1259,6 +1236,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/1920x1200/res/images/background.jpg b/gui/devices/1920x1200/res/images/background.jpg
index f7faaba..9e61f9e 100644
--- a/gui/devices/1920x1200/res/images/background.jpg
+++ b/gui/devices/1920x1200/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/1920x1200/res/images/backgroundbottom.jpg b/gui/devices/1920x1200/res/images/backgroundbottom.jpg
deleted file mode 100644
index 6af64da..0000000
--- a/gui/devices/1920x1200/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1920x1200/res/images/backgroundside.jpg b/gui/devices/1920x1200/res/images/backgroundside.jpg
deleted file mode 100644
index f5a1060..0000000
--- a/gui/devices/1920x1200/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1920x1200/res/images/large_black.png b/gui/devices/1920x1200/res/images/large_black.png
deleted file mode 100644
index 91948ee..0000000
--- a/gui/devices/1920x1200/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/1920x1200/res/ui.xml b/gui/devices/1920x1200/res/ui.xml
index 0cc4d7e..458a723 100644
--- a/gui/devices/1920x1200/res/ui.xml
+++ b/gui/devices/1920x1200/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Regular-30" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="1875" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="1155" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="250" y="5" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1259,6 +1236,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/2560x1600/res/images/background.jpg b/gui/devices/2560x1600/res/images/background.jpg
index 9d40909..3b8a71a 100644
--- a/gui/devices/2560x1600/res/images/background.jpg
+++ b/gui/devices/2560x1600/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/2560x1600/res/images/backgroundbottom.jpg b/gui/devices/2560x1600/res/images/backgroundbottom.jpg
deleted file mode 100644
index e6ad724..0000000
--- a/gui/devices/2560x1600/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/2560x1600/res/images/backgroundside.jpg b/gui/devices/2560x1600/res/images/backgroundside.jpg
deleted file mode 100644
index 455806d..0000000
--- a/gui/devices/2560x1600/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/2560x1600/res/images/large_black.png b/gui/devices/2560x1600/res/images/large_black.png
deleted file mode 100644
index bf93e2b..0000000
--- a/gui/devices/2560x1600/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/2560x1600/res/ui.xml b/gui/devices/2560x1600/res/ui.xml
index c9e6c69..6a77a4f 100644
--- a/gui/devices/2560x1600/res/ui.xml
+++ b/gui/devices/2560x1600/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Regular-40" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="2500" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="1540" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="400" y="8" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1259,6 +1236,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/320x480/res/images/top-bar.jpg b/gui/devices/320x480/res/images/top-bar.jpg
index 351f58b..a0d5068 100644
--- a/gui/devices/320x480/res/images/top-bar.jpg
+++ b/gui/devices/320x480/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/320x480/res/ui.xml b/gui/devices/320x480/res/ui.xml
index 6d258b0..041a135 100644
--- a/gui/devices/320x480/res/ui.xml
+++ b/gui/devices/320x480/res/ui.xml
@@ -174,7 +174,7 @@
<variable name="backup_button_row2" value="326" />
<variable name="mount_list_height" value="270" />
<variable name="mount_storage_row" value="340" />
- <variable name="storage_list_height" value="340" />
+ <variable name="storage_list_height" value="290" />
<variable name="wipe_list_height" value="330" />
<variable name="wipe_button_y" value="270" />
<variable name="slidervalue_w" value="304" />
@@ -2084,6 +2084,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/480x800/res/images/top-bar.jpg b/gui/devices/480x800/res/images/top-bar.jpg
index 97a0b5f..d8ab933 100644
--- a/gui/devices/480x800/res/images/top-bar.jpg
+++ b/gui/devices/480x800/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/480x800/res/ui.xml b/gui/devices/480x800/res/ui.xml
index fdebf15..2b428b4 100644
--- a/gui/devices/480x800/res/ui.xml
+++ b/gui/devices/480x800/res/ui.xml
@@ -281,7 +281,7 @@
<object type="button">
<placement x="%sort_col1_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Name</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=1</action>
@@ -289,7 +289,7 @@
<object type="button">
<placement x="%sort_col2_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Date</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=2</action>
@@ -297,7 +297,7 @@
<object type="button">
<placement x="%sort_col3_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Size</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=3</action>
@@ -311,7 +311,7 @@
<object type="button">
<placement x="%sort_col1_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Name</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-1</action>
@@ -319,7 +319,7 @@
<object type="button">
<placement x="%sort_col2_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Date</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-2</action>
@@ -327,7 +327,7 @@
<object type="button">
<placement x="%sort_col3_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Size</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-3</action>
@@ -2084,6 +2084,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/480x854/res/images/top-bar.jpg b/gui/devices/480x854/res/images/top-bar.jpg
index 97a0b5f..d8ab933 100644
--- a/gui/devices/480x854/res/images/top-bar.jpg
+++ b/gui/devices/480x854/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/480x854/res/ui.xml b/gui/devices/480x854/res/ui.xml
index b2a5f4c..f8d6da1 100644
--- a/gui/devices/480x854/res/ui.xml
+++ b/gui/devices/480x854/res/ui.xml
@@ -280,7 +280,7 @@
<object type="button">
<placement x="%sort_col1_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Name</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=1</action>
@@ -288,7 +288,7 @@
<object type="button">
<placement x="%sort_col2_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Date</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=2</action>
@@ -296,7 +296,7 @@
<object type="button">
<placement x="%sort_col3_button_x%" y="%sort_asc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Size</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=3</action>
@@ -310,7 +310,7 @@
<object type="button">
<placement x="%sort_col1_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Name</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-1</action>
@@ -318,7 +318,7 @@
<object type="button">
<placement x="%sort_col2_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Date</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-2</action>
@@ -326,7 +326,7 @@
<object type="button">
<placement x="%sort_col3_button_x%" y="%sort_desc_button_y%" />
- <font resource="UItext" color="%button_text_color%" />
+ <font resource="font" color="%button_text_color%" />
<text>Size</text>
<image resource="sort_button" />
<action function="set">tw_gui_sort_order=-3</action>
@@ -2083,6 +2083,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/540x960/res/images/top-bar.jpg b/gui/devices/540x960/res/images/top-bar.jpg
index 45f4208..fbe7230 100644
--- a/gui/devices/540x960/res/images/top-bar.jpg
+++ b/gui/devices/540x960/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/540x960/res/ui.xml b/gui/devices/540x960/res/ui.xml
index c6b0c92..7448ddf 100644
--- a/gui/devices/540x960/res/ui.xml
+++ b/gui/devices/540x960/res/ui.xml
@@ -174,7 +174,7 @@
<variable name="backup_button_row2" value="645" />
<variable name="mount_list_height" value="500" />
<variable name="mount_storage_row" value="630" />
- <variable name="storage_list_height" value="675" />
+ <variable name="storage_list_height" value="575" />
<variable name="wipe_list_height" value="670" />
<variable name="wipe_button_y" value="475" />
<variable name="slidervalue_w" value="520" />
@@ -2084,6 +2084,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/720x1280/res/images/top-bar.jpg b/gui/devices/720x1280/res/images/top-bar.jpg
index a0909d5..02c8051 100644
--- a/gui/devices/720x1280/res/images/top-bar.jpg
+++ b/gui/devices/720x1280/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/720x1280/res/ui.xml b/gui/devices/720x1280/res/ui.xml
index 5481114..2319c55 100644
--- a/gui/devices/720x1280/res/ui.xml
+++ b/gui/devices/720x1280/res/ui.xml
@@ -179,7 +179,7 @@
<variable name="backup_button_row2" value="810" />
<variable name="mount_list_height" value="690" />
<variable name="mount_storage_row" value="820" />
- <variable name="storage_list_height" value="875" />
+ <variable name="storage_list_height" value="775" />
<variable name="wipe_list_height" value="870" />
<variable name="wipe_button_y" value="650" />
<variable name="slidervalue_w" value="700" />
@@ -2097,6 +2097,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/800x1280/res/images/top-bar.jpg b/gui/devices/800x1280/res/images/top-bar.jpg
index 0a91ac7..265b717 100644
--- a/gui/devices/800x1280/res/images/top-bar.jpg
+++ b/gui/devices/800x1280/res/images/top-bar.jpg
Binary files differ
diff --git a/gui/devices/800x1280/res/ui.xml b/gui/devices/800x1280/res/ui.xml
index a6931b2..692c736 100755
--- a/gui/devices/800x1280/res/ui.xml
+++ b/gui/devices/800x1280/res/ui.xml
@@ -175,7 +175,7 @@
<variable name="backup_button_row2" value="810" />
<variable name="mount_list_height" value="690" />
<variable name="mount_storage_row" value="830" />
- <variable name="storage_list_height" value="875" />
+ <variable name="storage_list_height" value="775" />
<variable name="wipe_list_height" value="870" />
<variable name="wipe_button_y" value="650" />
<variable name="slidervalue_w" value="780" />
@@ -2085,6 +2085,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%col_center_x%" y="%row4_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/devices/800x480/res/images/background.jpg b/gui/devices/800x480/res/images/background.jpg
index b13e1b8..af82531 100644
--- a/gui/devices/800x480/res/images/background.jpg
+++ b/gui/devices/800x480/res/images/background.jpg
Binary files differ
diff --git a/gui/devices/800x480/res/images/backgroundbottom.jpg b/gui/devices/800x480/res/images/backgroundbottom.jpg
deleted file mode 100644
index be09186..0000000
--- a/gui/devices/800x480/res/images/backgroundbottom.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/800x480/res/images/backgroundside.jpg b/gui/devices/800x480/res/images/backgroundside.jpg
deleted file mode 100644
index 2e9d9cd..0000000
--- a/gui/devices/800x480/res/images/backgroundside.jpg
+++ /dev/null
Binary files differ
diff --git a/gui/devices/800x480/res/images/large_black.png b/gui/devices/800x480/res/images/large_black.png
deleted file mode 100644
index 86b2dfc..0000000
--- a/gui/devices/800x480/res/images/large_black.png
+++ /dev/null
Binary files differ
diff --git a/gui/devices/800x480/res/ui.xml b/gui/devices/800x480/res/ui.xml
index 562cb16..768f246 100755
--- a/gui/devices/800x480/res/ui.xml
+++ b/gui/devices/800x480/res/ui.xml
@@ -12,9 +12,6 @@
<resources>
<resource name="font" type="font" filename="Roboto-Condensed-16" />
<resource name="base" type="image" filename="background.jpg" />
- <resource name="side" type="image" filename="backgroundside.jpg" />
- <resource name="bottom" type="image" filename="backgroundbottom.jpg" />
- <resource name="large_black" type="image" filename="large_black" />
<resource name="main_button" type="image" filename="button" />
<resource name="file_icon" type="image" filename="file" />
<resource name="folder_icon" type="image" filename="folder" />
@@ -137,7 +134,7 @@
<variable name="console_installdone_height" value="260" />
<variable name="fileselector_folder_x" value="28" />
<variable name="fileselector_folder_width" value="248" />
- <variable name="fileselector_folderonly_width" value="460" />
+ <variable name="fileselector_folderonly_width" value="400" />
<variable name="fileselector_file_x" value="278" />
<variable name="fileselector_file_width" value="506" />
<variable name="fileselector_install_y" value="120" />
@@ -213,34 +210,14 @@
<background color="#000000FF" />
<object type="image">
- <image resource="side" />
- <placement x="0" y="0" />
- </object>
-
- <object type="image">
- <image resource="side" />
- <placement x="770" y="0" />
- </object>
-
- <object type="image">
<image resource="base" />
<placement x="0" y="0" />
</object>
- <object type="image">
- <image resource="bottom" />
- <placement x="1" y="450" />
- </object>
-
- <object type="image">
- <image resource="large_black" />
- <placement x="0" y="0" />
- </object>
-
<object type="text" color="%text_color%">
<font resource="font" />
<placement x="250" y="2" />
- <text>Team Win Recovery Project (twrp) v%tw_version%</text>
+ <text>Team Win Recovery Project v%tw_version%</text>
</object>
<object type="text" color="%text_color%">
@@ -1267,6 +1244,18 @@
<listtype name="storage" />
</object>
+ <object type="button">
+ <highlight color="%highlight_color%" />
+ <placement x="%filemanager_select_x%" y="%row2_y%" />
+ <font resource="font" color="%button_text_color%" />
+ <text>OK</text>
+ <image resource="main_button" />
+ <actions>
+ <action function="set">tw_clear_destination=%tw_back%</action>
+ <action function="page">clear_vars</action>
+ </actions>
+ </object>
+
<object type="action">
<touch key="home" />
<action function="page">main</action>
diff --git a/gui/gui.cpp b/gui/gui.cpp
index 8755689..9f22138 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -185,6 +185,8 @@
static struct timeval touchStart;
HardwareKeyboard kb;
string seconds;
+ int screen_width = gr_fb_width();
+ int screen_height = gr_fb_height();
//start screen timeout threads
blankTimer.setTimerThread();
@@ -198,7 +200,7 @@
struct input_event ev;
int state = 0, ret = 0;
- ret = ev_get (&ev, dontwait);
+ ret = ev_get (&ev, dontwait, &screen_width, &screen_height);
if (ret < 0)
{
diff --git a/libjpegtwrp/Android.mk b/libjpegtwrp/Android.mk
deleted file mode 100755
index 98b2539..0000000
--- a/libjpegtwrp/Android.mk
+++ /dev/null
@@ -1,77 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_ARM_MODE := arm
-
-# Set ANDROID_JPEG_USE_VENUM to true to enable VeNum optimizations
-ANDROID_JPEG_USE_VENUM := true
-
-# Disable VeNum optimizations if they are not supported on the build target
-ifneq ($(ARCH_ARM_HAVE_VFP),true)
-ANDROID_JPEG_USE_VENUM := false
-else
-ifneq ($(ARCH_ARM_HAVE_NEON),true)
-ANDROID_JPEG_USE_VENUM := false
-endif
-endif
-
-LOCAL_SRC_FILES := \
- jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c \
- jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
- jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c \
- jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c \
- jdinput.c jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c \
- jdpostct.c jdsample.c jdtrans.c jerror.c jfdctflt.c jfdctfst.c \
- jfdctint.c jidctflt.c jquant1.c \
- jquant2.c jutils.c jmemmgr.c \
-
-# use ashmem as libjpeg decoder's backing store
-LOCAL_CFLAGS += -DUSE_ANDROID_ASHMEM
-LOCAL_SRC_FILES += \
- jmem-ashmem.c
-
-# the original android memory manager.
-# use sdcard as libjpeg decoder's backing store
-#LOCAL_SRC_FILES += \
-# jmem-android.c
-
-
-# the assembler is only for the ARM version, don't break the Linux sim
-ifneq ($(TARGET_ARCH),arm)
-ANDROID_JPEG_NO_ASSEMBLER := true
-endif
-
-ifeq ($(strip $(ANDROID_JPEG_NO_ASSEMBLER)),true)
-LOCAL_SRC_FILES += jidctint.c jidctfst.c jidctred.c
-else
-ifeq ($(ANDROID_JPEG_USE_VENUM),true)
-LOCAL_SRC_FILES += jidctvenum.c
-LOCAL_SRC_FILES += asm/armv7/jdcolor-armv7.S
-LOCAL_SRC_FILES += asm/armv7/jdcolor-android-armv7.S
-LOCAL_SRC_FILES += asm/armv7/jdidct-armv7.S
-LOCAL_CFLAGS += -DANDROID_JPEG_USE_VENUM
-else # ANDROID_JPEG_USE_VENUM, false
-LOCAL_SRC_FILES += jidctint.c jidctred.c jidctfst.c armv6_idct.S
-LOCAL_CFLAGS += -DANDROID_ARMV6_IDCT
-endif # ANDROID_JPEG_USE_VENUM
-endif
-
-LOCAL_CFLAGS += -DAVOID_TABLES
-LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays
-
-# enable tile based decode
-LOCAL_CFLAGS += -DANDROID_TILE_BASED_DECODE
-
-ifdef NEEDS_ARM_ERRATA_754319_754320
-asm_flags := \
- --defsym NEEDS_ARM_ERRATA_754319_754320_ASM=1
-
-LOCAL_CFLAGS+= \
- $(foreach f,$(asm_flags),-Wa,"$(f)")
-endif
-LOCAL_MODULE_TAGS := eng
-LOCAL_SHARED_LIBRARIES += libcutils
-LOCAL_MODULE:= libjpegtwrp
-
-include $(BUILD_STATIC_LIBRARY)
-
diff --git a/libjpegtwrp/CleanSpec.mk b/libjpegtwrp/CleanSpec.mk
deleted file mode 100644
index b84e1b6..0000000
--- a/libjpegtwrp/CleanSpec.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2007 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# If you don't need to do a full clean build but would like to touch
-# a file or delete some intermediate files, add a clean step to the end
-# of the list. These steps will only be run once, if they haven't been
-# run before.
-#
-# E.g.:
-# $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
-# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
-#
-# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
-# files that are missing or have been moved.
-#
-# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
-# Use $(OUT_DIR) to refer to the "out" directory.
-#
-# If you need to re-do something that's already mentioned, just copy
-# the command and add it to the bottom of the list. E.g., if a change
-# that you made last week required touching a file and a change you
-# made today requires touching the same file, just copy the old
-# touch step and add it to the end of the list.
-#
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
-
-# For example:
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
-#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
-#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
-
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
diff --git a/libjpegtwrp/MODULE_LICENSE_BSD_LIKE b/libjpegtwrp/MODULE_LICENSE_BSD_LIKE
deleted file mode 100644
index e69de29..0000000
--- a/libjpegtwrp/MODULE_LICENSE_BSD_LIKE
+++ /dev/null
diff --git a/libjpegtwrp/NOTICE b/libjpegtwrp/NOTICE
deleted file mode 100644
index 007625f..0000000
--- a/libjpegtwrp/NOTICE
+++ /dev/null
@@ -1,38 +0,0 @@
-This software is based in part on the work of the Independent JPEG Group.
-
-----------------------
-
-The authors make NO WARRANTY or representation, either express or implied,
-with respect to this software, its quality, accuracy, merchantability, or
-fitness for a particular purpose. This software is provided "AS IS", and you,
-its user, assume the entire risk as to its quality and accuracy.
-
-This software is copyright (C) 1991-1998, Thomas G. Lane.
-All Rights Reserved except as specified below.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-software (or portions thereof) for any purpose, without fee, subject to these
-conditions:
-(1) If any part of the source code for this software is distributed, then this
-README file must be included, with this copyright and no-warranty notice
-unaltered; and any additions, deletions, or changes to the original files
-must be clearly indicated in accompanying documentation.
-(2) If only executable code is distributed, then the accompanying
-documentation must state that "this software is based in part on the work of
-the Independent JPEG Group".
-(3) Permission for use of this software is granted only if the user accepts
-full responsibility for any undesirable consequences; the authors accept
-NO LIABILITY for damages of any kind.
-
-These conditions apply to any software derived from or based on the IJG code,
-not just to the unmodified library. If you use our work, you ought to
-acknowledge us.
-
-Permission is NOT granted for the use of any IJG author's name or company name
-in advertising or publicity relating to this software or products derived from
-it. This software may be referred to only as "the Independent JPEG Group's
-software".
-
-We specifically permit and encourage the use of this software as the basis of
-commercial products, provided that all warranty or liability claims are
-assumed by the product vendor.
diff --git a/libjpegtwrp/README b/libjpegtwrp/README
deleted file mode 100644
index 86cc206..0000000
--- a/libjpegtwrp/README
+++ /dev/null
@@ -1,385 +0,0 @@
-The Independent JPEG Group's JPEG software
-==========================================
-
-README for release 6b of 27-Mar-1998
-====================================
-
-This distribution contains the sixth public release of the Independent JPEG
-Group's free JPEG software. You are welcome to redistribute this software and
-to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
-
-Serious users of this software (particularly those incorporating it into
-larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to
-our electronic mailing list. Mailing list members are notified of updates
-and have a chance to participate in technical discussions, etc.
-
-This software is the work of Tom Lane, Philip Gladstone, Jim Boucher,
-Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi,
-Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG
-Group.
-
-IJG is not affiliated with the official ISO JPEG standards committee.
-
-
-DOCUMENTATION ROADMAP
-=====================
-
-This file contains the following sections:
-
-OVERVIEW General description of JPEG and the IJG software.
-LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
-REFERENCES Where to learn more about JPEG.
-ARCHIVE LOCATIONS Where to find newer versions of this software.
-RELATED SOFTWARE Other stuff you should get.
-FILE FORMAT WARS Software *not* to get.
-TO DO Plans for future IJG releases.
-
-Other documentation files in the distribution are:
-
-User documentation:
- install.doc How to configure and install the IJG software.
- usage.doc Usage instructions for cjpeg, djpeg, jpegtran,
- rdjpgcom, and wrjpgcom.
- *.1 Unix-style man pages for programs (same info as usage.doc).
- wizard.doc Advanced usage instructions for JPEG wizards only.
- change.log Version-to-version change highlights.
-Programmer and internal documentation:
- libjpeg.doc How to use the JPEG library in your own programs.
- example.c Sample code for calling the JPEG library.
- structure.doc Overview of the JPEG library's internal structure.
- filelist.doc Road map of IJG files.
- coderules.doc Coding style rules --- please read if you contribute code.
-
-Please read at least the files install.doc and usage.doc. Useful information
-can also be found in the JPEG FAQ (Frequently Asked Questions) article. See
-ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
-
-If you want to understand how the JPEG code works, we suggest reading one or
-more of the REFERENCES, then looking at the documentation files (in roughly
-the order listed) before diving into the code.
-
-
-OVERVIEW
-========
-
-This package contains C software to implement JPEG image compression and
-decompression. JPEG (pronounced "jay-peg") is a standardized compression
-method for full-color and gray-scale images. JPEG is intended for compressing
-"real-world" scenes; line drawings, cartoons and other non-realistic images
-are not its strong suit. JPEG is lossy, meaning that the output image is not
-exactly identical to the input image. Hence you must not use JPEG if you
-have to have identical output bits. However, on typical photographic images,
-very good compression levels can be obtained with no visible change, and
-remarkably high compression levels are possible if you can tolerate a
-low-quality image. For more details, see the references, or just experiment
-with various compression settings.
-
-This software implements JPEG baseline, extended-sequential, and progressive
-compression processes. Provision is made for supporting all variants of these
-processes, although some uncommon parameter settings aren't implemented yet.
-For legal reasons, we are not distributing code for the arithmetic-coding
-variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting
-the hierarchical or lossless processes defined in the standard.
-
-We provide a set of library routines for reading and writing JPEG image files,
-plus two sample applications "cjpeg" and "djpeg", which use the library to
-perform conversion between JPEG and some other popular image file formats.
-The library is intended to be reused in other applications.
-
-In order to support file conversion and viewing software, we have included
-considerable functionality beyond the bare JPEG coding/decoding capability;
-for example, the color quantization modules are not strictly part of JPEG
-decoding, but they are essential for output to colormapped file formats or
-colormapped displays. These extra functions can be compiled out of the
-library if not required for a particular application. We have also included
-"jpegtran", a utility for lossless transcoding between different JPEG
-processes, and "rdjpgcom" and "wrjpgcom", two simple applications for
-inserting and extracting textual comments in JFIF files.
-
-The emphasis in designing this software has been on achieving portability and
-flexibility, while also making it fast enough to be useful. In particular,
-the software is not intended to be read as a tutorial on JPEG. (See the
-REFERENCES section for introductory material.) Rather, it is intended to
-be reliable, portable, industrial-strength code. We do not claim to have
-achieved that goal in every aspect of the software, but we strive for it.
-
-We welcome the use of this software as a component of commercial products.
-No royalty is required, but we do ask for an acknowledgement in product
-documentation, as described under LEGAL ISSUES.
-
-
-LEGAL ISSUES
-============
-
-In plain English:
-
-1. We don't promise that this software works. (But if you find any bugs,
- please let us know!)
-2. You can use this software for whatever you want. You don't have to pay us.
-3. You may not pretend that you wrote this software. If you use it in a
- program, you must acknowledge somewhere in your documentation that
- you've used the IJG code.
-
-In legalese:
-
-The authors make NO WARRANTY or representation, either express or implied,
-with respect to this software, its quality, accuracy, merchantability, or
-fitness for a particular purpose. This software is provided "AS IS", and you,
-its user, assume the entire risk as to its quality and accuracy.
-
-This software is copyright (C) 1991-1998, Thomas G. Lane.
-All Rights Reserved except as specified below.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-software (or portions thereof) for any purpose, without fee, subject to these
-conditions:
-(1) If any part of the source code for this software is distributed, then this
-README file must be included, with this copyright and no-warranty notice
-unaltered; and any additions, deletions, or changes to the original files
-must be clearly indicated in accompanying documentation.
-(2) If only executable code is distributed, then the accompanying
-documentation must state that "this software is based in part on the work of
-the Independent JPEG Group".
-(3) Permission for use of this software is granted only if the user accepts
-full responsibility for any undesirable consequences; the authors accept
-NO LIABILITY for damages of any kind.
-
-These conditions apply to any software derived from or based on the IJG code,
-not just to the unmodified library. If you use our work, you ought to
-acknowledge us.
-
-Permission is NOT granted for the use of any IJG author's name or company name
-in advertising or publicity relating to this software or products derived from
-it. This software may be referred to only as "the Independent JPEG Group's
-software".
-
-We specifically permit and encourage the use of this software as the basis of
-commercial products, provided that all warranty or liability claims are
-assumed by the product vendor.
-
-
-ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
-sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
-ansi2knr.c is NOT covered by the above copyright and conditions, but instead
-by the usual distribution terms of the Free Software Foundation; principally,
-that you must include source code if you redistribute it. (See the file
-ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
-of any program generated from the IJG code, this does not limit you more than
-the foregoing paragraphs do.
-
-The Unix configuration script "configure" was produced with GNU Autoconf.
-It is copyright by the Free Software Foundation but is freely distributable.
-The same holds for its supporting scripts (config.guess, config.sub,
-ltconfig, ltmain.sh). Another support script, install-sh, is copyright
-by M.I.T. but is also freely distributable.
-
-It appears that the arithmetic coding option of the JPEG spec is covered by
-patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot
-legally be used without obtaining one or more licenses. For this reason,
-support for arithmetic coding has been removed from the free JPEG software.
-(Since arithmetic coding provides only a marginal gain over the unpatented
-Huffman mode, it is unlikely that very many implementations will support it.)
-So far as we are aware, there are no patent restrictions on the remaining
-code.
-
-The IJG distribution formerly included code to read and write GIF files.
-To avoid entanglement with the Unisys LZW patent, GIF reading support has
-been removed altogether, and the GIF writer has been simplified to produce
-"uncompressed GIFs". This technique does not use the LZW algorithm; the
-resulting GIF files are larger than usual, but are readable by all standard
-GIF decoders.
-
-We are required to state that
- "The Graphics Interchange Format(c) is the Copyright property of
- CompuServe Incorporated. GIF(sm) is a Service Mark property of
- CompuServe Incorporated."
-
-
-REFERENCES
-==========
-
-We highly recommend reading one or more of these references before trying to
-understand the innards of the JPEG software.
-
-The best short technical introduction to the JPEG compression algorithm is
- Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
- Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
-(Adjacent articles in that issue discuss MPEG motion picture compression,
-applications of JPEG, and related topics.) If you don't have the CACM issue
-handy, a PostScript file containing a revised version of Wallace's article is
-available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz. The file (actually
-a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
-omits the sample images that appeared in CACM, but it includes corrections
-and some added material. Note: the Wallace article is copyright ACM and IEEE,
-and it may not be used for commercial purposes.
-
-A somewhat less technical, more leisurely introduction to JPEG can be found in
-"The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
-M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides
-good explanations and example C code for a multitude of compression methods
-including JPEG. It is an excellent source if you are comfortable reading C
-code but don't know much about data compression in general. The book's JPEG
-sample code is far from industrial-strength, but when you are ready to look
-at a full implementation, you've got one here...
-
-The best full description of JPEG is the textbook "JPEG Still Image Data
-Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published
-by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp.
-The book includes the complete text of the ISO JPEG standards (DIS 10918-1
-and draft DIS 10918-2). This is by far the most complete exposition of JPEG
-in existence, and we highly recommend it.
-
-The JPEG standard itself is not available electronically; you must order a
-paper copy through ISO or ITU. (Unless you feel a need to own a certified
-official copy, we recommend buying the Pennebaker and Mitchell book instead;
-it's much cheaper and includes a great deal of useful explanatory material.)
-In the USA, copies of the standard may be ordered from ANSI Sales at (212)
-642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI
-doesn't take credit card orders, but Global does.) It's not cheap: as of
-1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7%
-shipping/handling. The standard is divided into two parts, Part 1 being the
-actual specification, while Part 2 covers compliance testing methods. Part 1
-is titled "Digital Compression and Coding of Continuous-tone Still Images,
-Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
-10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
-Continuous-tone Still Images, Part 2: Compliance testing" and has document
-numbers ISO/IEC IS 10918-2, ITU-T T.83.
-
-Some extensions to the original JPEG standard are defined in JPEG Part 3,
-a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG
-currently does not support any Part 3 extensions.
-
-The JPEG standard does not specify all details of an interchangeable file
-format. For the omitted details we follow the "JFIF" conventions, revision
-1.02. A copy of the JFIF spec is available from:
- Literature Department
- C-Cube Microsystems, Inc.
- 1778 McCarthy Blvd.
- Milpitas, CA 95035
- phone (408) 944-6300, fax (408) 944-6314
-A PostScript version of this document is available by FTP at
-ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz. There is also a plain text
-version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing
-the figures.
-
-The TIFF 6.0 file format specification can be obtained by FTP from
-ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme
-found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
-IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
-Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
-(Compression tag 7). Copies of this Note can be obtained from ftp.sgi.com or
-from ftp://ftp.uu.net/graphics/jpeg/. It is expected that the next revision
-of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
-Although IJG's own code does not support TIFF/JPEG, the free libtiff library
-uses our library to implement TIFF/JPEG per the Note. libtiff is available
-from ftp://ftp.sgi.com/graphics/tiff/.
-
-
-ARCHIVE LOCATIONS
-=================
-
-The "official" archive site for this software is ftp.uu.net (Internet
-address 192.48.96.9). The most recent released version can always be found
-there in directory graphics/jpeg. This particular version will be archived
-as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz. If you don't have
-direct Internet access, UUNET's archives are also available via UUCP; contact
-help@uunet.uu.net for information on retrieving files that way.
-
-Numerous Internet sites maintain copies of the UUNET files. However, only
-ftp.uu.net is guaranteed to have the latest official version.
-
-You can also obtain this software in DOS-compatible "zip" archive format from
-the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or
-on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12
-"JPEG Tools". Again, these versions may sometimes lag behind the ftp.uu.net
-release.
-
-The JPEG FAQ (Frequently Asked Questions) article is a useful source of
-general information about JPEG. It is updated constantly and therefore is
-not included in this distribution. The FAQ is posted every two weeks to
-Usenet newsgroups comp.graphics.misc, news.answers, and other groups.
-It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
-and other news.answers archive sites, including the official news.answers
-archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
-If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu
-with body
- send usenet/news.answers/jpeg-faq/part1
- send usenet/news.answers/jpeg-faq/part2
-
-
-RELATED SOFTWARE
-================
-
-Numerous viewing and image manipulation programs now support JPEG. (Quite a
-few of them use this library to do so.) The JPEG FAQ described above lists
-some of the more popular free and shareware viewers, and tells where to
-obtain them on Internet.
-
-If you are on a Unix machine, we highly recommend Jef Poskanzer's free
-PBMPLUS software, which provides many useful operations on PPM-format image
-files. In particular, it can convert PPM images to and from a wide range of
-other formats, thus making cjpeg/djpeg considerably more useful. The latest
-version is distributed by the NetPBM group, and is available from numerous
-sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/.
-Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is;
-you are likely to have difficulty making it work on any non-Unix machine.
-
-A different free JPEG implementation, written by the PVRG group at Stanford,
-is available from ftp://havefun.stanford.edu/pub/jpeg/. This program
-is designed for research and experimentation rather than production use;
-it is slower, harder to use, and less portable than the IJG code, but it
-is easier to read and modify. Also, the PVRG code supports lossless JPEG,
-which we do not. (On the other hand, it doesn't do progressive JPEG.)
-
-
-FILE FORMAT WARS
-================
-
-Some JPEG programs produce files that are not compatible with our library.
-The root of the problem is that the ISO JPEG committee failed to specify a
-concrete file format. Some vendors "filled in the blanks" on their own,
-creating proprietary formats that no one else could read. (For example, none
-of the early commercial JPEG implementations for the Macintosh were able to
-exchange compressed files.)
-
-The file format we have adopted is called JFIF (see REFERENCES). This format
-has been agreed to by a number of major commercial JPEG vendors, and it has
-become the de facto standard. JFIF is a minimal or "low end" representation.
-We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF
-Technical Note #2) for "high end" applications that need to record a lot of
-additional data about an image. TIFF/JPEG is fairly new and not yet widely
-supported, unfortunately.
-
-The upcoming JPEG Part 3 standard defines a file format called SPIFF.
-SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should
-be able to read the most common variant of SPIFF. SPIFF has some technical
-advantages over JFIF, but its major claim to fame is simply that it is an
-official standard rather than an informal one. At this point it is unclear
-whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto
-standard. IJG intends to support SPIFF once the standard is frozen, but we
-have not decided whether it should become our default output format or not.
-(In any case, our decoder will remain capable of reading JFIF indefinitely.)
-
-Various proprietary file formats incorporating JPEG compression also exist.
-We have little or no sympathy for the existence of these formats. Indeed,
-one of the original reasons for developing this free software was to help
-force convergence on common, open format standards for JPEG files. Don't
-use a proprietary file format!
-
-
-TO DO
-=====
-
-The major thrust for v7 will probably be improvement of visual quality.
-The current method for scaling the quantization tables is known not to be
-very good at low Q values. We also intend to investigate block boundary
-smoothing, "poor man's variable quantization", and other means of improving
-quality-vs-file-size performance without sacrificing compatibility.
-
-In future versions, we are considering supporting some of the upcoming JPEG
-Part 3 extensions --- principally, variable quantization and the SPIFF file
-format.
-
-As always, speeding things up is of great interest.
-
-Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net.
diff --git a/libjpegtwrp/README-VeNum b/libjpegtwrp/README-VeNum
deleted file mode 100644
index ee51449..0000000
--- a/libjpegtwrp/README-VeNum
+++ /dev/null
@@ -1,20 +0,0 @@
-README-VeNum
-Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
-=================================================================
-
-Consumers are increasingly browsing Web based photo galleries incorporating
-high-resolution JPEG images with their mobile devices. These images are
-decoded by the mobile device, and typically also scaled down to fit the user's
-zoom selection on the device's browser.
-
-In order to improve both decode and download times, Qualcomm Innovation Center
-has optimized the JPEG library found on many common OS platforms such as Web
-OS, Android, and Chrome OS. Our team re-implemented several routines to utilize the
-DSP-like SIMD capabilities of the ARM NEON instruction set. These were then
-tuned and tested on Qualcomm's Snapdragon platform which implements the VeNum
-implementation of these same instructions.
-
-The specific areas of focus cover VeNum/NEON acceleration of Inverse Discrete
-Cosine Transform (iDCT) for 8x8, 4x4, 2x2, and 1x1 block sizes and YUV to RGB
-color space conversion. This resulted in a range of 18-32% improvement in JPEG
-decode and downscale times for images greater than 2Mpixels.
diff --git a/libjpegtwrp/ThirdPartyProject.prop b/libjpegtwrp/ThirdPartyProject.prop
deleted file mode 100644
index e88cc63..0000000
--- a/libjpegtwrp/ThirdPartyProject.prop
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2010 Google Inc. All Rights Reserved.
-#Fri Jul 16 10:03:09 PDT 2010
-currentVersion=8a
-version=6b
-isNative=true
-name=jpeg
-keywords=jpeg
-onDevice=true
-homepage=http\://www.ijg.org/
diff --git a/libjpegtwrp/ansi2knr.1 b/libjpegtwrp/ansi2knr.1
deleted file mode 100644
index f9ee5a6..0000000
--- a/libjpegtwrp/ansi2knr.1
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH ANSI2KNR 1 "19 Jan 1996"
-.SH NAME
-ansi2knr \- convert ANSI C to Kernighan & Ritchie C
-.SH SYNOPSIS
-.I ansi2knr
-[--varargs] input_file [output_file]
-.SH DESCRIPTION
-If no output_file is supplied, output goes to stdout.
-.br
-There are no error messages.
-.sp
-.I ansi2knr
-recognizes function definitions by seeing a non-keyword identifier at the left
-margin, followed by a left parenthesis, with a right parenthesis as the last
-character on the line, and with a left brace as the first token on the
-following line (ignoring possible intervening comments). It will recognize a
-multi-line header provided that no intervening line ends with a left or right
-brace or a semicolon. These algorithms ignore whitespace and comments, except
-that the function name must be the first thing on the line.
-.sp
-The following constructs will confuse it:
-.br
- - Any other construct that starts at the left margin and follows the
-above syntax (such as a macro or function call).
-.br
- - Some macros that tinker with the syntax of the function header.
-.sp
-The --varargs switch is obsolete, and is recognized only for
-backwards compatibility. The present version of
-.I ansi2knr
-will always attempt to convert a ... argument to va_alist and va_dcl.
-.SH AUTHOR
-L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
-continues to maintain the current version; most of the code in the current
-version is his work. ansi2knr also includes contributions by Francois
-Pinard <pinard@iro.umontreal.ca> and Jim Avera <jima@netcom.com>.
diff --git a/libjpegtwrp/ansi2knr.c b/libjpegtwrp/ansi2knr.c
deleted file mode 100644
index 4e05fc2..0000000
--- a/libjpegtwrp/ansi2knr.c
+++ /dev/null
@@ -1,693 +0,0 @@
-/* ansi2knr.c */
-/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
-
-/*
-ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY. No author or distributor accepts responsibility to anyone for the
-consequences of using it or for whether it serves any particular purpose or
-works at all, unless he says so in writing. Refer to the GNU General Public
-License (the "GPL") for full details.
-
-Everyone is granted permission to copy, modify and redistribute ansi2knr,
-but only under the conditions described in the GPL. A copy of this license
-is supposed to have been given to you along with ansi2knr so you can know
-your rights and responsibilities. It should be in a file named COPYLEFT.
-[In the IJG distribution, the GPL appears below, not in a separate file.]
-Among other things, the copyright notice and this notice must be preserved
-on all copies.
-
-We explicitly state here what we believe is already implied by the GPL: if
-the ansi2knr program is distributed as a separate set of sources and a
-separate executable file which are aggregated on a storage medium together
-with another program, this in itself does not bring the other program under
-the GPL, nor does the mere fact that such a program or the procedures for
-constructing it invoke the ansi2knr executable bring any other part of the
-program under the GPL.
-*/
-
-/*
----------- Here is the GNU GPL file COPYLEFT, referred to above ----------
------ These terms do NOT apply to the JPEG software itself; see README ------
-
- GHOSTSCRIPT GENERAL PUBLIC LICENSE
- (Clarified 11 Feb 1988)
-
- Copyright (C) 1988 Richard M. Stallman
- Everyone is permitted to copy and distribute verbatim copies of this
- license, but changing it is not allowed. You can also use this wording
- to make the terms for other programs.
-
- The license agreements of most software companies keep you at the
-mercy of those companies. By contrast, our general public license is
-intended to give everyone the right to share Ghostscript. To make sure
-that you get the rights we want you to have, we need to make
-restrictions that forbid anyone to deny you these rights or to ask you
-to surrender the rights. Hence this license agreement.
-
- Specifically, we want to make sure that you have the right to give
-away copies of Ghostscript, that you receive source code or else can get
-it if you want it, that you can change Ghostscript or use pieces of it
-in new free programs, and that you know you can do these things.
-
- To make sure that everyone has such rights, we have to forbid you to
-deprive anyone else of these rights. For example, if you distribute
-copies of Ghostscript, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must tell them their rights.
-
- Also, for our own protection, we must make certain that everyone finds
-out that there is no warranty for Ghostscript. If Ghostscript is
-modified by someone else and passed on, we want its recipients to know
-that what they have is not what we distributed, so that any problems
-introduced by others will not reflect on our reputation.
-
- Therefore we (Richard M. Stallman and the Free Software Foundation,
-Inc.) make the following terms which say what you must do to be allowed
-to distribute or change Ghostscript.
-
-
- COPYING POLICIES
-
- 1. You may copy and distribute verbatim copies of Ghostscript source
-code as you receive it, in any medium, provided that you conspicuously
-and appropriately publish on each copy a valid copyright and license
-notice "Copyright (C) 1989 Aladdin Enterprises. All rights reserved.
-Distributed by Free Software Foundation, Inc." (or with whatever year is
-appropriate); keep intact the notices on all files that refer to this
-License Agreement and to the absence of any warranty; and give any other
-recipients of the Ghostscript program a copy of this License Agreement
-along with the program. You may charge a distribution fee for the
-physical act of transferring a copy.
-
- 2. You may modify your copy or copies of Ghostscript or any portion of
-it, and copy and distribute such modifications under the terms of
-Paragraph 1 above, provided that you also do the following:
-
- a) cause the modified files to carry prominent notices stating
- that you changed the files and the date of any change; and
-
- b) cause the whole of any work that you distribute or publish,
- that in whole or in part contains or is a derivative of Ghostscript
- or any part thereof, to be licensed at no charge to all third
- parties on terms identical to those contained in this License
- Agreement (except that you may choose to grant more extensive
- warranty protection to some or all third parties, at your option).
-
- c) You may charge a distribution fee for the physical act of
- transferring a copy, and you may at your option offer warranty
- protection in exchange for a fee.
-
-Mere aggregation of another unrelated program with this program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other program under the scope of these terms.
-
- 3. You may copy and distribute Ghostscript (or a portion or derivative
-of it, under Paragraph 2) in object code or executable form under the
-terms of Paragraphs 1 and 2 above provided that you also do one of the
-following:
-
- a) accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- b) accompany it with a written offer, valid for at least three
- years, to give any third party free (except for a nominal
- shipping charge) a complete machine-readable copy of the
- corresponding source code, to be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- c) accompany it with the information you received as to where the
- corresponding source code may be obtained. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form alone.)
-
-For an executable file, complete source code means all the source code for
-all modules it contains; but, as a special exception, it need not include
-source code for modules which are standard libraries that accompany the
-operating system on which the executable file runs.
-
- 4. You may not copy, sublicense, distribute or transfer Ghostscript
-except as expressly provided under this License Agreement. Any attempt
-otherwise to copy, sublicense, distribute or transfer Ghostscript is
-void and your rights to use the program under this License agreement
-shall be automatically terminated. However, parties who have received
-computer software programs from you with this License Agreement will not
-have their licenses terminated so long as such parties remain in full
-compliance.
-
- 5. If you wish to incorporate parts of Ghostscript into other free
-programs whose distribution conditions are different, write to the Free
-Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not
-yet worked out a simple rule that can be stated here, but we will often
-permit this. We will be guided by the two goals of preserving the free
-status of all derivatives of our free software and of promoting the
-sharing and reuse of software.
-
-Your comments and suggestions about our licensing policies and our
-software are welcome! Please contact the Free Software Foundation,
-Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296.
-
- NO WARRANTY
-
- BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
-NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
-WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD
-M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES
-PROVIDE GHOSTSCRIPT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
-EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
-ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF GHOSTSCRIPT IS WITH
-YOU. SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
-STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN
-ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE
-GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
-ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
-(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
-INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE
-PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU
-HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM
-BY ANY OTHER PARTY.
-
--------------------- End of file COPYLEFT ------------------------------
-*/
-
-/*
- * Usage:
- ansi2knr input_file [output_file]
- * If no output_file is supplied, output goes to stdout.
- * There are no error messages.
- *
- * ansi2knr recognizes function definitions by seeing a non-keyword
- * identifier at the left margin, followed by a left parenthesis,
- * with a right parenthesis as the last character on the line,
- * and with a left brace as the first token on the following line
- * (ignoring possible intervening comments).
- * It will recognize a multi-line header provided that no intervening
- * line ends with a left or right brace or a semicolon.
- * These algorithms ignore whitespace and comments, except that
- * the function name must be the first thing on the line.
- * The following constructs will confuse it:
- * - Any other construct that starts at the left margin and
- * follows the above syntax (such as a macro or function call).
- * - Some macros that tinker with the syntax of the function header.
- */
-
-/*
- * The original and principal author of ansi2knr is L. Peter Deutsch
- * <ghost@aladdin.com>. Other authors are noted in the change history
- * that follows (in reverse chronological order):
- lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with
- compilers that don't understand void, as suggested by
- Tom Lane
- lpd 96-01-15 changed to require that the first non-comment token
- on the line following a function header be a left brace,
- to reduce sensitivity to macros, as suggested by Tom Lane
- <tgl@sss.pgh.pa.us>
- lpd 95-06-22 removed #ifndefs whose sole purpose was to define
- undefined preprocessor symbols as 0; changed all #ifdefs
- for configuration symbols to #ifs
- lpd 95-04-05 changed copyright notice to make it clear that
- including ansi2knr in a program does not bring the entire
- program under the GPL
- lpd 94-12-18 added conditionals for systems where ctype macros
- don't handle 8-bit characters properly, suggested by
- Francois Pinard <pinard@iro.umontreal.ca>;
- removed --varargs switch (this is now the default)
- lpd 94-10-10 removed CONFIG_BROKETS conditional
- lpd 94-07-16 added some conditionals to help GNU `configure',
- suggested by Francois Pinard <pinard@iro.umontreal.ca>;
- properly erase prototype args in function parameters,
- contributed by Jim Avera <jima@netcom.com>;
- correct error in writeblanks (it shouldn't erase EOLs)
- lpd 89-xx-xx original version
- */
-
-/* Most of the conditionals here are to make ansi2knr work with */
-/* or without the GNU configure machinery. */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-
-#if HAVE_CONFIG_H
-
-/*
- For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
- This will define HAVE_CONFIG_H and so, activate the following lines.
- */
-
-# if STDC_HEADERS || HAVE_STRING_H
-# include <string.h>
-# else
-# include <strings.h>
-# endif
-
-#else /* not HAVE_CONFIG_H */
-
-/* Otherwise do it the hard way */
-
-# ifdef BSD
-# include <strings.h>
-# else
-# ifdef VMS
- extern int strlen(), strncmp();
-# else
-# include <string.h>
-# endif
-# endif
-
-#endif /* not HAVE_CONFIG_H */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#else
-/*
- malloc and free should be declared in stdlib.h,
- but if you've got a K&R compiler, they probably aren't.
- */
-# ifdef MSDOS
-# include <malloc.h>
-# else
-# ifdef VMS
- extern char *malloc();
- extern void free();
-# else
- extern char *malloc();
- extern int free();
-# endif
-# endif
-
-#endif
-
-/*
- * The ctype macros don't always handle 8-bit characters correctly.
- * Compensate for this here.
- */
-#ifdef isascii
-# undef HAVE_ISASCII /* just in case */
-# define HAVE_ISASCII 1
-#else
-#endif
-#if STDC_HEADERS || !HAVE_ISASCII
-# define is_ascii(c) 1
-#else
-# define is_ascii(c) isascii(c)
-#endif
-
-#define is_space(c) (is_ascii(c) && isspace(c))
-#define is_alpha(c) (is_ascii(c) && isalpha(c))
-#define is_alnum(c) (is_ascii(c) && isalnum(c))
-
-/* Scanning macros */
-#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
-#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
-
-/* Forward references */
-char *skipspace();
-int writeblanks();
-int test1();
-int convert1();
-
-/* The main program */
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{ FILE *in, *out;
-#define bufsize 5000 /* arbitrary size */
- char *buf;
- char *line;
- char *more;
- /*
- * In previous versions, ansi2knr recognized a --varargs switch.
- * If this switch was supplied, ansi2knr would attempt to convert
- * a ... argument to va_alist and va_dcl; if this switch was not
- * supplied, ansi2knr would simply drop any such arguments.
- * Now, ansi2knr always does this conversion, and we only
- * check for this switch for backward compatibility.
- */
- int convert_varargs = 1;
-
- if ( argc > 1 && argv[1][0] == '-' )
- { if ( !strcmp(argv[1], "--varargs") )
- { convert_varargs = 1;
- argc--;
- argv++;
- }
- else
- { fprintf(stderr, "Unrecognized switch: %s\n", argv[1]);
- exit(1);
- }
- }
- switch ( argc )
- {
- default:
- printf("Usage: ansi2knr input_file [output_file]\n");
- exit(0);
- case 2:
- out = stdout;
- break;
- case 3:
- out = fopen(argv[2], "w");
- if ( out == NULL )
- { fprintf(stderr, "Cannot open output file %s\n", argv[2]);
- exit(1);
- }
- }
- in = fopen(argv[1], "r");
- if ( in == NULL )
- { fprintf(stderr, "Cannot open input file %s\n", argv[1]);
- exit(1);
- }
- fprintf(out, "#line 1 \"%s\"\n", argv[1]);
- buf = malloc(bufsize);
- line = buf;
- while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
- {
-test: line += strlen(line);
- switch ( test1(buf) )
- {
- case 2: /* a function header */
- convert1(buf, out, 1, convert_varargs);
- break;
- case 1: /* a function */
- /* Check for a { at the start of the next line. */
- more = ++line;
-f: if ( line >= buf + (bufsize - 1) ) /* overflow check */
- goto wl;
- if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
- goto wl;
- switch ( *skipspace(more, 1) )
- {
- case '{':
- /* Definitely a function header. */
- convert1(buf, out, 0, convert_varargs);
- fputs(more, out);
- break;
- case 0:
- /* The next line was blank or a comment: */
- /* keep scanning for a non-comment. */
- line += strlen(line);
- goto f;
- default:
- /* buf isn't a function header, but */
- /* more might be. */
- fputs(buf, out);
- strcpy(buf, more);
- line = buf;
- goto test;
- }
- break;
- case -1: /* maybe the start of a function */
- if ( line != buf + (bufsize - 1) ) /* overflow check */
- continue;
- /* falls through */
- default: /* not a function */
-wl: fputs(buf, out);
- break;
- }
- line = buf;
- }
- if ( line != buf )
- fputs(buf, out);
- free(buf);
- fclose(out);
- fclose(in);
- return 0;
-}
-
-/* Skip over space and comments, in either direction. */
-char *
-skipspace(p, dir)
- register char *p;
- register int dir; /* 1 for forward, -1 for backward */
-{ for ( ; ; )
- { while ( is_space(*p) )
- p += dir;
- if ( !(*p == '/' && p[dir] == '*') )
- break;
- p += dir; p += dir;
- while ( !(*p == '*' && p[dir] == '/') )
- { if ( *p == 0 )
- return p; /* multi-line comment?? */
- p += dir;
- }
- p += dir; p += dir;
- }
- return p;
-}
-
-/*
- * Write blanks over part of a string.
- * Don't overwrite end-of-line characters.
- */
-int
-writeblanks(start, end)
- char *start;
- char *end;
-{ char *p;
- for ( p = start; p < end; p++ )
- if ( *p != '\r' && *p != '\n' )
- *p = ' ';
- return 0;
-}
-
-/*
- * Test whether the string in buf is a function definition.
- * The string may contain and/or end with a newline.
- * Return as follows:
- * 0 - definitely not a function definition;
- * 1 - definitely a function definition;
- * 2 - definitely a function prototype (NOT USED);
- * -1 - may be the beginning of a function definition,
- * append another line and look again.
- * The reason we don't attempt to convert function prototypes is that
- * Ghostscript's declaration-generating macros look too much like
- * prototypes, and confuse the algorithms.
- */
-int
-test1(buf)
- char *buf;
-{ register char *p = buf;
- char *bend;
- char *endfn;
- int contin;
-
- if ( !isidfirstchar(*p) )
- return 0; /* no name at left margin */
- bend = skipspace(buf + strlen(buf) - 1, -1);
- switch ( *bend )
- {
- case ';': contin = 0 /*2*/; break;
- case ')': contin = 1; break;
- case '{': return 0; /* not a function */
- case '}': return 0; /* not a function */
- default: contin = -1;
- }
- while ( isidchar(*p) )
- p++;
- endfn = p;
- p = skipspace(p, 1);
- if ( *p++ != '(' )
- return 0; /* not a function */
- p = skipspace(p, 1);
- if ( *p == ')' )
- return 0; /* no parameters */
- /* Check that the apparent function name isn't a keyword. */
- /* We only need to check for keywords that could be followed */
- /* by a left parenthesis (which, unfortunately, is most of them). */
- { static char *words[] =
- { "asm", "auto", "case", "char", "const", "double",
- "extern", "float", "for", "if", "int", "long",
- "register", "return", "short", "signed", "sizeof",
- "static", "switch", "typedef", "unsigned",
- "void", "volatile", "while", 0
- };
- char **key = words;
- char *kp;
- int len = endfn - buf;
-
- while ( (kp = *key) != 0 )
- { if ( strlen(kp) == len && !strncmp(kp, buf, len) )
- return 0; /* name is a keyword */
- key++;
- }
- }
- return contin;
-}
-
-/* Convert a recognized function definition or header to K&R syntax. */
-int
-convert1(buf, out, header, convert_varargs)
- char *buf;
- FILE *out;
- int header; /* Boolean */
- int convert_varargs; /* Boolean */
-{ char *endfn;
- register char *p;
- char **breaks;
- unsigned num_breaks = 2; /* for testing */
- char **btop;
- char **bp;
- char **ap;
- char *vararg = 0;
-
- /* Pre-ANSI implementations don't agree on whether strchr */
- /* is called strchr or index, so we open-code it here. */
- for ( endfn = buf; *(endfn++) != '('; )
- ;
-top: p = endfn;
- breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
- if ( breaks == 0 )
- { /* Couldn't allocate break table, give up */
- fprintf(stderr, "Unable to allocate break table!\n");
- fputs(buf, out);
- return -1;
- }
- btop = breaks + num_breaks * 2 - 2;
- bp = breaks;
- /* Parse the argument list */
- do
- { int level = 0;
- char *lp = NULL;
- char *rp;
- char *end = NULL;
-
- if ( bp >= btop )
- { /* Filled up break table. */
- /* Allocate a bigger one and start over. */
- free((char *)breaks);
- num_breaks <<= 1;
- goto top;
- }
- *bp++ = p;
- /* Find the end of the argument */
- for ( ; end == NULL; p++ )
- { switch(*p)
- {
- case ',':
- if ( !level ) end = p;
- break;
- case '(':
- if ( !level ) lp = p;
- level++;
- break;
- case ')':
- if ( --level < 0 ) end = p;
- else rp = p;
- break;
- case '/':
- p = skipspace(p, 1) - 1;
- break;
- default:
- ;
- }
- }
- /* Erase any embedded prototype parameters. */
- if ( lp )
- writeblanks(lp + 1, rp);
- p--; /* back up over terminator */
- /* Find the name being declared. */
- /* This is complicated because of procedure and */
- /* array modifiers. */
- for ( ; ; )
- { p = skipspace(p - 1, -1);
- switch ( *p )
- {
- case ']': /* skip array dimension(s) */
- case ')': /* skip procedure args OR name */
- { int level = 1;
- while ( level )
- switch ( *--p )
- {
- case ']': case ')': level++; break;
- case '[': case '(': level--; break;
- case '/': p = skipspace(p, -1) + 1; break;
- default: ;
- }
- }
- if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
- { /* We found the name being declared */
- while ( !isidfirstchar(*p) )
- p = skipspace(p, 1) + 1;
- goto found;
- }
- break;
- default:
- goto found;
- }
- }
-found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
- { if ( convert_varargs )
- { *bp++ = "va_alist";
- vararg = p-2;
- }
- else
- { p++;
- if ( bp == breaks + 1 ) /* sole argument */
- writeblanks(breaks[0], p);
- else
- writeblanks(bp[-1] - 1, p);
- bp--;
- }
- }
- else
- { while ( isidchar(*p) ) p--;
- *bp++ = p+1;
- }
- p = end;
- }
- while ( *p++ == ',' );
- *bp = p;
- /* Make a special check for 'void' arglist */
- if ( bp == breaks+2 )
- { p = skipspace(breaks[0], 1);
- if ( !strncmp(p, "void", 4) )
- { p = skipspace(p+4, 1);
- if ( p == breaks[2] - 1 )
- { bp = breaks; /* yup, pretend arglist is empty */
- writeblanks(breaks[0], p + 1);
- }
- }
- }
- /* Put out the function name and left parenthesis. */
- p = buf;
- while ( p != endfn ) putc(*p, out), p++;
- /* Put out the declaration. */
- if ( header )
- { fputs(");", out);
- for ( p = breaks[0]; *p; p++ )
- if ( *p == '\r' || *p == '\n' )
- putc(*p, out);
- }
- else
- { for ( ap = breaks+1; ap < bp; ap += 2 )
- { p = *ap;
- while ( isidchar(*p) )
- putc(*p, out), p++;
- if ( ap < bp - 1 )
- fputs(", ", out);
- }
- fputs(") ", out);
- /* Put out the argument declarations */
- for ( ap = breaks+2; ap <= bp; ap += 2 )
- (*ap)[-1] = ';';
- if ( vararg != 0 )
- { *vararg = 0;
- fputs(breaks[0], out); /* any prior args */
- fputs("va_dcl", out); /* the final arg */
- fputs(bp[0], out);
- }
- else
- fputs(breaks[0], out);
- }
- free((char *)breaks);
- return 0;
-}
diff --git a/libjpegtwrp/armv6_idct.S b/libjpegtwrp/armv6_idct.S
deleted file mode 100644
index 18e4e8a..0000000
--- a/libjpegtwrp/armv6_idct.S
+++ /dev/null
@@ -1,366 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * This is a fast-and-accurate implementation of inverse Discrete Cosine
- * Transform (IDCT) for ARMv6+. It also performs dequantization of the input
- * coefficients just like other methods.
- *
- * This implementation is based on the scaled 1-D DCT algorithm proposed by
- * Arai, Agui, and Nakajima. The following code is based on the figure 4-8
- * on page 52 of the JPEG textbook by Pennebaker and Mitchell. Coefficients
- * are (almost) directly mapped into registers.
- *
- * The accuracy is achieved by using SMULWy and SMLAWy instructions. Both
- * multiply 32 bits by 16 bits and store the top 32 bits of the result. It
- * makes 32-bit fixed-point arithmetic possible without overflow. That is
- * why jpeg_idct_ifast(), which is written in C, cannot be improved.
- *
- * More tricks are used to gain more speed. First of all, we use as many
- * registers as possible. ARM processor has 16 registers including sp (r13)
- * and pc (r15), so only 14 registers can be used without limitations. In
- * general, we let r0 to r7 hold the coefficients; r10 and r11 hold four
- * 16-bit constants; r12 and r14 hold two of the four arguments; and r8 hold
- * intermediate value. In the second pass, r9 is the loop counter. In the
- * first pass, r8 to r11 are used to hold quantization values, so the loop
- * counter is held by sp. Yes, the stack pointer. Since it must be aligned
- * to 4-byte boundary all the time, we align it to 32-byte boundary and use
- * bit 3 to bit 5. As the result, we actually use 14.1 registers. :-)
- *
- * Second, we rearrange quantization values to access them sequentially. The
- * table is first transposed, and the new columns are placed in the order of
- * 7, 5, 1, 3, 0, 2, 4, 6. Thus we can use LDMDB to load four values at a
- * time. Rearranging coefficients also helps, but that requires to change a
- * dozen of files, which seems not worth it. In addition, we choose to scale
- * up quantization values by 13 bits, so the coefficients are scaled up by
- * 16 bits after both passes. Then we can pack and saturate them two at a
- * time using PKHTB and USAT16 instructions.
- *
- * Third, we reorder the instructions to avoid bubbles in the pipeline. This
- * is done by hand accroding to the cycle timings and the interlock behavior
- * described in the technical reference manual of ARM1136JF-S. We also take
- * advantage of dual issue processors by interleaving instructions with
- * dependencies. It has been benchmarked on four devices and all the results
- * showed distinguishable improvements. Note that PLD instructions actually
- * slow things down, so they are removed at the last minute. In the future,
- * this might be futher improved using a system profiler.
- */
-
-#ifdef __arm__
-#include <machine/cpu-features.h>
-#endif
-
-#if __ARM_ARCH__ >= 6
-
-// void armv6_idct(short *coefs, int *quans, unsigned char *rows, int col)
- .arm
- .text
- .align
- .global armv6_idct
- .func armv6_idct
-
-armv6_idct:
- // Push everything except sp (r13) and pc (r15).
- stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
-
- // r12 = quans, r14 = coefs.
- sub r4, sp, #236
- bic sp, r4, #31
- add r5, sp, #224
- add r12, r1, #256
- stm r5, {r2, r3, r4}
- add r14, r0, #16
-
-pass1_head:
- // Load quantization values. (q[0, 2, 4, 6])
- ldmdb r12!, {r8, r9, r10, r11}
-
- // Load coefficients. (c[4, 1, 2, 3, 0, 5, 6, 7])
- ldrsh r4, [r14, #-2] !
- ldrsh r1, [r14, #16]
- ldrsh r2, [r14, #32]
- ldrsh r3, [r14, #48]
- ldrsh r0, [r14, #64]
- ldrsh r5, [r14, #80]
- ldrsh r6, [r14, #96]
- ldrsh r7, [r14, #112]
-
- // r4 = q[0] * c[0];
- mul r4, r8, r4
-
- // Check if ACs are all zero.
- cmp r0, #0
- orreqs r8, r1, r2
- orreqs r8, r3, r5
- orreqs r8, r6, r7
- beq pass1_zero
-
- // Step 1: Dequantizations.
-
- // r2 = q[2] * c[2];
- // r0 = q[4] * c[4] + r4;
- // r6 = q[6] * c[6] + r2;
- mul r2, r9, r2
- mla r0, r10, r0, r4
- mla r6, r11, r6, r2
-
- // Load quantization values. (q[7, 5, 1, 3])
- ldmdb r12!, {r8, r9, r10, r11}
-
- // r4 = r4 * 2 - r0 = -(r0 - r4 * 2);
- // r2 = r2 * 2 - r6 = -(r6 - r2 * 2);
- rsb r4, r0, r4, lsl #1
- rsb r2, r6, r2, lsl #1
-
- // r7 = q[7] * c[7];
- // r5 = q[5] * c[5];
- // r1 = q[1] * c[1] + r7;
- // r3 = q[3] * c[3] + r5;
- mul r7, r8, r7
- mul r5, r9, r5
- mla r1, r10, r1, r7
- mla r3, r11, r3, r5
-
- // Load constants.
- ldrd r10, constants
-
- // Step 2: Rotations and Butterflies.
-
- // r7 = r1 - r7 * 2;
- // r1 = r1 - r3;
- // r5 = r5 * 2 - r3 = -(r3 - r5 * 2);
- // r3 = r1 + r3 * 2;
- // r8 = r5 + r7;
- sub r7, r1, r7, lsl #1
- sub r1, r1, r3
- rsb r5, r3, r5, lsl #1
- add r3, r1, r3, lsl #1
- add r8, r5, r7
-
- // r2 = r2 * 1.41421 = r2 * 27146 / 65536 + r2;
- // r8 = r8 * 1.84776 / 8 = r8 * 15137 / 65536;
- // r1 = r1 * 1.41421 = r1 * 27146 / 65536 + r1;
- smlawt r2, r2, r10, r2
- smulwb r8, r8, r10
- smlawt r1, r1, r10, r1
-
- // r0 = r0 + r6;
- // r2 = r2 - r6;
- // r6 = r0 - r6 * 2;
- add r0, r0, r6
- sub r2, r2, r6
- sub r6, r0, r6, lsl #1
-
- // r5 = r5 * -2.61313 / 8 + r8 = r5 * -21407 / 65536 + r8;
- // r8 = r7 * -1.08239 / 8 + r8 = r7 * -8867 / 65536 + r8;
- smlawt r5, r5, r11, r8
- smlawb r8, r7, r11, r8
-
- // r4 = r4 + r2;
- // r0 = r0 + r3;
- // r2 = r4 - r2 * 2;
- add r4, r4, r2
- add r0, r0, r3
- sub r2, r4, r2, lsl #1
-
- // r7 = r5 * 8 - r3 = -(r3 - r5 * 8);
- // r3 = r0 - r3 * 2;
- // r1 = r1 - r7;
- // r4 = r4 + r7;
- // r5 = r8 * 8 - r1 = -(r1 - r8 * 8);
- // r7 = r4 - r7 * 2;
- rsb r7, r3, r5, lsl #3
- sub r3, r0, r3, lsl #1
- sub r1, r1, r7
- add r4, r4, r7
- rsb r5, r1, r8, lsl #3
- sub r7, r4, r7, lsl #1
-
- // r2 = r2 + r1;
- // r6 = r6 + r5;
- // r1 = r2 - r1 * 2;
- // r5 = r6 - r5 * 2;
- add r2, r2, r1
- add r6, r6, r5
- sub r1, r2, r1, lsl #1
- sub r5, r6, r5, lsl #1
-
- // Step 3: Reorder and Save.
-
- str r0, [sp, #-4] !
- str r4, [sp, #32]
- str r2, [sp, #64]
- str r6, [sp, #96]
- str r5, [sp, #128]
- str r1, [sp, #160]
- str r7, [sp, #192]
- str r3, [sp, #224]
- b pass1_tail
-
- // Precomputed 16-bit constants: 27146, 15137, -21407, -8867.
- // Put them in the middle since LDRD only accepts offsets from -255 to 255.
- .align 3
-constants:
- .word 0x6a0a3b21
- .word 0xac61dd5d
-
-pass1_zero:
- str r4, [sp, #-4] !
- str r4, [sp, #32]
- str r4, [sp, #64]
- str r4, [sp, #96]
- str r4, [sp, #128]
- str r4, [sp, #160]
- str r4, [sp, #192]
- str r4, [sp, #224]
- sub r12, r12, #16
-
-pass1_tail:
- ands r9, sp, #31
- bne pass1_head
-
- // r12 = rows, r14 = col.
- ldr r12, [sp, #256]
- ldr r14, [sp, #260]
-
- // Load constants.
- ldrd r10, constants
-
-pass2_head:
- // Load coefficients. (c[0, 1, 2, 3, 4, 5, 6, 7])
- ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r7}
-
- // r0 = r0 + 0x00808000;
- add r0, r0, #0x00800000
- add r0, r0, #0x00008000
-
- // Step 1: Analog to the first pass.
-
- // r0 = r0 + r4;
- // r6 = r6 + r2;
- add r0, r0, r4
- add r6, r6, r2
-
- // r4 = r0 - r4 * 2;
- // r2 = r2 * 2 - r6 = -(r6 - r2 * 2);
- sub r4, r0, r4, lsl #1
- rsb r2, r6, r2, lsl #1
-
- // r1 = r1 + r7;
- // r3 = r3 + r5;
- add r1, r1, r7
- add r3, r3, r5
-
- // Step 2: Rotations and Butterflies.
-
- // r7 = r1 - r7 * 2;
- // r1 = r1 - r3;
- // r5 = r5 * 2 - r3 = -(r3 - r5 * 2);
- // r3 = r1 + r3 * 2;
- // r8 = r5 + r7;
- sub r7, r1, r7, lsl #1
- sub r1, r1, r3
- rsb r5, r3, r5, lsl #1
- add r3, r1, r3, lsl #1
- add r8, r5, r7
-
- // r2 = r2 * 1.41421 = r2 * 27146 / 65536 + r2;
- // r8 = r8 * 1.84776 / 8 = r8 * 15137 / 65536;
- // r1 = r1 * 1.41421 = r1 * 27146 / 65536 + r1;
- smlawt r2, r2, r10, r2
- smulwb r8, r8, r10
- smlawt r1, r1, r10, r1
-
- // r0 = r0 + r6;
- // r2 = r2 - r6;
- // r6 = r0 - r6 * 2;
- add r0, r0, r6
- sub r2, r2, r6
- sub r6, r0, r6, lsl #1
-
- // r5 = r5 * -2.61313 / 8 + r8 = r5 * -21407 / 65536 + r8;
- // r8 = r7 * -1.08239 / 8 + r8 = r7 * -8867 / 65536 + r8;
- smlawt r5, r5, r11, r8
- smlawb r8, r7, r11, r8
-
- // r4 = r4 + r2;
- // r0 = r0 + r3;
- // r2 = r4 - r2 * 2;
- add r4, r4, r2
- add r0, r0, r3
- sub r2, r4, r2, lsl #1
-
- // r7 = r5 * 8 - r3 = -(r3 - r5 * 8);
- // r3 = r0 - r3 * 2;
- // r1 = r1 - r7;
- // r4 = r4 + r7;
- // r5 = r8 * 8 - r1 = -(r1 - r8 * 8);
- // r7 = r4 - r7 * 2;
- rsb r7, r3, r5, lsl #3
- sub r3, r0, r3, lsl #1
- sub r1, r1, r7
- add r4, r4, r7
- rsb r5, r1, r8, lsl #3
- sub r7, r4, r7, lsl #1
-
- // r2 = r2 + r1;
- // r6 = r6 + r5;
- // r1 = r2 - r1 * 2;
- // r5 = r6 - r5 * 2;
- add r2, r2, r1
- add r6, r6, r5
- sub r1, r2, r1, lsl #1
- sub r5, r6, r5, lsl #1
-
- // Step 3: Reorder and Save.
-
- // Load output pointer.
- ldr r8, [r12], #4
-
- // For little endian: r6, r2, r4, r0, r3, r7, r1, r5.
- pkhtb r6, r6, r4, asr #16
- pkhtb r2, r2, r0, asr #16
- pkhtb r3, r3, r1, asr #16
- pkhtb r7, r7, r5, asr #16
- usat16 r6, #8, r6
- usat16 r2, #8, r2
- usat16 r3, #8, r3
- usat16 r7, #8, r7
- orr r0, r2, r6, lsl #8
- orr r1, r7, r3, lsl #8
-
-#ifdef __ARMEB__
- // Reverse bytes for big endian.
- rev r0, r0
- rev r1, r1
-#endif
-
- // Use STR instead of STRD to support unaligned access.
- str r0, [r8, r14] !
- str r1, [r8, #4]
-
-pass2_tail:
- adds r9, r9, #0x10000000
- bpl pass2_head
-
- ldr sp, [sp, #8]
- add sp, sp, #236
-
- ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, r12, r14}
- bx lr
- .endfunc
-
-#endif
diff --git a/libjpegtwrp/asm/armv7/jdcolor-android-armv7.S b/libjpegtwrp/asm/armv7/jdcolor-android-armv7.S
deleted file mode 100644
index 95bd4bf..0000000
--- a/libjpegtwrp/asm/armv7/jdcolor-android-armv7.S
+++ /dev/null
@@ -1,1223 +0,0 @@
-/*------------------------------------------------------------------------
-* jdcolor-android-armv7.S
-*
-* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are
-* met:
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above
-* copyright notice, this list of conditions and the following
-* disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of Code Aurora Forum, Inc. nor the names of its
-* contributors may be used to endorse or promote products derived
-* from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*--------------------------------------------------------------------------
-
-*--------------------------------------------------------------------------
-* FUNCTION LIST
-*--------------------------------------------------------------------------
-*
-* - yvup2rgb565_venum
-* - yyvup2rgb565_venum
-* - yvup2abgr8888_venum
-* - yyvup2abgr8888_venum
-*
-*--------------------------------------------------------------------------
-*/
-
- .section yvu_plain_to_rgb_android, "x" @ AREA
- .text @ |.text|, CODE, READONLY
- .align 2
- .code 32 @ CODE32
-
-/*-----------------------------------------------------------------------------
- * ARM Registers
- * ---------------------------------------------------------------------------- */
-p_y .req r0
-p_cr .req r1
-p_cb .req r2
-p_rgb .req r3
-p_bgr .req r3
-length .req r12
-
- .global yvup2rgb565_venum
- .global yyvup2rgb565_venum
- .global yvup2abgr8888_venum
- .global yyvup2abgr8888_venum
-
-@ coefficients in color conversion matrix multiplication
-.equ COEFF_Y, 256 @ contribution of Y
-.equ COEFF_V_RED, 359 @ contribution of V for red
-.equ COEFF_U_GREEN, -88 @ contribution of U for green
-.equ COEFF_V_GREEN, -183 @ contribution of V for green
-.equ COEFF_U_BLUE, 454 @ contribution of U for blue
-
-@ Clamping constants 0x0 and 0xFF
-.equ COEFF_0, 0
-.equ COEFF_255, 255
-
-@ Bias coefficients for red, green and blue
-.equ COEFF_BIAS_R, -45824 @ Red bias = -359*128 + 128
-.equ COEFF_BIAS_G, 34816 @ Green bias = (88+183)*128 + 128
-.equ COEFF_BIAS_B, -57984 @ Blue bias = -454*128 + 128
-
-
-/*--------------------------------------------------------------------------
-* FUNCTION : yvup2rgb565_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YVU planar to RGB565 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yvup2rgb565_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_rgb565,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_rgb565
-* pointer to the output RGB Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_rgb565 - the converted rgb pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yvup2rgb565_venum, %function
-yvup2rgb565_venum:
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -70688 | -70688 | -70688 | -70688
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yvup2rgb565:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12 : Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD1.U8 {D12}, [p_y]! @ Load 8 Y elements (uint8) to D12
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D18, D19: Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D20, D21: V0 V1 V2 V3 V4 V5 V6 V7
- * D22, D23: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q9, D12
- VMOVL.U8 Q10, D14
- VMOVL.U8 Q11, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D20, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D22, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D20, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D22, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D18, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D18, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D18, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D18 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D20 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D22, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Done with the first 4 elements, continue on the next 4 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D21, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D23, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D21, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D23, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D19, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D19, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D19, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D19 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D21 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D23, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D28, Q9 @ store Red to D28, narrow the value from int16 to int8
-
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D27, Q10 @ store Green to D27, narrow the value from int16 to int8
-
- VMAX.S16 Q11, Q11, Q4 @ if Q11 < 0, Q11 = 0
- VMIN.S16 Q11, Q11, Q5 @ if Q11 > 255, Q11 = 255
- VQMOVUN.S16 D26, Q11 @ store Blue to D26, narrow the value from int16 to int8.
-
- /*-------------------------------------------------------------------------
- * D27: 3 bits of Green + 5 bits of Blue
- * D28: 5 bits of Red + 3 bits of Green
- * ------------------------------------------------------------------------ */
- VSRI.8 D28, D27, #5 @ right shift G by 5 and insert to R
- VSHL.U8 D27, D27, #3 @ left shift G by 3
- VSRI.8 D27, D26, #3 @ right shift B by 3 and insert to G
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yvup2rgb565 @ jump to trailing processing if remaining length is less than 8
-
- VST2.U8 {D27, D28}, [p_rgb]! @ vector store Red, Green, Blue to destination
- @ Blue at LSB
-
- BHI loop_yvup2rgb565 @ loop if more than 8 pixels left
-
- BEQ end_yvup2rgb565 @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yvup2rgb565:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST2.U8 {D27[0], D28[0]}, [p_rgb]! @ at least 1 pixel left in the trailing part
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[1], D28[1]}, [p_rgb]! @ store one more pixel
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[2], D28[2]}, [p_rgb]! @ store one more pixel
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[3], D28[3]}, [p_rgb]! @ store one more pixel
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[4], D28[4]}, [p_rgb]! @ store one more pixel
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[5], D28[5]}, [p_rgb]! @ store one more pixel
- BEQ end_yvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D27[6], D28[6]}, [p_rgb]! @ store one more pixel
-
-end_yvup2rgb565:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
-
- @ end of yvup2rgb565
-
-
-/*--------------------------------------------------------------------------
-* FUNCTION : yyvup2rgb565_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YYVU planar to RGB565 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yyvup2rgb565_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_rgb565,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_rgb565
-* pointer to the output RGB Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_rgb565 - the converted rgb pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yyvup2rgb565_venum, %function
-yyvup2rgb565_venum:
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -70688 | -70688 | -70688 | -70688
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yyvup2rgb565:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12, D13: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14, Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD2.U8 {D12,D13}, [p_y]! @ Load 16 Luma elements (uint8) to D12, D13
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D24, D25: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14
- * D26, D27: Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D28, D29: V0 V1 V2 V3 V4 V5 V6 V7
- * D30, D31: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q12, D12
- VMOVL.U8 Q13, D13
- VMOVL.U8 Q14, D14
- VMOVL.U8 Q15, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D28, D6[0] @ Q6: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q7, D30, D6[1] @ Q7: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q7, D28, D6[2] @ q7: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q8, D30, D6[3] @ q8: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D24, D7[0] @ Q6: R0, R2, R4, R6 in 32-bit Q8 format
- VMLAL.S16 Q9, D26, D7[0] @ Q9: R1, R3, R5, R7 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D24, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D26, D7[0] @ Q10: G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D24, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D26, D7[0] @ Q11: B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R0 R2 R4 R6 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R1 R3 R5 R7 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6 : R0 R1 R2 R3 R4 R5 R6 R7
-
- VSHRN.S32 D18, Q7, #8 @ D18: G0 G2 G4 G6 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G1 G3 G5 G7 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9 : G0 G1 G2 G3 G4 G5 G6 G7
-
- VSHRN.S32 D20, Q8, #8 @ D20: B0 B2 B4 B6 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B1 B3 B5 B7 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B0 B1 B2 B3 B4 B5 B6 B7
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D23, Q6 @ store Red to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D21, Q10 @ store Blue to D21, narrow the value from int16 to int8
-
- /*-------------------------------------------------------------------------
- * D22: 3 bits of Green + 5 bits of Blue
- * D23: 5 bits of Red + 3 bits of Green
- * ------------------------------------------------------------------------ */
- VSRI.8 D23, D22, #5 @ right shift G by 5 and insert to R
- VSHL.U8 D22, D22, #3 @ left shift G by 3
- VSRI.8 D22, D21, #3 @ right shift B by 3 and insert to G
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2rgb565 @ jump to trailing processing if remaining length is less than 8
-
- VST2.U8 {D22,D23}, [p_rgb]! @ vector store Red, Green, Blue to destination
- @ Blue at LSB
-
- BEQ end_yyvup2rgb565 @ done if exactly 8 pixel processed in the loop
-
-
- /*-------------------------------------------------------------------------
- * Done with the first 8 elements, continue on the next 8 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D29, D6[0] @ Q6: 359*(V4,V5,V6,V7) Red
- VMULL.S16 Q7, D31, D6[1] @ Q7: -88*(U4,U5,U6,U7) Green
- VMLAL.S16 Q7, D29, D6[2] @ Q7: -88*(U4,U5,U6,U7) - 183*(V4,V5,V6,V7)
- VMULL.S16 Q8, D31, D6[3] @ Q8: 454*(U4,U5,U6,U7) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D25, D7[0] @ Q6: R8 R10 R12 R14 in 32-bit Q8 format
- VMLAL.S16 Q9, D27, D7[0] @ Q9: R9 R11 R13 R15 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D25, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D27, D7[0] @ Q10 : G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D25, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D27, D7[0] @ Q11 : B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R8 R10 R12 R14 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R9 R11 R13 R15 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6: R8 R9 R10 R11 R12 R13 R14 R15
-
- VSHRN.S32 D18, Q7, #8 @ D18: G8 G10 G12 G14 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G9 G11 G13 G15 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9: G8 G9 G10 G11 G12 G13 G14 G15
-
- VSHRN.S32 D20, Q8, #8 @ D20: B8 B10 B12 B14 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B9 B11 B13 B15 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B8 B9 B10 B11 B12 B13 B14 B15
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D23, Q6 @ store Red to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D21, Q10 @ store Blue to D21, narrow the value from int16 to int8
-
- /*-------------------------------------------------------------------------
- * D22: 3 bits of Green + 5 bits of Blue
- * D23: 5 bits of Red + 3 bits of Green
- * ------------------------------------------------------------------------ */
- VSRI.8 D23, D22, #5 @ right shift G by 5 and insert to R
- VSHL.U8 D22, D22, #3 @ left shift G by 3
- VSRI.8 D22, D21, #3 @ right shift B by 3 and insert to G
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2rgb565 @ jump to trailing processing if remaining length is less than 8
-
- VST2.U8 {D22,D23}, [p_rgb]! @ vector store Red, Green, Blue to destination
- @ Blue at LSB
-
- BHI loop_yyvup2rgb565 @ loop if more than 8 pixels left
-
- BEQ end_yyvup2rgb565 @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yyvup2rgb565:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST2.U8 {D22[0],D23[0]}, [p_rgb]! @ at least 1 pixel left in the trailing part
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[1],D23[1]}, [p_rgb]! @ store one more pixel
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[2],D23[2]}, [p_rgb]! @ store one more pixel
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[3],D23[3]}, [p_rgb]! @ store one more pixel
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[4],D23[4]}, [p_rgb]! @ store one more pixel
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[5],D23[5]}, [p_rgb]! @ store one more pixel
- BEQ end_yyvup2rgb565 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST2.U8 {D22[6],D23[6]}, [p_rgb]! @ store one more pixel
-
-end_yyvup2rgb565:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
-
- @ end of yyvup2rgb565
-
-constants:
- .hword (COEFF_V_RED), (COEFF_U_GREEN), (COEFF_V_GREEN), (COEFF_U_BLUE) @ 359 | -88 | -183 | 454
- .hword (COEFF_Y), (COEFF_0), (COEFF_255) , (COEFF_0) @ 256 | 0 | 255 | 0
- .word (COEFF_BIAS_R), (COEFF_BIAS_G), (COEFF_BIAS_B) @ -45824 | 34816 | -57984 | X
-
-/*--------------------------------------------------------------------------
-* FUNCTION : yvup2abgr8888_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YVU planar to ABGR8888 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yvup2abgr8888_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_abgr8888,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_abgr8888
-* pointer to the output ABGR Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_abgr8888 - the converted ABGR pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yvup2abgr8888_venum, %function
-yvup2abgr8888_venum:
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -70688 | -70688 | -70688 | -70688
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yvup2abgr:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12 : Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD1.U8 {D12}, [p_y]! @ Load 8 Luma elements (uint8) to D12
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D18, D19: Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D20, D21: V0 V1 V2 V3 V4 V5 V6 V7
- * D22, D23: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q9, D12
- VMOVL.U8 Q10, D14
- VMOVL.U8 Q11, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D20, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D22, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D20, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D22, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D18, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D18, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D18, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D18 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D20 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D22, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Done with the first 4 elements, continue on the next 4 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D21, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D23, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D21, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D23, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D19, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D19, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D19, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D19 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D21 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D23, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q11, Q11, Q4 @ if Q11 < 0, Q11 = 0
- VMIN.S16 Q11, Q11, Q5 @ if Q11 > 255, Q11 = 255
- VQMOVUN.S16 D28, Q11 @ store Blue to D28, narrow the value from int16 to int8
-
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D27, Q10 @ store Green to D27, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D26, Q9 @ store Red to D26, narrow the value from int16 to int8
-
- /*-------------------------------------------------------------------------
- * abgr format with leading 0xFF byte
- * ------------------------------------------------------------------------ */
- VMOVN.I16 D29, Q5 @ D29: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yvup2abgr @ jump to trailing processing if remaining length is less than 8
-
- VST4.U8 {D26,D27,D28,D29}, [p_bgr]! @ vector store Red, Green, Blue to destination
- @ Blue at LSB
-
- BHI loop_yvup2abgr @ loop if more than 8 pixels left
-
- BEQ end_yvup2abgr @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yvup2abgr:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST4.U8 {D26[0], D27[0], D28[0], D29[0]}, [p_bgr]! @ at least 1 pixel left in the trailing part
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[1], D27[1], D28[1], D29[1]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[2], D27[2], D28[2], D29[2]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[3], D27[3], D28[3], D29[3]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[4], D27[4], D28[4], D29[4]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[5], D27[5], D28[5], D29[5]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D26[6], D27[6], D28[6], D29[6]}, [p_bgr]! @ store one more pixel
-
-end_yvup2abgr:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
- @ end of yvup2abgr
-
-/*--------------------------------------------------------------------------
-* FUNCTION : yyvup2abgr8888_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YYVU planar to ABGR8888 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yyvup2abgr8888_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_abgr8888,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_abgr8888
-* pointer to the output ABGR Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_abgr8888 - the converted ABGR pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yyvup2abgr8888_venum, %function
-yyvup2abgr8888_venum:
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -70688 | -70688 | -70688 | -70688
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yyvup2abgr:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12, D13: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14, Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD2.U8 {D12,D13}, [p_y]! @ Load 16 Luma elements (uint8) to D12, D13
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D24, D25: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14
- * D26, D27: Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D28, D29: V0 V1 V2 V3 V4 V5 V6 V7
- * D30, D31: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q12, D12
- VMOVL.U8 Q13, D13
- VMOVL.U8 Q14, D14
- VMOVL.U8 Q15, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D28, D6[0] @ Q6: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q7, D30, D6[1] @ Q7: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q7, D28, D6[2] @ Q7: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q8, D30, D6[3] @ Q8: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D24, D7[0] @ Q6: R0, R2, R4, R6 in 32-bit Q8 format
- VMLAL.S16 Q9, D26, D7[0] @ Q9: R1, R3, R5, R7 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D24, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D26, D7[0] @ Q10: G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D24, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D26, D7[0] @ Q11: B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R0 R2 R4 R6 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R1 R3 R5 R7 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6 : R0 R1 R2 R3 R4 R5 R6 R7
-
- VSHRN.S32 D18, Q7, #8 @ D18: G0 G2 G4 G6 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G1 G3 G5 G7 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9 : G0 G1 G2 G3 G4 G5 G6 G7
-
- VSHRN.S32 D20, Q8, #8 @ D20: B0 B2 B4 B6 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B1 B3 B5 B7 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B0 B1 B2 B3 B4 B5 B6 B7
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D23, Q10 @ store Blue to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D21, Q6 @ store Red to D21, narrow the value from int16 to int8
-
- /*-------------------------------------------------------------------------
- * abgr format with leading 0xFF byte
- * ------------------------------------------------------------------------ */
- VMOVN.I16 D24, Q5 @ D24: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2abgr @ jump to trailing processing if remaining length is less than 8
-
- VST4.U8 {D21,D22,D23,D24}, [p_bgr]! @ vector store Blue, Green, Red to destination
- @ Red at LSB
-
- BEQ end_yyvup2abgr @ done if exactly 8 pixel processed in the loop
-
-
- /*-------------------------------------------------------------------------
- * Done with the first 8 elements, continue on the next 8 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D29, D6[0] @ Q6: 359*(V4,V5,V6,V7) Red
- VMULL.S16 Q7, D31, D6[1] @ Q7: -88*(U4,U5,U6,U7) Green
- VMLAL.S16 Q7, D29, D6[2] @ Q7: -88*(U4,U5,U6,U7) - 183*(V4,V5,V6,V7)
- VMULL.S16 Q8, D31, D6[3] @ Q8: 454*(U4,U5,U6,U7) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D25, D7[0] @ Q6: R8 R10 R12 R14 in 32-bit Q8 format
- VMLAL.S16 Q9, D27, D7[0] @ Q9: R9 R11 R13 R15 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D25, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D27, D7[0] @ Q10 : G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D25, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D27, D7[0] @ Q11 : B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R8 R10 R12 R14 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R9 R11 R13 R15 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6: R8 R9 R10 R11 R12 R13 R14 R15
-
- VSHRN.S32 D18, Q7, #8 @ D18: G8 G10 G12 G14 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G9 G11 G13 G15 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9: G8 G9 G10 G11 G12 G13 G14 G15
-
- VSHRN.S32 D20, Q8, #8 @ D20: B8 B10 B12 B14 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B9 B11 B13 B15 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B8 B9 B10 B11 B12 B13 B14 B15
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D23, Q10 @ store Blue to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D21, Q6 @ store Red to D21, narrow the value from int16 to int8
-
- /*-------------------------------------------------------------------------
- * abgr format with leading 0xFF byte
- * ------------------------------------------------------------------------ */
- VMOVN.I16 D24, Q5 @ D24: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2abgr @ jump to trailing processing if remaining length is less than 8
-
- VST4.U8 {D21,D22,D23,D24}, [p_bgr]! @ vector store Blue, Green, Red to destination
- @ Red at LSB
-
- BHI loop_yyvup2abgr @ loop if more than 8 pixels left
-
- BEQ end_yyvup2abgr @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yyvup2abgr:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST4.U8 {D21[0],D22[0],D23[0],D24[0]}, [p_bgr]! @ at least 1 pixel left in the trailing part
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[1],D22[1],D23[1],D24[1]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[2],D22[2],D23[2],D24[2]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[3],D22[3],D23[3],D24[3]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[4],D22[4],D23[4],D24[4]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[5],D22[5],D23[5],D24[5]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2abgr @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST4.U8 {D21[6],D22[6],D23[6],D24[6]}, [p_bgr]! @ store one more pixel
-
-end_yyvup2abgr:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
- @ end of yyvup2abgr
-
-.end
-
diff --git a/libjpegtwrp/asm/armv7/jdcolor-armv7.S b/libjpegtwrp/asm/armv7/jdcolor-armv7.S
deleted file mode 100644
index b2da6d5..0000000
--- a/libjpegtwrp/asm/armv7/jdcolor-armv7.S
+++ /dev/null
@@ -1,632 +0,0 @@
-/*------------------------------------------------------------------------
-* jdcolor-armv7.S
-*
-* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are
-* met:
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above
-* copyright notice, this list of conditions and the following
-* disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of Code Aurora Forum, Inc. nor the names of its
-* contributors may be used to endorse or promote products derived
-* from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*--------------------------------------------------------------------------
-
-*--------------------------------------------------------------------------
-* FUNCTION LIST
-*--------------------------------------------------------------------------
-*
-* - yvup2bgr888_venum
-* - yyvup2bgr888_venum
-*
-*--------------------------------------------------------------------------
-*/
-
- .section yvu_plain_to_bgr, "x" @ AREA
- .text @ |.text|, CODE, READONLY
- .align 2
- .code 32 @ CODE32
-
-/*-----------------------------------------------------------------------------
- * ARM Registers
- * ---------------------------------------------------------------------------- */
-p_y .req r0
-p_cr .req r1
-p_cb .req r2
-p_rgb .req r3
-p_bgr .req r3
-length .req r12
-
- .global yvup2bgr888_venum
- .global yyvup2bgr888_venum
-
-@ coefficients in color conversion matrix multiplication
-.equ COEFF_Y, 256 @ contribution of Y
-.equ COEFF_V_RED, 359 @ contribution of V for red
-.equ COEFF_U_GREEN, -88 @ contribution of U for green
-.equ COEFF_V_GREEN, -183 @ contribution of V for green
-.equ COEFF_U_BLUE, 454 @ contribution of U for blue
-
-@ Clamping constants 0x0 and 0xFF
-.equ COEFF_0, 0
-.equ COEFF_255, 255
-
-@ Bias coefficients for red, green and blue
-.equ COEFF_BIAS_R, -45824 @ Red bias = -359*128 + 128
-.equ COEFF_BIAS_G, 34816 @ Green bias = (88+183)*128 + 128
-.equ COEFF_BIAS_B, -57984 @ Blue bias = -454*128 + 128
-
-constants:
- .hword (COEFF_V_RED), (COEFF_U_GREEN), (COEFF_V_GREEN), (COEFF_U_BLUE) @ 359 | -88 | -183 | 454
- .hword (COEFF_Y), (COEFF_0), (COEFF_255) , (COEFF_0) @ 256 | 0 | 255 | 0
- .word (COEFF_BIAS_R), (COEFF_BIAS_G), (COEFF_BIAS_B) @ -45824 | 34816 | -57984 | X
-
-/*--------------------------------------------------------------------------
-* FUNCTION : yvup2bgr888_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YVU planar to BGR888 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yvup2bgr888_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_bgr888,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_bgr888
-* pointer to the output BGR Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_bgr888 - the converted bgr pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yvup2bgr888_venum, %function
-yvup2bgr888_venum:
-
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -57984 | -57984 | -57984 | -57984
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yvup2bgr888:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12 : Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD1.U8 {D12}, [p_y]! @ Load 8 Luma elements (uint8) to D12
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D18, D19: Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
- * D20, D21: V0 V1 V2 V3 V4 V5 V6 V7
- * D22, D23: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q9, D12
- VMOVL.U8 Q10, D14
- VMOVL.U8 Q11, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D20, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D22, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D20, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D22, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D18, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D18, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D18, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D18 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D20 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D22, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Done with the first 4 elements, continue on the next 4 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q12, D21, D6[0] @ Q12: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q13, D23, D6[1] @ Q13: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q13, D21, D6[2] @ Q13: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q14, D23, D6[3] @ Q14: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q12, Q0 @ Q12 add Red bias -45824
- VADD.S32 Q13, Q1 @ Q13 add Green bias 34816
- VADD.S32 Q14, Q2 @ Q14 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMLAL.S16 Q12, D19, D7[0] @ Q12: R0, R1, R2, R3 in 32-bit Q8 format
- VMLAL.S16 Q13, D19, D7[0] @ Q13: G0, G1, G2, G3 in 32-bit Q8 format
- VMLAL.S16 Q14, D19, D7[0] @ Q14: B0, B1, B2, B3 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D19 , Q12, #8 @ D18: R0, R1, R2, R3 in 16-bit Q0 format
- VSHRN.S32 D21 , Q13, #8 @ D20: G0, G1, G2, G3 in 16-bit Q0 format
- VSHRN.S32 D23, Q14, #8 @ D22: B0, B1, B2, B3 in 16-bit Q0 format
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q11, Q11, Q4 @ if Q11 < 0, Q11 = 0
- VMIN.S16 Q11, Q11, Q5 @ if Q11 > 255, Q11 = 255
- VQMOVUN.S16 D28, Q11 @ store Blue to D28, narrow the value from int16 to int8
-
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D27, Q10 @ store Green to D27, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D26, Q9 @ store Red to D26, narrow the value from int16 to int8.
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yvup2bgr888 @ jump to trailing processing if remaining length is less than 8
-
- VST3.U8 {D26,D27,D28}, [p_bgr]! @ vector store Red, Green, Blue to destination
- @ Blue at LSB
-
- BHI loop_yvup2bgr888 @ loop if more than 8 pixels left
-
- BEQ end_yvup2bgr888 @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yvup2bgr888:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST3.U8 {D26[0], D27[0], D28[0]}, [p_bgr]! @ at least 1 pixel left in the trailing part
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[1], D27[1], D28[1]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[2], D27[2], D28[2]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[3], D27[3], D28[3]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[4], D27[4], D28[4]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[5], D27[5], D28[5]}, [p_bgr]! @ store one more pixel
- BEQ end_yvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D26[6], D27[6], D28[6]}, [p_bgr]! @ store one more pixel
-
-end_yvup2bgr888:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
-
- @ end of yvup2bgr888
-
-
-/*-------------------------------------------------------------------------
-* FUNCTION : yyvup2bgr888_venum
-*--------------------------------------------------------------------------
-* DESCRIPTION : Perform YYVU planar to BGR888 conversion.
-*--------------------------------------------------------------------------
-* C PROTOTYPE : void yyvup2bgr888_venum(uint8_t *p_y,
-* uint8_t *p_cr,
-* uint8_t *p_cb,
-* uint8_t *p_bgr888,
-* uint32_t length)
-*--------------------------------------------------------------------------
-* REG INPUT : R0: uint8_t *p_y
-* pointer to the input Y Line
-* R1: uint8_t *p_cr
-* pointer to the input Cr Line
-* R2: uint8_t *p_cb
-* pointer to the input Cb Line
-* R3: uint8_t *p_bgr888
-* pointer to the output BGR Line
-* R12: uint32_t length
-* width of Line
-*--------------------------------------------------------------------------
-* STACK ARG : None
-*--------------------------------------------------------------------------
-* REG OUTPUT : None
-*--------------------------------------------------------------------------
-* MEM INPUT : p_y - a line of Y pixels
-* p_cr - a line of Cr pixels
-* p_cb - a line of Cb pixels
-* length - the width of the input line
-*--------------------------------------------------------------------------
-* MEM OUTPUT : p_bgr888 - the converted bgr pixels
-*--------------------------------------------------------------------------
-* REG AFFECTED : ARM: R0-R4, R12
-* NEON: Q0-Q15
-*--------------------------------------------------------------------------
-* STACK USAGE : none
-*--------------------------------------------------------------------------
-* CYCLES : none
-*
-*--------------------------------------------------------------------------
-* NOTES :
-*--------------------------------------------------------------------------
-*/
-.type yyvup2bgr888_venum, %function
-yyvup2bgr888_venum:
- /*-------------------------------------------------------------------------
- * Store stack registers
- * ------------------------------------------------------------------------ */
- STMFD SP!, {LR}
-
- VPUSH {D8-D15}
-
- PLD [R0, R3] @ preload luma line
-
- ADR R12, constants
-
- VLD1.S16 {D6, D7}, [R12]! @ D6, D7: 359 | -88 | -183 | 454 | 256 | 0 | 255 | 0
- VLD1.S32 {D30, D31}, [R12] @ Q15 : -45824 | 34816 | -57984 | X
-
- /*-------------------------------------------------------------------------
- * Load the 5th parameter via stack
- * R0 ~ R3 are used to pass the first 4 parameters, the 5th and above
- * parameters are passed via stack
- * ------------------------------------------------------------------------ */
- LDR R12, [SP, #68] @ LR is pushed into the stack so SP is
- @ decreased by 4,
- @ D8-D15 are also pushed into the stack
- @ so SP is decreased by
- @ 8-byte/D-Register * 8 D-Registers = 64,
- @ so SP needs to be increased by 64+4=68
- @ to get the value that was first pushed
- @ into stack (the 5th parameter passed in
- @ throught stack)
-
- /*-------------------------------------------------------------------------
- * Load clamping parameters to duplicate vector elements
- * ------------------------------------------------------------------------ */
- VDUP.S16 Q4, D7[1] @ Q4: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
- VDUP.S16 Q5, D7[2] @ Q5: 255 | 255 | 255 | 255 | 255 | 255 | 255 | 255
-
- /*-------------------------------------------------------------------------
- * Read bias
- * ------------------------------------------------------------------------ */
- VDUP.S32 Q0, D30[0] @ Q0: -45824 | -45824 | -45824 | -45824
- VDUP.S32 Q1, D30[1] @ Q1: 34816 | 34816 | 34816 | 34816
- VDUP.S32 Q2, D31[0] @ Q2: -70688 | -70688 | -70688 | -70688
-
-
- /*-------------------------------------------------------------------------
- * The main loop
- * ------------------------------------------------------------------------ */
-loop_yyvup2bgr888:
-
- /*-------------------------------------------------------------------------
- * Load input from Y, V and U
- * D12, D13: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14, Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D14 : V0 V1 V2 V3 V4 V5 V6 V7
- * D15 : U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VLD2.U8 {D12,D13}, [p_y]! @ Load 16 Luma elements (uint8) to D12, D13
- VLD1.U8 {D14}, [p_cr]! @ Load 8 Cr elements (uint8) to D14
- VLD1.U8 {D15}, [p_cb]! @ Load 8 Cb elements (uint8) to D15
-
- /*-------------------------------------------------------------------------
- * Expand uint8 value to uint16
- * D24, D25: Y0 Y2 Y4 Y6 Y8 Y10 Y12 Y14
- * D26, D27: Y1 Y3 Y5 Y7 Y9 Y11 Y13 Y15
- * D28, D29: V0 V1 V2 V3 V4 V5 V6 V7
- * D30, D31: U0 U1 U2 U3 U4 U5 U6 U7
- * ------------------------------------------------------------------------ */
- VMOVL.U8 Q12, D12
- VMOVL.U8 Q13, D13
- VMOVL.U8 Q14, D14
- VMOVL.U8 Q15, D15
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D28, D6[0] @ Q6: 359*(V0,V1,V2,V3) Red
- VMULL.S16 Q7, D30, D6[1] @ Q7: -88*(U0,U1,U2,U3) Green
- VMLAL.S16 Q7, D28, D6[2] @ q7: -88*(U0,U1,U2,U3) - 183*(V0,V1,V2,V3)
- VMULL.S16 Q8, D30, D6[3] @ q8: 454*(U0,U1,U2,U3) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -57984
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D24, D7[0] @ Q6: R0, R2, R4, R6 in 32-bit Q8 format
- VMLAL.S16 Q9, D26, D7[0] @ Q9: R1, R3, R5, R7 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D24, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D26, D7[0] @ Q10: G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D24, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D26, D7[0] @ Q11: B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R0 R2 R4 R6 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R1 R3 R5 R7 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6 : R0 R1 R2 R3 R4 R5 R6 R7
-
- VSHRN.S32 D18, Q7, #8 @ D18: G0 G2 G4 G6 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G1 G3 G5 G7 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9 : G0 G1 G2 G3 G4 G5 G6 G7
-
- VSHRN.S32 D20, Q8, #8 @ D20: B0 B2 B4 B6 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B1 B3 B5 B7 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B0 B1 B2 B3 B4 B5 B6 B7
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D23, Q10 @ store Blue to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D21, Q6 @ store Red to D21, narrow the value from int16 to int8
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2bgr888 @ jump to trailing processing if remaining length is less than 8
-
- VST3.U8 {D21,D22,D23}, [p_bgr]! @ vector store Blue, Green, Red to destination
- @ Red at LSB
-
- BEQ end_yyvup2bgr888 @ done if exactly 8 pixel processed in the loop
-
- /*-------------------------------------------------------------------------
- * Done with the first 8 elements, continue on the next 8 elements
- * ------------------------------------------------------------------------ */
-
- /*-------------------------------------------------------------------------
- * Multiply contribution from chrominance, results are in 32-bit
- * ------------------------------------------------------------------------ */
- VMULL.S16 Q6, D29, D6[0] @ Q6: 359*(V4,V5,V6,V7) Red
- VMULL.S16 Q7, D31, D6[1] @ Q7: -88*(U4,U5,U6,U7) Green
- VMLAL.S16 Q7, D29, D6[2] @ Q7: -88*(U4,U5,U6,U7) - 183*(V4,V5,V6,V7)
- VMULL.S16 Q8, D31, D6[3] @ Q8: 454*(U4,U5,U6,U7) Blue
-
- /*-------------------------------------------------------------------------
- * Add bias
- * ------------------------------------------------------------------------ */
- VADD.S32 Q6, Q0 @ Q6 add Red bias -45824
- VADD.S32 Q7, Q1 @ Q7 add Green bias 34816
- VADD.S32 Q8, Q2 @ Q8 add Blue bias -70688
-
- /*-------------------------------------------------------------------------
- * Calculate Red, Green, Blue
- * ------------------------------------------------------------------------ */
- VMOV.S32 Q9, Q6
- VMLAL.S16 Q6, D25, D7[0] @ Q6: R8 R10 R12 R14 in 32-bit Q8 format
- VMLAL.S16 Q9, D27, D7[0] @ Q9: R9 R11 R13 R15 in 32-bit Q8 format
-
- VMOV.S32 Q10, Q7
- VMLAL.S16 Q7, D25, D7[0] @ Q7: G0, G2, G4, G6 in 32-bit Q8 format
- VMLAL.S16 Q10, D27, D7[0] @ Q10 : G1, G3, G5, G7 in 32-bit Q8 format
-
- VMOV.S32 Q11, Q8
- VMLAL.S16 Q8, D25, D7[0] @ Q8: B0, B2, B4, B6 in 32-bit Q8 format
- VMLAL.S16 Q11, D27, D7[0] @ Q11 : B1, B3, B5, B7 in 32-bit Q8 format
-
- /*-------------------------------------------------------------------------
- * Right shift eight bits with rounding
- * ------------------------------------------------------------------------ */
- VSHRN.S32 D12, Q6, #8 @ D12: R8 R10 R12 R14 in 16-bit Q0 format
- VSHRN.S32 D13, Q9, #8 @ D13: R9 R11 R13 R15 in 16-bit Q0 format
- VZIP.16 D12, D13 @ Q6: R8 R9 R10 R11 R12 R13 R14 R15
-
- VSHRN.S32 D18, Q7, #8 @ D18: G8 G10 G12 G14 in 16-bit Q0 format
- VSHRN.S32 D19, Q10, #8 @ D19: G9 G11 G13 G15 in 16-bit Q0 format
- VZIP.16 D18, D19 @ Q9: G8 G9 G10 G11 G12 G13 G14 G15
-
- VSHRN.S32 D20, Q8, #8 @ D20: B8 B10 B12 B14 in 16-bit Q0 format
- VSHRN.S32 D21, Q11, #8 @ D21: B9 B11 B13 B15 in 16-bit Q0 format
- VZIP.16 D20, D21 @ Q10: B8 B9 B10 B11 B12 B13 B14 B15
-
- /*-------------------------------------------------------------------------
- * Clamp the value to be within [0~255]
- * ------------------------------------------------------------------------ */
- VMAX.S16 Q10, Q10, Q4 @ if Q10 < 0, Q10 = 0
- VMIN.S16 Q10, Q10, Q5 @ if Q10 > 255, Q10 = 255
- VQMOVUN.S16 D23, Q10 @ store Blue to D23, narrow the value from int16 to int8
-
- VMAX.S16 Q9, Q9, Q4 @ if Q9 < 0, Q9 = 0
- VMIN.S16 Q9, Q9, Q5 @ if Q9 > 255, Q9 = 255
- VQMOVUN.S16 D22, Q9 @ store Green to D22, narrow the value from int16 to int8
-
- VMAX.S16 Q6, Q6, Q4 @ if Q6 < 0, Q6 = 0
- VMIN.S16 Q6, Q6, Q5 @ if Q6 > 255, Q6 = 255
- VQMOVUN.S16 D21, Q6 @ store Red to D21, narrow the value from int16 to int8
-
-
- SUBS length, length, #8 @ check if the length is less than 8
-
- BMI trailing_yyvup2bgr888 @ jump to trailing processing if remaining length is less than 8
-
- VST3.U8 {D21,D22,D23}, [p_bgr]! @ vector store Blue, Green, Red to destination
- @ Red at LSB
-
- BHI loop_yyvup2bgr888 @ loop if more than 8 pixels left
-
- BEQ end_yyvup2bgr888 @ done if exactly 8 pixel processed in the loop
-
-
-trailing_yyvup2bgr888:
- /*-------------------------------------------------------------------------
- * There are from 1 ~ 7 pixels left in the trailing part.
- * First adding 7 to the length so the length would be from 0 ~ 6.
- * eg: 1 pixel left in the trailing part, so 1-8+7 = 0.
- * Then save 1 pixel unconditionally since at least 1 pixels left in the
- * trailing part.
- * ------------------------------------------------------------------------ */
- ADDS length, length, #7 @ there are 7 or less in the trailing part
-
- VST3.U8 {D21[0],D22[0],D23[0]}, [p_bgr]! @ at least 1 pixel left in the trailing part
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[1],D22[1],D23[1]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[2],D22[2],D23[2]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[3],D22[3],D23[3]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[4],D22[4],D23[4]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[5],D22[5],D23[5]}, [p_bgr]! @ store one more pixel
- BEQ end_yyvup2bgr888 @ done if 0 pixel left
-
- SUBS length, length, #1 @ update length counter
- VST3.U8 {D21[6],D22[6],D23[6]}, [p_bgr]! @ store one more pixel
-
-end_yyvup2bgr888:
- VPOP {D8-D15}
- LDMFD SP!, {PC}
-
- @ end of yyvup2bgr888
-
-.end
diff --git a/libjpegtwrp/asm/armv7/jdidct-armv7.S b/libjpegtwrp/asm/armv7/jdidct-armv7.S
deleted file mode 100644
index d61e219..0000000
--- a/libjpegtwrp/asm/armv7/jdidct-armv7.S
+++ /dev/null
@@ -1,762 +0,0 @@
-/*=========================================================================
-* jdidct-armv7.s
-*
-* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are
-* met:
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above
-* copyright notice, this list of conditions and the following
-* disclaimer in the documentation and/or other materials provided
-* with the distribution.
-* * Neither the name of Code Aurora Forum, Inc. nor the names of its
-* contributors may be used to endorse or promote products derived
-* from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
-* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
-* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
-* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*==========================================================================
-
-*==========================================================================
-* FUNCTION LIST
-*--------------------------------------------------------------------------
-* - idct_1x1_venum
-* - idct_2x2_venum
-* - idct_4x4_venum
-* - idct_8x8_venum
-*
-*==========================================================================
-*/
-
-@==========================================================================
-@ MACRO DEFINITION
-@==========================================================================
- .macro Transpose8x8
- @==================================================================
- @ Transpose an 8 x 8 x 16 bit matrix in place
- @ Input: q8 to q15
- @ Output: q8 to q15
- @ Registers used: q8 to q15
- @ Assumptions: 8 x 8 x 16 bit data
- @==================================================================
-
- vswp d17, d24 @q8, q12
- vswp d23, d30 @q11, q15
- vswp d21, d28 @q10, q14
- vswp d19, d26 @q9, q13
-
- vtrn.32 q8, q10
- vtrn.32 q9, q11
- vtrn.32 q12, q14
- vtrn.32 q13, q15
-
- vtrn.16 q8, q9
- vtrn.16 q10, q11
- vtrn.16 q12, q13
- vtrn.16 q14, q15
- .endm
-
- .macro IDCT1D
- @==================================================================
- @ One dimensional 64 element inverse DCT
- @ Input: q8 to q15 loaded with data
- @ q0 loaded with constants
- @ Output: q8 to q15
- @ Registers used: q0, q4 to q15
- @ Assumptions: 16 bit data, first elements in least significant
- @ halfwords
- @==================================================================
-
- @1st stage
- vqrdmulh.s16 q4, q15, d0[2] @q4 = a1*vx7
- vqrdmulh.s16 q5, q9, d0[2] @q5 = a1*vx1
- vqrdmulh.s16 q6, q13, d0[3] @q6 = a2*vx5
- vqrdmulh.s16 q7, q11, d1[1] @q7 = ma2*vx3
- vqrdmulh.s16 q2, q14, d0[1] @q6 = a0*vx6
- vqrdmulh.s16 q3, q10, d0[1] @q7 = a0*vx2
- vqadd.s16 q9, q4, q9 @q9 = t1 = a1*vx7 + vx1
- vqsub.s16 q5, q5, q15 @q5 = t8 = a1*vx1 - vx7
- vqadd.s16 q15, q6, q11 @q15 = t7 = a2*vx5 + vx3
- vqadd.s16 q11, q7, q13 @q11 = t3 = ma2*vx3 + vx5
-
- @2nd stage
- vqadd.s16 q13, q8, q12 @q13 = t5 = vx0 + vx4
- vqsub.s16 q8, q8, q12 @q8 = t0 = vx0 - vx4
- vqadd.s16 q10, q2, q10 @q10 = t2 = a0*vx6 + vx2
- vqsub.s16 q12, q3, q14 @q12 = t4 = a0*vx2 - vx6
- vqadd.s16 q14, q5, q11 @q14 = t6 = t8 + t3
- vqsub.s16 q11, q5, q11 @q11 = t3 = t8 - t3
- vqsub.s16 q5, q9, q15 @q5 = t8 = t1 - t7
- vqadd.s16 q9, q9, q15 @q9 = t1 = t1 + t7
-
- @3rd stage
- vqadd.s16 q15, q13, q10 @q15 = t7 = t5 + t2
- vqsub.s16 q10, q13, q10 @q10 = t2 = t5 - t2
- vqadd.s16 q13, q8, q12 @q13 = t5 = t0 + t4
- vqsub.s16 q7, q8, q12 @q7 = t0 = t0 - t4
- vqsub.s16 q12, q5, q11 @q12 = t4 = t8 - t3
- vqadd.s16 q11, q5, q11 @q11 = t3 = t8 + t3
-
- @4th stage
- vqadd.s16 q8, q15, q9 @q8 = vy0 = t7 + t1
- vqsub.s16 q15, q15, q9 @q15 = vy7 = t7 - t1
- vqrdmulh.s16 q6, q12, d0[0] @q6 = c4*t4
- vqrdmulh.s16 q4, q11, d0[0] @q4 = c4*t3
- vqsub.s16 q12, q10, q14 @q12 = vy4 = t2 - t6
- vqadd.s16 q11, q10, q14 @q11 = vy3 = t2 + t6
- vqadd.s16 q10, q7, q6 @q10 = vy2 = t0 + c4*t4
- vqsub.s16 q14, q13, q4 @q14 = vy6 = t5 - c4*t3
- vqadd.s16 q9, q13, q4 @q9 = vy1 = t5 + c4*t3
- vqsub.s16 q13, q7, q6 @q13 = vy5 = t0 - c4*t4
- .endm
-
- .macro PART1
- @==================================================================
- @ Load input input data from memory and shift
- @==================================================================
- vld1.16 {d16, d17},[r0]! @q8 =row0
- vqshl.s16 q8, q8, #4 @Input data too big?!!
- @Maximum MPEG input is 2047/-2048.
- vld1.16 {d18, d19},[r0]! @q9 =row1
- vqshl.s16 q9, q9, #4 @Shift 1 instead of 4
-
- vld1.16 {d20, d21},[r0]! @q10=row2
- vqshl.s16 q10, q10, #4
-
- vld1.16 {d22, d23},[r0]! @q11=row3
- vqshl.s16 q11, q11, #4
-
- vld1.16 {d24, d25},[r0]! @q12=row4
- vqshl.s16 q12, q12, #4
-
- vld1.16 {d26, d27},[r0]! @q13=row5
- vqshl.s16 q13, q13, #4
- vld1.16 {d28, d29},[r0]! @q14=row6
- vqshl.s16 q14, q14, #4
- vld1.16 {d30, d31},[r0]! @q15=row7
- vqshl.s16 q15, q15, #4
-
- @==================================================================
- @ refresh the constants that was clobbered last time through IDCT1D
- @==================================================================
- vld1.16 {d4, d5},[r7] @q2 =constants[2]
- vld1.16 {d6, d7},[r8] @q3 =constants[3]
- vld1.16 {d8, d9},[r9] @q4 =constants[4]
- .endm
-
- .macro PART2
- @==================================================================
- @ Prescale the input
- @==================================================================
- vqrdmulh.s16 q12, q12, q1 @q12=row4 * constants[1] = vx4
- vqrdmulh.s16 q15, q15, q2 @q15=row7 * constants[2] = vx7
- vqrdmulh.s16 q9, q9, q2 @q9 =row1 * constants[2] = vx1
- vqrdmulh.s16 q13, q13, q4 @q13=row5 * constants[4] = vx5
- vqrdmulh.s16 q11, q11, q4 @q11=row3 * constants[4] = vx3
- vqrdmulh.s16 q14, q14, q3 @q14=row6 * constants[3] = vx6
- vqrdmulh.s16 q10, q10, q3 @q10=row2 * constants[3] = vx2
- vqrdmulh.s16 q8, q8, q1 @q8 =row0 * constants[1] = vx0
-
- @==================================================================
- @ At thsi point, the input 8x8 x 16 bit coefficients are
- @ transposed, prescaled, and loaded in q8 to q15
- @ q0 loaded with scalar constants
- @ Perform 1D IDCT
- @==================================================================
- IDCT1D @perform 1d idct
-
- @==================================================================
- @ Transpose the intermediate results to get read for vertical
- @ transformation
- @==================================================================
- vswp d17, d24 @q8, q12
- vswp d23, d30 @q11, q15
- vswp d21, d28 @q10, q14
- vswp d19, d26 @q9, q13
-
- @==================================================================
- @ Load the bias
- @==================================================================
- vdup.32 q4, d1[1] @a cycle is saved by loading
- @the bias at this point
-
- @==================================================================
- @ Finish the transposition
- @==================================================================
- vtrn.32 q8, q10
- vtrn.32 q9, q11
- vtrn.32 q12, q14
- vtrn.32 q13, q15
- vtrn.16 q8, q9
- vtrn.16 q10, q11
- vtrn.16 q12, q13
- vtrn.16 q14, q15
-
- @==================================================================
- @ Add bias
- @==================================================================
- vqadd.s16 q8, q8, q4
-
- @==================================================================
- @ IDCT 2nd half
- @==================================================================
- IDCT1D @perform 1d dct
-
- @==================================================================
- @ Scale and clamp the output to correct range and save to memory
- @ 1. scale to 8bits by right shift 6
- @ 2. clamp output to [0, 255] by min/max
- @ 3. use multiple store. Each store will save one row of output.
- @ The st queue size is 4, so do no more than 4 str in sequence.
- @==================================================================
- ldr r5, =constants+5*16 @constants[5],
- vld1.16 d10, [r5] @load clamping parameters
- vdup.s16 q6, d10[0] @q6=[0000000000000000]
- vdup.s16 q7, d10[1] @q7=[FFFFFFFFFFFFFFFF]
-
- @Save the results
- vshr.s16 q8, q8, #6 @q8 = vy0
- vmax.s16 q8, q8, q6 @clamp >0
- vmin.s16 q8, q8, q7 @clamp <255
-
- vshr.s16 q9, q9, #6 @q9 = vy1
- vmax.s16 q9, q9, q6 @clamp >0
- vmin.s16 q9, q9, q7 @clamp <255
-
- vshr.s16 q10, q10, #6 @q10 = vy2
- vmax.s16 q10, q10, q6 @clamp >0
- vmin.s16 q10, q10, q7 @clamp <255
-
- vshr.s16 q11, q11, #6 @q11 = vy3
- vmax.s16 q11, q11, q6 @clamp >0
- vmin.s16 q11, q11, q7 @clamp <255
-
- vst1.16 {d16, d17},[r1],r2 @q8 =row0
- vst1.16 {d18, d19},[r1],r2 @q9 =row1
- vst1.16 {d20, d21},[r1],r2 @q10=row2
- vst1.16 {d22, d23},[r1],r2 @q11=row3
-
- vshr.s16 q12, q12, #6 @q12 = vy4
- vmax.s16 q12, q12, q6 @clamp >0
- vmin.s16 q12, q12, q7 @clamp <255
-
- vshr.s16 q13, q13, #6 @q13 = vy5
- vmax.s16 q13, q13, q6 @clamp >0
- vmin.s16 q13, q13, q7 @clamp <255
-
- vshr.s16 q14, q14, #6 @q14 = vy6
- vmax.s16 q14, q14, q6 @clamp >0
- vmin.s16 q14, q14, q7 @clamp <255
-
- vshr.s16 q15, q15, #6 @q15 = vy7
- vmax.s16 q15, q15, q6 @clamp >0
- vmin.s16 q15, q15, q7 @clamp <255
-
- vst1.16 {d24, d25},[r1],r2 @q12=row4
- vst1.16 {d26, d27},[r1],r2 @q13=row5
- vst1.16 {d28, d29},[r1],r2 @q14=row6
- vst1.16 {d30, d31},[r1] @q15=row7
- .endm
-
- .macro BIG_BODY_TRANSPOSE_INPUT
- @==================================================================
- @ Main body of idct
- @==================================================================
- PART1
- Transpose8x8
- PART2
- .endm
-
- .macro IDCT_ENTRY
- @==================================================================
- @ Load the locations of the constants
- @==================================================================
- ldr r5, =constants+0*16 @constants[0]
- ldr r6, =constants+1*16 @constants[1]
- ldr r7, =constants+2*16 @constants[2]
- ldr r8, =constants+3*16 @constants[3]
- ldr r9, =constants+4*16 @constants[4]
-
- @==================================================================
- @ Load the coefficients
- @ only some input coefficients are load due to register constrain
- @==================================================================
- vld1.16 {d0, d1},[r5] @q0 =constants[0] (scalars)
- vld1.16 {d2, d3},[r6] @q1 =constants[1]
- .endm
-@==========================================================================
-@ END of MACRO DEFINITION
-@==========================================================================
-
-
- .section idct_func, "x" @ ARE
- .text @ idct_func, CODE, READONLY
- .align 2
- .code 32 @ CODE32
-
-@==========================================================================
-@ Main Routine
-@==========================================================================
-
- .global idct_1x1_venum
- .global idct_2x2_venum
- .global idct_4x4_venum
- .global idct_8x8_venum
-
-@==========================================================================
-@ FUNCTION : idct_1x1_venum
-@--------------------------------------------------------------------------
-@ DISCRIPTION : ARM optimization of one 1x1 block iDCT
-@--------------------------------------------------------------------------
-@ C PROTOTYPE : void idct_1x1_venum(int16 * input,
-@ int16 * output,
-@ int32 stride)
-@--------------------------------------------------------------------------
-@ REG INPUT : R0 pointer to input (int16)
-@ R1 pointer to output (int16)
-@ R2 block stride
-@--------------------------------------------------------------------------
-@ STACK ARG : None
-@--------------------------------------------------------------------------
-@ MEM INPUT : None
-@--------------------------------------------------------------------------
-@ REG OUTPUT : None
-@--------------------------------------------------------------------------
-@ MEM OUTPUT : None
-@--------------------------------------------------------------------------
-@ REG AFFECTED : R0 - R2
-@--------------------------------------------------------------------------
-@ STACK USAGE : none
-@--------------------------------------------------------------------------
-@ CYCLES : 17 cycles
-@--------------------------------------------------------------------------
-@ NOTES :
-@ This idct_1x1_venum code was developed with ARM instruction set.
-@
-@ ARM REGISTER ALLOCATION
-@ =========================================================================
-@ r0 : pointer to input data
-@ r1 : pointer to output area
-@ r2 : stride in the output buffer
-@==========================================================================
-.type idct_1x1_venum, %function
-idct_1x1_venum:
-
- ldrsh r3, [r0] @ Load signed half word (int16)
- ldr r2, =1028 @ 1028 = 4 + 128 << 3
- @ 4 for rounding, 128 for offset
- add r2, r3, r2
- asrs r2, r2, #3 @ Divide by 8, and set status bit
- movmi r2, #0 @ Clamp to be greater than 0
- cmp r2, #255
- movgt r2, #255 @ Clamp to be less than 255
- str r2, [r1] @ Save output
- bx lr @ Return to caller
-
- @ end of idct_1x1_venum
-
-
-@==========================================================================
-@ FUNCTION : idct_2x2_venum
-@--------------------------------------------------------------------------
-@ DISCRIPTION : VeNum optimization of one 2x2 block iDCT
-@--------------------------------------------------------------------------
-@ C PROTOTYPE : void idct_2x2_venum(int16 * input,
-@ int16 * output,
-@ int32 stride)
-@--------------------------------------------------------------------------
-@ REG INPUT : R0 pointer to input (int16)
-@ R1 pointer to output (int16)
-@ R2 block stride
-@--------------------------------------------------------------------------
-@ STACK ARG : None
-@--------------------------------------------------------------------------
-@ MEM INPUT : None
-@--------------------------------------------------------------------------
-@ REG OUTPUT : None
-@--------------------------------------------------------------------------
-@ MEM OUTPUT : None
-@--------------------------------------------------------------------------
-@ REG AFFECTED : R0 - R2
-@--------------------------------------------------------------------------
-@ STACK USAGE : none
-@--------------------------------------------------------------------------
-@ CYCLES : 27 cycles
-@--------------------------------------------------------------------------
-@ NOTES : Output buffer must be an 8x8 16-bit buffer
-@
-@ ARM REGISTER ALLOCATION
-@ ==========================================
-@ r0 : pointer to input data
-@ r1 : pointer to output area
-@ r2 : stride in the output buffer
-@ -------------------------------------------
-@
-@ VENUM REGISTER ALLOCATION
-@ =================================================
-@ q0 : output x0 - x4
-@ q1 : not used
-@ q2 : not used
-@ q3 : not used
-@ q4 : not used
-@ q5 : not used
-@ q6 : not used
-@ q7 : not used
-@ q8 : input y0 - y4
-@ q9 : intermediate value
-@ q10 : intermediate value
-@ q11 : offset value
-@ q12 : clamp value
-@ q13 : not used
-@ q14 : not used
-@ q15 : not used
-@==========================================================================
-.type idct_2x2_venum, %function
-idct_2x2_venum:
-
- vld4.32 {d16, d17, d18, d19}, [r0]
- @ d16: y0 | y1 | y2 | y3 (LSB | MSB)
-
- vtrn.32 d16, d17 @ d16: y0 | y1 | X | X
- @ d17: y2 | y3 | X | X
-
- vqadd.s16 d18, d16, d17 @ d18: y0+y2 | y1+y3 | X | X q: saturated
- vqsub.s16 d19, d16, d17 @ d19: y0-y2 | y1-y3 | X | X q: saturated
-
- vtrn.16 d18, d19 @ d18: y0+y2 | y0-y2 | X | X
- @ d19: y1+y3 | y1-y3 | X | X
-
- vqadd.s16 d20, d18, d19 @ d20: (y0+y2)+(y1+y3) | (y0-y2)+(y1-y3)
- @ x0 | x2 | X | X
- vqsub.s16 d21, d18, d19 @ d21: (y0+y2)-(y1+y3) | (y0-y2)-(y1-y3)
- @ x1 | x3 | X | X
-
- vtrn.16 d20, d21 @ d20: x0 | x1 | X | X
- @ d21: x2 | x3 | X | X
-
- vrshr.s16 q10, q10, #3 @ Divide by 8
-
- vmov.i16 q11, #128 @ q11 = 128|128|128|128|128|128|128|128
- vqadd.s16 q0, q10, q11 @ Add offset to make output in [0,255]
-
- vmov.i16 q12, #0 @ q12 = [0000000000000000]
- vmov.i16 q13, #255 @ q13 = [FFFFFFFFFFFFFFFF] (hex)
-
- vmax.s16 q0, q0, q12 @ Clamp > 0
- vmin.s16 q0, q0, q13 @ Clamp < 255
-
- vstr d0, [r1] @ Store x0 | x1 | X | X
- @ Potential out of boundary issue
- add r1, r1, r2 @ Add the offset to the output pointer
- vstr d1, [r1] @ Store x2 | x3 | X | X
- @ Potential out of boundary issue
- bx lr @ Return to caller
-
- @ end of idct_2x2_venum
-
-
-@==========================================================================
-@ FUNCTION : idct_4x4_venum
-@--------------------------------------------------------------------------
-@ DISCRIPTION : VeNum optimization of one 4x4 block iDCT
-@--------------------------------------------------------------------------
-@ C PROTOTYPE : void idct_4x4_venum(int16 * input,
-@ int16 * output,
-@ int32 stride)
-@--------------------------------------------------------------------------
-@ REG INPUT : R0 pointer to input (int16)
-@ R1 pointer to output (int16)
-@ R2 block stride
-@--------------------------------------------------------------------------
-@ STACK ARG : None
-@--------------------------------------------------------------------------
-@ MEM INPUT : None
-@--------------------------------------------------------------------------
-@ REG OUTPUT : None
-@--------------------------------------------------------------------------
-@ MEM OUTPUT : None
-@--------------------------------------------------------------------------
-@ REG AFFECTED : R0 - R3, R12
-@--------------------------------------------------------------------------
-@ STACK USAGE : none
-@--------------------------------------------------------------------------
-@ CYCLES : 56 cycles
-@--------------------------------------------------------------------------
-@ NOTES :
-@
-@ ARM REGISTER ALLOCATION
-@ ==========================================
-@ r0 : pointer to input data
-@ r1 : pointer to output area
-@ r2 : stride in the output buffer
-@ r3 : pointer to the coefficient set
-@ r12 : pointer to the coefficient set
-@ -------------------------------------------
-@
-@ VENUM REGISTER ALLOCATION
-@ =================================================
-@ q0 : coefficients[0]
-@ q1 : coefficients[1]
-@ q2 : coefficients[2]
-@ q3 : coefficients[3]
-@ q4 : not used
-@ q5 : not used
-@ q6 : not used
-@ q7 : not used
-@ q8 : input y0 - y7
-@ q9 : input y8 - y15
-@ q10 : intermediate value
-@ q11 : intermediate value
-@ q12 : intermediate value
-@ q13 : intermediate value
-@ q14 : intermediate value
-@ q15 : intermediate value
-@==========================================================================
-.type idct_4x4_venum, %function
-idct_4x4_venum:
-
- @ Load the locations of the first 2 sets of coefficients
- ldr r3, =coefficient+0*16 @ coefficient[0]
- ldr r12, =coefficient+1*16 @ coefficient[1]
-
- @ Load the first 2 sets of coefficients
- vld1.16 {d0, d1},[r3] @ q0 = C4 | C2 | C4 | C6 | C4 | C2 | C4 | C6
- vld1.16 {d2, d3},[r12] @ q1 = C4 | C6 | C4 | C2 | C4 | C6 | C4 | C2
-
- @ Load the locations of the second 2 sets of coefficients
- ldr r3, =coefficient+2*16 @ coefficient[2]
- ldr r12, =coefficient+3*16 @ coefficient[3]
-
- @ Load the second 2 sets of coefficients
- vld1.16 {d4, d5},[r3] @ q2 = C4 | C4 | C4 | C4 | C2 | C2 | C2 | C2
- vld1.16 {d6, d7},[r12] @ q3 = C4 | C4 | C4 | C4 | C6 | C6 | C6 | C6
-
- @ Load the input values
- vld1.16 {d16}, [r0], r2 @ d16: y0 | y1 | y2 | y3 (LSB | MSB)
- vld1.16 {d17}, [r0], r2 @ d17: y4 | y5 | y6 | y7 (LSB | MSB)
- vld1.16 {d18}, [r0], r2 @ d18: y8 | y9 | y10 | y11 (LSB | MSB)
- vld1.16 {d19}, [r0], r2 @ d19: y12 | y13 | y14 | y15 (LSB | MSB)
-
- @ Apply iDCT Horizonally
-
- @ q8: y0 |y1 |y2 |y3 |y4 |y5 |y6 |y7
- @ q9: y8 |y9 |y10|y11|y12|y13|y14|y15
-
- @======================================================================
- @ vqrdmulh doubles the result and save the high 16 bits of the result,
- @ this is equivalent to right shift by 15 bits.
- @ since coefficients are in Q15 format, it contradicts with the right
- @ shift 15 here, so the final result is in Q0 format
- @
- @ vqrdmulh will also round the result
- @======================================================================
-
- vqrdmulh.s16 q10, q8, q0 @ q10: C4*y0 | C2*y1 | C4*y2 | C6*y3 | C4*y4 | C2*y5 | C4*y6 | C6*y7
- vqrdmulh.s16 q11, q8, q1 @ q11: C4*y0 | C6*y1 | C4*y2 | C2*y3 | C4*y4 | C6*y5 | C4*y6 | C2*y7
-
- vqrdmulh.s16 q12, q9, q0 @ q12: C4*y8 | C2*y9 | C4*y10 | C6*y11 | C4*y12 | C2*y13 | C4*y14 | C6*y15
- vqrdmulh.s16 q13, q9, q1 @ q13: C4*y8 | C6*y9 | C4*y10 | C2*y11 | C4*y12 | C6*y13 | C4*y14 | C2*y15
-
- vtrn.32 q10, q12 @ q10: C4*y0 | C2*y1 | C4*y8 | C2*y9 | C4*y4 | C2*y5 | C4*y12 | C2*y13
- @ q12: C4*y2 | C6*y3 | C4*y10 | C6*y11 | C4*y6 | C6*y7 | C4*y14 | C6*y15
-
- vtrn.32 q11, q13 @ q11: C4*y0 | C6*y1 | C4*y8 | C6*y9 | C4*y4 | C6*y5 | C4*y12 | C6*y13
- @ q13: C4*y2 | C2*y3 | C4*y10 | C2*y11 | C4*y6 | C2*y7 | C4*y14 | C2*y15
-
- vqadd.s16 q14, q10, q12 @ q14: C4*y0 + C4*y2 | C2*y1 + C6*y3 | C4*y8 + C4*y10 | C2*y9 + C6*y11 | C4*y4 + C4*y6 | C2*y5 + C6*y7 | C4*y12 + C4*y14 | C2*y13 + C6*y15
- @ S0 | S2 | S8 | S10 | S4 | S6 | S12 | S14
-
- vqsub.s16 q15, q11, q13 @ q15: C4*y0 - C4*y2 | C6*y1 - C2*y3 | C4*y8 - C4*y10 | C6*y9 - C2*y11 | C4*y4 - C4*y6 | C6*y5 - C2*y7 | C4*y12 - C4*y14 | C6*y13 - C2*y15
- @ S1 | S3 | S9 | S11 | S5 | S7 | S13 | S15
-
- vtrn.16 q14, q15 @ q14: S0 | S1 | S8 | S9 | S4 | S5 | S12 | S13
- @ q15: S2 | S3 | S10 | S11 | S6 | S7 | S14 | S15
-
- vqadd.s16 q8, q14, q15 @ q8: Z0 | Z1 | Z8 | Z9 | Z4 | Z5 | Z12 | Z13
- vqsub.s16 q9, q14, q15 @ q9: Z3 | Z2 | Z11 | Z10 | Z7 | Z6 | Z15 | Z14
- vrev32.16 q9, q9 @ q9: Z2 | Z3 | Z10 | Z11 | Z6 | Z7 | Z14 | Z15
-
-
- @ Apply iDCT Vertically
-
- vtrn.32 q8, q9 @ q8: Z0 | Z1 | Z2 | Z3 | Z4 | Z5 | Z6 | Z7
- @ q9: Z8 | Z9 | Z10 | Z11 | Z12 | Z13 | Z14 | Z15
-
-
- vqrdmulh.s16 q10, q8, q2 @ q10: C4*Z0 | C4*Z1 | C4*Z2 | C4*Z3 | C2*Z4 | C2*Z5 | C2*Z6 | C2*Z7
- vqrdmulh.s16 q11, q8, q3 @ q11: C4*Z0 | C4*Z1 | C4*Z2 | C4*Z3 | C6*Z4 | C6*Z5 | C6*Z6 | C6*Z7
-
- vqrdmulh.s16 q12, q9, q2 @ q12: C4*Z8 | C4*Z9 | C4*Z10 | C4*Z11 | C2*Z12 | C2*Z13 | C2*Z14 | C2*Z15
- vqrdmulh.s16 q13, q9, q3 @ q13: C4*Z8 | C4*Z9 | C4*Z10 | C4*Z11 | C6*Z12 | C6*Z13 | C6*Z14 | C6*Z15
-
- vqadd.s16 q14, q10, q13 @ q14: C4*Z0+C4*Z8 | C4*Z1+C4*Z9 | C4*Z2+C4*Z10 | C4*Z3+C4*Z11 | C2*Z4+C6*Z12 | C2*Z5+C6*Z13 | C2*Z6+C6*Z14 | C2*Z7+C6*Z15
- @ s0 | s4 | s8 | s12 | s2 | s6 | s10 | s14
-
- vqsub.s16 q15, q11, q12 @ q15: C4*Z0-C4*Z8 | C4*Z1-C4*Z9 | C4*Z2-C4*Z10 | C4*Z3-C4*Z11 | C6*Z4-C2*Z12 | C6*Z5-C2*Z13 | C6*Z6-C2*Z14 | C6*Z7-C2*Z15
- @ s1 | s5 | s9 | s13 | s3 | s7 | s11 | s15
-
- vswp d29, d30 @ q14: s0 | s4 | s8 | s12 | s1 | s5 | s9 | s13
- @ q15: s2 | s6 | s10 | s14 | s3 | s7 | s11 | s15
-
- vqadd.s16 q8, q14, q15 @ q8: x0 | x4 | x8 | x12 | x1 | x5 | x9 | x13
- vqsub.s16 q9, q14, q15 @ q9: x3 | x7 | x11 | x15 | x2 | x6 | x10 | x14
-
- vmov.i16 q10, #0 @ q10=[0000000000000000]
- vmov.i16 q11, #255 @ q11=[FFFFFFFFFFFFFFFF] (hex)
-
- vmov.i16 q0, #128 @ q0 = 128|128|128|128|128|128|128|128
-
- vqadd.s16 q8, q8, q0 @ Add the offset
- vqadd.s16 q9, q9, q0 @ Add the offset
-
- vmax.s16 q8, q8, q10 @ clamp > 0
- vmin.s16 q8, q8, q11 @ clamp < 255
-
- vmax.s16 q9, q9, q10 @ clamp > 0
- vmin.s16 q9, q9, q11 @ clamp < 255
-
- vst1.16 {d16}, [r1], r2 @ d16: x0 | x1 | x2 | x3 (LSB | MSB)
- vst1.16 {d17}, [r1], r2 @ d17: x4 | x5 | x6 | x7 (LSB | MSB)
- vst1.16 {d19}, [r1], r2 @ d18: x8 | x9 | x10 | x11 (LSB | MSB)
- vst1.16 {d18}, [r1], r2 @ d19: x12| x13 | x14 | x15 (LSB | MSB)
-
- bx lr @ Return to caller
-
- @ end of idct_4x4_venum
-
-@==========================================================================
-@ FUNCTION : idct_8x8_venum
-@--------------------------------------------------------------------------
-@ DISCRIPTION : VeNum optimization of one 8x8 block iDCT
-@--------------------------------------------------------------------------
-@ C PROTOTYPE : void idct_8x8_venum(int16 * input,
-@ int16 * output,
-@ int32 stride)
-@--------------------------------------------------------------------------
-@ REG INPUT : R0 pointer to input (int16)
-@ R1 pointer to output (int16)
-@ R2 block stride
-@--------------------------------------------------------------------------
-@ STACK ARG : None
-@--------------------------------------------------------------------------
-@ MEM INPUT : None
-@--------------------------------------------------------------------------
-@ REG OUTPUT : None
-@--------------------------------------------------------------------------
-@ MEM OUTPUT : None
-@--------------------------------------------------------------------------
-@ REG AFFECTED : R0 - R9
-@--------------------------------------------------------------------------
-@ STACK USAGE : none
-@--------------------------------------------------------------------------
-@ CYCLES : 177 cycles
-@--------------------------------------------------------------------------
-@ NOTES :
-@
-@ It was tested to be IEEE 1180 compliant. Since IEEE 1180 compliance is more stringent
-@ than MPEG-4 compliance, this version is also MPEG-4 compliant.
-@
-@ CODE STRUCTURE:
-@ (i) Macros for transposing an 8x8 matrix and for configuring the VFP unit are defined.
-@ (ii) Macro for IDCT in one dimension is defined as four stages
-@ (iii) The two dimensional code begins
-@ (iv) constants are defined in the area DataArea
-@
-@ PROGRAM FLOW:
-@
-@ The VFP is configured
-@ The parameters to IDCT are loaded
-@ the coefficients are loaded
-@ loop:
-@ decrement loop counter
-@ The first input Matrix is loaded and pre-scaled
-@ The input is prescaled using the constants
-@ IDCT is performed in one dimension on the 8 columns
-@ The matrix is transposed
-@ A bias is loaded an added to the matrix
-@ IDCT is performed in one dimension on the 8 rows
-@ The matrix is post-scaled
-@ The matrix is saved
-@ test loop counter and loop if greater than zero
-@ stop
-@
-@
-@ ARM REGISTER ALLOCATION
-@ ==========================================
-@ r0 : pointer to input data
-@ r1 : pointer to output are
-@ r2 : stride in the output buffer
-@ r3 :
-@ r4 :
-@ r5 : pointer to constants[0] [5]
-@ r6 : pointer to constants[1]
-@ r7 : pointer to constants[2]
-@ r8 : pointer to constants[3]
-@ r9 : pointer to constants[4]
-@ -------------------------------------------
-@
-@ VENUM REGISTER ALLOCATION
-@ =================================================
-@ q0 : constants[0]
-@ q1 : constants[1]
-@ q2 : constants[2], IDCT1D in-place scratch
-@ q3 : constants[3], IDCT1D in-place scratch
-@ q4 : constants[4], IDCT1D in-place scratch, and bias compensation
-@ q5 : IDCT1D in-place scratch
-@ q6 : IDCT1D in-place scratch
-@ q7 : IDCT1D in-place scratch
-@ q8 : Matrix[0] IDCT1D in-place scratch
-@ q9 : Matrix[1] IDCT1D in-place scratch
-@ q10 : Matrix[2] IDCT1D in-place scratch
-@ q11 : Matrix[3] IDCT1D in-place scratch
-@ q12 : Matrix[4] IDCT1D in-place scratch
-@ q13 : Matrix[5] IDCT1D in-place scratch
-@ q14 : Matrix[6] IDCT1D in-place scratch
-@ q15 : Matrix[7] IDCT1D in-place scratch
-@==========================================================================
-.type idct_8x8_venum, %function
-idct_8x8_venum:
-
- push {r5-r9}
- vpush {d8-d15}
- IDCT_ENTRY
- BIG_BODY_TRANSPOSE_INPUT
- vpop {d8-d15}
- pop {r5-r9}
- bx lr
- @ end of idct_8x8_venum
-
-@==========================================================================
-@ Constants Definition AREA: define idct kernel, bias
-@==========================================================================
- .section ro_data_area @ AREA RODataArea
- .data @ DATA, READONLY
- .align 5 @ ALIGN=5
-
-constants:
- .hword 23170, 13573, 6518, 21895, -23170, -21895, 8223, 8224
- .hword 16384, 22725, 21407, 19266, 16384, 19266, 21407, 22725
- .hword 22725, 31521, 29692, 26722, 22725, 26722, 29692, 31521
- .hword 21407, 29692, 27969, 25172, 21407, 25172, 27969, 29692
- .hword 19266, 26722, 25172, 22654, 19266, 22654, 25172, 26722
- .hword 0, 255, 0, 0
-
-coefficient: @ These are the coefficent used by 4x4 iDCT in Q15 format
- .hword 11585, 15137, 11585, 6270, 11585, 15137, 11585, 6270 @ C4, C2, C4, C6, C4, C2, C4, C6 /2
- .hword 11585, 6270, 11585, 15137, 11585, 6270, 11585, 15137 @ C4, C6, C4, C2, C4, C6, C4, C2 /2
- .hword 11585, 11585, 11585, 11585, 15137, 15137, 15137, 15137 @ C4, C4, C4, C4, C2, C2, C2, C2 /2
- .hword 11585, 11585, 11585, 11585, 6270, 6270, 6270, 6270 @ C4, C4, C4, C4, C6, C6, C6, C6 /2
-
-.end
diff --git a/libjpegtwrp/cderror.h b/libjpegtwrp/cderror.h
deleted file mode 100644
index 70435e1..0000000
--- a/libjpegtwrp/cderror.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * cderror.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file defines the error and message codes for the cjpeg/djpeg
- * applications. These strings are not needed as part of the JPEG library
- * proper.
- * Edit this file to add new codes, or to translate the message strings to
- * some other language.
- */
-
-/*
- * To define the enum list of message codes, include this file without
- * defining macro JMESSAGE. To create a message string table, include it
- * again with a suitable JMESSAGE definition (see jerror.c for an example).
- */
-#ifndef JMESSAGE
-#ifndef CDERROR_H
-#define CDERROR_H
-/* First time through, define the enum list */
-#define JMAKE_ENUM_LIST
-#else
-/* Repeated inclusions of this file are no-ops unless JMESSAGE is defined */
-#define JMESSAGE(code,string)
-#endif /* CDERROR_H */
-#endif /* JMESSAGE */
-
-#ifdef JMAKE_ENUM_LIST
-
-typedef enum {
-
-#define JMESSAGE(code,string) code ,
-
-#endif /* JMAKE_ENUM_LIST */
-
-JMESSAGE(JMSG_FIRSTADDONCODE=1000, NULL) /* Must be first entry! */
-
-#ifdef BMP_SUPPORTED
-JMESSAGE(JERR_BMP_BADCMAP, "Unsupported BMP colormap format")
-JMESSAGE(JERR_BMP_BADDEPTH, "Only 8- and 24-bit BMP files are supported")
-JMESSAGE(JERR_BMP_BADHEADER, "Invalid BMP file: bad header length")
-JMESSAGE(JERR_BMP_BADPLANES, "Invalid BMP file: biPlanes not equal to 1")
-JMESSAGE(JERR_BMP_COLORSPACE, "BMP output must be grayscale or RGB")
-JMESSAGE(JERR_BMP_COMPRESSED, "Sorry, compressed BMPs not yet supported")
-JMESSAGE(JERR_BMP_NOT, "Not a BMP file - does not start with BM")
-JMESSAGE(JTRC_BMP, "%ux%u 24-bit BMP image")
-JMESSAGE(JTRC_BMP_MAPPED, "%ux%u 8-bit colormapped BMP image")
-JMESSAGE(JTRC_BMP_OS2, "%ux%u 24-bit OS2 BMP image")
-JMESSAGE(JTRC_BMP_OS2_MAPPED, "%ux%u 8-bit colormapped OS2 BMP image")
-#endif /* BMP_SUPPORTED */
-
-#ifdef GIF_SUPPORTED
-JMESSAGE(JERR_GIF_BUG, "GIF output got confused")
-JMESSAGE(JERR_GIF_CODESIZE, "Bogus GIF codesize %d")
-JMESSAGE(JERR_GIF_COLORSPACE, "GIF output must be grayscale or RGB")
-JMESSAGE(JERR_GIF_IMAGENOTFOUND, "Too few images in GIF file")
-JMESSAGE(JERR_GIF_NOT, "Not a GIF file")
-JMESSAGE(JTRC_GIF, "%ux%ux%d GIF image")
-JMESSAGE(JTRC_GIF_BADVERSION,
- "Warning: unexpected GIF version number '%c%c%c'")
-JMESSAGE(JTRC_GIF_EXTENSION, "Ignoring GIF extension block of type 0x%02x")
-JMESSAGE(JTRC_GIF_NONSQUARE, "Caution: nonsquare pixels in input")
-JMESSAGE(JWRN_GIF_BADDATA, "Corrupt data in GIF file")
-JMESSAGE(JWRN_GIF_CHAR, "Bogus char 0x%02x in GIF file, ignoring")
-JMESSAGE(JWRN_GIF_ENDCODE, "Premature end of GIF image")
-JMESSAGE(JWRN_GIF_NOMOREDATA, "Ran out of GIF bits")
-#endif /* GIF_SUPPORTED */
-
-#ifdef PPM_SUPPORTED
-JMESSAGE(JERR_PPM_COLORSPACE, "PPM output must be grayscale or RGB")
-JMESSAGE(JERR_PPM_NONNUMERIC, "Nonnumeric data in PPM file")
-JMESSAGE(JERR_PPM_NOT, "Not a PPM/PGM file")
-JMESSAGE(JTRC_PGM, "%ux%u PGM image")
-JMESSAGE(JTRC_PGM_TEXT, "%ux%u text PGM image")
-JMESSAGE(JTRC_PPM, "%ux%u PPM image")
-JMESSAGE(JTRC_PPM_TEXT, "%ux%u text PPM image")
-#endif /* PPM_SUPPORTED */
-
-#ifdef RLE_SUPPORTED
-JMESSAGE(JERR_RLE_BADERROR, "Bogus error code from RLE library")
-JMESSAGE(JERR_RLE_COLORSPACE, "RLE output must be grayscale or RGB")
-JMESSAGE(JERR_RLE_DIMENSIONS, "Image dimensions (%ux%u) too large for RLE")
-JMESSAGE(JERR_RLE_EMPTY, "Empty RLE file")
-JMESSAGE(JERR_RLE_EOF, "Premature EOF in RLE header")
-JMESSAGE(JERR_RLE_MEM, "Insufficient memory for RLE header")
-JMESSAGE(JERR_RLE_NOT, "Not an RLE file")
-JMESSAGE(JERR_RLE_TOOMANYCHANNELS, "Cannot handle %d output channels for RLE")
-JMESSAGE(JERR_RLE_UNSUPPORTED, "Cannot handle this RLE setup")
-JMESSAGE(JTRC_RLE, "%ux%u full-color RLE file")
-JMESSAGE(JTRC_RLE_FULLMAP, "%ux%u full-color RLE file with map of length %d")
-JMESSAGE(JTRC_RLE_GRAY, "%ux%u grayscale RLE file")
-JMESSAGE(JTRC_RLE_MAPGRAY, "%ux%u grayscale RLE file with map of length %d")
-JMESSAGE(JTRC_RLE_MAPPED, "%ux%u colormapped RLE file with map of length %d")
-#endif /* RLE_SUPPORTED */
-
-#ifdef TARGA_SUPPORTED
-JMESSAGE(JERR_TGA_BADCMAP, "Unsupported Targa colormap format")
-JMESSAGE(JERR_TGA_BADPARMS, "Invalid or unsupported Targa file")
-JMESSAGE(JERR_TGA_COLORSPACE, "Targa output must be grayscale or RGB")
-JMESSAGE(JTRC_TGA, "%ux%u RGB Targa image")
-JMESSAGE(JTRC_TGA_GRAY, "%ux%u grayscale Targa image")
-JMESSAGE(JTRC_TGA_MAPPED, "%ux%u colormapped Targa image")
-#else
-JMESSAGE(JERR_TGA_NOTCOMP, "Targa support was not compiled")
-#endif /* TARGA_SUPPORTED */
-
-JMESSAGE(JERR_BAD_CMAP_FILE,
- "Color map file is invalid or of unsupported format")
-JMESSAGE(JERR_TOO_MANY_COLORS,
- "Output file format cannot handle %d colormap entries")
-JMESSAGE(JERR_UNGETC_FAILED, "ungetc failed")
-#ifdef TARGA_SUPPORTED
-JMESSAGE(JERR_UNKNOWN_FORMAT,
- "Unrecognized input file format --- perhaps you need -targa")
-#else
-JMESSAGE(JERR_UNKNOWN_FORMAT, "Unrecognized input file format")
-#endif
-JMESSAGE(JERR_UNSUPPORTED_FORMAT, "Unsupported output file format")
-
-#ifdef JMAKE_ENUM_LIST
-
- JMSG_LASTADDONCODE
-} ADDON_MESSAGE_CODE;
-
-#undef JMAKE_ENUM_LIST
-#endif /* JMAKE_ENUM_LIST */
-
-/* Zap JMESSAGE macro so that future re-inclusions do nothing by default */
-#undef JMESSAGE
diff --git a/libjpegtwrp/cdjpeg.c b/libjpegtwrp/cdjpeg.c
deleted file mode 100644
index b6250ff..0000000
--- a/libjpegtwrp/cdjpeg.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * cdjpeg.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains common support routines used by the IJG application
- * programs (cjpeg, djpeg, jpegtran).
- */
-
-#include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
-#include <ctype.h> /* to declare isupper(), tolower() */
-#ifdef NEED_SIGNAL_CATCHER
-#include <signal.h> /* to declare signal() */
-#endif
-#ifdef USE_SETMODE
-#include <fcntl.h> /* to declare setmode()'s parameter macros */
-/* If you have setmode() but not <io.h>, just delete this line: */
-#include <io.h> /* to declare setmode() */
-#endif
-
-
-/*
- * Signal catcher to ensure that temporary files are removed before aborting.
- * NB: for Amiga Manx C this is actually a global routine named _abort();
- * we put "#define signal_catcher _abort" in jconfig.h. Talk about bogus...
- */
-
-#ifdef NEED_SIGNAL_CATCHER
-
-static j_common_ptr sig_cinfo;
-
-void /* must be global for Manx C */
-signal_catcher (int signum)
-{
- if (sig_cinfo != NULL) {
- if (sig_cinfo->err != NULL) /* turn off trace output */
- sig_cinfo->err->trace_level = 0;
- jpeg_destroy(sig_cinfo); /* clean up memory allocation & temp files */
- }
- exit(EXIT_FAILURE);
-}
-
-
-GLOBAL(void)
-enable_signal_catcher (j_common_ptr cinfo)
-{
- sig_cinfo = cinfo;
-#ifdef SIGINT /* not all systems have SIGINT */
- signal(SIGINT, signal_catcher);
-#endif
-#ifdef SIGTERM /* not all systems have SIGTERM */
- signal(SIGTERM, signal_catcher);
-#endif
-}
-
-#endif
-
-
-/*
- * Optional progress monitor: display a percent-done figure on stderr.
- */
-
-#ifdef PROGRESS_REPORT
-
-METHODDEF(void)
-progress_monitor (j_common_ptr cinfo)
-{
- cd_progress_ptr prog = (cd_progress_ptr) cinfo->progress;
- int total_passes = prog->pub.total_passes + prog->total_extra_passes;
- int percent_done = (int) (prog->pub.pass_counter*100L/prog->pub.pass_limit);
-
- if (percent_done != prog->percent_done) {
- prog->percent_done = percent_done;
- if (total_passes > 1) {
- fprintf(stderr, "\rPass %d/%d: %3d%% ",
- prog->pub.completed_passes + prog->completed_extra_passes + 1,
- total_passes, percent_done);
- } else {
- fprintf(stderr, "\r %3d%% ", percent_done);
- }
- fflush(stderr);
- }
-}
-
-
-GLOBAL(void)
-start_progress_monitor (j_common_ptr cinfo, cd_progress_ptr progress)
-{
- /* Enable progress display, unless trace output is on */
- if (cinfo->err->trace_level == 0) {
- progress->pub.progress_monitor = progress_monitor;
- progress->completed_extra_passes = 0;
- progress->total_extra_passes = 0;
- progress->percent_done = -1;
- cinfo->progress = &progress->pub;
- }
-}
-
-
-GLOBAL(void)
-end_progress_monitor (j_common_ptr cinfo)
-{
- /* Clear away progress display */
- if (cinfo->err->trace_level == 0) {
- fprintf(stderr, "\r \r");
- fflush(stderr);
- }
-}
-
-#endif
-
-
-/*
- * Case-insensitive matching of possibly-abbreviated keyword switches.
- * keyword is the constant keyword (must be lower case already),
- * minchars is length of minimum legal abbreviation.
- */
-
-GLOBAL(boolean)
-keymatch (char * arg, const char * keyword, int minchars)
-{
- register int ca, ck;
- register int nmatched = 0;
-
- while ((ca = *arg++) != '\0') {
- if ((ck = *keyword++) == '\0')
- return FALSE; /* arg longer than keyword, no good */
- if (isupper(ca)) /* force arg to lcase (assume ck is already) */
- ca = tolower(ca);
- if (ca != ck)
- return FALSE; /* no good */
- nmatched++; /* count matched characters */
- }
- /* reached end of argument; fail if it's too short for unique abbrev */
- if (nmatched < minchars)
- return FALSE;
- return TRUE; /* A-OK */
-}
-
-
-/*
- * Routines to establish binary I/O mode for stdin and stdout.
- * Non-Unix systems often require some hacking to get out of text mode.
- */
-
-GLOBAL(FILE *)
-read_stdin (void)
-{
- FILE * input_file = stdin;
-
-#ifdef USE_SETMODE /* need to hack file mode? */
- setmode(fileno(stdin), O_BINARY);
-#endif
-#ifdef USE_FDOPEN /* need to re-open in binary mode? */
- if ((input_file = fdopen(fileno(stdin), READ_BINARY)) == NULL) {
- fprintf(stderr, "Cannot reopen stdin\n");
- exit(EXIT_FAILURE);
- }
-#endif
- return input_file;
-}
-
-
-GLOBAL(FILE *)
-write_stdout (void)
-{
- FILE * output_file = stdout;
-
-#ifdef USE_SETMODE /* need to hack file mode? */
- setmode(fileno(stdout), O_BINARY);
-#endif
-#ifdef USE_FDOPEN /* need to re-open in binary mode? */
- if ((output_file = fdopen(fileno(stdout), WRITE_BINARY)) == NULL) {
- fprintf(stderr, "Cannot reopen stdout\n");
- exit(EXIT_FAILURE);
- }
-#endif
- return output_file;
-}
diff --git a/libjpegtwrp/cdjpeg.h b/libjpegtwrp/cdjpeg.h
deleted file mode 100644
index 2b387b6..0000000
--- a/libjpegtwrp/cdjpeg.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * cdjpeg.h
- *
- * Copyright (C) 1994-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains common declarations for the sample applications
- * cjpeg and djpeg. It is NOT used by the core JPEG library.
- */
-
-#define JPEG_CJPEG_DJPEG /* define proper options in jconfig.h */
-#define JPEG_INTERNAL_OPTIONS /* cjpeg.c,djpeg.c need to see xxx_SUPPORTED */
-#include "jinclude.h"
-#include "jpeglib.h"
-#include "jerror.h" /* get library error codes too */
-#include "cderror.h" /* get application-specific error codes */
-
-
-/*
- * Object interface for cjpeg's source file decoding modules
- */
-
-typedef struct cjpeg_source_struct * cjpeg_source_ptr;
-
-struct cjpeg_source_struct {
- JMETHOD(void, start_input, (j_compress_ptr cinfo,
- cjpeg_source_ptr sinfo));
- JMETHOD(JDIMENSION, get_pixel_rows, (j_compress_ptr cinfo,
- cjpeg_source_ptr sinfo));
- JMETHOD(void, finish_input, (j_compress_ptr cinfo,
- cjpeg_source_ptr sinfo));
-
- FILE *input_file;
-
- JSAMPARRAY buffer;
- JDIMENSION buffer_height;
-};
-
-
-/*
- * Object interface for djpeg's output file encoding modules
- */
-
-typedef struct djpeg_dest_struct * djpeg_dest_ptr;
-
-struct djpeg_dest_struct {
- /* start_output is called after jpeg_start_decompress finishes.
- * The color map will be ready at this time, if one is needed.
- */
- JMETHOD(void, start_output, (j_decompress_ptr cinfo,
- djpeg_dest_ptr dinfo));
- /* Emit the specified number of pixel rows from the buffer. */
- JMETHOD(void, put_pixel_rows, (j_decompress_ptr cinfo,
- djpeg_dest_ptr dinfo,
- JDIMENSION rows_supplied));
- /* Finish up at the end of the image. */
- JMETHOD(void, finish_output, (j_decompress_ptr cinfo,
- djpeg_dest_ptr dinfo));
-
- /* Target file spec; filled in by djpeg.c after object is created. */
- FILE * output_file;
-
- /* Output pixel-row buffer. Created by module init or start_output.
- * Width is cinfo->output_width * cinfo->output_components;
- * height is buffer_height.
- */
- JSAMPARRAY buffer;
- JDIMENSION buffer_height;
-};
-
-
-/*
- * cjpeg/djpeg may need to perform extra passes to convert to or from
- * the source/destination file format. The JPEG library does not know
- * about these passes, but we'd like them to be counted by the progress
- * monitor. We use an expanded progress monitor object to hold the
- * additional pass count.
- */
-
-struct cdjpeg_progress_mgr {
- struct jpeg_progress_mgr pub; /* fields known to JPEG library */
- int completed_extra_passes; /* extra passes completed */
- int total_extra_passes; /* total extra */
- /* last printed percentage stored here to avoid multiple printouts */
- int percent_done;
-};
-
-typedef struct cdjpeg_progress_mgr * cd_progress_ptr;
-
-
-/* Short forms of external names for systems with brain-damaged linkers. */
-
-#ifdef NEED_SHORT_EXTERNAL_NAMES
-#define jinit_read_bmp jIRdBMP
-#define jinit_write_bmp jIWrBMP
-#define jinit_read_gif jIRdGIF
-#define jinit_write_gif jIWrGIF
-#define jinit_read_ppm jIRdPPM
-#define jinit_write_ppm jIWrPPM
-#define jinit_read_rle jIRdRLE
-#define jinit_write_rle jIWrRLE
-#define jinit_read_targa jIRdTarga
-#define jinit_write_targa jIWrTarga
-#define read_quant_tables RdQTables
-#define read_scan_script RdScnScript
-#define set_quant_slots SetQSlots
-#define set_sample_factors SetSFacts
-#define read_color_map RdCMap
-#define enable_signal_catcher EnSigCatcher
-#define start_progress_monitor StProgMon
-#define end_progress_monitor EnProgMon
-#define read_stdin RdStdin
-#define write_stdout WrStdout
-#endif /* NEED_SHORT_EXTERNAL_NAMES */
-
-/* Module selection routines for I/O modules. */
-
-EXTERN(cjpeg_source_ptr) jinit_read_bmp JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_bmp JPP((j_decompress_ptr cinfo,
- boolean is_os2));
-EXTERN(cjpeg_source_ptr) jinit_read_gif JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_gif JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_ppm JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_ppm JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_rle JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_rle JPP((j_decompress_ptr cinfo));
-EXTERN(cjpeg_source_ptr) jinit_read_targa JPP((j_compress_ptr cinfo));
-EXTERN(djpeg_dest_ptr) jinit_write_targa JPP((j_decompress_ptr cinfo));
-
-/* cjpeg support routines (in rdswitch.c) */
-
-EXTERN(boolean) read_quant_tables JPP((j_compress_ptr cinfo, char * filename,
- int scale_factor, boolean force_baseline));
-EXTERN(boolean) read_scan_script JPP((j_compress_ptr cinfo, char * filename));
-EXTERN(boolean) set_quant_slots JPP((j_compress_ptr cinfo, char *arg));
-EXTERN(boolean) set_sample_factors JPP((j_compress_ptr cinfo, char *arg));
-
-/* djpeg support routines (in rdcolmap.c) */
-
-EXTERN(void) read_color_map JPP((j_decompress_ptr cinfo, FILE * infile));
-
-/* common support routines (in cdjpeg.c) */
-
-EXTERN(void) enable_signal_catcher JPP((j_common_ptr cinfo));
-EXTERN(void) start_progress_monitor JPP((j_common_ptr cinfo,
- cd_progress_ptr progress));
-EXTERN(void) end_progress_monitor JPP((j_common_ptr cinfo));
-EXTERN(boolean) keymatch JPP((char * arg, const char * keyword, int minchars));
-EXTERN(FILE *) read_stdin JPP((void));
-EXTERN(FILE *) write_stdout JPP((void));
-
-/* miscellaneous useful macros */
-
-#ifdef DONT_USE_B_MODE /* define mode parameters for fopen() */
-#define READ_BINARY "r"
-#define WRITE_BINARY "w"
-#else
-#ifdef VMS /* VMS is very nonstandard */
-#define READ_BINARY "rb", "ctx=stm"
-#define WRITE_BINARY "wb", "ctx=stm"
-#else /* standard ANSI-compliant case */
-#define READ_BINARY "rb"
-#define WRITE_BINARY "wb"
-#endif
-#endif
-
-#ifndef EXIT_FAILURE /* define exit() codes if not provided */
-#define EXIT_FAILURE 1
-#endif
-#ifndef EXIT_SUCCESS
-#ifdef VMS
-#define EXIT_SUCCESS 1 /* VMS is very nonstandard */
-#else
-#define EXIT_SUCCESS 0
-#endif
-#endif
-#ifndef EXIT_WARNING
-#ifdef VMS
-#define EXIT_WARNING 1 /* VMS is very nonstandard */
-#else
-#define EXIT_WARNING 2
-#endif
-#endif
diff --git a/libjpegtwrp/change.log b/libjpegtwrp/change.log
deleted file mode 100644
index 74102c0..0000000
--- a/libjpegtwrp/change.log
+++ /dev/null
@@ -1,217 +0,0 @@
-CHANGE LOG for Independent JPEG Group's JPEG software
-
-
-Version 6b 27-Mar-1998
------------------------
-
-jpegtran has new features for lossless image transformations (rotation
-and flipping) as well as "lossless" reduction to grayscale.
-
-jpegtran now copies comments by default; it has a -copy switch to enable
-copying all APPn blocks as well, or to suppress comments. (Formerly it
-always suppressed comments and APPn blocks.) jpegtran now also preserves
-JFIF version and resolution information.
-
-New decompressor library feature: COM and APPn markers found in the input
-file can be saved in memory for later use by the application. (Before,
-you had to code this up yourself with a custom marker processor.)
-
-There is an unused field "void * client_data" now in compress and decompress
-parameter structs; this may be useful in some applications.
-
-JFIF version number information is now saved by the decoder and accepted by
-the encoder. jpegtran uses this to copy the source file's version number,
-to ensure "jpegtran -copy all" won't create bogus files that contain JFXX
-extensions but claim to be version 1.01. Applications that generate their
-own JFXX extension markers also (finally) have a supported way to cause the
-encoder to emit JFIF version number 1.02.
-
-djpeg's trace mode reports JFIF 1.02 thumbnail images as such, rather
-than as unknown APP0 markers.
-
-In -verbose mode, djpeg and rdjpgcom will try to print the contents of
-APP12 markers as text. Some digital cameras store useful text information
-in APP12 markers.
-
-Handling of truncated data streams is more robust: blocks beyond the one in
-which the error occurs will be output as uniform gray, or left unchanged
-if decoding a progressive JPEG. The appearance no longer depends on the
-Huffman tables being used.
-
-Huffman tables are checked for validity much more carefully than before.
-
-To avoid the Unisys LZW patent, djpeg's GIF output capability has been
-changed to produce "uncompressed GIFs", and cjpeg's GIF input capability
-has been removed altogether. We're not happy about it either, but there
-seems to be no good alternative.
-
-The configure script now supports building libjpeg as a shared library
-on many flavors of Unix (all the ones that GNU libtool knows how to
-build shared libraries for). Use "./configure --enable-shared" to
-try this out.
-
-New jconfig file and makefiles for Microsoft Visual C++ and Developer Studio.
-Also, a jconfig file and a build script for Metrowerks CodeWarrior
-on Apple Macintosh. makefile.dj has been updated for DJGPP v2, and there
-are miscellaneous other minor improvements in the makefiles.
-
-jmemmac.c now knows how to create temporary files following Mac System 7
-conventions.
-
-djpeg's -map switch is now able to read raw-format PPM files reliably.
-
-cjpeg -progressive -restart no longer generates any unnecessary DRI markers.
-
-Multiple calls to jpeg_simple_progression for a single JPEG object
-no longer leak memory.
-
-
-Version 6a 7-Feb-96
---------------------
-
-Library initialization sequence modified to detect version mismatches
-and struct field packing mismatches between library and calling application.
-This change requires applications to be recompiled, but does not require
-any application source code change.
-
-All routine declarations changed to the style "GLOBAL(type) name ...",
-that is, GLOBAL, LOCAL, METHODDEF, EXTERN are now macros taking the
-routine's return type as an argument. This makes it possible to add
-Microsoft-style linkage keywords to all the routines by changing just
-these macros. Note that any application code that was using these macros
-will have to be changed.
-
-DCT coefficient quantization tables are now stored in normal array order
-rather than zigzag order. Application code that calls jpeg_add_quant_table,
-or otherwise manipulates quantization tables directly, will need to be
-changed. If you need to make such code work with either older or newer
-versions of the library, a test like "#if JPEG_LIB_VERSION >= 61" is
-recommended.
-
-djpeg's trace capability now dumps DQT tables in natural order, not zigzag
-order. This allows the trace output to be made into a "-qtables" file
-more easily.
-
-New system-dependent memory manager module for use on Apple Macintosh.
-
-Fix bug in cjpeg's -smooth option: last one or two scanlines would be
-duplicates of the prior line unless the image height mod 16 was 1 or 2.
-
-Repair minor problems in VMS, BCC, MC6 makefiles.
-
-New configure script based on latest GNU Autoconf.
-
-Correct the list of include files needed by MetroWerks C for ccommand().
-
-Numerous small documentation updates.
-
-
-Version 6 2-Aug-95
--------------------
-
-Progressive JPEG support: library can read and write full progressive JPEG
-files. A "buffered image" mode supports incremental decoding for on-the-fly
-display of progressive images. Simply recompiling an existing IJG-v5-based
-decoder with v6 should allow it to read progressive files, though of course
-without any special progressive display.
-
-New "jpegtran" application performs lossless transcoding between different
-JPEG formats; primarily, it can be used to convert baseline to progressive
-JPEG and vice versa. In support of jpegtran, the library now allows lossless
-reading and writing of JPEG files as DCT coefficient arrays. This ability
-may be of use in other applications.
-
-Notes for programmers:
-* We changed jpeg_start_decompress() to be able to suspend; this makes all
-decoding modes available to suspending-input applications. However,
-existing applications that use suspending input will need to be changed
-to check the return value from jpeg_start_decompress(). You don't need to
-do anything if you don't use a suspending data source.
-* We changed the interface to the virtual array routines: access_virt_array
-routines now take a count of the number of rows to access this time. The
-last parameter to request_virt_array routines is now interpreted as the
-maximum number of rows that may be accessed at once, but not necessarily
-the height of every access.
-
-
-Version 5b 15-Mar-95
----------------------
-
-Correct bugs with grayscale images having v_samp_factor > 1.
-
-jpeg_write_raw_data() now supports output suspension.
-
-Correct bugs in "configure" script for case of compiling in
-a directory other than the one containing the source files.
-
-Repair bug in jquant1.c: sometimes didn't use as many colors as it could.
-
-Borland C makefile and jconfig file work under either MS-DOS or OS/2.
-
-Miscellaneous improvements to documentation.
-
-
-Version 5a 7-Dec-94
---------------------
-
-Changed color conversion roundoff behavior so that grayscale values are
-represented exactly. (This causes test image files to change.)
-
-Make ordered dither use 16x16 instead of 4x4 pattern for a small quality
-improvement.
-
-New configure script based on latest GNU Autoconf.
-Fix configure script to handle CFLAGS correctly.
-Rename *.auto files to *.cfg, so that configure script still works if
-file names have been truncated for DOS.
-
-Fix bug in rdbmp.c: didn't allow for extra data between header and image.
-
-Modify rdppm.c/wrppm.c to handle 2-byte raw PPM/PGM formats for 12-bit data.
-
-Fix several bugs in rdrle.c.
-
-NEED_SHORT_EXTERNAL_NAMES option was broken.
-
-Revise jerror.h/jerror.c for more flexibility in message table.
-
-Repair oversight in jmemname.c NO_MKTEMP case: file could be there
-but unreadable.
-
-
-Version 5 24-Sep-94
---------------------
-
-Version 5 represents a nearly complete redesign and rewrite of the IJG
-software. Major user-visible changes include:
- * Automatic configuration simplifies installation for most Unix systems.
- * A range of speed vs. image quality tradeoffs are supported.
- This includes resizing of an image during decompression: scaling down
- by a factor of 1/2, 1/4, or 1/8 is handled very efficiently.
- * New programs rdjpgcom and wrjpgcom allow insertion and extraction
- of text comments in a JPEG file.
-
-The application programmer's interface to the library has changed completely.
-Notable improvements include:
- * We have eliminated the use of callback routines for handling the
- uncompressed image data. The application now sees the library as a
- set of routines that it calls to read or write image data on a
- scanline-by-scanline basis.
- * The application image data is represented in a conventional interleaved-
- pixel format, rather than as a separate array for each color channel.
- This can save a copying step in many programs.
- * The handling of compressed data has been cleaned up: the application can
- supply routines to source or sink the compressed data. It is possible to
- suspend processing on source/sink buffer overrun, although this is not
- supported in all operating modes.
- * All static state has been eliminated from the library, so that multiple
- instances of compression or decompression can be active concurrently.
- * JPEG abbreviated datastream formats are supported, ie, quantization and
- Huffman tables can be stored separately from the image data.
- * And not only that, but the documentation of the library has improved
- considerably!
-
-
-The last widely used release before the version 5 rewrite was version 4A of
-18-Feb-93. Change logs before that point have been discarded, since they
-are not of much interest after the rewrite.
diff --git a/libjpegtwrp/cjpeg.1 b/libjpegtwrp/cjpeg.1
deleted file mode 100644
index d175a96..0000000
--- a/libjpegtwrp/cjpeg.1
+++ /dev/null
@@ -1,292 +0,0 @@
-.TH CJPEG 1 "20 March 1998"
-.SH NAME
-cjpeg \- compress an image file to a JPEG file
-.SH SYNOPSIS
-.B cjpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B cjpeg
-compresses the named image file, or the standard input if no file is
-named, and produces a JPEG/JFIF file on the standard output.
-The currently supported input file formats are: PPM (PBMPLUS color
-format), PGM (PBMPLUS gray-scale format), BMP, Targa, and RLE (Utah Raster
-Toolkit format). (RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-quality " N"
-Scale quantization tables to adjust image quality. Quality is 0 (worst) to
-100 (best); default is 75. (See below for more info.)
-.TP
-.B \-grayscale
-Create monochrome JPEG file from color input. Be sure to use this switch when
-compressing a grayscale BMP file, because
-.B cjpeg
-isn't bright enough to notice whether a BMP file uses only shades of gray.
-By saying
-.BR \-grayscale ,
-you'll get a smaller JPEG file that takes less time to process.
-.TP
-.B \-optimize
-Perform optimization of entropy encoding parameters. Without this, default
-encoding parameters are used.
-.B \-optimize
-usually makes the JPEG file a little smaller, but
-.B cjpeg
-runs somewhat slower and needs much more memory. Image quality and speed of
-decompression are unaffected by
-.BR \-optimize .
-.TP
-.B \-progressive
-Create progressive JPEG file (see below).
-.TP
-.B \-targa
-Input file is Targa format. Targa files that contain an "identification"
-field will not be automatically recognized by
-.BR cjpeg ;
-for such files you must specify
-.B \-targa
-to make
-.B cjpeg
-treat the input as Targa format.
-For most Targa files, you won't need this switch.
-.PP
-The
-.B \-quality
-switch lets you trade off compressed file size against quality of the
-reconstructed image: the higher the quality setting, the larger the JPEG file,
-and the closer the output image will be to the original input. Normally you
-want to use the lowest quality setting (smallest file) that decompresses into
-something visually indistinguishable from the original image. For this
-purpose the quality setting should be between 50 and 95; the default of 75 is
-often about right. If you see defects at
-.B \-quality
-75, then go up 5 or 10 counts at a time until you are happy with the output
-image. (The optimal setting will vary from one image to another.)
-.PP
-.B \-quality
-100 will generate a quantization table of all 1's, minimizing loss in the
-quantization step (but there is still information loss in subsampling, as well
-as roundoff error). This setting is mainly of interest for experimental
-purposes. Quality values above about 95 are
-.B not
-recommended for normal use; the compressed file size goes up dramatically for
-hardly any gain in output image quality.
-.PP
-In the other direction, quality values below 50 will produce very small files
-of low image quality. Settings around 5 to 10 might be useful in preparing an
-index of a large image library, for example. Try
-.B \-quality
-2 (or so) for some amusing Cubist effects. (Note: quality
-values below about 25 generate 2-byte quantization tables, which are
-considered optional in the JPEG standard.
-.B cjpeg
-emits a warning message when you give such a quality value, because some
-other JPEG programs may be unable to decode the resulting file. Use
-.B \-baseline
-if you need to ensure compatibility at low quality values.)
-.PP
-The
-.B \-progressive
-switch creates a "progressive JPEG" file. In this type of JPEG file, the data
-is stored in multiple scans of increasing quality. If the file is being
-transmitted over a slow communications link, the decoder can use the first
-scan to display a low-quality image very quickly, and can then improve the
-display with each subsequent scan. The final image is exactly equivalent to a
-standard JPEG file of the same quality setting, and the total file size is
-about the same --- often a little smaller.
-.B Caution:
-progressive JPEG is not yet widely implemented, so many decoders will be
-unable to view a progressive JPEG file at all.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware. Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.BI \-restart " N"
-Emit a JPEG restart marker every N MCU rows, or every N MCU blocks if "B" is
-attached to the number.
-.B \-restart 0
-(the default) means no restart markers.
-.TP
-.BI \-smooth " N"
-Smooth the input image to eliminate dithering noise. N, ranging from 1 to
-100, indicates the strength of smoothing. 0 (the default) means no smoothing.
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images. Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number. For example,
-.B \-max 4m
-selects 4000000 bytes. If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout. More
-.BR \-v 's
-give more output. Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.PP
-The
-.B \-restart
-option inserts extra markers that allow a JPEG decoder to resynchronize after
-a transmission error. Without restart markers, any damage to a compressed
-file will usually ruin the image from the point of the error to the end of the
-image; with restart markers, the damage is usually confined to the portion of
-the image up to the next restart marker. Of course, the restart markers
-occupy extra space. We recommend
-.B \-restart 1
-for images that will be transmitted across unreliable networks such as Usenet.
-.PP
-The
-.B \-smooth
-option filters the input to eliminate fine-scale noise. This is often useful
-when converting dithered images to JPEG: a moderate smoothing factor of 10 to
-50 gets rid of dithering patterns in the input file, resulting in a smaller
-JPEG file and a better-looking image. Too large a smoothing factor will
-visibly blur the image, however.
-.PP
-Switches for wizards:
-.TP
-.B \-baseline
-Force baseline-compatible quantization tables to be generated. This clamps
-quantization values to 8 bits even at low quality settings. (This switch is
-poorly named, since it does not ensure that the output is actually baseline
-JPEG. For example, you can use
-.B \-baseline
-and
-.B \-progressive
-together.)
-.TP
-.BI \-qtables " file"
-Use the quantization tables given in the specified text file.
-.TP
-.BI \-qslots " N[,...]"
-Select which quantization table to use for each color component.
-.TP
-.BI \-sample " HxV[,...]"
-Set JPEG sampling factors for each color component.
-.TP
-.BI \-scans " file"
-Use the scan script given in the specified text file.
-.PP
-The "wizard" switches are intended for experimentation with JPEG. If you
-don't know what you are doing, \fBdon't use them\fR. These switches are
-documented further in the file wizard.doc.
-.SH EXAMPLES
-.LP
-This example compresses the PPM file foo.ppm with a quality factor of
-60 and saves the output as foo.jpg:
-.IP
-.B cjpeg \-quality
-.I 60 foo.ppm
-.B >
-.I foo.jpg
-.SH HINTS
-Color GIF files are not the ideal input for JPEG; JPEG is really intended for
-compressing full-color (24-bit) images. In particular, don't try to convert
-cartoons, line drawings, and other images that have only a few distinct
-colors. GIF works great on these, JPEG does not. If you want to convert a
-GIF to JPEG, you should experiment with
-.BR cjpeg 's
-.B \-quality
-and
-.B \-smooth
-options to get a satisfactory conversion.
-.B \-smooth 10
-or so is often helpful.
-.PP
-Avoid running an image through a series of JPEG compression/decompression
-cycles. Image quality loss will accumulate; after ten or so cycles the image
-may be noticeably worse than it was after one cycle. It's best to use a
-lossless format while manipulating an image, then convert to JPEG format when
-you are ready to file the image away.
-.PP
-The
-.B \-optimize
-option to
-.B cjpeg
-is worth using when you are making a "final" version for posting or archiving.
-It's also a win when you are using low quality settings to make very small
-JPEG files; the percentage improvement is often a lot more than it is on
-larger files. (At present,
-.B \-optimize
-mode is always selected when generating progressive JPEG files.)
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR djpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-Arithmetic coding is not supported for legal reasons.
-.PP
-GIF input files are no longer supported, to avoid the Unisys LZW patent.
-Use a Unisys-licensed program if you need to read a GIF file. (Conversion
-of GIF files to JPEG is usually a bad idea anyway.)
-.PP
-Not all variants of BMP and Targa file formats are supported.
-.PP
-The
-.B \-targa
-switch is not a bug, it's a feature. (It would be a bug if the Targa format
-designers had not been clueless.)
-.PP
-Still not as fast as we'd like.
diff --git a/libjpegtwrp/cjpeg.c b/libjpegtwrp/cjpeg.c
deleted file mode 100644
index f2a929f..0000000
--- a/libjpegtwrp/cjpeg.c
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
- * cjpeg.c
- *
- * Copyright (C) 1991-1998, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a command-line user interface for the JPEG compressor.
- * It should work on any system with Unix- or MS-DOS-style command lines.
- *
- * Two different command line styles are permitted, depending on the
- * compile-time switch TWO_FILE_COMMANDLINE:
- * cjpeg [options] inputfile outputfile
- * cjpeg [options] [inputfile]
- * In the second style, output is always to standard output, which you'd
- * normally redirect to a file or pipe to some other program. Input is
- * either from a named file or from standard input (typically redirected).
- * The second style is convenient on Unix but is unhelpful on systems that
- * don't support pipes. Also, you MUST use the first style if your system
- * doesn't do binary I/O to stdin/stdout.
- * To simplify script writing, the "-outfile" switch is provided. The syntax
- * cjpeg [options] -outfile outputfile inputfile
- * works regardless of which command line style is used.
- */
-
-#include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
-#include "jversion.h" /* for version message */
-
-#ifdef USE_CCOMMAND /* command-line reader for Macintosh */
-#ifdef __MWERKS__
-#include <SIOUX.h> /* Metrowerks needs this */
-#include <console.h> /* ... and this */
-#endif
-#ifdef THINK_C
-#include <console.h> /* Think declares it here */
-#endif
-#endif
-
-
-/* Create the add-on message string table. */
-
-#define JMESSAGE(code,string) string ,
-
-static const char * const cdjpeg_message_table[] = {
-#include "cderror.h"
- NULL
-};
-
-
-/*
- * This routine determines what format the input file is,
- * and selects the appropriate input-reading module.
- *
- * To determine which family of input formats the file belongs to,
- * we may look only at the first byte of the file, since C does not
- * guarantee that more than one character can be pushed back with ungetc.
- * Looking at additional bytes would require one of these approaches:
- * 1) assume we can fseek() the input file (fails for piped input);
- * 2) assume we can push back more than one character (works in
- * some C implementations, but unportable);
- * 3) provide our own buffering (breaks input readers that want to use
- * stdio directly, such as the RLE library);
- * or 4) don't put back the data, and modify the input_init methods to assume
- * they start reading after the start of file (also breaks RLE library).
- * #1 is attractive for MS-DOS but is untenable on Unix.
- *
- * The most portable solution for file types that can't be identified by their
- * first byte is to make the user tell us what they are. This is also the
- * only approach for "raw" file types that contain only arbitrary values.
- * We presently apply this method for Targa files. Most of the time Targa
- * files start with 0x00, so we recognize that case. Potentially, however,
- * a Targa file could start with any byte value (byte 0 is the length of the
- * seldom-used ID field), so we provide a switch to force Targa input mode.
- */
-
-static boolean is_targa; /* records user -targa switch */
-
-
-LOCAL(cjpeg_source_ptr)
-select_file_type (j_compress_ptr cinfo, FILE * infile)
-{
- int c;
-
- if (is_targa) {
-#ifdef TARGA_SUPPORTED
- return jinit_read_targa(cinfo);
-#else
- ERREXIT(cinfo, JERR_TGA_NOTCOMP);
-#endif
- }
-
- if ((c = getc(infile)) == EOF)
- ERREXIT(cinfo, JERR_INPUT_EMPTY);
- if (ungetc(c, infile) == EOF)
- ERREXIT(cinfo, JERR_UNGETC_FAILED);
-
- switch (c) {
-#ifdef BMP_SUPPORTED
- case 'B':
- return jinit_read_bmp(cinfo);
-#endif
-#ifdef GIF_SUPPORTED
- case 'G':
- return jinit_read_gif(cinfo);
-#endif
-#ifdef PPM_SUPPORTED
- case 'P':
- return jinit_read_ppm(cinfo);
-#endif
-#ifdef RLE_SUPPORTED
- case 'R':
- return jinit_read_rle(cinfo);
-#endif
-#ifdef TARGA_SUPPORTED
- case 0x00:
- return jinit_read_targa(cinfo);
-#endif
- default:
- ERREXIT(cinfo, JERR_UNKNOWN_FORMAT);
- break;
- }
-
- return NULL; /* suppress compiler warnings */
-}
-
-
-/*
- * Argument-parsing code.
- * The switch parser is designed to be useful with DOS-style command line
- * syntax, ie, intermixed switches and file names, where only the switches
- * to the left of a given file name affect processing of that file.
- * The main program in this file doesn't actually use this capability...
- */
-
-
-static const char * progname; /* program name for error messages */
-static char * outfilename; /* for -outfile switch */
-
-
-LOCAL(void)
-usage (void)
-/* complain about bad command line */
-{
- fprintf(stderr, "usage: %s [switches] ", progname);
-#ifdef TWO_FILE_COMMANDLINE
- fprintf(stderr, "inputfile outputfile\n");
-#else
- fprintf(stderr, "[inputfile]\n");
-#endif
-
- fprintf(stderr, "Switches (names may be abbreviated):\n");
- fprintf(stderr, " -quality N Compression quality (0..100; 5-95 is useful range)\n");
- fprintf(stderr, " -grayscale Create monochrome JPEG file\n");
-#ifdef ENTROPY_OPT_SUPPORTED
- fprintf(stderr, " -optimize Optimize Huffman table (smaller file, but slow compression)\n");
-#endif
-#ifdef C_PROGRESSIVE_SUPPORTED
- fprintf(stderr, " -progressive Create progressive JPEG file\n");
-#endif
-#ifdef TARGA_SUPPORTED
- fprintf(stderr, " -targa Input file is Targa format (usually not needed)\n");
-#endif
- fprintf(stderr, "Switches for advanced users:\n");
-#ifdef DCT_ISLOW_SUPPORTED
- fprintf(stderr, " -dct int Use integer DCT method%s\n",
- (JDCT_DEFAULT == JDCT_ISLOW ? " (default)" : ""));
-#endif
-#ifdef DCT_IFAST_SUPPORTED
- fprintf(stderr, " -dct fast Use fast integer DCT (less accurate)%s\n",
- (JDCT_DEFAULT == JDCT_IFAST ? " (default)" : ""));
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
- fprintf(stderr, " -dct float Use floating-point DCT method%s\n",
- (JDCT_DEFAULT == JDCT_FLOAT ? " (default)" : ""));
-#endif
- fprintf(stderr, " -restart N Set restart interval in rows, or in blocks with B\n");
-#ifdef INPUT_SMOOTHING_SUPPORTED
- fprintf(stderr, " -smooth N Smooth dithered input (N=1..100 is strength)\n");
-#endif
- fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n");
- fprintf(stderr, " -outfile name Specify name for output file\n");
- fprintf(stderr, " -verbose or -debug Emit debug output\n");
- fprintf(stderr, "Switches for wizards:\n");
-#ifdef C_ARITH_CODING_SUPPORTED
- fprintf(stderr, " -arithmetic Use arithmetic coding\n");
-#endif
- fprintf(stderr, " -baseline Force baseline quantization tables\n");
- fprintf(stderr, " -qtables file Use quantization tables given in file\n");
- fprintf(stderr, " -qslots N[,...] Set component quantization tables\n");
- fprintf(stderr, " -sample HxV[,...] Set component sampling factors\n");
-#ifdef C_MULTISCAN_FILES_SUPPORTED
- fprintf(stderr, " -scans file Create multi-scan JPEG per script file\n");
-#endif
- exit(EXIT_FAILURE);
-}
-
-
-LOCAL(int)
-parse_switches (j_compress_ptr cinfo, int argc, char **argv,
- int last_file_arg_seen, boolean for_real)
-/* Parse optional switches.
- * Returns argv[] index of first file-name argument (== argc if none).
- * Any file names with indexes <= last_file_arg_seen are ignored;
- * they have presumably been processed in a previous iteration.
- * (Pass 0 for last_file_arg_seen on the first or only iteration.)
- * for_real is FALSE on the first (dummy) pass; we may skip any expensive
- * processing.
- */
-{
- int argn;
- char * arg;
- int quality; /* -quality parameter */
- int q_scale_factor; /* scaling percentage for -qtables */
- boolean force_baseline;
- boolean simple_progressive;
- char * qtablefile = NULL; /* saves -qtables filename if any */
- char * qslotsarg = NULL; /* saves -qslots parm if any */
- char * samplearg = NULL; /* saves -sample parm if any */
- char * scansarg = NULL; /* saves -scans parm if any */
-
- /* Set up default JPEG parameters. */
- /* Note that default -quality level need not, and does not,
- * match the default scaling for an explicit -qtables argument.
- */
- quality = 75; /* default -quality value */
- q_scale_factor = 100; /* default to no scaling for -qtables */
- force_baseline = FALSE; /* by default, allow 16-bit quantizers */
- simple_progressive = FALSE;
- is_targa = FALSE;
- outfilename = NULL;
- cinfo->err->trace_level = 0;
-
- /* Scan command line options, adjust parameters */
-
- for (argn = 1; argn < argc; argn++) {
- arg = argv[argn];
- if (*arg != '-') {
- /* Not a switch, must be a file name argument */
- if (argn <= last_file_arg_seen) {
- outfilename = NULL; /* -outfile applies to just one input file */
- continue; /* ignore this name if previously processed */
- }
- break; /* else done parsing switches */
- }
- arg++; /* advance past switch marker character */
-
- if (keymatch(arg, "arithmetic", 1)) {
- /* Use arithmetic coding. */
-#ifdef C_ARITH_CODING_SUPPORTED
- cinfo->arith_code = TRUE;
-#else
- fprintf(stderr, "%s: sorry, arithmetic coding not supported\n",
- progname);
- exit(EXIT_FAILURE);
-#endif
-
- } else if (keymatch(arg, "baseline", 1)) {
- /* Force baseline-compatible output (8-bit quantizer values). */
- force_baseline = TRUE;
-
- } else if (keymatch(arg, "dct", 2)) {
- /* Select DCT algorithm. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (keymatch(argv[argn], "int", 1)) {
- cinfo->dct_method = JDCT_ISLOW;
- } else if (keymatch(argv[argn], "fast", 2)) {
- cinfo->dct_method = JDCT_IFAST;
- } else if (keymatch(argv[argn], "float", 2)) {
- cinfo->dct_method = JDCT_FLOAT;
- } else
- usage();
-
- } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
- /* Enable debug printouts. */
- /* On first -d, print version identification */
- static boolean printed_version = FALSE;
-
- if (! printed_version) {
- fprintf(stderr, "Independent JPEG Group's CJPEG, version %s\n%s\n",
- JVERSION, JCOPYRIGHT);
- printed_version = TRUE;
- }
- cinfo->err->trace_level++;
-
- } else if (keymatch(arg, "grayscale", 2) || keymatch(arg, "greyscale",2)) {
- /* Force a monochrome JPEG file to be generated. */
- jpeg_set_colorspace(cinfo, JCS_GRAYSCALE);
-
- } else if (keymatch(arg, "maxmemory", 3)) {
- /* Maximum memory in Kb (or Mb with 'm'). */
- long lval;
- char ch = 'x';
-
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
- usage();
- if (ch == 'm' || ch == 'M')
- lval *= 1000L;
- cinfo->mem->max_memory_to_use = lval * 1000L;
-
- } else if (keymatch(arg, "optimize", 1) || keymatch(arg, "optimise", 1)) {
- /* Enable entropy parm optimization. */
-#ifdef ENTROPY_OPT_SUPPORTED
- cinfo->optimize_coding = TRUE;
-#else
- fprintf(stderr, "%s: sorry, entropy optimization was not compiled\n",
- progname);
- exit(EXIT_FAILURE);
-#endif
-
- } else if (keymatch(arg, "outfile", 4)) {
- /* Set output file name. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- outfilename = argv[argn]; /* save it away for later use */
-
- } else if (keymatch(arg, "progressive", 1)) {
- /* Select simple progressive mode. */
-#ifdef C_PROGRESSIVE_SUPPORTED
- simple_progressive = TRUE;
- /* We must postpone execution until num_components is known. */
-#else
- fprintf(stderr, "%s: sorry, progressive output was not compiled\n",
- progname);
- exit(EXIT_FAILURE);
-#endif
-
- } else if (keymatch(arg, "quality", 1)) {
- /* Quality factor (quantization table scaling factor). */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%d", &quality) != 1)
- usage();
- /* Change scale factor in case -qtables is present. */
- q_scale_factor = jpeg_quality_scaling(quality);
-
- } else if (keymatch(arg, "qslots", 2)) {
- /* Quantization table slot numbers. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- qslotsarg = argv[argn];
- /* Must delay setting qslots until after we have processed any
- * colorspace-determining switches, since jpeg_set_colorspace sets
- * default quant table numbers.
- */
-
- } else if (keymatch(arg, "qtables", 2)) {
- /* Quantization tables fetched from file. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- qtablefile = argv[argn];
- /* We postpone actually reading the file in case -quality comes later. */
-
- } else if (keymatch(arg, "restart", 1)) {
- /* Restart interval in MCU rows (or in MCUs with 'b'). */
- long lval;
- char ch = 'x';
-
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
- usage();
- if (lval < 0 || lval > 65535L)
- usage();
- if (ch == 'b' || ch == 'B') {
- cinfo->restart_interval = (unsigned int) lval;
- cinfo->restart_in_rows = 0; /* else prior '-restart n' overrides me */
- } else {
- cinfo->restart_in_rows = (int) lval;
- /* restart_interval will be computed during startup */
- }
-
- } else if (keymatch(arg, "sample", 2)) {
- /* Set sampling factors. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- samplearg = argv[argn];
- /* Must delay setting sample factors until after we have processed any
- * colorspace-determining switches, since jpeg_set_colorspace sets
- * default sampling factors.
- */
-
- } else if (keymatch(arg, "scans", 2)) {
- /* Set scan script. */
-#ifdef C_MULTISCAN_FILES_SUPPORTED
- if (++argn >= argc) /* advance to next argument */
- usage();
- scansarg = argv[argn];
- /* We must postpone reading the file in case -progressive appears. */
-#else
- fprintf(stderr, "%s: sorry, multi-scan output was not compiled\n",
- progname);
- exit(EXIT_FAILURE);
-#endif
-
- } else if (keymatch(arg, "smooth", 2)) {
- /* Set input smoothing factor. */
- int val;
-
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%d", &val) != 1)
- usage();
- if (val < 0 || val > 100)
- usage();
- cinfo->smoothing_factor = val;
-
- } else if (keymatch(arg, "targa", 1)) {
- /* Input file is Targa format. */
- is_targa = TRUE;
-
- } else {
- usage(); /* bogus switch */
- }
- }
-
- /* Post-switch-scanning cleanup */
-
- if (for_real) {
-
- /* Set quantization tables for selected quality. */
- /* Some or all may be overridden if -qtables is present. */
- jpeg_set_quality(cinfo, quality, force_baseline);
-
- if (qtablefile != NULL) /* process -qtables if it was present */
- if (! read_quant_tables(cinfo, qtablefile,
- q_scale_factor, force_baseline))
- usage();
-
- if (qslotsarg != NULL) /* process -qslots if it was present */
- if (! set_quant_slots(cinfo, qslotsarg))
- usage();
-
- if (samplearg != NULL) /* process -sample if it was present */
- if (! set_sample_factors(cinfo, samplearg))
- usage();
-
-#ifdef C_PROGRESSIVE_SUPPORTED
- if (simple_progressive) /* process -progressive; -scans can override */
- jpeg_simple_progression(cinfo);
-#endif
-
-#ifdef C_MULTISCAN_FILES_SUPPORTED
- if (scansarg != NULL) /* process -scans if it was present */
- if (! read_scan_script(cinfo, scansarg))
- usage();
-#endif
- }
-
- return argn; /* return index of next arg (file name) */
-}
-
-
-/*
- * The main program.
- */
-
-int
-main (int argc, char **argv)
-{
- struct jpeg_compress_struct cinfo;
- struct jpeg_error_mgr jerr;
-#ifdef PROGRESS_REPORT
- struct cdjpeg_progress_mgr progress;
-#endif
- int file_index;
- cjpeg_source_ptr src_mgr;
- FILE * input_file;
- FILE * output_file;
- JDIMENSION num_scanlines;
-
- /* On Mac, fetch a command line. */
-#ifdef USE_CCOMMAND
- argc = ccommand(&argv);
-#endif
-
- progname = argv[0];
- if (progname == NULL || progname[0] == 0)
- progname = "cjpeg"; /* in case C library doesn't provide it */
-
- /* Initialize the JPEG compression object with default error handling. */
- cinfo.err = jpeg_std_error(&jerr);
- jpeg_create_compress(&cinfo);
- /* Add some application-specific error messages (from cderror.h) */
- jerr.addon_message_table = cdjpeg_message_table;
- jerr.first_addon_message = JMSG_FIRSTADDONCODE;
- jerr.last_addon_message = JMSG_LASTADDONCODE;
-
- /* Now safe to enable signal catcher. */
-#ifdef NEED_SIGNAL_CATCHER
- enable_signal_catcher((j_common_ptr) &cinfo);
-#endif
-
- /* Initialize JPEG parameters.
- * Much of this may be overridden later.
- * In particular, we don't yet know the input file's color space,
- * but we need to provide some value for jpeg_set_defaults() to work.
- */
-
- cinfo.in_color_space = JCS_RGB; /* arbitrary guess */
- jpeg_set_defaults(&cinfo);
-
- /* Scan command line to find file names.
- * It is convenient to use just one switch-parsing routine, but the switch
- * values read here are ignored; we will rescan the switches after opening
- * the input file.
- */
-
- file_index = parse_switches(&cinfo, argc, argv, 0, FALSE);
-
-#ifdef TWO_FILE_COMMANDLINE
- /* Must have either -outfile switch or explicit output file name */
- if (outfilename == NULL) {
- if (file_index != argc-2) {
- fprintf(stderr, "%s: must name one input and one output file\n",
- progname);
- usage();
- }
- outfilename = argv[file_index+1];
- } else {
- if (file_index != argc-1) {
- fprintf(stderr, "%s: must name one input and one output file\n",
- progname);
- usage();
- }
- }
-#else
- /* Unix style: expect zero or one file name */
- if (file_index < argc-1) {
- fprintf(stderr, "%s: only one input file\n", progname);
- usage();
- }
-#endif /* TWO_FILE_COMMANDLINE */
-
- /* Open the input file. */
- if (file_index < argc) {
- if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
- fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
- exit(EXIT_FAILURE);
- }
- } else {
- /* default input file is stdin */
- input_file = read_stdin();
- }
-
- /* Open the output file. */
- if (outfilename != NULL) {
- if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
- fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
- exit(EXIT_FAILURE);
- }
- } else {
- /* default output file is stdout */
- output_file = write_stdout();
- }
-
-#ifdef PROGRESS_REPORT
- start_progress_monitor((j_common_ptr) &cinfo, &progress);
-#endif
-
- /* Figure out the input file format, and set up to read it. */
- src_mgr = select_file_type(&cinfo, input_file);
- src_mgr->input_file = input_file;
-
- /* Read the input file header to obtain file size & colorspace. */
- (*src_mgr->start_input) (&cinfo, src_mgr);
-
- /* Now that we know input colorspace, fix colorspace-dependent defaults */
- jpeg_default_colorspace(&cinfo);
-
- /* Adjust default compression parameters by re-parsing the options */
- file_index = parse_switches(&cinfo, argc, argv, 0, TRUE);
-
- /* Specify data destination for compression */
- jpeg_stdio_dest(&cinfo, output_file);
-
- /* Start compressor */
- jpeg_start_compress(&cinfo, TRUE);
-
- /* Process data */
- while (cinfo.next_scanline < cinfo.image_height) {
- num_scanlines = (*src_mgr->get_pixel_rows) (&cinfo, src_mgr);
- (void) jpeg_write_scanlines(&cinfo, src_mgr->buffer, num_scanlines);
- }
-
- /* Finish compression and release memory */
- (*src_mgr->finish_input) (&cinfo, src_mgr);
- jpeg_finish_compress(&cinfo);
- jpeg_destroy_compress(&cinfo);
-
- /* Close files, if we opened them */
- if (input_file != stdin)
- fclose(input_file);
- if (output_file != stdout)
- fclose(output_file);
-
-#ifdef PROGRESS_REPORT
- end_progress_monitor((j_common_ptr) &cinfo);
-#endif
-
- /* All done. */
- exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
- return 0; /* suppress no-return-value warnings */
-}
diff --git a/libjpegtwrp/ckconfig.c b/libjpegtwrp/ckconfig.c
deleted file mode 100644
index 34baf79..0000000
--- a/libjpegtwrp/ckconfig.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/*
- * ckconfig.c
- *
- * Copyright (C) 1991-1994, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- */
-
-/*
- * This program is intended to help you determine how to configure the JPEG
- * software for installation on a particular system. The idea is to try to
- * compile and execute this program. If your compiler fails to compile the
- * program, make changes as indicated in the comments below. Once you can
- * compile the program, run it, and it will produce a "jconfig.h" file for
- * your system.
- *
- * As a general rule, each time you try to compile this program,
- * pay attention only to the *first* error message you get from the compiler.
- * Many C compilers will issue lots of spurious error messages once they
- * have gotten confused. Go to the line indicated in the first error message,
- * and read the comments preceding that line to see what to change.
- *
- * Almost all of the edits you may need to make to this program consist of
- * changing a line that reads "#define SOME_SYMBOL" to "#undef SOME_SYMBOL",
- * or vice versa. This is called defining or undefining that symbol.
- */
-
-
-/* First we must see if your system has the include files we need.
- * We start out with the assumption that your system has all the ANSI-standard
- * include files. If you get any error trying to include one of these files,
- * undefine the corresponding HAVE_xxx symbol.
- */
-
-#define HAVE_STDDEF_H /* replace 'define' by 'undef' if error here */
-#ifdef HAVE_STDDEF_H /* next line will be skipped if you undef... */
-#include <stddef.h>
-#endif
-
-#define HAVE_STDLIB_H /* same thing for stdlib.h */
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#include <stdio.h> /* If you ain't got this, you ain't got C. */
-
-/* We have to see if your string functions are defined by
- * strings.h (old BSD convention) or string.h (everybody else).
- * We try the non-BSD convention first; define NEED_BSD_STRINGS
- * if the compiler says it can't find string.h.
- */
-
-#undef NEED_BSD_STRINGS
-
-#ifdef NEED_BSD_STRINGS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-/* On some systems (especially older Unix machines), type size_t is
- * defined only in the include file <sys/types.h>. If you get a failure
- * on the size_t test below, try defining NEED_SYS_TYPES_H.
- */
-
-#undef NEED_SYS_TYPES_H /* start by assuming we don't need it */
-#ifdef NEED_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-
-/* Usually type size_t is defined in one of the include files we've included
- * above. If not, you'll get an error on the "typedef size_t my_size_t;" line.
- * In that case, first try defining NEED_SYS_TYPES_H just above.
- * If that doesn't work, you'll have to search through your system library
- * to figure out which include file defines "size_t". Look for a line that
- * says "typedef something-or-other size_t;". Then, change the line below
- * that says "#include <someincludefile.h>" to instead include the file
- * you found size_t in, and define NEED_SPECIAL_INCLUDE. If you can't find
- * type size_t anywhere, try replacing "#include <someincludefile.h>" with
- * "typedef unsigned int size_t;".
- */
-
-#undef NEED_SPECIAL_INCLUDE /* assume we DON'T need it, for starters */
-
-#ifdef NEED_SPECIAL_INCLUDE
-#include <someincludefile.h>
-#endif
-
-typedef size_t my_size_t; /* The payoff: do we have size_t now? */
-
-
-/* The next question is whether your compiler supports ANSI-style function
- * prototypes. You need to know this in order to choose between using
- * makefile.ansi and using makefile.unix.
- * The #define line below is set to assume you have ANSI function prototypes.
- * If you get an error in this group of lines, undefine HAVE_PROTOTYPES.
- */
-
-#define HAVE_PROTOTYPES
-
-#ifdef HAVE_PROTOTYPES
-int testfunction (int arg1, int * arg2); /* check prototypes */
-
-struct methods_struct { /* check method-pointer declarations */
- int (*error_exit) (char *msgtext);
- int (*trace_message) (char *msgtext);
- int (*another_method) (void);
-};
-
-int testfunction (int arg1, int * arg2) /* check definitions */
-{
- return arg2[arg1];
-}
-
-int test2function (void) /* check void arg list */
-{
- return 0;
-}
-#endif
-
-
-/* Now we want to find out if your compiler knows what "unsigned char" means.
- * If you get an error on the "unsigned char un_char;" line,
- * then undefine HAVE_UNSIGNED_CHAR.
- */
-
-#define HAVE_UNSIGNED_CHAR
-
-#ifdef HAVE_UNSIGNED_CHAR
-unsigned char un_char;
-#endif
-
-
-/* Now we want to find out if your compiler knows what "unsigned short" means.
- * If you get an error on the "unsigned short un_short;" line,
- * then undefine HAVE_UNSIGNED_SHORT.
- */
-
-#define HAVE_UNSIGNED_SHORT
-
-#ifdef HAVE_UNSIGNED_SHORT
-unsigned short un_short;
-#endif
-
-
-/* Now we want to find out if your compiler understands type "void".
- * If you get an error anywhere in here, undefine HAVE_VOID.
- */
-
-#define HAVE_VOID
-
-#ifdef HAVE_VOID
-/* Caution: a C++ compiler will insist on complete prototypes */
-typedef void * void_ptr; /* check void * */
-#ifdef HAVE_PROTOTYPES /* check ptr to function returning void */
-typedef void (*void_func) (int a, int b);
-#else
-typedef void (*void_func) ();
-#endif
-
-#ifdef HAVE_PROTOTYPES /* check void function result */
-void test3function (void_ptr arg1, void_func arg2)
-#else
-void test3function (arg1, arg2)
- void_ptr arg1;
- void_func arg2;
-#endif
-{
- char * locptr = (char *) arg1; /* check casting to and from void * */
- arg1 = (void *) locptr;
- (*arg2) (1, 2); /* check call of fcn returning void */
-}
-#endif
-
-
-/* Now we want to find out if your compiler knows what "const" means.
- * If you get an error here, undefine HAVE_CONST.
- */
-
-#define HAVE_CONST
-
-#ifdef HAVE_CONST
-static const int carray[3] = {1, 2, 3};
-
-#ifdef HAVE_PROTOTYPES
-int test4function (const int arg1)
-#else
-int test4function (arg1)
- const int arg1;
-#endif
-{
- return carray[arg1];
-}
-#endif
-
-
-/* If you get an error or warning about this structure definition,
- * define INCOMPLETE_TYPES_BROKEN.
- */
-
-#undef INCOMPLETE_TYPES_BROKEN
-
-#ifndef INCOMPLETE_TYPES_BROKEN
-typedef struct undefined_structure * undef_struct_ptr;
-#endif
-
-
-/* If you get an error about duplicate names,
- * define NEED_SHORT_EXTERNAL_NAMES.
- */
-
-#undef NEED_SHORT_EXTERNAL_NAMES
-
-#ifndef NEED_SHORT_EXTERNAL_NAMES
-
-int possibly_duplicate_function ()
-{
- return 0;
-}
-
-int possibly_dupli_function ()
-{
- return 1;
-}
-
-#endif
-
-
-
-/************************************************************************
- * OK, that's it. You should not have to change anything beyond this
- * point in order to compile and execute this program. (You might get
- * some warnings, but you can ignore them.)
- * When you run the program, it will make a couple more tests that it
- * can do automatically, and then it will create jconfig.h and print out
- * any additional suggestions it has.
- ************************************************************************
- */
-
-
-#ifdef HAVE_PROTOTYPES
-int is_char_signed (int arg)
-#else
-int is_char_signed (arg)
- int arg;
-#endif
-{
- if (arg == 189) { /* expected result for unsigned char */
- return 0; /* type char is unsigned */
- }
- else if (arg != -67) { /* expected result for signed char */
- printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n");
- printf("I fear the JPEG software will not work at all.\n\n");
- }
- return 1; /* assume char is signed otherwise */
-}
-
-
-#ifdef HAVE_PROTOTYPES
-int is_shifting_signed (long arg)
-#else
-int is_shifting_signed (arg)
- long arg;
-#endif
-/* See whether right-shift on a long is signed or not. */
-{
- long res = arg >> 4;
-
- if (res == -0x7F7E80CL) { /* expected result for signed shift */
- return 1; /* right shift is signed */
- }
- /* see if unsigned-shift hack will fix it. */
- /* we can't just test exact value since it depends on width of long... */
- res |= (~0L) << (32-4);
- if (res == -0x7F7E80CL) { /* expected result now? */
- return 0; /* right shift is unsigned */
- }
- printf("Right shift isn't acting as I expect it to.\n");
- printf("I fear the JPEG software will not work at all.\n\n");
- return 0; /* try it with unsigned anyway */
-}
-
-
-#ifdef HAVE_PROTOTYPES
-int main (int argc, char ** argv)
-#else
-int main (argc, argv)
- int argc;
- char ** argv;
-#endif
-{
- char signed_char_check = (char) (-67);
- FILE *outfile;
-
- /* Attempt to write jconfig.h */
- if ((outfile = fopen("jconfig.h", "w")) == NULL) {
- printf("Failed to write jconfig.h\n");
- return 1;
- }
-
- /* Write out all the info */
- fprintf(outfile, "/* jconfig.h --- generated by ckconfig.c */\n");
- fprintf(outfile, "/* see jconfig.doc for explanations */\n\n");
-#ifdef HAVE_PROTOTYPES
- fprintf(outfile, "#define HAVE_PROTOTYPES\n");
-#else
- fprintf(outfile, "#undef HAVE_PROTOTYPES\n");
-#endif
-#ifdef HAVE_UNSIGNED_CHAR
- fprintf(outfile, "#define HAVE_UNSIGNED_CHAR\n");
-#else
- fprintf(outfile, "#undef HAVE_UNSIGNED_CHAR\n");
-#endif
-#ifdef HAVE_UNSIGNED_SHORT
- fprintf(outfile, "#define HAVE_UNSIGNED_SHORT\n");
-#else
- fprintf(outfile, "#undef HAVE_UNSIGNED_SHORT\n");
-#endif
-#ifdef HAVE_VOID
- fprintf(outfile, "/* #define void char */\n");
-#else
- fprintf(outfile, "#define void char\n");
-#endif
-#ifdef HAVE_CONST
- fprintf(outfile, "/* #define const */\n");
-#else
- fprintf(outfile, "#define const\n");
-#endif
- if (is_char_signed((int) signed_char_check))
- fprintf(outfile, "#undef CHAR_IS_UNSIGNED\n");
- else
- fprintf(outfile, "#define CHAR_IS_UNSIGNED\n");
-#ifdef HAVE_STDDEF_H
- fprintf(outfile, "#define HAVE_STDDEF_H\n");
-#else
- fprintf(outfile, "#undef HAVE_STDDEF_H\n");
-#endif
-#ifdef HAVE_STDLIB_H
- fprintf(outfile, "#define HAVE_STDLIB_H\n");
-#else
- fprintf(outfile, "#undef HAVE_STDLIB_H\n");
-#endif
-#ifdef NEED_BSD_STRINGS
- fprintf(outfile, "#define NEED_BSD_STRINGS\n");
-#else
- fprintf(outfile, "#undef NEED_BSD_STRINGS\n");
-#endif
-#ifdef NEED_SYS_TYPES_H
- fprintf(outfile, "#define NEED_SYS_TYPES_H\n");
-#else
- fprintf(outfile, "#undef NEED_SYS_TYPES_H\n");
-#endif
- fprintf(outfile, "#undef NEED_FAR_POINTERS\n");
-#ifdef NEED_SHORT_EXTERNAL_NAMES
- fprintf(outfile, "#define NEED_SHORT_EXTERNAL_NAMES\n");
-#else
- fprintf(outfile, "#undef NEED_SHORT_EXTERNAL_NAMES\n");
-#endif
-#ifdef INCOMPLETE_TYPES_BROKEN
- fprintf(outfile, "#define INCOMPLETE_TYPES_BROKEN\n");
-#else
- fprintf(outfile, "#undef INCOMPLETE_TYPES_BROKEN\n");
-#endif
- fprintf(outfile, "\n#ifdef JPEG_INTERNALS\n\n");
- if (is_shifting_signed(-0x7F7E80B1L))
- fprintf(outfile, "#undef RIGHT_SHIFT_IS_UNSIGNED\n");
- else
- fprintf(outfile, "#define RIGHT_SHIFT_IS_UNSIGNED\n");
- fprintf(outfile, "\n#endif /* JPEG_INTERNALS */\n");
- fprintf(outfile, "\n#ifdef JPEG_CJPEG_DJPEG\n\n");
- fprintf(outfile, "#define BMP_SUPPORTED /* BMP image file format */\n");
- fprintf(outfile, "#define GIF_SUPPORTED /* GIF image file format */\n");
- fprintf(outfile, "#define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */\n");
- fprintf(outfile, "#undef RLE_SUPPORTED /* Utah RLE image file format */\n");
- fprintf(outfile, "#define TARGA_SUPPORTED /* Targa image file format */\n\n");
- fprintf(outfile, "#undef TWO_FILE_COMMANDLINE /* You may need this on non-Unix systems */\n");
- fprintf(outfile, "#undef NEED_SIGNAL_CATCHER /* Define this if you use jmemname.c */\n");
- fprintf(outfile, "#undef DONT_USE_B_MODE\n");
- fprintf(outfile, "/* #define PROGRESS_REPORT */ /* optional */\n");
- fprintf(outfile, "\n#endif /* JPEG_CJPEG_DJPEG */\n");
-
- /* Close the jconfig.h file */
- fclose(outfile);
-
- /* User report */
- printf("Configuration check for Independent JPEG Group's software done.\n");
- printf("\nI have written the jconfig.h file for you.\n\n");
-#ifdef HAVE_PROTOTYPES
- printf("You should use makefile.ansi as the starting point for your Makefile.\n");
-#else
- printf("You should use makefile.unix as the starting point for your Makefile.\n");
-#endif
-
-#ifdef NEED_SPECIAL_INCLUDE
- printf("\nYou'll need to change jconfig.h to include the system include file\n");
- printf("that you found type size_t in, or add a direct definition of type\n");
- printf("size_t if that's what you used. Just add it to the end.\n");
-#endif
-
- return 0;
-}
diff --git a/libjpegtwrp/coderules.doc b/libjpegtwrp/coderules.doc
deleted file mode 100644
index 0ab5d9b..0000000
--- a/libjpegtwrp/coderules.doc
+++ /dev/null
@@ -1,118 +0,0 @@
-IJG JPEG LIBRARY: CODING RULES
-
-Copyright (C) 1991-1996, Thomas G. Lane.
-This file is part of the Independent JPEG Group's software.
-For conditions of distribution and use, see the accompanying README file.
-
-
-Since numerous people will be contributing code and bug fixes, it's important
-to establish a common coding style. The goal of using similar coding styles
-is much more important than the details of just what that style is.
-
-In general we follow the recommendations of "Recommended C Style and Coding
-Standards" revision 6.1 (Cannon et al. as modified by Spencer, Keppel and
-Brader). This document is available in the IJG FTP archive (see
-jpeg/doc/cstyle.ms.tbl.Z, or cstyle.txt.Z for those without nroff/tbl).
-
-Block comments should be laid out thusly:
-
-/*
- * Block comments in this style.
- */
-
-We indent statements in K&R style, e.g.,
- if (test) {
- then-part;
- } else {
- else-part;
- }
-with two spaces per indentation level. (This indentation convention is
-handled automatically by GNU Emacs and many other text editors.)
-
-Multi-word names should be written in lower case with underscores, e.g.,
-multi_word_name (not multiWordName). Preprocessor symbols and enum constants
-are similar but upper case (MULTI_WORD_NAME). Names should be unique within
-the first fifteen characters. (On some older systems, global names must be
-unique within six characters. We accommodate this without cluttering the
-source code by using macros to substitute shorter names.)
-
-We use function prototypes everywhere; we rely on automatic source code
-transformation to feed prototype-less C compilers. Transformation is done
-by the simple and portable tool 'ansi2knr.c' (courtesy of Ghostscript).
-ansi2knr is not very bright, so it imposes a format requirement on function
-declarations: the function name MUST BEGIN IN COLUMN 1. Thus all functions
-should be written in the following style:
-
-LOCAL(int *)
-function_name (int a, char *b)
-{
- code...
-}
-
-Note that each function definition must begin with GLOBAL(type), LOCAL(type),
-or METHODDEF(type). These macros expand to "static type" or just "type" as
-appropriate. They provide a readable indication of the routine's usage and
-can readily be changed for special needs. (For instance, special linkage
-keywords can be inserted for use in Windows DLLs.)
-
-ansi2knr does not transform method declarations (function pointers in
-structs). We handle these with a macro JMETHOD, defined as
- #ifdef HAVE_PROTOTYPES
- #define JMETHOD(type,methodname,arglist) type (*methodname) arglist
- #else
- #define JMETHOD(type,methodname,arglist) type (*methodname) ()
- #endif
-which is used like this:
- struct function_pointers {
- JMETHOD(void, init_entropy_encoder, (int somearg, jparms *jp));
- JMETHOD(void, term_entropy_encoder, (void));
- };
-Note the set of parentheses surrounding the parameter list.
-
-A similar solution is used for forward and external function declarations
-(see the EXTERN and JPP macros).
-
-If the code is to work on non-ANSI compilers, we cannot rely on a prototype
-declaration to coerce actual parameters into the right types. Therefore, use
-explicit casts on actual parameters whenever the actual parameter type is not
-identical to the formal parameter. Beware of implicit conversions to "int".
-
-It seems there are some non-ANSI compilers in which the sizeof() operator
-is defined to return int, yet size_t is defined as long. Needless to say,
-this is brain-damaged. Always use the SIZEOF() macro in place of sizeof(),
-so that the result is guaranteed to be of type size_t.
-
-
-The JPEG library is intended to be used within larger programs. Furthermore,
-we want it to be reentrant so that it can be used by applications that process
-multiple images concurrently. The following rules support these requirements:
-
-1. Avoid direct use of file I/O, "malloc", error report printouts, etc;
-pass these through the common routines provided.
-
-2. Minimize global namespace pollution. Functions should be declared static
-wherever possible. (Note that our method-based calling conventions help this
-a lot: in many modules only the initialization function will ever need to be
-called directly, so only that function need be externally visible.) All
-global function names should begin with "jpeg_", and should have an
-abbreviated name (unique in the first six characters) substituted by macro
-when NEED_SHORT_EXTERNAL_NAMES is set.
-
-3. Don't use global variables; anything that must be used in another module
-should be in the common data structures.
-
-4. Don't use static variables except for read-only constant tables. Variables
-that should be private to a module can be placed into private structures (see
-the system architecture document, structure.doc).
-
-5. Source file names should begin with "j" for files that are part of the
-library proper; source files that are not part of the library, such as cjpeg.c
-and djpeg.c, do not begin with "j". Keep source file names to eight
-characters (plus ".c" or ".h", etc) to make life easy for MS-DOSers. Keep
-compression and decompression code in separate source files --- some
-applications may want only one half of the library.
-
-Note: these rules (particularly #4) are not followed religiously in the
-modules that are used in cjpeg/djpeg but are not part of the JPEG library
-proper. Those modules are not really intended to be used in other
-applications.
diff --git a/libjpegtwrp/config.guess b/libjpegtwrp/config.guess
deleted file mode 100755
index 413ed41..0000000
--- a/libjpegtwrp/config.guess
+++ /dev/null
@@ -1,883 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 8/24/94.)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- cat <<EOF >dummy.s
- .globl main
- .ent main
-main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
-EOF
- ${CC-cc} dummy.s -o dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
- UNAME_MACHINE="alpha"
- ;;
- 15)
- UNAME_MACHINE="alphaev5"
- ;;
- 14)
- UNAME_MACHINE="alphaev56"
- ;;
- 10)
- UNAME_MACHINE="alphapca56"
- ;;
- 16)
- UNAME_MACHINE="alphaev6"
- ;;
- esac
- fi
- rm -f dummy.s dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
- exit 0 ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
- exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc64:OpenBSD:*:*)
- echo mips64el-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hkmips:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mips-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- arm32:NetBSD:*:*)
- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- SR2?01:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
- Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit 0 ;;
- NILE:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit 0 ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit 0 ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
- atari*:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
- 2020:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- sed 's/^ //' << EOF >dummy.c
- int main (argc, argv) int argc; char **argv; {
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- ${CC-cc} dummy.c -o dummy \
- && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i?86:AIX:*:*)
- echo i386-ibm-aix
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo rs6000-ibm-aix3.2.5
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit 0 ;;
- *:AIX:*:4)
- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=4.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[3478]??:HP-UX:*:*)
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
- 9000/8?? ) HP_ARCH=hppa1.0 ;;
- esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
- 3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- i?86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
- F300:UNIX_System_V:*:*)
- FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
- F301:UNIX_System_V:*:*)
- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- i?86:BSD/386:*:* | *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- i*:CYGWIN*:*)
- echo i386-pc-cygwin32
- exit 0 ;;
- i*:MINGW*:*)
- echo i386-pc-mingw32
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin32
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us.
- ld_help_string=`ld --help 2>&1`
- ld_supported_emulations=`echo $ld_help_string \
- | sed -ne '/supported emulations:/!d
- s/[ ][ ]*/ /g
- s/.*supported emulations: *//
- s/ .*//
- p'`
- case "$ld_supported_emulations" in
- i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
- i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
- sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
- esac
-
- if test "${UNAME_MACHINE}" = "alpha" ; then
- sed 's/^ //' <<EOF >dummy.s
- .globl main
- .ent main
- main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
-EOF
- LIBC=""
- ${CC-cc} dummy.s -o dummy 2>/dev/null
- if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
- UNAME_MACHINE="alpha"
- ;;
- 15)
- UNAME_MACHINE="alphaev5"
- ;;
- 14)
- UNAME_MACHINE="alphaev56"
- ;;
- 10)
- UNAME_MACHINE="alphapca56"
- ;;
- 16)
- UNAME_MACHINE="alphaev6"
- ;;
- esac
-
- objdump --private-headers dummy | \
- grep ld.so.1 > /dev/null
- if test "$?" = 0 ; then
- LIBC="libc1"
- fi
- fi
- rm -f dummy.s dummy
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
- elif test "${UNAME_MACHINE}" = "mips" ; then
- cat >dummy.c <<EOF
-main(argc, argv)
- int argc;
- char *argv[];
-{
-#ifdef __MIPSEB__
- printf ("%s-unknown-linux-gnu\n", argv[1]);
-#endif
-#ifdef __MIPSEL__
- printf ("%sel-unknown-linux-gnu\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- else
- # Either a pre-BFD a.out linker (linux-gnuoldld)
- # or one that does not give us useful --help.
- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
- # If ld does not provide *any* "supported emulations:"
- # that means it is gnuoldld.
- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-
- case "${UNAME_MACHINE}" in
- i?86)
- VENDOR=pc;
- ;;
- *)
- VENDOR=unknown;
- ;;
- esac
- # Determine whether the default compiler is a.out or elf
- cat >dummy.c <<EOF
-#include <features.h>
-main(argc, argv)
- int argc;
- char *argv[];
-{
-#ifdef __ELF__
-# ifdef __GLIBC__
-# if __GLIBC__ >= 2
- printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
-# else
- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
-# endif
-# else
- printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
-# endif
-#else
- printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
-# are messed up and put the nodename in both sysname and nodename.
- i?86:DYNIX/ptx:4*:*)
- echo i386-sequent-sysv4
- exit 0 ;;
- i?86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- i?86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit 0 ;;
- pc:*:*:*)
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i386.
- echo i386-pc-msdosdjgpp
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3${OS_REL} && exit 0
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- m68*:LynxOS:2.*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i?86:LynxOS:2.*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit 0 ;;
- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit 0 ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit 0 ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- news*:NEWS-OS:*:6*)
- echo mips-sony-newsos6
- exit 0 ;;
- R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
-esac
-
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
-cat >dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
- /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
- I don't know.... */
- printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
- printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
- "4"
-#else
- ""
-#endif
- ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
- printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
- int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
- exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
- printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
- printf ("ns32k-encore-mach\n"); exit (0);
-#else
- printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
- printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
- printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
- printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
- struct utsname un;
-
- uname(&un);
-
- if (strncmp(un.version, "V2", 2) == 0) {
- printf ("i386-sequent-ptx2\n"); exit (0);
- }
- if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
- printf ("i386-sequent-ptx1\n"); exit (0);
- }
- printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-
-#if defined (alliant) && defined (i860)
- printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
- exit (1);
-}
-EOF
-
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
- case `getsysinfo -f cpu_type` in
- c1*)
- echo c1-convex-bsd
- exit 0 ;;
- c2*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- c34*)
- echo c34-convex-bsd
- exit 0 ;;
- c38*)
- echo c38-convex-bsd
- exit 0 ;;
- c4*)
- echo c4-convex-bsd
- exit 0 ;;
- esac
-fi
-
-#echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/libjpegtwrp/config.sub b/libjpegtwrp/config.sub
deleted file mode 100755
index 213a6d4..0000000
--- a/libjpegtwrp/config.sub
+++ /dev/null
@@ -1,954 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
-
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- linux-gnu*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple)
- os=
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco5)
- os=sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
- | arme[lb] | pyramid | mn10200 | mn10300 \
- | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
- | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
- | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
- | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
- | mipstx39 | mipstx39el \
- | sparc | sparclet | sparclite | sparc64 | v850)
- basic_machine=$basic_machine-unknown
- ;;
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i[3456]86)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \
- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
- | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \
- | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
- | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
- | sparc64-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mipstx39-* | mipstx39el-* \
- | f301-*)
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-cbm
- ;;
- amigaos | amigados)
- basic_machine=m68k-cbm
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-cbm
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- cray2)
- basic_machine=cray2-cray
- os=-unicos
- ;;
- [ctj]90-cray)
- basic_machine=c90-cray
- os=-unicos
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- os=-mvs
- ;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i[3456]86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i[3456]86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i[3456]86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i[3456]86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- mipsel*-linux*)
- basic_machine=mipsel-unknown
- os=-linux-gnu
- ;;
- mips*-linux*)
- basic_machine=mips-unknown
- os=-linux-gnu
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pentium | p5)
- basic_machine=i586-intel
- ;;
- pentiumpro | p6)
- basic_machine=i686-intel
- ;;
- pentium-* | p5-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- k5)
- # We don't have specific support for AMD's K5 yet, so just call it a Pentium
- basic_machine=i586-amd
- ;;
- nexen)
- # We don't have specific support for Nexgen yet, so just call it a Pentium
- basic_machine=i586-nexgen
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=rs6000-ibm
- ;;
- ppc) basic_machine=powerpc-unknown
- ;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- xmp)
- basic_machine=xmp-cray
- os=-unicos
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- mips)
- if [ x$os = x-linux-gnu ]; then
- basic_machine=mips-unknown
- else
- basic_machine=mips-mips
- fi
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sparc)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -xenix)
- os=-xenix
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-semi)
- os=-aout
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-ibm)
- os=-aix
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f301-fujitsu)
- os=-uxpv
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -aix*)
- vendor=ibm
- ;;
- -hpux*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -vxsim* | -vxworks*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
diff --git a/libjpegtwrp/configure b/libjpegtwrp/configure
deleted file mode 100755
index 35c9db5..0000000
--- a/libjpegtwrp/configure
+++ /dev/null
@@ -1,2011 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
- --enable-shared build shared library using GNU libtool"
-ac_help="$ac_help
- --enable-static build static library using GNU libtool"
-ac_help="$ac_help
- --enable-maxmem[=N] enable use of temp files, set max mem usage to N MB"
-ac_help="$ac_help
-"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.12"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *=*)
- varname=`echo "$ac_option"|sed -e 's/=.*//'`
- # Reject names that aren't valid shell variable names.
- if test -n "`echo $varname| sed 's/[a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $varname: invalid shell variable name" 1>&2; exit 1; }
- fi
- val="`echo "$ac_option"|sed 's/[^=]*=//'`"
- test -n "$verbose" && echo " setting shell variable $varname to $val"
- eval "$varname='$val'"
- eval "export $varname" ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=jcmaster.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:538: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:567: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- ac_prog_rejected=no
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:615: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext <<EOF
-#line 625 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:649: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:654: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
- test "${CFLAGS+set}" = set || CFLAGS="-O2"
-else
- GCC=
- test "${CFLAGS+set}" = set || CFLAGS="-O"
-fi
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:681: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 696 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 713 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-echo $ac_n "checking for function prototypes""... $ac_c" 1>&6
-echo "configure:742: checking for function prototypes" >&5
-if eval "test \"`echo '$''{'ijg_cv_have_prototypes'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 747 "configure"
-#include "confdefs.h"
-
-int testfunction (int arg1, int * arg2); /* check prototypes */
-struct methods_struct { /* check method-pointer declarations */
- int (*error_exit) (char *msgtext);
- int (*trace_message) (char *msgtext);
- int (*another_method) (void);
-};
-int testfunction (int arg1, int * arg2) /* check definitions */
-{ return arg2[arg1]; }
-int test2function (void) /* check void arg list */
-{ return 0; }
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ijg_cv_have_prototypes=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ijg_cv_have_prototypes=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ijg_cv_have_prototypes" 1>&6
-if test $ijg_cv_have_prototypes = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_PROTOTYPES
-EOF
-
-else
- echo Your compiler does not seem to know about function prototypes.
- echo Perhaps it needs a special switch to enable ANSI C mode.
- echo If so, we recommend running configure like this:
- echo " ./configure CC='cc -switch'"
- echo where -switch is the proper switch.
-fi
-ac_safe=`echo "stddef.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for stddef.h""... $ac_c" 1>&6
-echo "configure:792: checking for stddef.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 797 "configure"
-#include "confdefs.h"
-#include <stddef.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:802: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_STDDEF_H
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
-ac_safe=`echo "stdlib.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for stdlib.h""... $ac_c" 1>&6
-echo "configure:828: checking for stdlib.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 833 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define HAVE_STDLIB_H
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
-ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for string.h""... $ac_c" 1>&6
-echo "configure:864: checking for string.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 869 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define NEED_BSD_STRINGS
-EOF
-
-fi
-
-echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:900: checking for size_t" >&5
-cat > conftest.$ac_ext <<EOF
-#line 902 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#ifdef NEED_BSD_STRINGS
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-typedef size_t my_size_t;
-
-int main() {
- my_size_t foovar;
-; return 0; }
-EOF
-if { (eval echo configure:923: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ijg_size_t_ok=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ijg_size_t_ok="not ANSI, perhaps it is in sys/types.h"
-fi
-rm -f conftest*
-echo "$ac_t""$ijg_size_t_ok" 1>&6
-if test "$ijg_size_t_ok" != yes; then
-ac_safe=`echo "sys/types.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for sys/types.h""... $ac_c" 1>&6
-echo "configure:937: checking for sys/types.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 942 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define NEED_SYS_TYPES_H
-EOF
-
-cat > conftest.$ac_ext <<EOF
-#line 968 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "size_t" >/dev/null 2>&1; then
- rm -rf conftest*
- ijg_size_t_ok="size_t is in sys/types.h"
-else
- rm -rf conftest*
- ijg_size_t_ok=no
-fi
-rm -f conftest*
-
-else
- echo "$ac_t""no" 1>&6
-ijg_size_t_ok=no
-fi
-
-echo "$ac_t""$ijg_size_t_ok" 1>&6
-if test "$ijg_size_t_ok" = no; then
- echo Type size_t is not defined in any of the usual places.
- echo Try putting '"typedef unsigned int size_t;"' in jconfig.h.
-fi
-fi
-echo $ac_n "checking for type unsigned char""... $ac_c" 1>&6
-echo "configure:994: checking for type unsigned char" >&5
-cat > conftest.$ac_ext <<EOF
-#line 996 "configure"
-#include "confdefs.h"
-
-int main() {
- unsigned char un_char;
-; return 0; }
-EOF
-if { (eval echo configure:1003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""yes" 1>&6
-cat >> confdefs.h <<\EOF
-#define HAVE_UNSIGNED_CHAR
-EOF
-
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
-fi
-rm -f conftest*
-echo $ac_n "checking for type unsigned short""... $ac_c" 1>&6
-echo "configure:1018: checking for type unsigned short" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
-#include "confdefs.h"
-
-int main() {
- unsigned short un_short;
-; return 0; }
-EOF
-if { (eval echo configure:1027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""yes" 1>&6
-cat >> confdefs.h <<\EOF
-#define HAVE_UNSIGNED_SHORT
-EOF
-
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
-fi
-rm -f conftest*
-echo $ac_n "checking for type void""... $ac_c" 1>&6
-echo "configure:1042: checking for type void" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1044 "configure"
-#include "confdefs.h"
-
-/* Caution: a C++ compiler will insist on valid prototypes */
-typedef void * void_ptr; /* check void * */
-#ifdef HAVE_PROTOTYPES /* check ptr to function returning void */
-typedef void (*void_func) (int a, int b);
-#else
-typedef void (*void_func) ();
-#endif
-
-#ifdef HAVE_PROTOTYPES /* check void function result */
-void test3function (void_ptr arg1, void_func arg2)
-#else
-void test3function (arg1, arg2)
- void_ptr arg1;
- void_func arg2;
-#endif
-{
- char * locptr = (char *) arg1; /* check casting to and from void * */
- arg1 = (void *) locptr;
- (*arg2) (1, 2); /* check call of fcn returning void */
-}
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:1072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""yes" 1>&6
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define void char
-EOF
-
-fi
-rm -f conftest*
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1088: checking for working const" >&5
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1093 "configure"
-#include "confdefs.h"
-
-int main() {
-
-/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this. */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this. */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in an arm
- of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:1142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_c_const=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
- cat >> confdefs.h <<\EOF
-#define const
-EOF
-
-fi
-
-echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1163: checking for inline" >&5
-ijg_cv_inline=""
-cat > conftest.$ac_ext <<EOF
-#line 1166 "configure"
-#include "confdefs.h"
-
-int main() {
-} __inline__ int foo() { return 0; }
-int bar() { return foo();
-; return 0; }
-EOF
-if { (eval echo configure:1174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ijg_cv_inline="__inline__"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cat > conftest.$ac_ext <<EOF
-#line 1182 "configure"
-#include "confdefs.h"
-
-int main() {
-} __inline int foo() { return 0; }
-int bar() { return foo();
-; return 0; }
-EOF
-if { (eval echo configure:1190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ijg_cv_inline="__inline"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cat > conftest.$ac_ext <<EOF
-#line 1198 "configure"
-#include "confdefs.h"
-
-int main() {
-} inline int foo() { return 0; }
-int bar() { return foo();
-; return 0; }
-EOF
-if { (eval echo configure:1206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ijg_cv_inline="inline"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-echo "$ac_t""$ijg_cv_inline" 1>&6
-cat >> confdefs.h <<EOF
-#define INLINE $ijg_cv_inline
-EOF
-
-echo $ac_n "checking for broken incomplete types""... $ac_c" 1>&6
-echo "configure:1224: checking for broken incomplete types" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1226 "configure"
-#include "confdefs.h"
- typedef struct undefined_structure * undef_struct_ptr;
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:1233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- echo "$ac_t""ok" 1>&6
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""broken" 1>&6
-cat >> confdefs.h <<\EOF
-#define INCOMPLETE_TYPES_BROKEN
-EOF
-
-fi
-rm -f conftest*
-echo $ac_n "checking for short external names""... $ac_c" 1>&6
-echo "configure:1248: checking for short external names" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1250 "configure"
-#include "confdefs.h"
-
-int possibly_duplicate_function () { return 0; }
-int possibly_dupli_function () { return 1; }
-
-int main() {
-
-; return 0; }
-EOF
-if { (eval echo configure:1260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- rm -rf conftest*
- echo "$ac_t""ok" 1>&6
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""short" 1>&6
-cat >> confdefs.h <<\EOF
-#define NEED_SHORT_EXTERNAL_NAMES
-EOF
-
-fi
-rm -f conftest*
-echo $ac_n "checking to see if char is signed""... $ac_c" 1>&6
-echo "configure:1275: checking to see if char is signed" >&5
-if test "$cross_compiling" = yes; then
- echo Assuming that char is signed on target machine.
-echo If it is unsigned, this will be a little bit inefficient.
-
-else
- cat > conftest.$ac_ext <<EOF
-#line 1282 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_PROTOTYPES
-int is_char_signed (int arg)
-#else
-int is_char_signed (arg)
- int arg;
-#endif
-{
- if (arg == 189) { /* expected result for unsigned char */
- return 0; /* type char is unsigned */
- }
- else if (arg != -67) { /* expected result for signed char */
- printf("Hmm, it seems 'char' is not eight bits wide on your machine.\n");
- printf("I fear the JPEG software will not work at all.\n\n");
- }
- return 1; /* assume char is signed otherwise */
-}
-char signed_char_check = (char) (-67);
-main() {
- exit(is_char_signed((int) signed_char_check));
-}
-EOF
-if { (eval echo configure:1306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define CHAR_IS_UNSIGNED
-EOF
-
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- echo "$ac_t""yes" 1>&6
-fi
-rm -fr conftest*
-fi
-
-echo $ac_n "checking to see if right shift is signed""... $ac_c" 1>&6
-echo "configure:1323: checking to see if right shift is signed" >&5
-if test "$cross_compiling" = yes; then
- echo "$ac_t""Assuming that right shift is signed on target machine." 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1328 "configure"
-#include "confdefs.h"
-
-#ifdef HAVE_PROTOTYPES
-int is_shifting_signed (long arg)
-#else
-int is_shifting_signed (arg)
- long arg;
-#endif
-/* See whether right-shift on a long is signed or not. */
-{
- long res = arg >> 4;
-
- if (res == -0x7F7E80CL) { /* expected result for signed shift */
- return 1; /* right shift is signed */
- }
- /* see if unsigned-shift hack will fix it. */
- /* we can't just test exact value since it depends on width of long... */
- res |= (~0L) << (32-4);
- if (res == -0x7F7E80CL) { /* expected result now? */
- return 0; /* right shift is unsigned */
- }
- printf("Right shift isn't acting as I expect it to.\n");
- printf("I fear the JPEG software will not work at all.\n\n");
- return 0; /* try it with unsigned anyway */
-}
-main() {
- exit(is_shifting_signed(-0x7F7E80B1L));
-}
-EOF
-if { (eval echo configure:1358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define RIGHT_SHIFT_IS_UNSIGNED
-EOF
-
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- echo "$ac_t""yes" 1>&6
-fi
-rm -fr conftest*
-fi
-
-echo $ac_n "checking to see if fopen accepts b spec""... $ac_c" 1>&6
-echo "configure:1375: checking to see if fopen accepts b spec" >&5
-if test "$cross_compiling" = yes; then
- echo "$ac_t""Assuming that it does." 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1380 "configure"
-#include "confdefs.h"
-
-#include <stdio.h>
-main() {
- if (fopen("conftestdata", "wb") != NULL)
- exit(0);
- exit(1);
-}
-EOF
-if { (eval echo configure:1390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
- echo "$ac_t""yes" 1>&6
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define DONT_USE_B_MODE
-EOF
-
-fi
-rm -fr conftest*
-fi
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1436: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- for ac_prog in ginstall installbsd scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- # OSF/1 installbsd also uses dspmsg, but is usable.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1488: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="ranlib"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-# Decide whether to use libtool,
-# and if so whether to build shared, static, or both flavors of library.
-LTSHARED="no"
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
- enableval="$enable_shared"
- LTSHARED="$enableval"
-fi
-
-LTSTATIC="no"
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
- enableval="$enable_static"
- LTSTATIC="$enableval"
-fi
-
-if test "x$LTSHARED" != xno -o "x$LTSTATIC" != xno; then
- USELIBTOOL="yes"
- LIBTOOL="./libtool"
- O="lo"
- A="la"
- LN='$(LIBTOOL) --mode=link $(CC)'
- INSTALL_LIB='$(LIBTOOL) --mode=install ${INSTALL}'
- INSTALL_PROGRAM="\$(LIBTOOL) --mode=install $INSTALL_PROGRAM"
-else
- USELIBTOOL="no"
- LIBTOOL=""
- O="o"
- A="a"
- LN='$(CC)'
- INSTALL_LIB="$INSTALL_DATA"
-fi
-
-
-
-
-
-
-# Configure libtool if needed.
-if test $USELIBTOOL = yes; then
- disable_shared=
- disable_static=
- if test "x$LTSHARED" = xno; then
- disable_shared="--disable-shared"
- fi
- if test "x$LTSTATIC" = xno; then
- disable_static="--disable-static"
- fi
- $srcdir/ltconfig $disable_shared $disable_static $srcdir/ltmain.sh
-fi
-
-# Select memory manager depending on user input.
-# If no "-enable-maxmem", use jmemnobs
-MEMORYMGR='jmemnobs.$(O)'
-MAXMEM="no"
-# Check whether --enable-maxmem or --disable-maxmem was given.
-if test "${enable_maxmem+set}" = set; then
- enableval="$enable_maxmem"
- MAXMEM="$enableval"
-fi
-
-# support --with-maxmem for backwards compatibility with IJG V5.
-# Check whether --with-maxmem or --without-maxmem was given.
-if test "${with_maxmem+set}" = set; then
- withval="$with_maxmem"
- MAXMEM="$withval"
-fi
-
-if test "x$MAXMEM" = xyes; then
- MAXMEM=1
-fi
-if test "x$MAXMEM" != xno; then
- if test -n "`echo $MAXMEM | sed 's/[0-9]//g'`"; then
- { echo "configure: error: non-numeric argument to --enable-maxmem" 1>&2; exit 1; }
- fi
- DEFAULTMAXMEM=`expr $MAXMEM \* 1048576`
-cat >> confdefs.h <<EOF
-#define DEFAULT_MAX_MEM ${DEFAULTMAXMEM}
-EOF
-
-echo $ac_n "checking for 'tmpfile()'""... $ac_c" 1>&6
-echo "configure:1596: checking for 'tmpfile()'" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1598 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-int main() {
- FILE * tfile = tmpfile();
-; return 0; }
-EOF
-if { (eval echo configure:1605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- rm -rf conftest*
- echo "$ac_t""yes" 1>&6
-MEMORYMGR='jmemansi.$(O)'
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
-MEMORYMGR='jmemname.$(O)'
-cat >> confdefs.h <<\EOF
-#define NEED_SIGNAL_CATCHER
-EOF
-
-echo $ac_n "checking for 'mktemp()'""... $ac_c" 1>&6
-echo "configure:1620: checking for 'mktemp()'" >&5
-cat > conftest.$ac_ext <<EOF
-#line 1622 "configure"
-#include "confdefs.h"
-
-int main() {
- char fname[80]; mktemp(fname);
-; return 0; }
-EOF
-if { (eval echo configure:1629: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- rm -rf conftest*
- echo "$ac_t""yes" 1>&6
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- echo "$ac_t""no" 1>&6
-cat >> confdefs.h <<\EOF
-#define NO_MKTEMP
-EOF
-
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-
-
-# Extract the library version ID from jpeglib.h.
-echo $ac_n "checking libjpeg version number""... $ac_c" 1>&6
-echo "configure:1650: checking libjpeg version number" >&5
-JPEG_LIB_VERSION=`sed -e '/^#define JPEG_LIB_VERSION/!d' -e 's/^[^0-9]*\([0-9][0-9]*\).*$/\1/' $srcdir/jpeglib.h`
-echo "$ac_t""$JPEG_LIB_VERSION" 1>&6
-
-
-# Prepare to massage makefile.cfg correctly.
-if test $ijg_cv_have_prototypes = yes; then
- A2K_DEPS=""
- COM_A2K="# "
-else
- A2K_DEPS="ansi2knr"
- COM_A2K=""
-fi
-
-
-# ansi2knr needs -DBSD if string.h is missing
-if test $ac_cv_header_string_h = no; then
- ANSI2KNRFLAGS="-DBSD"
-else
- ANSI2KNRFLAGS=""
-fi
-
-# Substitutions to enable or disable libtool-related stuff
-if test $USELIBTOOL = yes -a $ijg_cv_have_prototypes = yes; then
- COM_LT=""
-else
- COM_LT="# "
-fi
-
-if test "x$LTSHARED" != xno; then
- FORCE_INSTALL_LIB="install-lib"
-else
- FORCE_INSTALL_LIB=""
-fi
-
-# Set up -I directives
-if test "x$srcdir" = x.; then
- INCLUDEFLAGS='-I$(srcdir)'
-else
- INCLUDEFLAGS='-I. -I$(srcdir)'
-fi
-
-trap '' 1 2 15
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.12"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile:makefile.cfg jconfig.h:jconfig.cfg" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@RANLIB@%$RANLIB%g
-s%@LIBTOOL@%$LIBTOOL%g
-s%@O@%$O%g
-s%@A@%$A%g
-s%@LN@%$LN%g
-s%@INSTALL_LIB@%$INSTALL_LIB%g
-s%@MEMORYMGR@%$MEMORYMGR%g
-s%@JPEG_LIB_VERSION@%$JPEG_LIB_VERSION%g
-s%@A2K_DEPS@%$A2K_DEPS%g
-s%@COM_A2K@%$COM_A2K%g
-s%@ANSI2KNRFLAGS@%$ANSI2KNRFLAGS%g
-s%@COM_LT@%$COM_LT%g
-s%@FORCE_INSTALL_LIB@%$FORCE_INSTALL_LIB%g
-s%@INCLUDEFLAGS@%$INCLUDEFLAGS%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile:makefile.cfg"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='\([ ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
- CONFIG_HEADERS="jconfig.h:jconfig.cfg"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- echo creating $ac_file
-
- rm -f conftest.frag conftest.in conftest.out
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h. And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
- ac_lines=`grep -c . conftest.vals`
- # grep -c gives empty output for an empty file on some AIX systems.
- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
- # Write a limited-size here document to conftest.frag.
- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
- echo 'CEOF
- sed -f conftest.frag conftest.in > conftest.out
- rm -f conftest.in
- mv conftest.out conftest.in
-' >> $CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
- rm -f conftest.vals
- mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
- rm -f conftest.frag conftest.h
- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
- cat conftest.in >> conftest.h
- rm -f conftest.in
- if cmp -s $ac_file conftest.h 2>/dev/null; then
- echo "$ac_file is unchanged"
- rm -f conftest.h
- else
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- fi
- rm -f $ac_file
- mv conftest.h $ac_file
- fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/libjpegtwrp/djpeg.1 b/libjpegtwrp/djpeg.1
deleted file mode 100644
index 11beb6a..0000000
--- a/libjpegtwrp/djpeg.1
+++ /dev/null
@@ -1,253 +0,0 @@
-.TH DJPEG 1 "22 August 1997"
-.SH NAME
-djpeg \- decompress a JPEG file to an image file
-.SH SYNOPSIS
-.B djpeg
-[
-.I options
-]
-[
-.I filename
-]
-.LP
-.SH DESCRIPTION
-.LP
-.B djpeg
-decompresses the named JPEG file, or the standard input if no file is named,
-and produces an image file on the standard output. PBMPLUS (PPM/PGM), BMP,
-GIF, Targa, or RLE (Utah Raster Toolkit) output format can be selected.
-(RLE is supported only if the URT library is available.)
-.SH OPTIONS
-All switch names may be abbreviated; for example,
-.B \-grayscale
-may be written
-.B \-gray
-or
-.BR \-gr .
-Most of the "basic" switches can be abbreviated to as little as one letter.
-Upper and lower case are equivalent (thus
-.B \-BMP
-is the same as
-.BR \-bmp ).
-British spellings are also accepted (e.g.,
-.BR \-greyscale ),
-though for brevity these are not mentioned below.
-.PP
-The basic switches are:
-.TP
-.BI \-colors " N"
-Reduce image to at most N colors. This reduces the number of colors used in
-the output image, so that it can be displayed on a colormapped display or
-stored in a colormapped file format. For example, if you have an 8-bit
-display, you'd need to reduce to 256 or fewer colors.
-.TP
-.BI \-quantize " N"
-Same as
-.BR \-colors .
-.B \-colors
-is the recommended name,
-.B \-quantize
-is provided only for backwards compatibility.
-.TP
-.B \-fast
-Select recommended processing options for fast, low quality output. (The
-default options are chosen for highest quality output.) Currently, this is
-equivalent to \fB\-dct fast \-nosmooth \-onepass \-dither ordered\fR.
-.TP
-.B \-grayscale
-Force gray-scale output even if JPEG file is color. Useful for viewing on
-monochrome displays; also,
-.B djpeg
-runs noticeably faster in this mode.
-.TP
-.BI \-scale " M/N"
-Scale the output image by a factor M/N. Currently the scale factor must be
-1/1, 1/2, 1/4, or 1/8. Scaling is handy if the image is larger than your
-screen; also,
-.B djpeg
-runs much faster when scaling down the output.
-.TP
-.B \-bmp
-Select BMP output format (Windows flavor). 8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-gif
-Select GIF output format. Since GIF does not support more than 256 colors,
-.B \-colors 256
-is assumed (unless you specify a smaller number of colors).
-.TP
-.B \-os2
-Select BMP output format (OS/2 1.x flavor). 8-bit colormapped format is
-emitted if
-.B \-colors
-or
-.B \-grayscale
-is specified, or if the JPEG file is gray-scale; otherwise, 24-bit full-color
-format is emitted.
-.TP
-.B \-pnm
-Select PBMPLUS (PPM/PGM) output format (this is the default format).
-PGM is emitted if the JPEG file is gray-scale or if
-.B \-grayscale
-is specified; otherwise PPM is emitted.
-.TP
-.B \-rle
-Select RLE output format. (Requires URT library.)
-.TP
-.B \-targa
-Select Targa output format. Gray-scale format is emitted if the JPEG file is
-gray-scale or if
-.B \-grayscale
-is specified; otherwise, colormapped format is emitted if
-.B \-colors
-is specified; otherwise, 24-bit full-color format is emitted.
-.PP
-Switches for advanced users:
-.TP
-.B \-dct int
-Use integer DCT method (default).
-.TP
-.B \-dct fast
-Use fast integer DCT (less accurate).
-.TP
-.B \-dct float
-Use floating-point DCT method.
-The float method is very slightly more accurate than the int method, but is
-much slower unless your machine has very fast floating-point hardware. Also
-note that results of the floating-point method may vary slightly across
-machines, while the integer methods should give the same results everywhere.
-The fast integer method is much less accurate than the other two.
-.TP
-.B \-dither fs
-Use Floyd-Steinberg dithering in color quantization.
-.TP
-.B \-dither ordered
-Use ordered dithering in color quantization.
-.TP
-.B \-dither none
-Do not use dithering in color quantization.
-By default, Floyd-Steinberg dithering is applied when quantizing colors; this
-is slow but usually produces the best results. Ordered dither is a compromise
-between speed and quality; no dithering is fast but usually looks awful. Note
-that these switches have no effect unless color quantization is being done.
-Ordered dither is only available in
-.B \-onepass
-mode.
-.TP
-.BI \-map " file"
-Quantize to the colors used in the specified image file. This is useful for
-producing multiple files with identical color maps, or for forcing a
-predefined set of colors to be used. The
-.I file
-must be a GIF or PPM file. This option overrides
-.B \-colors
-and
-.BR \-onepass .
-.TP
-.B \-nosmooth
-Use a faster, lower-quality upsampling routine.
-.TP
-.B \-onepass
-Use one-pass instead of two-pass color quantization. The one-pass method is
-faster and needs less memory, but it produces a lower-quality image.
-.B \-onepass
-is ignored unless you also say
-.B \-colors
-.IR N .
-Also, the one-pass method is always used for gray-scale output (the two-pass
-method is no improvement then).
-.TP
-.BI \-maxmemory " N"
-Set limit for amount of memory to use in processing large images. Value is
-in thousands of bytes, or millions of bytes if "M" is attached to the
-number. For example,
-.B \-max 4m
-selects 4000000 bytes. If more space is needed, temporary files will be used.
-.TP
-.BI \-outfile " name"
-Send output image to the named file, not to standard output.
-.TP
-.B \-verbose
-Enable debug printout. More
-.BR \-v 's
-give more output. Also, version information is printed at startup.
-.TP
-.B \-debug
-Same as
-.BR \-verbose .
-.SH EXAMPLES
-.LP
-This example decompresses the JPEG file foo.jpg, quantizes it to
-256 colors, and saves the output in 8-bit BMP format in foo.bmp:
-.IP
-.B djpeg \-colors 256 \-bmp
-.I foo.jpg
-.B >
-.I foo.bmp
-.SH HINTS
-To get a quick preview of an image, use the
-.B \-grayscale
-and/or
-.B \-scale
-switches.
-.B \-grayscale \-scale 1/8
-is the fastest case.
-.PP
-Several options are available that trade off image quality to gain speed.
-.B \-fast
-turns on the recommended settings.
-.PP
-.B \-dct fast
-and/or
-.B \-nosmooth
-gain speed at a small sacrifice in quality.
-When producing a color-quantized image,
-.B \-onepass \-dither ordered
-is fast but much lower quality than the default behavior.
-.B \-dither none
-may give acceptable results in two-pass mode, but is seldom tolerable in
-one-pass mode.
-.PP
-If you are fortunate enough to have very fast floating point hardware,
-\fB\-dct float\fR may be even faster than \fB\-dct fast\fR. But on most
-machines \fB\-dct float\fR is slower than \fB\-dct int\fR; in this case it is
-not worth using, because its theoretical accuracy advantage is too small to be
-significant in practice.
-.SH ENVIRONMENT
-.TP
-.B JPEGMEM
-If this environment variable is set, its value is the default memory limit.
-The value is specified as described for the
-.B \-maxmemory
-switch.
-.B JPEGMEM
-overrides the default value specified when the program was compiled, and
-itself is overridden by an explicit
-.BR \-maxmemory .
-.SH SEE ALSO
-.BR cjpeg (1),
-.BR jpegtran (1),
-.BR rdjpgcom (1),
-.BR wrjpgcom (1)
-.br
-.BR ppm (5),
-.BR pgm (5)
-.br
-Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.
-.SH AUTHOR
-Independent JPEG Group
-.SH BUGS
-Arithmetic coding is not supported for legal reasons.
-.PP
-To avoid the Unisys LZW patent,
-.B djpeg
-produces uncompressed GIF files. These are larger than they should be, but
-are readable by standard GIF decoders.
-.PP
-Still not as fast as we'd like.
diff --git a/libjpegtwrp/djpeg.c b/libjpegtwrp/djpeg.c
deleted file mode 100644
index e099e90..0000000
--- a/libjpegtwrp/djpeg.c
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * djpeg.c
- *
- * Copyright (C) 1991-1997, Thomas G. Lane.
- * This file is part of the Independent JPEG Group's software.
- * For conditions of distribution and use, see the accompanying README file.
- *
- * This file contains a command-line user interface for the JPEG decompressor.
- * It should work on any system with Unix- or MS-DOS-style command lines.
- *
- * Two different command line styles are permitted, depending on the
- * compile-time switch TWO_FILE_COMMANDLINE:
- * djpeg [options] inputfile outputfile
- * djpeg [options] [inputfile]
- * In the second style, output is always to standard output, which you'd
- * normally redirect to a file or pipe to some other program. Input is
- * either from a named file or from standard input (typically redirected).
- * The second style is convenient on Unix but is unhelpful on systems that
- * don't support pipes. Also, you MUST use the first style if your system
- * doesn't do binary I/O to stdin/stdout.
- * To simplify script writing, the "-outfile" switch is provided. The syntax
- * djpeg [options] -outfile outputfile inputfile
- * works regardless of which command line style is used.
- */
-
-#include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */
-#include "jversion.h" /* for version message */
-
-#include <ctype.h> /* to declare isprint() */
-
-#ifdef USE_CCOMMAND /* command-line reader for Macintosh */
-#ifdef __MWERKS__
-#include <SIOUX.h> /* Metrowerks needs this */
-#include <console.h> /* ... and this */
-#endif
-#ifdef THINK_C
-#include <console.h> /* Think declares it here */
-#endif
-#endif
-
-
-/* Create the add-on message string table. */
-
-#define JMESSAGE(code,string) string ,
-
-static const char * const cdjpeg_message_table[] = {
-#include "cderror.h"
- NULL
-};
-
-
-/*
- * This list defines the known output image formats
- * (not all of which need be supported by a given version).
- * You can change the default output format by defining DEFAULT_FMT;
- * indeed, you had better do so if you undefine PPM_SUPPORTED.
- */
-
-typedef enum {
- FMT_BMP, /* BMP format (Windows flavor) */
- FMT_GIF, /* GIF format */
- FMT_OS2, /* BMP format (OS/2 flavor) */
- FMT_PPM, /* PPM/PGM (PBMPLUS formats) */
- FMT_RLE, /* RLE format */
- FMT_TARGA, /* Targa format */
- FMT_TIFF /* TIFF format */
-} IMAGE_FORMATS;
-
-#ifndef DEFAULT_FMT /* so can override from CFLAGS in Makefile */
-#define DEFAULT_FMT FMT_PPM
-#endif
-
-static IMAGE_FORMATS requested_fmt;
-
-
-/*
- * Argument-parsing code.
- * The switch parser is designed to be useful with DOS-style command line
- * syntax, ie, intermixed switches and file names, where only the switches
- * to the left of a given file name affect processing of that file.
- * The main program in this file doesn't actually use this capability...
- */
-
-
-static const char * progname; /* program name for error messages */
-static char * outfilename; /* for -outfile switch */
-
-
-LOCAL(void)
-usage (void)
-/* complain about bad command line */
-{
- fprintf(stderr, "usage: %s [switches] ", progname);
-#ifdef TWO_FILE_COMMANDLINE
- fprintf(stderr, "inputfile outputfile\n");
-#else
- fprintf(stderr, "[inputfile]\n");
-#endif
-
- fprintf(stderr, "Switches (names may be abbreviated):\n");
- fprintf(stderr, " -colors N Reduce image to no more than N colors\n");
- fprintf(stderr, " -fast Fast, low-quality processing\n");
- fprintf(stderr, " -grayscale Force grayscale output\n");
-#ifdef IDCT_SCALING_SUPPORTED
- fprintf(stderr, " -scale M/N Scale output image by fraction M/N, eg, 1/8\n");
-#endif
-#ifdef BMP_SUPPORTED
- fprintf(stderr, " -bmp Select BMP output format (Windows style)%s\n",
- (DEFAULT_FMT == FMT_BMP ? " (default)" : ""));
-#endif
-#ifdef GIF_SUPPORTED
- fprintf(stderr, " -gif Select GIF output format%s\n",
- (DEFAULT_FMT == FMT_GIF ? " (default)" : ""));
-#endif
-#ifdef BMP_SUPPORTED
- fprintf(stderr, " -os2 Select BMP output format (OS/2 style)%s\n",
- (DEFAULT_FMT == FMT_OS2 ? " (default)" : ""));
-#endif
-#ifdef PPM_SUPPORTED
- fprintf(stderr, " -pnm Select PBMPLUS (PPM/PGM) output format%s\n",
- (DEFAULT_FMT == FMT_PPM ? " (default)" : ""));
-#endif
-#ifdef RLE_SUPPORTED
- fprintf(stderr, " -rle Select Utah RLE output format%s\n",
- (DEFAULT_FMT == FMT_RLE ? " (default)" : ""));
-#endif
-#ifdef TARGA_SUPPORTED
- fprintf(stderr, " -targa Select Targa output format%s\n",
- (DEFAULT_FMT == FMT_TARGA ? " (default)" : ""));
-#endif
- fprintf(stderr, "Switches for advanced users:\n");
-#ifdef DCT_ISLOW_SUPPORTED
- fprintf(stderr, " -dct int Use integer DCT method%s\n",
- (JDCT_DEFAULT == JDCT_ISLOW ? " (default)" : ""));
-#endif
-#ifdef DCT_IFAST_SUPPORTED
- fprintf(stderr, " -dct fast Use fast integer DCT (less accurate)%s\n",
- (JDCT_DEFAULT == JDCT_IFAST ? " (default)" : ""));
-#endif
-#ifdef DCT_FLOAT_SUPPORTED
- fprintf(stderr, " -dct float Use floating-point DCT method%s\n",
- (JDCT_DEFAULT == JDCT_FLOAT ? " (default)" : ""));
-#endif
- fprintf(stderr, " -dither fs Use F-S dithering (default)\n");
- fprintf(stderr, " -dither none Don't use dithering in quantization\n");
- fprintf(stderr, " -dither ordered Use ordered dither (medium speed, quality)\n");
-#ifdef QUANT_2PASS_SUPPORTED
- fprintf(stderr, " -map FILE Map to colors used in named image file\n");
-#endif
- fprintf(stderr, " -nosmooth Don't use high-quality upsampling\n");
-#ifdef QUANT_1PASS_SUPPORTED
- fprintf(stderr, " -onepass Use 1-pass quantization (fast, low quality)\n");
-#endif
- fprintf(stderr, " -maxmemory N Maximum memory to use (in kbytes)\n");
- fprintf(stderr, " -outfile name Specify name for output file\n");
- fprintf(stderr, " -verbose or -debug Emit debug output\n");
- exit(EXIT_FAILURE);
-}
-
-
-LOCAL(int)
-parse_switches (j_decompress_ptr cinfo, int argc, char **argv,
- int last_file_arg_seen, boolean for_real)
-/* Parse optional switches.
- * Returns argv[] index of first file-name argument (== argc if none).
- * Any file names with indexes <= last_file_arg_seen are ignored;
- * they have presumably been processed in a previous iteration.
- * (Pass 0 for last_file_arg_seen on the first or only iteration.)
- * for_real is FALSE on the first (dummy) pass; we may skip any expensive
- * processing.
- */
-{
- int argn;
- char * arg;
-
- /* Set up default JPEG parameters. */
- requested_fmt = DEFAULT_FMT; /* set default output file format */
- outfilename = NULL;
- cinfo->err->trace_level = 0;
-
- /* Scan command line options, adjust parameters */
-
- for (argn = 1; argn < argc; argn++) {
- arg = argv[argn];
- if (*arg != '-') {
- /* Not a switch, must be a file name argument */
- if (argn <= last_file_arg_seen) {
- outfilename = NULL; /* -outfile applies to just one input file */
- continue; /* ignore this name if previously processed */
- }
- break; /* else done parsing switches */
- }
- arg++; /* advance past switch marker character */
-
- if (keymatch(arg, "bmp", 1)) {
- /* BMP output format. */
- requested_fmt = FMT_BMP;
-
- } else if (keymatch(arg, "colors", 1) || keymatch(arg, "colours", 1) ||
- keymatch(arg, "quantize", 1) || keymatch(arg, "quantise", 1)) {
- /* Do color quantization. */
- int val;
-
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%d", &val) != 1)
- usage();
- cinfo->desired_number_of_colors = val;
- cinfo->quantize_colors = TRUE;
-
- } else if (keymatch(arg, "dct", 2)) {
- /* Select IDCT algorithm. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (keymatch(argv[argn], "int", 1)) {
- cinfo->dct_method = JDCT_ISLOW;
- } else if (keymatch(argv[argn], "fast", 2)) {
- cinfo->dct_method = JDCT_IFAST;
- } else if (keymatch(argv[argn], "float", 2)) {
- cinfo->dct_method = JDCT_FLOAT;
- } else
- usage();
-
- } else if (keymatch(arg, "dither", 2)) {
- /* Select dithering algorithm. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (keymatch(argv[argn], "fs", 2)) {
- cinfo->dither_mode = JDITHER_FS;
- } else if (keymatch(argv[argn], "none", 2)) {
- cinfo->dither_mode = JDITHER_NONE;
- } else if (keymatch(argv[argn], "ordered", 2)) {
- cinfo->dither_mode = JDITHER_ORDERED;
- } else
- usage();
-
- } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) {
- /* Enable debug printouts. */
- /* On first -d, print version identification */
- static boolean printed_version = FALSE;
-
- if (! printed_version) {
- fprintf(stderr, "Independent JPEG Group's DJPEG, version %s\n%s\n",
- JVERSION, JCOPYRIGHT);
- printed_version = TRUE;
- }
- cinfo->err->trace_level++;
-
- } else if (keymatch(arg, "fast", 1)) {
- /* Select recommended processing options for quick-and-dirty output. */
- cinfo->two_pass_quantize = FALSE;
- cinfo->dither_mode = JDITHER_ORDERED;
- if (! cinfo->quantize_colors) /* don't override an earlier -colors */
- cinfo->desired_number_of_colors = 216;
- cinfo->dct_method = JDCT_FASTEST;
- cinfo->do_fancy_upsampling = FALSE;
-
- } else if (keymatch(arg, "gif", 1)) {
- /* GIF output format. */
- requested_fmt = FMT_GIF;
-
- } else if (keymatch(arg, "grayscale", 2) || keymatch(arg, "greyscale",2)) {
- /* Force monochrome output. */
- cinfo->out_color_space = JCS_GRAYSCALE;
-
- } else if (keymatch(arg, "map", 3)) {
- /* Quantize to a color map taken from an input file. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (for_real) { /* too expensive to do twice! */
-#ifdef QUANT_2PASS_SUPPORTED /* otherwise can't quantize to supplied map */
- FILE * mapfile;
-
- if ((mapfile = fopen(argv[argn], READ_BINARY)) == NULL) {
- fprintf(stderr, "%s: can't open %s\n", progname, argv[argn]);
- exit(EXIT_FAILURE);
- }
- read_color_map(cinfo, mapfile);
- fclose(mapfile);
- cinfo->quantize_colors = TRUE;
-#else
- ERREXIT(cinfo, JERR_NOT_COMPILED);
-#endif
- }
-
- } else if (keymatch(arg, "maxmemory", 3)) {
- /* Maximum memory in Kb (or Mb with 'm'). */
- long lval;
- char ch = 'x';
-
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%ld%c", &lval, &ch) < 1)
- usage();
- if (ch == 'm' || ch == 'M')
- lval *= 1000L;
- cinfo->mem->max_memory_to_use = lval * 1000L;
-
- } else if (keymatch(arg, "nosmooth", 3)) {
- /* Suppress fancy upsampling */
- cinfo->do_fancy_upsampling = FALSE;
-
- } else if (keymatch(arg, "onepass", 3)) {
- /* Use fast one-pass quantization. */
- cinfo->two_pass_quantize = FALSE;
-
- } else if (keymatch(arg, "os2", 3)) {
- /* BMP output format (OS/2 flavor). */
- requested_fmt = FMT_OS2;
-
- } else if (keymatch(arg, "outfile", 4)) {
- /* Set output file name. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- outfilename = argv[argn]; /* save it away for later use */
-
- } else if (keymatch(arg, "pnm", 1) || keymatch(arg, "ppm", 1)) {
- /* PPM/PGM output format. */
- requested_fmt = FMT_PPM;
-
- } else if (keymatch(arg, "rle", 1)) {
- /* RLE output format. */
- requested_fmt = FMT_RLE;
-
- } else if (keymatch(arg, "scale", 1)) {
- /* Scale the output image by a fraction M/N. */
- if (++argn >= argc) /* advance to next argument */
- usage();
- if (sscanf(argv[argn], "%d/%d",
- &cinfo->scale_num, &cinfo->scale_denom) != 2)
- usage();
-
- } else if (keymatch(arg, "targa", 1)) {
- /* Targa output format. */
- requested_fmt = FMT_TARGA;
-
- } else {
- usage(); /* bogus switch */
- }
- }
-
- return argn; /* return index of next arg (file name) */
-}
-
-
-/*
- * Marker processor for COM and interesting APPn markers.
- * This replaces the library's built-in processor, which just skips the marker.
- * We want to print out the marker as text, to the extent possible.
- * Note this code relies on a non-suspending data source.
- */
-
-LOCAL(unsigned int)
-jpeg_getc (j_decompress_ptr cinfo)
-/* Read next byte */
-{
- struct jpeg_source_mgr * datasrc = cinfo->src;
-
- if (datasrc->bytes_in_buffer == 0) {
- if (! (*datasrc->fill_input_buffer) (cinfo))
- ERREXIT(cinfo, JERR_CANT_SUSPEND);
- }
- datasrc->bytes_in_buffer--;
- return GETJOCTET(*datasrc->next_input_byte++);
-}
-
-
-METHODDEF(boolean)
-print_text_marker (j_decompress_ptr cinfo)
-{
- boolean traceit = (cinfo->err->trace_level >= 1);
- INT32 length;
- unsigned int ch;
- unsigned int lastch = 0;
-
- length = jpeg_getc(cinfo) << 8;
- length += jpeg_getc(cinfo);
- length -= 2; /* discount the length word itself */
-
- if (traceit) {
- if (cinfo->unread_marker == JPEG_COM)
- fprintf(stderr, "Comment, length %ld:\n", (long) length);
- else /* assume it is an APPn otherwise */
- fprintf(stderr, "APP%d, length %ld:\n",
- cinfo->unread_marker - JPEG_APP0, (long) length);
- }
-
- while (--length >= 0) {
- ch = jpeg_getc(cinfo);
- if (traceit) {
- /* Emit the character in a readable form.
- * Nonprintables are converted to \nnn form,
- * while \ is converted to \\.
- * Newlines in CR, CR/LF, or LF form will be printed as one newline.
- */
- if (ch == '\r') {
- fprintf(stderr, "\n");
- } else if (ch == '\n') {
- if (lastch != '\r')
- fprintf(stderr, "\n");
- } else if (ch == '\\') {
- fprintf(stderr, "\\\\");
- } else if (isprint(ch)) {
- putc(ch, stderr);
- } else {
- fprintf(stderr, "\\%03o", ch);
- }
- lastch = ch;
- }
- }
-
- if (traceit)
- fprintf(stderr, "\n");
-
- return TRUE;
-}
-
-
-/*
- * The main program.
- */
-
-int
-main (int argc, char **argv)
-{
- struct jpeg_decompress_struct cinfo;
- struct jpeg_error_mgr jerr;
-#ifdef PROGRESS_REPORT
- struct cdjpeg_progress_mgr progress;
-#endif
- int file_index;
- djpeg_dest_ptr dest_mgr = NULL;
- FILE * input_file;
- FILE * output_file;
- JDIMENSION num_scanlines;
-
- /* On Mac, fetch a command line. */
-#ifdef USE_CCOMMAND
- argc = ccommand(&argv);
-#endif
-
- progname = argv[0];
- if (progname == NULL || progname[0] == 0)
- progname = "djpeg"; /* in case C library doesn't provide it */
-
- /* Initialize the JPEG decompression object with default error handling. */
- cinfo.err = jpeg_std_error(&jerr);
- jpeg_create_decompress(&cinfo);
- /* Add some application-specific error messages (from cderror.h) */
- jerr.addon_message_table = cdjpeg_message_table;
- jerr.first_addon_message = JMSG_FIRSTADDONCODE;
- jerr.last_addon_message = JMSG_LASTADDONCODE;
-
- /* Insert custom marker processor for COM and APP12.
- * APP12 is used by some digital camera makers for textual info,
- * so we provide the ability to display it as text.
- * If you like, additional APPn marker types can be selected for display,
- * but don't try to override APP0 or APP14 this way (see libjpeg.doc).
- */
- jpeg_set_marker_processor(&cinfo, JPEG_COM, print_text_marker);
- jpeg_set_marker_processor(&cinfo, JPEG_APP0+12, print_text_marker);
-
- /* Now safe to enable signal catcher. */
-#ifdef NEED_SIGNAL_CATCHER
- enable_signal_catcher((j_common_ptr) &cinfo);
-#endif
-
- /* Scan command line to find file names. */
- /* It is convenient to use just one switch-parsing routine, but the switch
- * values read here are ignored; we will rescan the switches after opening
- * the input file.
- * (Exception: tracing level set here controls verbosity for COM markers
- * found during jpeg_read_header...)
- */
-
- file_index = parse_switches(&cinfo, argc, argv, 0, FALSE);
-
-#ifdef TWO_FILE_COMMANDLINE
- /* Must have either -outfile switch or explicit output file name */
- if (outfilename == NULL) {
- if (file_index != argc-2) {
- fprintf(stderr, "%s: must name one input and one output file\n",
- progname);
- usage();
- }
- outfilename = argv[file_index+1];
- } else {
- if (file_index != argc-1) {
- fprintf(stderr, "%s: must name one input and one output file\n",
- progname);
- usage();
- }
- }
-#else
- /* Unix style: expect zero or one file name */
- if (file_index < argc-1) {
- fprintf(stderr, "%s: only one input file\n", progname);
- usage();
- }
-#endif /* TWO_FILE_COMMANDLINE */
-
- /* Open the input file. */
- if (file_index < argc) {
- if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) {
- fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);
- exit(EXIT_FAILURE);
- }
- } else {
- /* default input file is stdin */
- input_file = read_stdin();
- }
-
- /* Open the output file. */
- if (outfilename != NULL) {
- if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) {
- fprintf(stderr, "%s: can't open %s\n", progname, outfilename);
- exit(EXIT_FAILURE);
- }
- } else {
- /* default output file is stdout */
- output_file = write_stdout();
- }
-
-#ifdef PROGRESS_REPORT
- start_progress_monitor((j_common_ptr) &cinfo, &progress);
-#endif
-
- /* Specify data source for decompression */
- jpeg_stdio_src(&cinfo, input_file);
-
- /* Read file header, set default decompression parameters */
- (void) jpeg_read_header(&cinfo, TRUE);
-
- /* Adjust default decompression parameters by re-parsing the options */
- file_index = parse_switches(&cinfo, argc, argv, 0, TRUE);
-
- /* Initialize the output module now to let it override any crucial
- * option settings (for instance, GIF wants to force color quantization).
- */
- switch (requested_fmt) {
-#ifdef BMP_SUPPORTED
- case FMT_BMP:
- dest_mgr = jinit_write_bmp(&cinfo, FALSE);
- break;
- case FMT_OS2:
- dest_mgr = jinit_write_bmp(&cinfo, TRUE);
- break;
-#endif
-#ifdef GIF_SUPPORTED
- case FMT_GIF:
- dest_mgr = jinit_write_gif(&cinfo);
- break;
-#endif
-#ifdef PPM_SUPPORTED
- case FMT_PPM:
- dest_mgr = jinit_write_ppm(&cinfo);
- break;
-#endif
-#ifdef RLE_SUPPORTED
- case FMT_RLE:
- dest_mgr = jinit_write_rle(&cinfo);
- break;
-#endif
-#ifdef TARGA_SUPPORTED
- case FMT_TARGA:
- dest_mgr = jinit_write_targa(&cinfo);
- break;
-#endif
- default:
- ERREXIT(&cinfo, JERR_UNSUPPORTED_FORMAT);
- break;
- }
- dest_mgr->output_file = output_file;
-
- /* Start decompressor */
- (void) jpeg_start_decompress(&cinfo);
-
- /* Write output file header */
- (*dest_mgr->start_output) (&cinfo, dest_mgr);
-
- /* Process data */
- while (cinfo.output_scanline < cinfo.output_height) {
- num_scanlines = jpeg_read_scanlines(&cinfo, dest_mgr->buffer,
- dest_mgr->buffer_height);
- (*dest_mgr->put_pixel_rows) (&cinfo, dest_mgr, num_scanlines);
- }
-
-#ifdef PROGRESS_REPORT
- /* Hack: count final pass as done in case finish_output does an extra pass.
- * The library won't have updated completed_passes.
- */
- progress.pub.completed_passes = progress.pub.total_passes;
-#endif
-
- /* Finish decompression and release memory.
- * I must do it in this order because output module has allocated memory
- * of lifespan JPOOL_IMAGE; it needs to finish before releasing memory.
- */
- (*dest_mgr->finish_output) (&cinfo, dest_mgr);
- (void) jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
-
- /* Close files, if we opened them */
- if (input_file != stdin)
- fclose(input_file);
- if (output_file != stdout)
- fclose(output_file);
-
-#ifdef PROGRESS_REPORT
- end_progress_monitor((j_common_ptr) &cinfo);
-#endif
-
- /* All done. */
- exit(jerr.num_warnings ? EXIT_WARNING : EXIT_SUCCESS);
- return 0; /* suppress no-return-value warnings */
-}
diff --git a/libjpegtwrp/example.c b/libjpegtwrp/example.c
deleted file mode 100644
index 7fc354f..0000000
--- a/libjpegtwrp/example.c
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * example.c
- *
- * This file illustrates how to use the IJG code as a subroutine library
- * to read or write JPEG image files. You should look at this code in
- * conjunction with the documentation file libjpeg.doc.
- *
- * This code will not do anything useful as-is, but it may be helpful as a
- * skeleton for constructing routines that call the JPEG library.
- *
- * We present these routines in the same coding style used in the JPEG code
- * (ANSI function definitions, etc); but you are of course free to code your
- * routines in a different style if you prefer.
- */
-
-#include <stdio.h>
-
-/*
- * Include file for users of JPEG library.
- * You will need to have included system headers that define at least
- * the typedefs FILE and size_t before you can include jpeglib.h.
- * (stdio.h is sufficient on ANSI-conforming systems.)
- * You may also wish to include "jerror.h".
- */
-
-#include "jpeglib.h"
-
-/*
- * <setjmp.h> is used for the optional error recovery mechanism shown in
- * the second part of the example.
- */
-
-#include <setjmp.h>
-
-
-
-/******************** JPEG COMPRESSION SAMPLE INTERFACE *******************/
-
-/* This half of the example shows how to feed data into the JPEG compressor.
- * We present a minimal version that does not worry about refinements such
- * as error recovery (the JPEG code will just exit() if it gets an error).
- */
-
-
-/*
- * IMAGE DATA FORMATS:
- *
- * The standard input image format is a rectangular array of pixels, with
- * each pixel having the same number of "component" values (color channels).
- * Each pixel row is an array of JSAMPLEs (which typically are unsigned chars).
- * If you are working with color data, then the color values for each pixel
- * must be adjacent in the row; for example, R,G,B,R,G,B,R,G,B,... for 24-bit
- * RGB color.
- *
- * For this example, we'll assume that this data structure matches the way
- * our application has stored the image in memory, so we can just pass a
- * pointer to our image buffer. In particular, let's say that the image is
- * RGB color and is described by:
- */
-
-extern JSAMPLE * image_buffer; /* Points to large array of R,G,B-order data */
-extern int image_height; /* Number of rows in image */
-extern int image_width; /* Number of columns in image */
-
-
-/*
- * Sample routine for JPEG compression. We assume that the target file name
- * and a compression quality factor are passed in.
- */
-
-GLOBAL(void)
-write_JPEG_file (char * filename, int quality)
-{
- /* This struct contains the JPEG compression parameters and pointers to
- * working space (which is allocated as needed by the JPEG library).
- * It is possible to have several such structures, representing multiple
- * compression/decompression processes, in existence at once. We refer
- * to any one struct (and its associated working data) as a "JPEG object".
- */
- struct jpeg_compress_struct cinfo;
- /* This struct represents a JPEG error handler. It is declared separately
- * because applications often want to supply a specialized error handler
- * (see the second half of this file for an example). But here we just
- * take the easy way out and use the standard error handler, which will
- * print a message on stderr and call exit() if compression fails.
- * Note that this struct must live as long as the main JPEG parameter
- * struct, to avoid dangling-pointer problems.
- */
- struct jpeg_error_mgr jerr;
- /* More stuff */
- FILE * outfile; /* target file */
- JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */
- int row_stride; /* physical row width in image buffer */
-
- /* Step 1: allocate and initialize JPEG compression object */
-
- /* We have to set up the error handler first, in case the initialization
- * step fails. (Unlikely, but it could happen if you are out of memory.)
- * This routine fills in the contents of struct jerr, and returns jerr's
- * address which we place into the link field in cinfo.
- */
- cinfo.err = jpeg_std_error(&jerr);
- /* Now we can initialize the JPEG compression object. */
- jpeg_create_compress(&cinfo);
-
- /* Step 2: specify data destination (eg, a file) */
- /* Note: steps 2 and 3 can be done in either order. */
-
- /* Here we use the library-supplied code to send compressed data to a
- * stdio stream. You can also write your own code to do something else.
- * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that
- * requires it in order to write binary files.
- */
- if ((outfile = fopen(filename, "wb")) == NULL) {
- fprintf(stderr, "can't open %s\n", filename);
- exit(1);
- }
- jpeg_stdio_dest(&cinfo, outfile);
-
- /* Step 3: set parameters for compression */
-
- /* First we supply a description of the input image.
- * Four fields of the cinfo struct must be filled in:
- */
- cinfo.image_width = image_width; /* image width and height, in pixels */
- cinfo.image_height = image_height;
- cinfo.input_components = 3; /* # of color components per pixel */
- cinfo.in_color_space = JCS_RGB; /* colorspace of input image */
- /* Now use the library's routine to set default compression parameters.
- * (You must set at least cinfo.in_color_space before calling this,
- * since the defaults depend on the source color space.)
- */
- jpeg_set_defaults(&cinfo);
- /* Now you can set any non-default parameters you wish to.
- * Here we just illustrate the use of quality (quantization table) scaling:
- */
- jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */);
-
- /* Step 4: Start compressor */
-
- /* TRUE ensures that we will write a complete interchange-JPEG file.
- * Pass TRUE unless you are very sure of what you're doing.
- */
- jpeg_start_compress(&cinfo, TRUE);
-
- /* Step 5: while (scan lines remain to be written) */
- /* jpeg_write_scanlines(...); */
-
- /* Here we use the library's state variable cinfo.next_scanline as the
- * loop counter, so that we don't have to keep track ourselves.
- * To keep things simple, we pass one scanline per call; you can pass
- * more if you wish, though.
- */
- row_stride = image_width * 3; /* JSAMPLEs per row in image_buffer */
-
- while (cinfo.next_scanline < cinfo.image_height) {
- /* jpeg_write_scanlines expects an array of pointers to scanlines.
- * Here the array is only one element long, but you could pass
- * more than one scanline at a time if that's more convenient.
- */
- row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];
- (void) jpeg_write_scanlines(&cinfo, row_pointer, 1);
- }
-
- /* Step 6: Finish compression */
-
- jpeg_finish_compress(&cinfo);
- /* After finish_compress, we can close the output file. */
- fclose(outfile);
-
- /* Step 7: release JPEG compression object */
-
- /* This is an important step since it will release a good deal of memory. */
- jpeg_destroy_compress(&cinfo);
-
- /* And we're done! */
-}
-
-
-/*
- * SOME FINE POINTS:
- *
- * In the above loop, we ignored the return value of jpeg_write_scanlines,
- * which is the number of scanlines actually written. We could get away
- * with this because we were only relying on the value of cinfo.next_scanline,
- * which will be incremented correctly. If you maintain additional loop
- * variables then you should be careful to increment them properly.
- * Actually, for output to a stdio stream you needn't worry, because
- * then jpeg_write_scanlines will write all the lines passed (or else exit
- * with a fatal error). Partial writes can only occur if you use a data
- * destination module that can demand suspension of the compressor.
- * (If you don't know what that's for, you don't need it.)
- *
- * If the compressor requires full-image buffers (for entropy-coding
- * optimization or a multi-scan JPEG file), it will create temporary
- * files for anything that doesn't fit within the maximum-memory setting.
- * (Note that temp files are NOT needed if you use the default parameters.)
- * On some systems you may need to set up a signal handler to ensure that
- * temporary files are deleted if the program is interrupted. See libjpeg.doc.
- *
- * Scanlines MUST be supplied in top-to-bottom order if you want your JPEG
- * files to be compatible with everyone else's. If you cannot readily read
- * your data in that order, you'll need an intermediate array to hold the
- * image. See rdtarga.c or rdbmp.c for examples of handling bottom-to-top
- * source data using the JPEG code's internal virtual-array mechanisms.
- */
-
-
-
-/******************** JPEG DECOMPRESSION SAMPLE INTERFACE *******************/
-
-/* This half of the example shows how to read data from the JPEG decompressor.
- * It's a bit more refined than the above, in that we show:
- * (a) how to modify the JPEG library's standard error-reporting behavior;
- * (b) how to allocate workspace using the library's memory manager.
- *
- * Just to make this example a little different from the first one, we'll
- * assume that we do not intend to put the whole image into an in-memory
- * buffer, but to send it line-by-line someplace else. We need a one-
- * scanline-high JSAMPLE array as a work buffer, and we will let the JPEG
- * memory manager allocate it for us. This approach is actually quite useful
- * because we don't need to remember to deallocate the buffer separately: it
- * will go away automatically when the JPEG object is cleaned up.
- */
-
-
-/*
- * ERROR HANDLING:
- *
- * The JPEG library's standard error handler (jerror.c) is divided into
- * several "methods" which you can override individually. This lets you
- * adjust the behavior without duplicating a lot of code, which you might
- * have to update with each future release.
- *
- * Our example here shows how to override the "error_exit" method so that
- * control is returned to the library's caller when a fatal error occurs,
- * rather than calling exit() as the standard error_exit method does.
- *
- * We use C's setjmp/longjmp facility to return control. This means that the
- * routine which calls the JPEG library must first execute a setjmp() call to
- * establish the return point. We want the replacement error_exit to do a
- * longjmp(). But we need to make the setjmp buffer accessible to the
- * error_exit routine. To do this, we make a private extension of the
- * standard JPEG error handler object. (If we were using C++, we'd say we
- * were making a subclass of the regular error handler.)
- *
- * Here's the extended error handler struct:
- */
-
-struct my_error_mgr {
- struct jpeg_error_mgr pub; /* "public" fields */
-
- jmp_buf setjmp_buffer; /* for return to caller */
-};
-
-typedef struct my_error_mgr * my_error_ptr;
-
-/*
- * Here's the routine that will replace the standard error_exit method:
- */
-
-METHODDEF(void)
-my_error_exit (j_common_ptr cinfo)
-{
- /* cinfo->err really points to a my_error_mgr struct, so coerce pointer */
- my_error_ptr myerr = (my_error_ptr) cinfo->err;
-
- /* Always display the message. */
- /* We could postpone this until after returning, if we chose. */
- (*cinfo->err->output_message) (cinfo);
-
- /* Return control to the setjmp point */
- longjmp(myerr->setjmp_buffer, 1);
-}
-
-
-/*
- * Sample routine for JPEG decompression. We assume that the source file name
- * is passed in. We want to return 1 on success, 0 on error.
- */
-
-
-GLOBAL(int)
-read_JPEG_file (char * filename)
-{
- /* This struct contains the JPEG decompression parameters and pointers to
- * working space (which is allocated as needed by the JPEG library).
- */
- struct jpeg_decompress_struct cinfo;
- /* We use our private extension JPEG error handler.
- * Note that this struct must live as long as the main JPEG parameter
- * struct, to avoid dangling-pointer problems.
- */
- struct my_error_mgr jerr;
- /* More stuff */
- FILE * infile; /* source file */
- JSAMPARRAY buffer; /* Output row buffer */
- int row_stride; /* physical row width in output buffer */
-
- /* In this example we want to open the input file before doing anything else,
- * so that the setjmp() error recovery below can assume the file is open.
- * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that
- * requires it in order to read binary files.
- */
-
- if ((infile = fopen(filename, "rb")) == NULL) {
- fprintf(stderr, "can't open %s\n", filename);
- return 0;
- }
-
- /* Step 1: allocate and initialize JPEG decompression object */
-
- /* We set up the normal JPEG error routines, then override error_exit. */
- cinfo.err = jpeg_std_error(&jerr.pub);
- jerr.pub.error_exit = my_error_exit;
- /* Establish the setjmp return context for my_error_exit to use. */
- if (setjmp(jerr.setjmp_buffer)) {
- /* If we get here, the JPEG code has signaled an error.
- * We need to clean up the JPEG object, close the input file, and return.
- */
- jpeg_destroy_decompress(&cinfo);
- fclose(infile);
- return 0;
- }
- /* Now we can initialize the JPEG decompression object. */
- jpeg_create_decompress(&cinfo);
-
- /* Step 2: specify data source (eg, a file) */
-
- jpeg_stdio_src(&cinfo, infile);
-
- /* Step 3: read file parameters with jpeg_read_header() */
-
- (void) jpeg_read_header(&cinfo, TRUE);
- /* We can ignore the return value from jpeg_read_header since
- * (a) suspension is not possible with the stdio data source, and
- * (b) we passed TRUE to reject a tables-only JPEG file as an error.
- * See libjpeg.doc for more info.
- */
-
- /* Step 4: set parameters for decompression */
-
- /* In this example, we don't need to change any of the defaults set by
- * jpeg_read_header(), so we do nothing here.
- */
-
- /* Step 5: Start decompressor */
-
- (void) jpeg_start_decompress(&cinfo);
- /* We can ignore the return value since suspension is not possible
- * with the stdio data source.
- */
-
- /* We may need to do some setup of our own at this point before reading
- * the data. After jpeg_start_decompress() we have the correct scaled
- * output image dimensions available, as well as the output colormap
- * if we asked for color quantization.
- * In this example, we need to make an output work buffer of the right size.
- */
- /* JSAMPLEs per row in output buffer */
- row_stride = cinfo.output_width * cinfo.output_components;
- /* Make a one-row-high sample array that will go away when done with image */
- buffer = (*cinfo.mem->alloc_sarray)
- ((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
-
- /* Step 6: while (scan lines remain to be read) */
- /* jpeg_read_scanlines(...); */
-
- /* Here we use the library's state variable cinfo.output_scanline as the
- * loop counter, so that we don't have to keep track ourselves.
- */
- while (cinfo.output_scanline < cinfo.output_height) {
- /* jpeg_read_scanlines expects an array of pointers to scanlines.
- * Here the array is only one element long, but you could ask for
- * more than one scanline at a time if that's more convenient.
- */
- (void) jpeg_read_scanlines(&cinfo, buffer, 1);
- /* Assume put_scanline_someplace wants a pointer and sample count. */
- put_scanline_someplace(buffer[0], row_stride);
- }
-
- /* Step 7: Finish decompression */
-
- (void) jpeg_finish_decompress(&cinfo);
- /* We can ignore the return value since suspension is not possible
- * with the stdio data source.
- */
-
- /* Step 8: Release JPEG decompression object */
-
- /* This is an important step since it will release a good deal of memory. */
- jpeg_destroy_decompress(&cinfo);
-
- /* After finish_decompress, we can close the input file.
- * Here we postpone it until after no more JPEG errors are possible,
- * so as to simplify the setjmp error logic above. (Actually, I don't
- * think that jpeg_destroy can do an error exit, but why assume anything...)
- */
- fclose(infile);
-
- /* At this point you may want to check to see whether any corrupt-data
- * warnings occurred (test whether jerr.pub.num_warnings is nonzero).
- */
-
- /* And we're done! */
- return 1;
-}
-
-
-/*
- * SOME FINE POINTS:
- *
- * In the above code, we ignored the return value of jpeg_read_scanlines,
- * which is the number of scanlines actually read. We could get away with
- * this because we asked for only one line at a time and we weren't using
- * a suspending data source. See libjpeg.doc for more info.
- *
- * We cheated a bit by calling alloc_sarray() after jpeg_start_decompress();
- * we should have done it beforehand to ensure that the space would be
- * counted against the JPEG max_memory setting. In some systems the above
- * code would risk an out-of-memory error. However, in general we don't
- * know the output image dimensions before jpeg_start_decompress(), unless we
- * call jpeg_calc_output_dimensions(). See libjpeg.doc for more about this.
- *
- * Scanlines are returned in the same order as they appear in the JPEG file,
- * which is standardly top-to-bottom. If you must emit data bottom-to-top,
- * you can use one of the virtual arrays provided by the JPEG memory manager
- * to invert the data. See wrbmp.c for an example.
- *
- * As with compression, some operating modes may require temporary files.
- * On some systems you may need to set up a signal handler to ensure that
- * temporary files are deleted if the program is interrupted. See libjpeg.doc.
- */
diff --git a/libjpegtwrp/filelist.doc b/libjpegtwrp/filelist.doc
deleted file mode 100644
index e14982c..0000000
--- a/libjpegtwrp/filelist.doc
+++ /dev/null
@@ -1,210 +0,0 @@
-IJG JPEG LIBRARY: FILE LIST
-
-Copyright (C) 1994-1998, Thomas G. Lane.
-This file is part of the Independent JPEG Group's software.
-For conditions of distribution and use, see the accompanying README file.
-
-
-Here is a road map to the files in the IJG JPEG distribution. The
-distribution includes the JPEG library proper, plus two application
-programs ("cjpeg" and "djpeg") which use the library to convert JPEG
-files to and from some other popular image formats. A third application
-"jpegtran" uses the library to do lossless conversion between different
-variants of JPEG. There are also two stand-alone applications,
-"rdjpgcom" and "wrjpgcom".
-
-
-THE JPEG LIBRARY
-================
-
-Include files:
-
-jpeglib.h JPEG library's exported data and function declarations.
-jconfig.h Configuration declarations. Note: this file is not present
- in the distribution; it is generated during installation.
-jmorecfg.h Additional configuration declarations; need not be changed
- for a standard installation.
-jerror.h Declares JPEG library's error and trace message codes.
-jinclude.h Central include file used by all IJG .c files to reference
- system include files.
-jpegint.h JPEG library's internal data structures.
-jchuff.h Private declarations for Huffman encoder modules.
-jdhuff.h Private declarations for Huffman decoder modules.
-jdct.h Private declarations for forward & reverse DCT subsystems.
-jmemsys.h Private declarations for memory management subsystem.
-jversion.h Version information.
-
-Applications using the library should include jpeglib.h (which in turn
-includes jconfig.h and jmorecfg.h). Optionally, jerror.h may be included
-if the application needs to reference individual JPEG error codes. The
-other include files are intended for internal use and would not normally
-be included by an application program. (cjpeg/djpeg/etc do use jinclude.h,
-since its function is to improve portability of the whole IJG distribution.
-Most other applications will directly include the system include files they
-want, and hence won't need jinclude.h.)
-
-
-C source code files:
-
-These files contain most of the functions intended to be called directly by
-an application program:
-
-jcapimin.c Application program interface: core routines for compression.
-jcapistd.c Application program interface: standard compression.
-jdapimin.c Application program interface: core routines for decompression.
-jdapistd.c Application program interface: standard decompression.
-jcomapi.c Application program interface routines common to compression
- and decompression.
-jcparam.c Compression parameter setting helper routines.
-jctrans.c API and library routines for transcoding compression.
-jdtrans.c API and library routines for transcoding decompression.
-
-Compression side of the library:
-
-jcinit.c Initialization: determines which other modules to use.
-jcmaster.c Master control: setup and inter-pass sequencing logic.
-jcmainct.c Main buffer controller (preprocessor => JPEG compressor).
-jcprepct.c Preprocessor buffer controller.
-jccoefct.c Buffer controller for DCT coefficient buffer.
-jccolor.c Color space conversion.
-jcsample.c Downsampling.
-jcdctmgr.c DCT manager (DCT implementation selection & control).
-jfdctint.c Forward DCT using slow-but-accurate integer method.
-jfdctfst.c Forward DCT using faster, less accurate integer method.
-jfdctflt.c Forward DCT using floating-point arithmetic.
-jchuff.c Huffman entropy coding for sequential JPEG.
-jcphuff.c Huffman entropy coding for progressive JPEG.
-jcmarker.c JPEG marker writing.
-jdatadst.c Data destination manager for stdio output.
-
-Decompression side of the library:
-
-jdmaster.c Master control: determines which other modules to use.
-jdinput.c Input controller: controls input processing modules.
-jdmainct.c Main buffer controller (JPEG decompressor => postprocessor).
-jdcoefct.c Buffer controller for DCT coefficient buffer.
-jdpostct.c Postprocessor buffer controller.
-jdmarker.c JPEG marker reading.
-jdhuff.c Huffman entropy decoding for sequential JPEG.
-jdphuff.c Huffman entropy decoding for progressive JPEG.
-jddctmgr.c IDCT manager (IDCT implementation selection & control).
-jidctint.c Inverse DCT using slow-but-accurate integer method.
-jidctfst.c Inverse DCT using faster, less accurate integer method.
-jidctflt.c Inverse DCT using floating-point arithmetic.
-jidctred.c Inverse DCTs with reduced-size outputs.
-jdsample.c Upsampling.
-jdcolor.c Color space conversion.
-jdmerge.c Merged upsampling/color conversion (faster, lower quality).
-jquant1.c One-pass color quantization using a fixed-spacing colormap.
-jquant2.c Two-pass color quantization using a custom-generated colormap.
- Also handles one-pass quantization to an externally given map.
-jdatasrc.c Data source manager for stdio input.
-
-Support files for both compression and decompression:
-
-jerror.c Standard error handling routines (application replaceable).
-jmemmgr.c System-independent (more or less) memory management code.
-jutils.c Miscellaneous utility routines.
-
-jmemmgr.c relies on a system-dependent memory management module. The IJG
-distribution includes the following implementations of the system-dependent
-module:
-
-jmemnobs.c "No backing store": assumes adequate virtual memory exists.
-jmemansi.c Makes temporary files with ANSI-standard routine tmpfile().
-jmemname.c Makes temporary files with program-generated file names.
-jmemdos.c Custom implementation for MS-DOS (16-bit environment only):
- can use extended and expanded memory as well as temp files.
-jmemmac.c Custom implementation for Apple Macintosh.
-
-Exactly one of the system-dependent modules should be configured into an
-installed JPEG library (see install.doc for hints about which one to use).
-On unusual systems you may find it worthwhile to make a special
-system-dependent memory manager.
-
-
-Non-C source code files:
-
-jmemdosa.asm 80x86 assembly code support for jmemdos.c; used only in
- MS-DOS-specific configurations of the JPEG library.
-
-
-CJPEG/DJPEG/JPEGTRAN
-====================
-
-Include files:
-
-cdjpeg.h Declarations shared by cjpeg/djpeg/jpegtran modules.
-cderror.h Additional error and trace message codes for cjpeg et al.
-transupp.h Declarations for jpegtran support routines in transupp.c.
-
-C source code files:
-
-cjpeg.c Main program for cjpeg.
-djpeg.c Main program for djpeg.
-jpegtran.c Main program for jpegtran.
-cdjpeg.c Utility routines used by all three programs.
-rdcolmap.c Code to read a colormap file for djpeg's "-map" switch.
-rdswitch.c Code to process some of cjpeg's more complex switches.
- Also used by jpegtran.
-transupp.c Support code for jpegtran: lossless image manipulations.
-
-Image file reader modules for cjpeg:
-
-rdbmp.c BMP file input.
-rdgif.c GIF file input (now just a stub).
-rdppm.c PPM/PGM file input.
-rdrle.c Utah RLE file input.
-rdtarga.c Targa file input.
-
-Image file writer modules for djpeg:
-
-wrbmp.c BMP file output.
-wrgif.c GIF file output (a mere shadow of its former self).
-wrppm.c PPM/PGM file output.
-wrrle.c Utah RLE file output.
-wrtarga.c Targa file output.
-
-
-RDJPGCOM/WRJPGCOM
-=================
-
-C source code files:
-
-rdjpgcom.c Stand-alone rdjpgcom application.
-wrjpgcom.c Stand-alone wrjpgcom application.
-
-These programs do not depend on the IJG library. They do use
-jconfig.h and jinclude.h, only to improve portability.
-
-
-ADDITIONAL FILES
-================
-
-Documentation (see README for a guide to the documentation files):
-
-README Master documentation file.
-*.doc Other documentation files.
-*.1 Documentation in Unix man page format.
-change.log Version-to-version change highlights.
-example.c Sample code for calling JPEG library.
-
-Configuration/installation files and programs (see install.doc for more info):
-
-configure Unix shell script to perform automatic configuration.
-ltconfig Support scripts for configure (from GNU libtool).
-ltmain.sh
-config.guess
-config.sub
-install-sh Install shell script for those Unix systems lacking one.
-ckconfig.c Program to generate jconfig.h on non-Unix systems.
-jconfig.doc Template for making jconfig.h by hand.
-makefile.* Sample makefiles for particular systems.
-jconfig.* Sample jconfig.h for particular systems.
-ansi2knr.c De-ANSIfier for pre-ANSI C compilers (courtesy of
- L. Peter Deutsch and Aladdin Enterprises).
-
-Test files (see install.doc for test procedure):
-
-test*.* Source and comparison files for confidence test.
- These are binary image files, NOT text files.
diff --git a/libjpegtwrp/install-sh b/libjpegtwrp/install-sh
deleted file mode 100755
index e843669..0000000
--- a/libjpegtwrp/install-sh
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/libjpegtwrp/install.doc b/libjpegtwrp/install.doc
deleted file mode 100644
index 3702b98..0000000
--- a/libjpegtwrp/install.doc
+++ /dev/null
@@ -1,1063 +0,0 @@
-INSTALLATION INSTRUCTIONS for the Independent JPEG Group's JPEG software
-
-Copyright (C) 1991-1998, Thomas G. Lane.
-This file is part of the Independent JPEG Group's software.
-For conditions of distribution and use, see the accompanying README file.
-
-
-This file explains how to configure and install the IJG software. We have
-tried to make this software extremely portable and flexible, so that it can be
-adapted to almost any environment. The downside of this decision is that the
-installation process is complicated. We have provided shortcuts to simplify
-the task on common systems. But in any case, you will need at least a little
-familiarity with C programming and program build procedures for your system.
-
-If you are only using this software as part of a larger program, the larger
-program's installation procedure may take care of configuring the IJG code.
-For example, Ghostscript's installation script will configure the IJG code.
-You don't need to read this file if you just want to compile Ghostscript.
-
-If you are on a Unix machine, you may not need to read this file at all.
-Try doing
- ./configure
- make
- make test
-If that doesn't complain, do
- make install
-(better do "make -n install" first to see if the makefile will put the files
-where you want them). Read further if you run into snags or want to customize
-the code for your system.
-
-
-TABLE OF CONTENTS
------------------
-
-Before you start
-Configuring the software:
- using the automatic "configure" script
- using one of the supplied jconfig and makefile files
- by hand
-Building the software
-Testing the software
-Installing the software
-Optional stuff
-Optimization
-Hints for specific systems
-
-
-BEFORE YOU START
-================
-
-Before installing the software you must unpack the distributed source code.
-Since you are reading this file, you have probably already succeeded in this
-task. However, there is a potential for error if you needed to convert the
-files to the local standard text file format (for example, if you are on
-MS-DOS you may have converted LF end-of-line to CR/LF). You must apply
-such conversion to all the files EXCEPT those whose names begin with "test".
-The test files contain binary data; if you change them in any way then the
-self-test will give bad results.
-
-Please check the last section of this file to see if there are hints for the
-specific machine or compiler you are using.
-
-
-CONFIGURING THE SOFTWARE
-========================
-
-To configure the IJG code for your system, you need to create two files:
- * jconfig.h: contains values for system-dependent #define symbols.
- * Makefile: controls the compilation process.
-(On a non-Unix machine, you may create "project files" or some other
-substitute for a Makefile. jconfig.h is needed in any environment.)
-
-We provide three different ways to generate these files:
- * On a Unix system, you can just run the "configure" script.
- * We provide sample jconfig files and makefiles for popular machines;
- if your machine matches one of the samples, just copy the right sample
- files to jconfig.h and Makefile.
- * If all else fails, read the instructions below and make your own files.
-
-
-Configuring the software using the automatic "configure" script
----------------------------------------------------------------
-
-If you are on a Unix machine, you can just type
- ./configure
-and let the configure script construct appropriate configuration files.
-If you're using "csh" on an old version of System V, you might need to type
- sh configure
-instead to prevent csh from trying to execute configure itself.
-Expect configure to run for a few minutes, particularly on slower machines;
-it works by compiling a series of test programs.
-
-Configure was created with GNU Autoconf and it follows the usual conventions
-for GNU configure scripts. It makes a few assumptions that you may want to
-override. You can do this by providing optional switches to configure:
-
-* If you want to build libjpeg as a shared library, say
- ./configure --enable-shared
-To get both shared and static libraries, say
- ./configure --enable-shared --enable-static
-Note that these switches invoke GNU libtool to take care of system-dependent
-shared library building methods. If things don't work this way, please try
-running configure without either switch; that should build a static library
-without using libtool. If that works, your problem is probably with libtool
-not with the IJG code. libtool is fairly new and doesn't support all flavors
-of Unix yet. (You might be able to find a newer version of libtool than the
-one included with libjpeg; see ftp.gnu.org. Report libtool problems to
-bug-libtool@gnu.org.)
-
-* Configure will use gcc (GNU C compiler) if it's available, otherwise cc.
-To force a particular compiler to be selected, use the CC option, for example
- ./configure CC='cc'
-The same method can be used to include any unusual compiler switches.
-For example, on HP-UX you probably want to say
- ./configure CC='cc -Aa'
-to get HP's compiler to run in ANSI mode.
-
-* The default CFLAGS setting is "-O" for non-gcc compilers, "-O2" for gcc.
-You can override this by saying, for example,
- ./configure CFLAGS='-g'
-if you want to compile with debugging support.
-
-* Configure will set up the makefile so that "make install" will install files
-into /usr/local/bin, /usr/local/man, etc. You can specify an installation
-prefix other than "/usr/local" by giving configure the option "--prefix=PATH".
-
-* If you don't have a lot of swap space, you may need to enable the IJG
-software's internal virtual memory mechanism. To do this, give the option
-"--enable-maxmem=N" where N is the default maxmemory limit in megabytes.
-This is discussed in more detail under "Selecting a memory manager", below.
-You probably don't need to worry about this on reasonably-sized Unix machines,
-unless you plan to process very large images.
-
-Configure has some other features that are useful if you are cross-compiling
-or working in a network of multiple machine types; but if you need those
-features, you probably already know how to use them.
-
-
-Configuring the software using one of the supplied jconfig and makefile files
------------------------------------------------------------------------------
-
-If you have one of these systems, you can just use the provided configuration
-files:
-
-Makefile jconfig file System and/or compiler
-
-makefile.manx jconfig.manx Amiga, Manx Aztec C
-makefile.sas jconfig.sas Amiga, SAS C
-makeproj.mac jconfig.mac Apple Macintosh, Metrowerks CodeWarrior
-mak*jpeg.st jconfig.st Atari ST/STE/TT, Pure C or Turbo C
-makefile.bcc jconfig.bcc MS-DOS or OS/2, Borland C
-makefile.dj jconfig.dj MS-DOS, DJGPP (Delorie's port of GNU C)
-makefile.mc6 jconfig.mc6 MS-DOS, Microsoft C (16-bit only)
-makefile.wat jconfig.wat MS-DOS, OS/2, or Windows NT, Watcom C
-makefile.vc jconfig.vc Windows NT/95, MS Visual C++
-make*.ds jconfig.vc Windows NT/95, MS Developer Studio
-makefile.mms jconfig.vms Digital VMS, with MMS software
-makefile.vms jconfig.vms Digital VMS, without MMS software
-
-Copy the proper jconfig file to jconfig.h and the makefile to Makefile (or
-whatever your system uses as the standard makefile name). For more info see
-the appropriate system-specific hints section near the end of this file.
-
-
-Configuring the software by hand
---------------------------------
-
-First, generate a jconfig.h file. If you are moderately familiar with C,
-the comments in jconfig.doc should be enough information to do this; just
-copy jconfig.doc to jconfig.h and edit it appropriately. Otherwise, you may
-prefer to use the ckconfig.c program. You will need to compile and execute
-ckconfig.c by hand --- we hope you know at least enough to do that.
-ckconfig.c may not compile the first try (in fact, the whole idea is for it
-to fail if anything is going to). If you get compile errors, fix them by
-editing ckconfig.c according to the directions given in ckconfig.c. Once
-you get it to run, it will write a suitable jconfig.h file, and will also
-print out some advice about which makefile to use.
-
-You may also want to look at the canned jconfig files, if there is one for a
-system similar to yours.
-
-Second, select a makefile and copy it to Makefile (or whatever your system
-uses as the standard makefile name). The most generic makefiles we provide
-are
- makefile.ansi: if your C compiler supports function prototypes
- makefile.unix: if not.
-(You have function prototypes if ckconfig.c put "#define HAVE_PROTOTYPES"
-in jconfig.h.) You may want to start from one of the other makefiles if
-there is one for a system similar to yours.
-
-Look over the selected Makefile and adjust options as needed. In particular
-you may want to change the CC and CFLAGS definitions. For instance, if you
-are using GCC, set CC=gcc. If you had to use any compiler switches to get
-ckconfig.c to work, make sure the same switches are in CFLAGS.
-
-If you are on a system that doesn't use makefiles, you'll need to set up
-project files (or whatever you do use) to compile all the source files and
-link them into executable files cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom.
-See the file lists in any of the makefiles to find out which files go into
-each program. Note that the provided makefiles all make a "library" file
-libjpeg first, but you don't have to do that if you don't want to; the file
-lists identify which source files are actually needed for compression,
-decompression, or both. As a last resort, you can make a batch script that
-just compiles everything and links it all together; makefile.vms is an example
-of this (it's for VMS systems that have no make-like utility).
-
-Here are comments about some specific configuration decisions you'll
-need to make:
-
-Command line style
-------------------
-
-These programs can use a Unix-like command line style which supports
-redirection and piping, like this:
- cjpeg inputfile >outputfile
- cjpeg <inputfile >outputfile
- source program | cjpeg >outputfile
-The simpler "two file" command line style is just
- cjpeg inputfile outputfile
-You may prefer the two-file style, particularly if you don't have pipes.
-
-You MUST use two-file style on any system that doesn't cope well with binary
-data fed through stdin/stdout; this is true for some MS-DOS compilers, for
-example. If you're not on a Unix system, it's safest to assume you need
-two-file style. (But if your compiler provides either the Posix-standard
-fdopen() library routine or a Microsoft-compatible setmode() routine, you
-can safely use the Unix command line style, by defining USE_FDOPEN or
-USE_SETMODE respectively.)
-
-To use the two-file style, make jconfig.h say "#define TWO_FILE_COMMANDLINE".
-
-Selecting a memory manager
---------------------------
-
-The IJG code is capable of working on images that are too big to fit in main
-memory; data is swapped out to temporary files as necessary. However, the
-code to do this is rather system-dependent. We provide five different
-memory managers:
-
-* jmemansi.c This version uses the ANSI-standard library routine tmpfile(),
- which not all non-ANSI systems have. On some systems
- tmpfile() may put the temporary file in a non-optimal
- location; if you don't like what it does, use jmemname.c.
-
-* jmemname.c This version creates named temporary files. For anything
- except a Unix machine, you'll need to configure the
- select_file_name() routine appropriately; see the comments
- near the head of jmemname.c. If you use this version, define
- NEED_SIGNAL_CATCHER in jconfig.h to make sure the temp files
- are removed if the program is aborted.
-
-* jmemnobs.c (That stands for No Backing Store :-).) This will compile on
- almost any system, but it assumes you have enough main memory
- or virtual memory to hold the biggest images you work with.
-
-* jmemdos.c This should be used with most 16-bit MS-DOS compilers.
- See the system-specific notes about MS-DOS for more info.
- IMPORTANT: if you use this, define USE_MSDOS_MEMMGR in
- jconfig.h, and include the assembly file jmemdosa.asm in the
- programs. The supplied makefiles and jconfig files for
- 16-bit MS-DOS compilers already do both.
-
-* jmemmac.c Custom version for Apple Macintosh; see the system-specific
- notes for Macintosh for more info.
-
-To use a particular memory manager, change the SYSDEPMEM variable in your
-makefile to equal the corresponding object file name (for example, jmemansi.o
-or jmemansi.obj for jmemansi.c).
-
-If you have plenty of (real or virtual) main memory, just use jmemnobs.c.
-"Plenty" means about ten bytes for every pixel in the largest images
-you plan to process, so a lot of systems don't meet this criterion.
-If yours doesn't, try jmemansi.c first. If that doesn't compile, you'll have
-to use jmemname.c; be sure to adjust select_file_name() for local conditions.
-You may also need to change unlink() to remove() in close_backing_store().
-
-Except with jmemnobs.c or jmemmac.c, you need to adjust the DEFAULT_MAX_MEM
-setting to a reasonable value for your system (either by adding a #define for
-DEFAULT_MAX_MEM to jconfig.h, or by adding a -D switch to the Makefile).
-This value limits the amount of data space the program will attempt to
-allocate. Code and static data space isn't counted, so the actual memory
-needs for cjpeg or djpeg are typically 100 to 150Kb more than the max-memory
-setting. Larger max-memory settings reduce the amount of I/O needed to
-process a large image, but too large a value can result in "insufficient
-memory" failures. On most Unix machines (and other systems with virtual
-memory), just set DEFAULT_MAX_MEM to several million and forget it. At the
-other end of the spectrum, for MS-DOS machines you probably can't go much
-above 300K to 400K. (On MS-DOS the value refers to conventional memory only.
-Extended/expanded memory is handled separately by jmemdos.c.)
-
-
-BUILDING THE SOFTWARE
-=====================
-
-Now you should be able to compile the software. Just say "make" (or
-whatever's necessary to start the compilation). Have a cup of coffee.
-
-Here are some things that could go wrong:
-
-If your compiler complains about undefined structures, you should be able to
-shut it up by putting "#define INCOMPLETE_TYPES_BROKEN" in jconfig.h.
-
-If you have trouble with missing system include files or inclusion of the
-wrong ones, read jinclude.h. This shouldn't happen if you used configure
-or ckconfig.c to set up jconfig.h.
-
-There are a fair number of routines that do not use all of their parameters;
-some compilers will issue warnings about this, which you can ignore. There
-are also a few configuration checks that may give "unreachable code" warnings.
-Any other warning deserves investigation.
-
-If you don't have a getenv() library routine, define NO_GETENV.
-
-Also see the system-specific hints, below.
-
-
-TESTING THE SOFTWARE
-====================
-
-As a quick test of functionality we've included a small sample image in
-several forms:
- testorig.jpg Starting point for the djpeg tests.
- testimg.ppm The output of djpeg testorig.jpg
- testimg.bmp The output of djpeg -bmp -colors 256 testorig.jpg
- testimg.jpg The output of cjpeg testimg.ppm
- testprog.jpg Progressive-mode equivalent of testorig.jpg.
- testimgp.jpg The output of cjpeg -progressive -optimize testimg.ppm
-(The first- and second-generation .jpg files aren't identical since JPEG is
-lossy.) If you can generate duplicates of the testimg* files then you
-probably have working programs.
-
-With most of the makefiles, "make test" will perform the necessary
-comparisons.
-
-If you're using a makefile that doesn't provide the test option, run djpeg
-and cjpeg by hand and compare the output files to testimg* with whatever
-binary file comparison tool you have. The files should be bit-for-bit
-identical.
-
-If the programs complain "MAX_ALLOC_CHUNK is wrong, please fix", then you
-need to reduce MAX_ALLOC_CHUNK to a value that fits in type size_t.
-Try adding "#define MAX_ALLOC_CHUNK 65520L" to jconfig.h. A less likely
-configuration error is "ALIGN_TYPE is wrong, please fix": defining ALIGN_TYPE
-as long should take care of that one.
-
-If the cjpeg test run fails with "Missing Huffman code table entry", it's a
-good bet that you needed to define RIGHT_SHIFT_IS_UNSIGNED. Go back to the
-configuration step and run ckconfig.c. (This is a good plan for any other
-test failure, too.)
-
-If you are using Unix (one-file) command line style on a non-Unix system,
-it's a good idea to check that binary I/O through stdin/stdout actually
-works. You should get the same results from "djpeg <testorig.jpg >out.ppm"
-as from "djpeg -outfile out.ppm testorig.jpg". Note that the makefiles all
-use the latter style and therefore do not exercise stdin/stdout! If this
-check fails, try recompiling with USE_SETMODE or USE_FDOPEN defined.
-If it still doesn't work, better use two-file style.
-
-If you chose a memory manager other than jmemnobs.c, you should test that
-temporary-file usage works. Try "djpeg -bmp -colors 256 -max 0 testorig.jpg"
-and make sure its output matches testimg.bmp. If you have any really large
-images handy, try compressing them with -optimize and/or decompressing with
--colors 256 to make sure your DEFAULT_MAX_MEM setting is not too large.
-
-NOTE: this is far from an exhaustive test of the JPEG software; some modules,
-such as 1-pass color quantization, are not exercised at all. It's just a
-quick test to give you some confidence that you haven't missed something
-major.
-
-
-INSTALLING THE SOFTWARE
-=======================
-
-Once you're done with the above steps, you can install the software by
-copying the executable files (cjpeg, djpeg, jpegtran, rdjpgcom, and wrjpgcom)
-to wherever you normally install programs. On Unix systems, you'll also want
-to put the man pages (cjpeg.1, djpeg.1, jpegtran.1, rdjpgcom.1, wrjpgcom.1)
-in the man-page directory. The pre-fab makefiles don't support this step
-since there's such a wide variety of installation procedures on different
-systems.
-
-If you generated a Makefile with the "configure" script, you can just say
- make install
-to install the programs and their man pages into the standard places.
-(You'll probably need to be root to do this.) We recommend first saying
- make -n install
-to see where configure thought the files should go. You may need to edit
-the Makefile, particularly if your system's conventions for man page
-filenames don't match what configure expects.
-
-If you want to install the IJG library itself, for use in compiling other
-programs besides ours, then you need to put the four include files
- jpeglib.h jerror.h jconfig.h jmorecfg.h
-into your include-file directory, and put the library file libjpeg.a
-(extension may vary depending on system) wherever library files go.
-If you generated a Makefile with "configure", it will do what it thinks
-is the right thing if you say
- make install-lib
-
-
-OPTIONAL STUFF
-==============
-
-Progress monitor:
-
-If you like, you can #define PROGRESS_REPORT (in jconfig.h) to enable display
-of percent-done progress reports. The routine provided in cdjpeg.c merely
-prints percentages to stderr, but you can customize it to do something
-fancier.
-
-Utah RLE file format support:
-
-We distribute the software with support for RLE image files (Utah Raster
-Toolkit format) disabled, because the RLE support won't compile without the
-Utah library. If you have URT version 3.1 or later, you can enable RLE
-support as follows:
- 1. #define RLE_SUPPORTED in jconfig.h.
- 2. Add a -I option to CFLAGS in the Makefile for the directory
- containing the URT .h files (typically the "include"
- subdirectory of the URT distribution).
- 3. Add -L... -lrle to LDLIBS in the Makefile, where ... specifies
- the directory containing the URT "librle.a" file (typically the
- "lib" subdirectory of the URT distribution).
-
-Support for 12-bit-deep pixel data:
-
-The JPEG standard allows either 8-bit or 12-bit data precision. (For color,
-this means 8 or 12 bits per channel, of course.) If you need to work with
-deeper than 8-bit data, you can compile the IJG code for 12-bit operation.
-To do so:
- 1. In jmorecfg.h, define BITS_IN_JSAMPLE as 12 rather than 8.
- 2. In jconfig.h, undefine BMP_SUPPORTED, RLE_SUPPORTED, and TARGA_SUPPORTED,
- because the code for those formats doesn't handle 12-bit data and won't
- even compile. (The PPM code does work, as explained below. The GIF
- code works too; it scales 8-bit GIF data to and from 12-bit depth
- automatically.)
- 3. Compile. Don't expect "make test" to pass, since the supplied test
- files are for 8-bit data.
-
-Currently, 12-bit support does not work on 16-bit-int machines.
-
-Note that a 12-bit version will not read 8-bit JPEG files, nor vice versa;
-so you'll want to keep around a regular 8-bit compilation as well.
-(Run-time selection of data depth, to allow a single copy that does both,
-is possible but would probably slow things down considerably; it's very low
-on our to-do list.)
-
-The PPM reader (rdppm.c) can read 12-bit data from either text-format or
-binary-format PPM and PGM files. Binary-format PPM/PGM files which have a
-maxval greater than 255 are assumed to use 2 bytes per sample, LSB first
-(little-endian order). As of early 1995, 2-byte binary format is not
-officially supported by the PBMPLUS library, but it is expected that a
-future release of PBMPLUS will support it. Note that the PPM reader will
-read files of any maxval regardless of the BITS_IN_JSAMPLE setting; incoming
-data is automatically rescaled to either maxval=255 or maxval=4095 as
-appropriate for the cjpeg bit depth.
-
-The PPM writer (wrppm.c) will normally write 2-byte binary PPM or PGM
-format, maxval 4095, when compiled with BITS_IN_JSAMPLE=12. Since this
-format is not yet widely supported, you can disable it by compiling wrppm.c
-with PPM_NORAWWORD defined; then the data is scaled down to 8 bits to make a
-standard 1-byte/sample PPM or PGM file. (Yes, this means still another copy
-of djpeg to keep around. But hopefully you won't need it for very long.
-Poskanzer's supposed to get that new PBMPLUS release out Real Soon Now.)
-
-Of course, if you are working with 12-bit data, you probably have it stored
-in some other, nonstandard format. In that case you'll probably want to
-write your own I/O modules to read and write your format.
-
-Note that a 12-bit version of cjpeg always runs in "-optimize" mode, in
-order to generate valid Huffman tables. This is necessary because our
-default Huffman tables only cover 8-bit data.
-
-Removing code:
-
-If you need to make a smaller version of the JPEG software, some optional
-functions can be removed at compile time. See the xxx_SUPPORTED #defines in
-jconfig.h and jmorecfg.h. If at all possible, we recommend that you leave in
-decoder support for all valid JPEG files, to ensure that you can read anyone's
-output. Taking out support for image file formats that you don't use is the
-most painless way to make the programs smaller. Another possibility is to
-remove some of the DCT methods: in particular, the "IFAST" method may not be
-enough faster than the others to be worth keeping on your machine. (If you
-do remove ISLOW or IFAST, be sure to redefine JDCT_DEFAULT or JDCT_FASTEST
-to a supported method, by adding a #define in jconfig.h.)
-
-
-OPTIMIZATION
-============
-
-Unless you own a Cray, you'll probably be interested in making the JPEG
-software go as fast as possible. This section covers some machine-dependent
-optimizations you may want to try. We suggest that before trying any of
-this, you first get the basic installation to pass the self-test step.
-Repeat the self-test after any optimization to make sure that you haven't
-broken anything.
-
-The integer DCT routines perform a lot of multiplications. These
-multiplications must yield 32-bit results, but none of their input values
-are more than 16 bits wide. On many machines, notably the 680x0 and 80x86
-CPUs, a 16x16=>32 bit multiply instruction is faster than a full 32x32=>32
-bit multiply. Unfortunately there is no portable way to specify such a
-multiplication in C, but some compilers can generate one when you use the
-right combination of casts. See the MULTIPLYxxx macro definitions in
-jdct.h. If your compiler makes "int" be 32 bits and "short" be 16 bits,
-defining SHORTxSHOR