Ejemplo n.º 1
0
void *avi_converter_from_mjpeg(AviMovie *movie, int stream, unsigned char *buffer, size_t *size)
{
	int deint;
	unsigned char *buf;

	(void)stream; /* unused */

	buf = imb_alloc_pixels(movie->header->Height, movie->header->Width, 3, sizeof(unsigned char), "avi.avi_converter_from_mjpeg 1");
	if (!buf) {
		return NULL;
	}

	deint = Decode_JPEG(buffer, buf, movie->header->Width, movie->header->Height, *size);
	
	MEM_freeN(buffer);
	
	if (deint) {
		buffer = imb_alloc_pixels(movie->header->Height, movie->header->Width, 3, sizeof(unsigned char), "avi.avi_converter_from_mjpeg 2");
		if (buffer) {
			interlace(buffer, buf, movie->header->Width, movie->header->Height);
		}
		MEM_freeN(buf);
	
		buf = buffer;
	}
		
	return buf;
}
Ejemplo n.º 2
0
Archivo: mjpeg.c Proyecto: jinjoh/NOOR
static int check_and_decode_jpeg(unsigned char *inbuf, unsigned char *outbuf, int width, int height, int bufsize) {
		/* JPEG's are always multiples of 16, extra is cropped out AVI's */	
	if ((width&0xF) || (height&0xF)) {
		int i, rrowstride, jrowstride;
		int jwidth= PADUP(width, 16);
		int jheight= PADUP(height, 16);
		unsigned char *tmpbuf= MEM_mallocN(jwidth*jheight*3, "avi.check_and_decode_jpeg");
		int ret= Decode_JPEG(inbuf, tmpbuf, jwidth, jheight, bufsize);
		
			/* crop the tmpbuf into the real buffer */
		rrowstride= width*3;
		jrowstride= jwidth*3;
		for (i=0; i<height; i++)
			memcpy(&outbuf[i*rrowstride], &tmpbuf[i*jrowstride], rrowstride);
		MEM_freeN(tmpbuf);
		
		return ret;
	} else {
		return Decode_JPEG(inbuf, outbuf, width, height, bufsize);
	}
}
Ejemplo n.º 3
0
void *avi_converter_from_mjpeg(AviMovie *movie, int stream, unsigned char *buffer, int *size)
{
	int deint;
	unsigned char *buf;

	(void)stream; /* unused */

	buf = MEM_mallocN(movie->header->Height * movie->header->Width * 3, "avi.avi_converter_from_mjpeg 1");

	deint = Decode_JPEG(buffer, buf, movie->header->Width, movie->header->Height, *size);
	
	MEM_freeN(buffer);
	
	if (deint) {
		buffer = MEM_mallocN(movie->header->Height * movie->header->Width * 3, "avi.avi_converter_from_mjpeg 2");
		interlace(buffer, buf, movie->header->Width, movie->header->Height);
		MEM_freeN(buf);
	
		buf = buffer;
	}
		
	return buf;
}