* @see mm_util_png_data, mm_util_init_encode_png
* @since R1, 1.0
*/
-int mm_util_encode_to_png_file(void **data, mm_util_png_data * encoded, const char *fpath);
+int mm_util_encode_to_png_file(void **data, mm_util_png_data * encoded, const char *fpath, mm_util_png_compression compression_level);
/**
* This function extracts raw data to memory
* @see mm_util_png_data, mm_util_init_encode_png
* @since R1, 1.0
*/
-int mm_util_encode_to_png_memory(void **data, mm_util_png_data * encoded);
+int mm_util_encode_to_png_memory(void **data, mm_util_png_data * encoded, mm_util_png_compression compression_level);
/**
* This function initializes the values of mm_util_png.
*/
void mm_util_init_encode_png(mm_util_png_data * data);
-/**
- * This function sets compression level of encoding.
- * This function should be called after mm_util_init_encode_png.
- *
- * @param data [in] pointer of mm_util_png_data.
- * @param compression_level [in] Level of compression while encoding.
- * @return None.
- * @remark Check mm_util_png_compression for valid values
- * @see mm_util_png, mm_util_png_data, mm_util_init_encode_png
- * @since R1, 1.0
- */
-void mm_util_png_encode_set_compression_level(mm_util_png_data * data, mm_util_png_compression compression_level);
-
-/**
- * This function sets width of the encoded image.
- * This function should be called after mm_util_init_encode_png.
- *
- * @param data [in] pointer of mm_util_png_data.
- * @param width [in] width of the encoded image.
- * @return None.
- * @remark
- * @see mm_util_png_data, mm_util_init_encode_png
- * @since R1, 1.0
- */
-void mm_util_png_encode_set_width(mm_util_png_data * data, uint32_t width);
-
-/**
- * This function sets height of the encoded image.
- * This function should be called after mm_util_init_encode_png.
- *
- * @param data [in] pointer of mm_util_png_data.
- * @param height [in] height of the encoded image.
- * @return None.
- * @remark
- * @see mm_util_png_data, mm_util_init_encode_png
- * @since R1, 1.0
- */
-void mm_util_png_encode_set_height(mm_util_png_data * data, uint32_t height);
-
#ifdef __cplusplus
}
#endif
}
}
-int write_png(void **data, mm_util_png_data *encoded, FILE *fp)
+int write_png(void **data, mm_util_png_data *encoded, FILE *fp, mm_util_png_compression compression_level)
{
png_structp png_ptr;
png_infop info_ptr;
mm_util_debug("write_png");
encoded->data = NULL;
encoded->size = 0;
+ encoded->png.compression_level = compression_level;
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, (png_voidp) NULL, __user_error_fn, __user_warning_fn);
return MM_UTIL_ERROR_NONE;
}
-int mm_util_encode_to_png_file(void **data, mm_util_png_data *encoded, const char *fpath)
+int mm_util_encode_to_png_file(void **data, mm_util_png_data *encoded, const char *fpath, mm_util_png_compression compression_level)
{
int ret = MM_UTIL_ERROR_NONE;
FILE *fp;
return ret;
}
- ret = write_png(data, encoded, fp);
+ ret = write_png(data, encoded, fp, compression_level);
return ret;
}
-int mm_util_encode_to_png_memory(void **data, mm_util_png_data *encoded)
+int mm_util_encode_to_png_memory(void **data, mm_util_png_data *encoded, mm_util_png_compression compression_level)
{
int ret;
mm_util_debug("mm_util_encode_to_memory");
- ret = write_png(data, encoded, NULL);
+
+ ret = write_png(data, encoded, NULL, compression_level);
return ret;
}
data->png.interlace_type = PNG_INTERLACE_NONE;
data->png.bit_depth = MM_UTIL_BIT_DEPTH_8;
}
-
-void mm_util_png_encode_set_compression_level(mm_util_png_data *data, mm_util_png_compression compression_level)
-{
- data->png.compression_level = compression_level;
-}
-
-void mm_util_png_encode_set_width(mm_util_png_data *data, uint32_t width)
-{
- data->width = width;
-}
-
-void mm_util_png_encode_set_height(mm_util_png_data *data, uint32_t height)
-{
- data->height = height;
-}
void *data;
void *src = NULL;
int src_size = 0;
+ mm_util_png_compression compression = MM_UTIL_COMPRESSION_6; /* default */
if (argc < 2) {
fprintf(stderr, "\t[usage]\n");
if (!strcmp("decode", argv[1])) {
mm_util_init_decode_png(&decoded_data);
- if (argv[3]) {
-#if 0
- mm_util_png_decode_set_progressive(&decoded_data, atoi(argv[3]));
- mm_util_png_decode_set_progressive_bytes(&decoded_data, 10000);
-#endif
- }
ret = mm_util_decode_from_png_file(&decoded_data, argv[2]);
} else if (!strcmp("decode-mem", argv[1])) {
if (_read_file(argv[2], &src, &src_size)) {
mm_util_init_encode_png(&encoded_data);
if (argv[3])
- mm_util_png_encode_set_compression_level(&encoded_data, atoi(argv[3]));
- mm_util_png_encode_set_width(&encoded_data, decoded_data.width);
- mm_util_png_encode_set_height(&encoded_data, decoded_data.height);
+ compression = atoi(argv[3]);
+
+ encoded_data.width = decoded_data.width;
+ encoded_data.height = decoded_data.height;
if (!strcmp("decode", argv[1])) {
- ret = mm_util_encode_to_png_memory(&data, &encoded_data);
+ ret = mm_util_encode_to_png_memory(&data, &encoded_data, compression);
fprintf(stderr, "Finished encoding encoded_data.size %lu\n", (long unsigned int)encoded_data.size);
_write_file(filename, encoded_data.data, encoded_data.size);
free(encoded_data.data);
} else if (!strcmp("decode-mem", argv[1])) {
- ret = mm_util_encode_to_png_file(&data, &encoded_data, filename);
+ ret = mm_util_encode_to_png_file(&data, &encoded_data, filename, compression);
}
free(decoded_data.data);
free(data);