50 #define DEBUG_PRINT(x) \
52 printf("AVI DEBUG: " x); \
114 for (cur_stream = 0; cur_stream < movie->
header->
Streams; cur_stream++) {
116 if (stream_num == 0) {
136 return 10 * (fccs[0] -
'0') + (fccs[1] -
'0');
148 if (!isdigit(fccs[0]) || !isdigit(fccs[1]) || (fccs[2] !=
'd' && fccs[2] !=
'w')) {
151 if (!
ELEM(fccs[3],
'b',
'c')) {
162 if ((
int)in_error < 0) {
173 printf(
"AVI ERROR: compressed in an unsupported format\n");
176 printf(
"AVI ERROR: could not open file\n");
179 printf(
"AVI ERROR: could not read from file\n");
182 printf(
"AVI ERROR: could not write to file\n");
185 printf(
"AVI ERROR: file is in an illegal or unrecognized format\n");
188 printf(
"AVI ERROR: error encountered while allocating memory\n");
191 printf(
"AVI ERROR: program made illegal request\n");
194 printf(
"AVI ERROR: movie did not contain expected item\n");
209 int movie_tracks = 0;
256 DEBUG_PRINT(
"Number of streams should be in range 1-65536\n");
283 if (fcca ==
FCC(
"DIB ") || fcca ==
FCC(
"RGB ") || fcca ==
FCC(
"rgb ") ||
284 fcca ==
FCC(
"RAW ") || fcca == 0) {
287 else if (fcca ==
FCC(
"mjpg") || fcca ==
FCC(
"MJPG")) {
349 if (fcca ==
FCC(
"DIB ") || fcca ==
FCC(
"RGB ") || fcca ==
FCC(
"rgb ") ||
350 fcca ==
FCC(
"RAW ") || fcca == 0) {
353 else if (fcca ==
FCC(
"mjpg") || fcca ==
FCC(
"MJPG")) {
375 DEBUG_PRINT(
"incorrect size in header or error in AVI\n");
391 return (movie_tracks != 0);
396 int temp, fcca,
size, j;
444 DEBUG_PRINT(
"Number of streams should be in range 1-65536\n");
467 if (fcca ==
FCC(
"DIB ") || fcca ==
FCC(
"RGB ") || fcca ==
FCC(
"rgb ") ||
468 fcca ==
FCC(
"RAW ") || fcca == 0) {
471 else if (fcca ==
FCC(
"mjpg") || fcca ==
FCC(
"MJPG")) {
529 if (fcca ==
FCC(
"DIB ") || fcca ==
FCC(
"RGB ") || fcca ==
FCC(
"rgb ") ||
530 fcca ==
FCC(
"RAW ") || fcca == 0) {
533 else if (fcca ==
FCC(
"mjpg") || fcca ==
FCC(
"MJPG")) {
553 DEBUG_PRINT(
"incorrect size in header or error in AVI\n");
570 if (temp ==
FCC(
"LIST")) {
581 DEBUG_PRINT(
"incorrect size in header or error in AVI\n");
614 printf(
"Index entry %04d: ChunkId:%s Flags:%d Offset:%d Size:%d\n",
641 int cur_frame = -1, i = 0, rewind = 1;
646 while (rewind && frame > -1) {
651 while (cur_frame < frame && i < movie->index_entries) {
654 if ((cur_frame == frame - 1) && (movie->
entries[i].
Size == 0)) {
666 if (cur_frame != frame) {
717 int64_t header_pos1, header_pos2;
718 int64_t stream_pos1, stream_pos2;
732 for (i = 0; i < 1 + streams * 2; i++) {
760 DEBUG_PRINT(
"Number of streams should be in range 0-65536\n");
767 va_start(ap, streams);
860 PUT_FCCN((stream_pos2 - stream_pos1 + 4L), movie->
fp);
867 if (junk_pos < 2024 - 8) {
869 chunk.
size = 2024 - 8 - (int)junk_pos;
873 for (i = 0; i < chunk.
size; i++) {
890 PUT_FCCN((header_pos2 - header_pos1 + 4L), movie->
fp);
933 va_start(ap, frame_num);
935 for (stream = 0; stream < movie->
header->
Streams; stream++) {
936 unsigned int tbuf = 0;
939 buffer = va_arg(ap,
void *);
940 size_t size = va_arg(ap,
int);
1007 int temp, movi_size, i;
struct _AviBitmapInfoHeader AviBitmapInfoHeader
#define AVIF_MUSTUSEINDEX
struct _AviIndexEntry AviIndexEntry
File and directory operations.
int64_t BLI_ftell(FILE *stream) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_fseek(FILE *stream, int64_t offset, int whence)
FILE * BLI_fopen(const char *filename, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Compatibility-like things for windows.
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
unsigned int GET_FCC(FILE *fp)
char * fcc_to_char(unsigned int fcc)
AviError AVI_close(AviMovie *movie)
AviError AVI_open_compress(char *name, AviMovie *movie, int streams,...)
char * tcc_to_char(unsigned int tcc)
AviError AVI_close_compress(AviMovie *movie)
static int fcc_get_stream(int fcc)
static bool fcc_is_data(int fcc)
bool AVI_is_avi(const char *name)
void * AVI_read_frame(AviMovie *movie, AviFormat format, int frame, int stream)
unsigned int GET_TCC(FILE *fp)
AviError AVI_print_error(AviError in_error)
AviError AVI_write_frame(AviMovie *movie, int frame_num,...)
int AVI_get_stream(AviMovie *movie, int avist_type, int stream_num)
AviError AVI_open_movie(const char *name, AviMovie *movie)
int avi_get_format_type(AviFormat format)
int avi_get_format_compression(AviFormat format)
int avi_get_data_id(AviFormat format, int stream)
void * avi_format_convert(AviMovie *movie, int stream, void *buffer, AviFormat from, AviFormat to, size_t *size)
int avi_get_format_fcc(AviFormat format)
void awrite(AviMovie *movie, void *datain, int block, int size, FILE *fp, int type)
#define PUT_FCCN(num, fp)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int ccl_global float * buffer
void(* MEM_freeN)(void *vmemh)
void *(* MEM_calloc_arrayN)(size_t len, size_t size, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void error(const char *str)