MLT 7.42.0
Multimedia Framework
Macros | Functions
mlt_frame.c File Reference

interface for all frame classes More...

#include "mlt_frame.h"
#include "mlt_factory.h"
#include "mlt_image.h"
#include "mlt_log.h"
#include "mlt_producer.h"
#include "mlt_profile.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Macros

#define CONVERT_IMAGE_CALLBACKS   "_convert_image_callbacks"
 
#define CONVERT_IMAGE_IDX   "_convert_image_idx"
 

Functions

static void copy_consumer_image_hints (mlt_frame dst, mlt_frame src)
 Copy consumer scaling hints from src onto dst.
 
static void copy_image_state (mlt_frame dst, mlt_frame src)
 Copy image properties, alpha, converters, and Movit state from src to dst.
 
static int do_convert_image (mlt_frame self, uint8_t **image, mlt_image_format *format, mlt_image_format output, int idx)
 
static void flatten_foreign_movit (mlt_frame dst, mlt_frame src, mlt_image_format *format)
 Do not fetch an in-progress Movit chain from a different producer.
 
static int generate_test_image (mlt_properties properties, uint8_t **buffer, mlt_image_format *format, int *width, int *height, int writable)
 
void mlt_frame_write_ppm (mlt_frame frame)
 
static int same_original_producer (mlt_frame a, mlt_frame b)
 True when both frames have the same cut-parent original producer.
 
static void share_data (mlt_properties dst, const char *name, void *data, int size)
 Install data on dst without taking ownership.
 
static void share_image (mlt_frame dst, mlt_frame src, uint8_t *image)
 Share image and src's image state onto dst without taking ownership.
 

Detailed Description

interface for all frame classes

See also
mlt_frame_s

Copyright (C) 2003-2026 Meltytech, LLC

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Macro Definition Documentation

◆ CONVERT_IMAGE_CALLBACKS

#define CONVERT_IMAGE_CALLBACKS   "_convert_image_callbacks"

◆ CONVERT_IMAGE_IDX

#define CONVERT_IMAGE_IDX   "_convert_image_idx"

Function Documentation

◆ copy_consumer_image_hints()

static void copy_consumer_image_hints ( mlt_frame  dst,
mlt_frame  src 
)
static

Copy consumer scaling hints from src onto dst.

◆ copy_image_state()

static void copy_image_state ( mlt_frame  dst,
mlt_frame  src 
)
static

Copy image properties, alpha, converters, and Movit state from src to dst.

Does not take ownership of the image or alpha buffers. Producer-keyed _movit chain keys are copied only when both frames share the same original producer.

◆ do_convert_image()

static int do_convert_image ( mlt_frame  self,
uint8_t **  image,
mlt_image_format *  format,
mlt_image_format  output,
int  idx 
)
static

◆ flatten_foreign_movit()

static void flatten_foreign_movit ( mlt_frame  dst,
mlt_frame  src,
mlt_image_format *  format 
)
static

Do not fetch an in-progress Movit chain from a different producer.

mlt_image_movit is keyed by original producer. Across fx_cut / stacking, finalize to rgba64 so the destination can start its own chain. Same-producer prepends keep movit so GPU effects can chain without a CPU round trip.

◆ generate_test_image()

static int generate_test_image ( mlt_properties  properties,
uint8_t **  buffer,
mlt_image_format *  format,
int *  width,
int *  height,
int  writable 
)
static

◆ mlt_frame_write_ppm()

void mlt_frame_write_ppm ( mlt_frame  frame)

◆ same_original_producer()

static int same_original_producer ( mlt_frame  a,
mlt_frame  b 
)
static

True when both frames have the same cut-parent original producer.

◆ share_data()

static void share_data ( mlt_properties  dst,
const char *  name,
void *  data,
int  size 
)
static

Install data on dst without taking ownership.

Skips the set when dst already holds data: mlt_property_set_data nulls the destructor if the pointer is unchanged, which would leak the original owner's buffer (fx_cut wrap shares onto the fx frame and back).

◆ share_image()

static void share_image ( mlt_frame  dst,
mlt_frame  src,
uint8_t *  image 
)
static

Share image and src's image state onto dst without taking ownership.

image is the pointer returned by mlt_frame_get_image(), which need not be stored in src's "image" property. Both frames must remain alive while dst's image is used (typically both are stored on the tractor output frame).