Changeset View
Changeset View
Standalone View
Standalone View
source/blender/io/avi/intern/avi_mjpeg.c
| Show All 33 Lines | |||||
| #include "IMB_imbuf.h" | #include "IMB_imbuf.h" | ||||
| #include "jerror.h" | #include "jerror.h" | ||||
| #include "jpeglib.h" | #include "jpeglib.h" | ||||
| #include "avi_mjpeg.h" | #include "avi_mjpeg.h" | ||||
| static void jpegmemdestmgr_build(j_compress_ptr cinfo, unsigned char *buffer, size_t bufsize); | static void jpegmemdestmgr_build(j_compress_ptr cinfo, unsigned char *buffer, size_t bufsize); | ||||
| static void jpegmemsrcmgr_build(j_decompress_ptr dinfo, unsigned char *buffer, size_t bufsize); | static void jpegmemsrcmgr_build(j_decompress_ptr dinfo, | ||||
| const unsigned char *buffer, | |||||
| size_t bufsize); | |||||
| static size_t numbytes; | static size_t numbytes; | ||||
| static void add_huff_table(j_decompress_ptr dinfo, | static void add_huff_table(j_decompress_ptr dinfo, | ||||
| JHUFF_TBL **htblptr, | JHUFF_TBL **htblptr, | ||||
| const UINT8 *bits, | const UINT8 *bits, | ||||
| const size_t bits_size, | const size_t bits_size, | ||||
| const UINT8 *val, | const UINT8 *val, | ||||
| ▲ Show 20 Lines • Show All 325 Lines • ▼ Show 20 Lines | if ((i & 1) == odd) { | ||||
| memcpy(&to[(i / 2 + height / 2) * rowstride], &from[i * rowstride], rowstride); | memcpy(&to[(i / 2 + height / 2) * rowstride], &from[i * rowstride], rowstride); | ||||
| } | } | ||||
| else { | else { | ||||
| memcpy(&to[(i / 2) * rowstride], &from[i * rowstride], rowstride); | memcpy(&to[(i / 2) * rowstride], &from[i * rowstride], rowstride); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void *avi_converter_from_mjpeg(AviMovie *movie, int stream, unsigned char *buffer, size_t *size) | void *avi_converter_from_mjpeg(AviMovie *movie, | ||||
| int stream, | |||||
| unsigned char *buffer, | |||||
| const size_t *size) | |||||
| { | { | ||||
| int deint; | int deint; | ||||
| unsigned char *buf; | unsigned char *buf; | ||||
| (void)stream; /* unused */ | (void)stream; /* unused */ | ||||
| buf = imb_alloc_pixels(movie->header->Height, | buf = imb_alloc_pixels(movie->header->Height, | ||||
| movie->header->Width, | movie->header->Width, | ||||
| ▲ Show 20 Lines • Show All 155 Lines • ▼ Show 20 Lines | |||||
| static void jpegmemsrcmgr_term_source(j_decompress_ptr dinfo) | static void jpegmemsrcmgr_term_source(j_decompress_ptr dinfo) | ||||
| { | { | ||||
| numbytes -= dinfo->src->bytes_in_buffer; | numbytes -= dinfo->src->bytes_in_buffer; | ||||
| MEM_freeN(dinfo->src); | MEM_freeN(dinfo->src); | ||||
| } | } | ||||
| static void jpegmemsrcmgr_build(j_decompress_ptr dinfo, unsigned char *buffer, size_t bufsize) | static void jpegmemsrcmgr_build(j_decompress_ptr dinfo, | ||||
| const unsigned char *buffer, | |||||
| size_t bufsize) | |||||
| { | { | ||||
| dinfo->src = MEM_mallocN(sizeof(*(dinfo->src)), "avi.jpegmemsrcmgr_build"); | dinfo->src = MEM_mallocN(sizeof(*(dinfo->src)), "avi.jpegmemsrcmgr_build"); | ||||
| dinfo->src->init_source = jpegmemsrcmgr_init_source; | dinfo->src->init_source = jpegmemsrcmgr_init_source; | ||||
| dinfo->src->fill_input_buffer = jpegmemsrcmgr_fill_input_buffer; | dinfo->src->fill_input_buffer = jpegmemsrcmgr_fill_input_buffer; | ||||
| dinfo->src->skip_input_data = jpegmemsrcmgr_skip_input_data; | dinfo->src->skip_input_data = jpegmemsrcmgr_skip_input_data; | ||||
| dinfo->src->resync_to_restart = jpeg_resync_to_restart; | dinfo->src->resync_to_restart = jpeg_resync_to_restart; | ||||
| dinfo->src->term_source = jpegmemsrcmgr_term_source; | dinfo->src->term_source = jpegmemsrcmgr_term_source; | ||||
| dinfo->src->bytes_in_buffer = bufsize; | dinfo->src->bytes_in_buffer = bufsize; | ||||
| dinfo->src->next_input_byte = buffer; | dinfo->src->next_input_byte = buffer; | ||||
| numbytes = bufsize; | numbytes = bufsize; | ||||
| } | } | ||||