mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 09:39:15 +00:00
45 lines
820 B
C
45 lines
820 B
C
#include "emscripten.h"
|
|
#include "src/webp/encode.h"
|
|
#include <stdlib.h>
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
int version() {
|
|
return WebPGetEncoderVersion();
|
|
}
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
uint8_t* create_buffer(int width, int height) {
|
|
return malloc(width * height * 4 * sizeof(uint8_t));
|
|
}
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
void destroy_buffer(uint8_t* p) {
|
|
free(p);
|
|
}
|
|
|
|
int result[2];
|
|
EMSCRIPTEN_KEEPALIVE
|
|
void encode(uint8_t* img_in, int width, int height, float quality) {
|
|
uint8_t* img_out;
|
|
size_t size;
|
|
size = WebPEncodeRGBA(img_in, width, height, width * 4, quality, &img_out);
|
|
result[0] = (int)img_out;
|
|
result[1] = size;
|
|
}
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
void free_result() {
|
|
WebPFree(result[0]);
|
|
}
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
int get_result_pointer() {
|
|
return result[0];
|
|
}
|
|
|
|
EMSCRIPTEN_KEEPALIVE
|
|
int get_result_size() {
|
|
return result[1];
|
|
}
|
|
|