Blender  V3.3
avi_codecs.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
10 #include "AVI_avi.h"
11 #include "avi_intern.h"
12 
13 #include "avi_mjpeg.h"
14 #include "avi_rgb.h"
15 #include "avi_rgb32.h"
16 
18  AviMovie *movie, int stream, void *buffer, AviFormat from, AviFormat to, size_t *size)
19 {
20  if (from == to) {
21  return buffer;
22  }
23 
24  if (from != AVI_FORMAT_RGB24 && to != AVI_FORMAT_RGB24) {
25  return avi_format_convert(
26  movie,
27  stream,
30  to,
31  size);
32  }
33 
34  switch (to) {
35  case AVI_FORMAT_RGB24:
36  switch (from) {
37  case AVI_FORMAT_AVI_RGB:
38  buffer = avi_converter_from_avi_rgb(movie, stream, buffer, size);
39  break;
40  case AVI_FORMAT_MJPEG:
41  buffer = avi_converter_from_mjpeg(movie, stream, buffer, size);
42  break;
43  case AVI_FORMAT_RGB32:
44  buffer = avi_converter_from_rgb32(movie, stream, buffer, size);
45  break;
46  default:
47  break;
48  }
49  break;
50  case AVI_FORMAT_AVI_RGB:
51  buffer = avi_converter_to_avi_rgb(movie, stream, buffer, size);
52  break;
53  case AVI_FORMAT_MJPEG:
54  buffer = avi_converter_to_mjpeg(movie, stream, buffer, size);
55  break;
56  case AVI_FORMAT_RGB32:
57  buffer = avi_converter_to_rgb32(movie, stream, buffer, size);
58  break;
59  default:
60  break;
61  }
62 
63  return buffer;
64 }
65 
67 {
68  char fcc[5];
69 
70  if (avi_get_format_type(format) == FCC("vids")) {
71  sprintf(fcc, "%2.2ddc", stream);
72  }
73  else if (avi_get_format_type(format) == FCC("auds")) {
74  sprintf(fcc, "%2.2ddc", stream);
75  }
76  else {
77  return 0;
78  }
79 
80  return FCC(fcc);
81 }
82 
84 {
85  switch (format) {
86  case AVI_FORMAT_RGB24:
87  case AVI_FORMAT_RGB32:
88  case AVI_FORMAT_AVI_RGB:
89  case AVI_FORMAT_MJPEG:
90  return FCC("vids");
91  default:
92  return 0;
93  }
94 }
95 
97 {
98  switch (format) {
99  case AVI_FORMAT_RGB24:
100  case AVI_FORMAT_RGB32:
101  case AVI_FORMAT_AVI_RGB:
102  return FCC("DIB ");
103  case AVI_FORMAT_MJPEG:
104  return FCC("MJPG");
105  default:
106  return 0;
107  }
108 }
109 
111 {
112  switch (format) {
113  case AVI_FORMAT_RGB24:
114  case AVI_FORMAT_RGB32:
115  case AVI_FORMAT_AVI_RGB:
116  return 0;
117  case AVI_FORMAT_MJPEG:
118  return FCC("MJPG");
119  default:
120  return 0;
121  }
122 }
#define FCC(ch4)
Definition: AVI_avi.h:215
AviFormat
Definition: AVI_avi.h:144
@ AVI_FORMAT_RGB24
Definition: AVI_avi.h:146
@ AVI_FORMAT_RGB32
Definition: AVI_avi.h:148
@ AVI_FORMAT_AVI_RGB
Definition: AVI_avi.h:150
@ AVI_FORMAT_MJPEG
Definition: AVI_avi.h:152
int avi_get_format_type(AviFormat format)
Definition: avi_codecs.c:83
int avi_get_format_compression(AviFormat format)
Definition: avi_codecs.c:110
int avi_get_data_id(AviFormat format, int stream)
Definition: avi_codecs.c:66
void * avi_format_convert(AviMovie *movie, int stream, void *buffer, AviFormat from, AviFormat to, size_t *size)
Definition: avi_codecs.c:17
int avi_get_format_fcc(AviFormat format)
Definition: avi_codecs.c:96
void * avi_converter_to_mjpeg(AviMovie *movie, int stream, unsigned char *buffer, size_t *size)
Definition: avi_mjpeg.c:410
void * avi_converter_from_mjpeg(AviMovie *movie, int stream, unsigned char *buffer, const size_t *size)
Definition: avi_mjpeg.c:370
void * avi_converter_to_rgb32(AviMovie *movie, int stream, unsigned char *buffer, size_t *size)
Definition: avi_rgb32.c:49
void * avi_converter_from_rgb32(AviMovie *movie, int stream, unsigned char *buffer, size_t *size)
Definition: avi_rgb32.c:20
void * avi_converter_to_avi_rgb(AviMovie *movie, int stream, unsigned char *buffer, size_t *size)
Definition: avi_rgb.c:113
void * avi_converter_from_avi_rgb(AviMovie *movie, int stream, unsigned char *buffer, const size_t *size)
Definition: avi_rgb.c:24
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
StackEntry * from
ccl_global float * buffer
format
Definition: logImageCore.h:38