Пример #1
0
PyObject* encode_wrapper(WebPEncodeFunc encode_func, PyObject* self, PyObject* args)
{
    PyStringObject *data_string;
    int width;
    int height;
    int stride;
    float quality_factor;

    if (!PyArg_ParseTuple(args, "Siiif", &data_string, &width, &height, &stride, &quality_factor)) {
        Py_INCREF(Py_None);
        return Py_None;
    }
    
    uint8_t *data;
    Py_ssize_t size;
    PyString_AsStringAndSize((struct PyObject *) data_string, &data, &size);

    if (stride * height > size) {
        Py_INCREF(Py_None);
        return Py_None;
    }

    uint8_t *output;
    size_t ret_size = encode_func(data, width, height, stride, quality_factor, &output);
    if (ret_size > 0) {
        PyObject *ret = PyString_FromStringAndSize(output, ret_size);
        free(output);
        return ret;
    }
    Py_INCREF(Py_None);
    return Py_None;
}
Пример #2
0
void encode_funcs( func_node *func_list )
{
  func_node *walk = func_list;
  while (walk)
  {
    encode_func( walk );
    walk = walk->link;
  }
}
Пример #3
0
static char *
stringEncode(
	const char *src, 
	MODPCodecType codec) {
	size_t srclen;
	char *dest, *fdest, *result;
	int d = -1;
	
	int (*encode_func)(char*, const char*,int);
	size_t (*encode_len_func)(size_t);
	
	if(src == NULL)
		return NULL;
	
	switch (codec) {
		case MODPCodecBase64:
			encode_func = modp_b64_encode;
			encode_len_func = b64_encode_len;
		break;
		case MODPCodecBase64W:
			encode_func = modp_b64w_encode;
			encode_len_func = b64w_encode_len;
		break;
		case MODPCodecBase16:
			encode_func = modp_b16_encode;
			encode_len_func = b16_encode_len;
		break;
		case MODPCodecBase2:
			encode_func = modp_b2_encode;
			encode_len_func = b2_encode_len;
		break;
		default:
			return NULL;
	}	
	
	result = NULL;
	srclen = strlen(src);	
	if (srclen) {
		if (NULL != (dest = malloc(encode_len_func(srclen) +1))) {
			if ( 0 < (d = encode_func(dest, src, srclen))) {
				if (NULL != (fdest = str_resize(dest, d))) {
					result = fdest;
				}
			}
			free(dest);
		}
	}
	
	return result;
}