29 #include "mlt_export.h"
248 #ifdef DOUBLE_MLT_POSITION
249 #define MLT_POSITION_FMT "%f"
250 #define MLT_POSITION_MOD(A, B) ((A) - (B) * ((int) ((A) / (B))))
253 #define MLT_POSITION_MOD(A, B) ((A) % (B))
254 #define MLT_POSITION_FMT "%d"
308 typedef char *(*mlt_serialiser)(
void *,
int length);
309 typedef void *(*mlt_thread_function_t)(
void *);
311 #define MLT_SERVICE(x) ((mlt_service) (x))
312 #define MLT_PRODUCER(x) ((mlt_producer) (x))
313 #define MLT_MULTITRACK(x) ((mlt_multitrack) (x))
314 #define MLT_PLAYLIST(x) ((mlt_playlist) (x))
315 #define MLT_TRACTOR(x) ((mlt_tractor) (x))
316 #define MLT_FILTER(x) ((mlt_filter) (x))
317 #define MLT_TRANSITION(x) ((mlt_transition) (x))
318 #define MLT_CONSUMER(x) ((mlt_consumer) (x))
319 #define MLT_FRAME(x) ((mlt_frame) (x))
320 #define MLT_LINK(x) ((mlt_link) (x))
321 #define MLT_CHAIN(x) ((mlt_chain) (x))
324 #define MIN(x, y) ((x) < (y) ? (x) : (y))
327 #define MAX(x, y) ((x) > (y) ? (x) : (y))
330 #define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x))
336 #if !defined(__MINGW32__)
337 MLT_EXPORT
int usleep(
unsigned int useconds);
339 #ifndef WIN_PTHREADS_TIME_H
340 MLT_EXPORT
int nanosleep(
const struct timespec *rqtp,
struct timespec *rmtp);
342 MLT_EXPORT
int setenv(
const char *name,
const char *value,
int overwrite);
343 MLT_EXPORT
char *getlocale();
344 MLT_EXPORT FILE *win32_fopen(
const char *filename_utf8,
const char *mode_utf8);
345 #include <sys/stat.h>
346 #include <sys/types.h>
347 MLT_EXPORT
int win32_stat(
const char *filename_utf8,
struct stat *buffer);
349 MLT_EXPORT
char *strptime(
const char *buf,
const char *fmt,
struct tm *tm);
350 #define mlt_fopen win32_fopen
351 #define mlt_stat win32_stat
352 #define MLT_DIRLIST_DELIMITER ";"
354 #define mlt_fopen fopen
355 #define mlt_stat stat
356 #define MLT_DIRLIST_DELIMITER ":"
memory pooling functionality
struct mlt_multitrack_s * mlt_multitrack
pointer to Multitrack object
Definition: mlt_types.h:288
struct mlt_cache_s * mlt_cache
pointer to Cache object
Definition: mlt_types.h:300
mlt_time_format
The time string formats.
Definition: mlt_types.h:172
@ mlt_time_clock
SMIL clock-value as [[hh:]mm:]ss[.fraction].
Definition: mlt_types.h:174
@ mlt_time_smpte_ndf
SMPTE NDF timecode as [[[hh:]mm:]ss:]frames.
Definition: mlt_types.h:176
@ mlt_time_smpte_df
SMPTE timecode as [[[hh:]mm:]ss{:|;}]frames.
Definition: mlt_types.h:175
@ mlt_time_frames
frame count
Definition: mlt_types.h:173
MLT_EXPORT const char * mlt_deinterlacer_name(mlt_deinterlacer method)
Definition: mlt_types.c:27
int32_t mlt_position
Definition: mlt_types.h:255
struct mlt_property_s * mlt_property
pointer to Property object
Definition: mlt_types.h:282
struct mlt_audio_s * mlt_audio
pointer to Audio object
Definition: mlt_types.h:279
struct mlt_profile_s * mlt_profile
pointer to Profile object
Definition: mlt_types.h:298
struct mlt_frame_s ** mlt_frame_ptr
pointer to Frame object
Definition: mlt_types.h:281
struct mlt_tractor_s * mlt_tractor
pointer to Tractor object
Definition: mlt_types.h:291
struct mlt_event_struct * mlt_event
pointer to Event object
Definition: mlt_types.h:284
struct mlt_chain_s * mlt_chain
pointer to Chain object
Definition: mlt_types.h:305
mlt_channel_layout
Definition: mlt_types.h:67
@ mlt_channel_mono
Definition: mlt_types.h:70
@ mlt_channel_quad_side
Definition: mlt_types.h:77
@ mlt_channel_2p1
Definition: mlt_types.h:72
@ mlt_channel_6p0
Definition: mlt_types.h:84
@ mlt_channel_3p0
Definition: mlt_types.h:73
@ mlt_channel_6p1_back
Definition: mlt_types.h:88
@ mlt_channel_independent
channels are not related
Definition: mlt_types.h:69
@ mlt_channel_6p0_front
Definition: mlt_types.h:85
@ mlt_channel_stereo
Definition: mlt_types.h:71
@ mlt_channel_4p1
Definition: mlt_types.h:81
@ mlt_channel_3p0_back
Definition: mlt_types.h:74
@ mlt_channel_6p1_front
Definition: mlt_types.h:89
@ mlt_channel_7p0_front
Definition: mlt_types.h:91
@ mlt_channel_7p1_wide_back
Definition: mlt_types.h:94
@ mlt_channel_auto
MLT will determine the default configuration based on channel number.
Definition: mlt_types.h:68
@ mlt_channel_7p0
Definition: mlt_types.h:90
@ mlt_channel_5p1
Definition: mlt_types.h:83
@ mlt_channel_5p0
Definition: mlt_types.h:80
@ mlt_channel_7p1_wide_side
Definition: mlt_types.h:93
@ mlt_channel_4p0
Definition: mlt_types.h:75
@ mlt_channel_5p0_back
Definition: mlt_types.h:79
@ mlt_channel_7p1
Definition: mlt_types.h:92
@ mlt_channel_5p1_back
Definition: mlt_types.h:82
@ mlt_channel_6p1
Definition: mlt_types.h:87
@ mlt_channel_3p1
Definition: mlt_types.h:78
@ mlt_channel_hexagonal
Definition: mlt_types.h:86
@ mlt_channel_quad_back
Definition: mlt_types.h:76
struct mlt_deque_s * mlt_deque
pointer to Deque object
Definition: mlt_types.h:295
struct mlt_consumer_s * mlt_consumer
pointer to Consumer object
Definition: mlt_types.h:293
struct mlt_geometry_item_s * mlt_geometry_item
pointer to Geometry Item object
Definition: mlt_types.h:297
struct mlt_producer_s * mlt_producer
pointer to Producer object
Definition: mlt_types.h:286
mlt_deinterlacer
Definition: mlt_types.h:156
@ mlt_deinterlacer_yadif
Definition: mlt_types.h:164
@ mlt_deinterlacer_yadif_nospatial
Definition: mlt_types.h:163
@ mlt_deinterlacer_estdif
Definition: mlt_types.h:166
@ mlt_deinterlacer_invalid
Definition: mlt_types.h:167
@ mlt_deinterlacer_none
Definition: mlt_types.h:157
@ mlt_deinterlacer_weave
Definition: mlt_types.h:160
@ mlt_deinterlacer_linearblend
Definition: mlt_types.h:159
@ mlt_deinterlacer_bob
Definition: mlt_types.h:161
@ mlt_deinterlacer_onefield
Definition: mlt_types.h:158
@ mlt_deinterlacer_greedy
Definition: mlt_types.h:162
@ mlt_deinterlacer_bwdif
Definition: mlt_types.h:165
struct mlt_filter_s * mlt_filter
pointer to Filter object
Definition: mlt_types.h:289
struct mlt_animation_s * mlt_animation
pointer to Property Animation object
Definition: mlt_types.h:302
struct mlt_parser_s * mlt_parser
pointer to Properties object
Definition: mlt_types.h:294
struct mlt_field_s * mlt_field
pointer to Field object
Definition: mlt_types.h:292
void(* mlt_destructor)(void *)
pointer to destructor function
Definition: mlt_types.h:307
mlt_whence
The relative time qualifiers.
Definition: mlt_types.h:224
@ mlt_whence_relative_current
relative to the current position
Definition: mlt_types.h:226
@ mlt_whence_relative_start
relative to the beginning
Definition: mlt_types.h:225
@ mlt_whence_relative_end
relative to the end
Definition: mlt_types.h:227
mlt_keyframe_type
Interpolation methods for animation keyframes.
Definition: mlt_types.h:181
@ mlt_keyframe_sinusoidal_out
Definition: mlt_types.h:191
@ mlt_keyframe_quadratic_out
Definition: mlt_types.h:194
@ mlt_keyframe_smooth_loose
Unity Catmull-Rom spline interpolation.
Definition: mlt_types.h:186
@ mlt_keyframe_linear
simple, constant pace from this key frame to the next
Definition: mlt_types.h:184
@ mlt_keyframe_exponential_in_out
Definition: mlt_types.h:207
@ mlt_keyframe_sinusoidal_in
Definition: mlt_types.h:190
@ mlt_keyframe_circular_in_out
Definition: mlt_types.h:210
@ mlt_keyframe_quintic_out
Definition: mlt_types.h:203
@ mlt_keyframe_bounce_in
Definition: mlt_types.h:217
@ mlt_keyframe_quintic_in
Definition: mlt_types.h:202
@ mlt_keyframe_smooth
deprecated use mlt_keyframe_smooth_loose
Definition: mlt_types.h:185
@ mlt_keyframe_circular_in
Definition: mlt_types.h:208
@ mlt_keyframe_bounce_in_out
Definition: mlt_types.h:219
@ mlt_keyframe_elastic_in
Definition: mlt_types.h:214
@ mlt_keyframe_smooth_tight
Centripetal Catmull-Rom spline interpolation with 0 slope at each keyframe.
Definition: mlt_types.h:189
@ mlt_keyframe_discrete
non-interpolated; value changes instantaneously at the key frame
Definition: mlt_types.h:182
@ mlt_keyframe_quartic_out
Definition: mlt_types.h:200
@ mlt_keyframe_back_out
Definition: mlt_types.h:212
@ mlt_keyframe_cubic_out
Definition: mlt_types.h:197
@ mlt_keyframe_elastic_in_out
Definition: mlt_types.h:216
@ mlt_keyframe_cubic_in_out
Definition: mlt_types.h:198
@ mlt_keyframe_quintic_in_out
Definition: mlt_types.h:204
@ mlt_keyframe_back_in
Definition: mlt_types.h:211
@ mlt_keyframe_quadratic_in_out
Definition: mlt_types.h:195
@ mlt_keyframe_back_in_out
Definition: mlt_types.h:213
@ mlt_keyframe_circular_out
Definition: mlt_types.h:209
@ mlt_keyframe_sinusoidal_in_out
Definition: mlt_types.h:192
@ mlt_keyframe_bounce_out
Definition: mlt_types.h:218
@ mlt_keyframe_quartic_in
Definition: mlt_types.h:199
@ mlt_keyframe_quartic_in_out
Definition: mlt_types.h:201
@ mlt_keyframe_cubic_in
Definition: mlt_types.h:196
@ mlt_keyframe_exponential_in
Definition: mlt_types.h:205
@ mlt_keyframe_smooth_natural
Centripetal Catmull-Rom spline interpolation with natural slope at each keyframe.
Definition: mlt_types.h:188
@ mlt_keyframe_quadratic_in
Definition: mlt_types.h:193
@ mlt_keyframe_elastic_out
Definition: mlt_types.h:215
@ mlt_keyframe_exponential_out
Definition: mlt_types.h:206
mlt_service_type
The recognized subclasses of mlt_service.
Definition: mlt_types.h:232
@ mlt_service_consumer_type
Consumer class.
Definition: mlt_types.h:241
@ mlt_service_link_type
Link class.
Definition: mlt_types.h:243
@ mlt_service_producer_type
Producer class.
Definition: mlt_types.h:235
@ mlt_service_tractor_type
Tractor class.
Definition: mlt_types.h:236
@ mlt_service_filter_type
Filter class.
Definition: mlt_types.h:239
@ mlt_service_invalid_type
invalid service
Definition: mlt_types.h:233
@ mlt_service_unknown_type
unknown class
Definition: mlt_types.h:234
@ mlt_service_transition_type
Transition class.
Definition: mlt_types.h:240
@ mlt_service_chain_type
Chain class.
Definition: mlt_types.h:244
@ mlt_service_multitrack_type
Multitrack class.
Definition: mlt_types.h:238
@ mlt_service_playlist_type
Playlist class.
Definition: mlt_types.h:237
@ mlt_service_field_type
Field class.
Definition: mlt_types.h:242
mlt_colorspace
Colorspace definitions.
Definition: mlt_types.h:99
@ mlt_colorspace_bt2020_cl
ITU-R BT2020 constant luminance system.
Definition: mlt_types.h:111
@ mlt_colorspace_reserved
Definition: mlt_types.h:103
@ mlt_colorspace_smpte240m
functionally identical to above
Definition: mlt_types.h:108
@ mlt_colorspace_bt470bg
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
Definition: mlt_types.h:105
@ mlt_colorspace_invalid
Definition: mlt_types.h:114
@ mlt_colorspace_bt2020_ncl
ITU-R BT2020 non-constant luminance system.
Definition: mlt_types.h:110
@ mlt_colorspace_fcc
FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
Definition: mlt_types.h:104
@ mlt_colorspace_smpte2085
SMPTE 2085, Y'D'zD'x.
Definition: mlt_types.h:112
@ mlt_colorspace_unspecified
Definition: mlt_types.h:102
@ mlt_colorspace_bt601
BT.470 (625/PAL) or SMPTE170M (525/NTSC)
Definition: mlt_types.h:113
@ mlt_colorspace_rgb
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB)
Definition: mlt_types.h:100
@ mlt_colorspace_smpte170m
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition: mlt_types.h:107
@ mlt_colorspace_bt709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
Definition: mlt_types.h:101
@ mlt_colorspace_ycgco
Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16.
Definition: mlt_types.h:109
struct mlt_transition_s * mlt_transition
pointer to Transition object
Definition: mlt_types.h:290
mlt_color_trc
Definition: mlt_types.h:117
@ mlt_color_trc_log
"Logarithmic transfer characteristic (100:1 range)"
Definition: mlt_types.h:128
@ mlt_color_trc_arib_std_b67
ARIB STD-B67, known as "Hybrid log-gamma".
Definition: mlt_types.h:137
@ mlt_color_trc_linear
"Linear transfer characteristics"
Definition: mlt_types.h:127
@ mlt_color_trc_bt2020_10
ITU-R BT2020 for 10-bit system.
Definition: mlt_types.h:133
@ mlt_color_trc_smpte170m
also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
Definition: mlt_types.h:124
@ mlt_color_trc_log_sqrt
"Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
Definition: mlt_types.h:129
@ mlt_color_trc_bt1361_ecg
ITU-R BT1361 Extended Colour Gamut.
Definition: mlt_types.h:131
@ mlt_color_trc_gamma28
also ITU-R BT470BG
Definition: mlt_types.h:123
@ mlt_color_trc_smpte428
SMPTE ST 428-1.
Definition: mlt_types.h:136
@ mlt_color_trc_unspecified
Definition: mlt_types.h:120
@ mlt_color_trc_smpte240m
Definition: mlt_types.h:126
@ mlt_color_trc_invalid
Definition: mlt_types.h:138
@ mlt_color_trc_bt2020_12
ITU-R BT2020 for 12-bit system.
Definition: mlt_types.h:134
@ mlt_color_trc_reserved
Definition: mlt_types.h:121
@ mlt_color_trc_none
Definition: mlt_types.h:118
@ mlt_color_trc_bt709
also ITU-R BT1361
Definition: mlt_types.h:119
@ mlt_color_trc_smpte2084
SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems.
Definition: mlt_types.h:135
@ mlt_color_trc_iec61966_2_1
IEC 61966-2-1 (sRGB or sYCC)
Definition: mlt_types.h:132
@ mlt_color_trc_iec61966_2_4
IEC 61966-2-4.
Definition: mlt_types.h:130
@ mlt_color_trc_gamma22
also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
Definition: mlt_types.h:122
mlt_image_format
The set of supported image formats.
Definition: mlt_types.h:40
@ mlt_image_yuv422p16
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
Definition: mlt_types.h:48
@ mlt_image_yuv420p10
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
Definition: mlt_types.h:49
@ mlt_image_opengl_texture
an OpenGL texture name
Definition: mlt_types.h:47
@ mlt_image_yuv422
8-bit YUV 4:2:2 packed
Definition: mlt_types.h:44
@ mlt_image_rgba
8-bit RGB with alpha channel
Definition: mlt_types.h:43
@ mlt_image_movit
for movit module internal use only
Definition: mlt_types.h:46
@ mlt_image_yuv420p
8-bit YUV 4:2:0 planar
Definition: mlt_types.h:45
@ mlt_image_rgb
8-bit RGB
Definition: mlt_types.h:42
@ mlt_image_invalid
Definition: mlt_types.h:52
@ mlt_image_none
image not available
Definition: mlt_types.h:41
@ mlt_image_yuv444p10
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
Definition: mlt_types.h:50
@ mlt_image_rgba64
16-bit RGB with alpha channel
Definition: mlt_types.h:51
struct mlt_image_s * mlt_image
pointer to Image object
Definition: mlt_types.h:280
struct mlt_playlist_s * mlt_playlist
pointer to Playlist object
Definition: mlt_types.h:287
struct mlt_cache_item_s * mlt_cache_item
pointer to CacheItem object
Definition: mlt_types.h:301
struct mlt_service_s * mlt_service
pointer to Service object
Definition: mlt_types.h:285
mlt_audio_format
The set of supported audio formats.
Definition: mlt_types.h:57
@ mlt_audio_s16
signed 16-bit interleaved PCM
Definition: mlt_types.h:59
@ mlt_audio_f32le
32-bit interleaved floating point
Definition: mlt_types.h:63
@ mlt_audio_s32le
signed 32-bit interleaved PCM
Definition: mlt_types.h:62
@ mlt_audio_none
audio not available
Definition: mlt_types.h:58
@ mlt_audio_u8
unsigned 8-bit interleaved PCM
Definition: mlt_types.h:64
@ mlt_audio_float
32-bit non-interleaved floating point
Definition: mlt_types.h:61
@ mlt_audio_s32
signed 32-bit non-interleaved PCM
Definition: mlt_types.h:60
struct mlt_repository_s * mlt_repository
pointer to Repository object
Definition: mlt_types.h:299
struct mlt_frame_s * mlt_frame
Definition: mlt_types.h:281
struct mlt_link_s * mlt_link
pointer to Link object
Definition: mlt_types.h:304
MLT_EXPORT mlt_deinterlacer mlt_deinterlacer_id(const char *name)
Definition: mlt_types.c:56
mlt_color_primaries
Definition: mlt_types.h:141
@ mlt_color_pri_smpte428
SMPTE ST 428-1 (CIE 1931 XYZ)
Definition: mlt_types.h:150
@ mlt_color_pri_invalid
Definition: mlt_types.h:153
@ mlt_color_pri_film
colour filters using Illuminant C
Definition: mlt_types.h:148
@ mlt_color_pri_bt470m
also FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
Definition: mlt_types.h:144
@ mlt_color_pri_bt709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
Definition: mlt_types.h:143
@ mlt_color_pri_smpte432
SMPTE ST 432-1 (2010) / P3 D65 / Display P3.
Definition: mlt_types.h:152
@ mlt_color_pri_smpte431
SMPTE ST 431-2 (2011) / DCI P3.
Definition: mlt_types.h:151
@ mlt_color_pri_smpte170m
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition: mlt_types.h:147
@ mlt_color_pri_none
Definition: mlt_types.h:142
@ mlt_color_pri_bt2020
ITU-R BT2020.
Definition: mlt_types.h:149
@ mlt_color_pri_bt470bg
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
Definition: mlt_types.h:145
struct mlt_geometry_s * mlt_geometry
pointer to Geometry object
Definition: mlt_types.h:296
struct mlt_slices_s * mlt_slices
pointer to Sliced processing context object
Definition: mlt_types.h:303
struct mlt_properties_s * mlt_properties
pointer to Properties object
Definition: mlt_types.h:283
Property Animation class.
Definition: mlt_animation.c:51
Audio class.
Definition: mlt_audio.h:35
Cache item class.
Definition: mlt_cache.c:50
Cache class.
Definition: mlt_cache.c:82
Chain class.
Definition: mlt_chain.h:38
A tuple of color components.
Definition: mlt_types.h:272
uint8_t g
green
Definition: mlt_types.h:274
uint8_t a
alpha
Definition: mlt_types.h:276
uint8_t b
blue
Definition: mlt_types.h:275
uint8_t r
red
Definition: mlt_types.h:273
Consumer abstract service class.
Definition: mlt_consumer.h:95
Double-Ended Queue (deque) class.
Definition: mlt_deque.c:48
Event class.
Definition: mlt_events.c:62
Field class.
Definition: mlt_field.c:39
Filter abstract service class.
Definition: mlt_filter.h:41
Frame class.
Definition: mlt_frame.h:91
Definition: mlt_image.h:36
Link class.
Definition: mlt_link.h:38
Multitrack class.
Definition: mlt_multitrack.h:49
Parser class.
Definition: mlt_parser.h:35
Playlist class.
Definition: mlt_playlist.h:73
Producer abstract service class.
Definition: mlt_producer.h:71
Profile class.
Definition: mlt_profile.h:36
Properties class.
Definition: mlt_properties.h:41
Property class.
Definition: mlt_property.c:73
A rectangle type with coordinates, size, and opacity.
Definition: mlt_types.h:261
double w
width
Definition: mlt_types.h:264
double y
Y coordinate.
Definition: mlt_types.h:263
double x
X coordinate.
Definition: mlt_types.h:262
double o
opacity / mix-level
Definition: mlt_types.h:266
double h
height
Definition: mlt_types.h:265
Repository class.
Definition: mlt_repository.c:46
Service abstract base class.
Definition: mlt_service.h:59
Definition: mlt_slices.c:57
Tractor class.
Definition: mlt_tractor.h:40
Transition abstract service class.
Definition: mlt_transition.h:44