Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

overlayframe.C File Reference

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include "clip.h"
#include "edl.inc"
#include "mutex.h"
#include "overlayframe.h"
#include "units.h"
#include "vframe.h"

Go to the source code of this file.

Defines

#define BLEND_3(max, temp_type, type, chroma_offset)
#define BLEND_4(max, temp_type, type, chroma_offset)
#define NO_TRANSLATION1
#define NO_BLEND
#define NO_TRANSLATION2
#define NO_SCALE
#define PIXEL_REDUCE_MACRO(type, components, row)
#define BILINEAR_REDUCE(max, type, components)
#define BILINEAR_ENLARGE(max, type, components)
#define BICUBIC(max, type, components)
#define CUBE(x)   ((x) * (x) * (x))
#define TRANSLATE(max, temp_type, type, components, chroma_offset)
#define SCALE_TRANSLATE(max, temp_type, type, components, chroma_offset)
#define BLEND_ONLY(temp_type, type, max, components, chroma_offset)
#define BLEND_ONLY_TRANSFER_REPLACE(type, components)
#define BLEND_ONLY_4_NORMAL(temp_type, type, max, chroma_offset)
#define BLEND_ONLY_3_NORMAL(temp_type, type, max, chroma_offset)

Functions

static int my_abs (int32_t x)
static int my_abs (uint32_t x)
static int my_abs (int64_t x)
static int my_abs (uint64_t x)
static float my_abs (float x)


Define Documentation

#define BICUBIC max,
type,
components   ) 
 

Definition at line 1174 of file overlayframe.C.

Referenced by ScaleUnit::process_package().

#define BILINEAR_ENLARGE max,
type,
components   ) 
 

Definition at line 1055 of file overlayframe.C.

Referenced by ScaleUnit::process_package().

#define BILINEAR_REDUCE max,
type,
components   ) 
 

Definition at line 943 of file overlayframe.C.

Referenced by ScaleUnit::process_package().

#define BLEND_3 max,
temp_type,
type,
chroma_offset   ) 
 

Definition at line 82 of file overlayframe.C.

#define BLEND_4 max,
temp_type,
type,
chroma_offset   ) 
 

Definition at line 176 of file overlayframe.C.

#define BLEND_ONLY temp_type,
type,
max,
components,
chroma_offset   ) 
 

Definition at line 2422 of file overlayframe.C.

Referenced by BlendUnit::process_package().

#define BLEND_ONLY_3_NORMAL temp_type,
type,
max,
chroma_offset   ) 
 

Value:

{ \
        const int bits = sizeof(type) * 8; \
        temp_type opacity = (temp_type)(alpha * ((temp_type)1 << bits) + 0.5); \
        temp_type transparency = ((temp_type)1 << bits) - opacity; \
 \
        type** output_rows = (type**)output->get_rows(); \
        type** input_rows = (type**)input->get_rows(); \
        int w = input->get_w() * 3; \
        int h = input->get_h(); \
 \
        for(int i = pkg->out_row1; i < pkg->out_row2; i++) \
        { \
                type* in_row = input_rows[i]; \
                type* output = output_rows[i]; \
 \
                for(int j = 0; j < w; j++) /* w = 3x width! */ \
                { \
                        *output = ((temp_type)*in_row * opacity + *output * transparency) >> bits; \
                        in_row ++; \
                        output ++; \
                } \
        } \
}

Definition at line 2527 of file overlayframe.C.

Referenced by BlendUnit::process_package().

#define BLEND_ONLY_4_NORMAL temp_type,
type,
max,
chroma_offset   ) 
 

Definition at line 2482 of file overlayframe.C.

Referenced by BlendUnit::process_package().

#define BLEND_ONLY_TRANSFER_REPLACE type,
components   ) 
 

Value:

{ \
 \
        type** output_rows = (type**)output->get_rows(); \
        type** input_rows = (type**)input->get_rows(); \
        int w = input->get_w(); \
        int h = input->get_h(); \
        int line_len = w * sizeof(type) * components; \
 \
        for(int i = pkg->out_row1; i < pkg->out_row2; i++) \
        { \
                memcpy(output_rows[i], input_rows[i], line_len); \
        } \
}

Definition at line 2466 of file overlayframe.C.

Referenced by BlendUnit::process_package().

#define CUBE  )     ((x) * (x) * (x))
 

Definition at line 1265 of file overlayframe.C.

Referenced by ScaleUnit::cubic_bspline().

#define NO_BLEND
 

Value:

(EQUIV(alpha, 1) && \
        (mode == TRANSFER_REPLACE || \
        (mode == TRANSFER_NORMAL && cmodel_components(input->get_color_model()) == 3)))

Referenced by OverlayFrame::overlay().

#define NO_SCALE
 

Value:

(EQUIV(out_x2 - out_x1, in_x2 - in_x1) && \
        EQUIV(out_y2 - out_y1, in_y2 - in_y1))

Referenced by OverlayFrame::overlay().

#define NO_TRANSLATION1
 

Value:

(EQUIV(in_x1, 0) && \
        EQUIV(in_y1, 0) && \
        EQUIV(out_x1, 0) && \
        EQUIV(out_y1, 0) && \
        EQUIV(in_x2, in_x2_int) && \
        EQUIV(in_y2, in_y2_int) && \
        EQUIV(out_x2, temp_w) && \
        EQUIV(out_y2, temp_h))

Referenced by OverlayFrame::overlay().

#define NO_TRANSLATION2
 

Value:

(EQUIV(in_x1, 0) && \
        EQUIV(in_y1, 0) && \
        EQUIV(in_x2, translation_input->get_w()) && \
        EQUIV(in_y2, translation_input->get_h()) && \
        EQUIV(out_x1, 0) && \
        EQUIV(out_y1, 0) && \
        EQUIV(out_x2, output->get_w()) && \
        EQUIV(out_y2, output->get_h())) \

Referenced by OverlayFrame::overlay().

#define PIXEL_REDUCE_MACRO type,
components,
row   ) 
 

Value:

{ \
        type *input_row = &in_rows[row][x_entry->input_pixel1 * components]; \
        type *input_end = &in_rows[row][x_entry->input_pixel2 * components]; \
 \
/* Do first pixel */ \
        temp_f1 += input_scale1 * input_row[0]; \
        temp_f2 += input_scale1 * input_row[1]; \
        temp_f3 += input_scale1 * input_row[2]; \
        if(components == 4) temp_f4 += input_scale1 * input_row[3]; \
 \
/* Do last pixel */ \
/*      if(input_row < input_end) */\
        { \
                temp_f1 += input_scale3 * input_end[0]; \
                temp_f2 += input_scale3 * input_end[1]; \
                temp_f3 += input_scale3 * input_end[2]; \
                if(components == 4) temp_f4 += input_scale3 * input_end[3]; \
        } \
 \
/* Do middle pixels */ \
        for(input_row += components; input_row < input_end; input_row += components) \
        { \
                temp_f1 += input_scale2 * input_row[0]; \
                temp_f2 += input_scale2 * input_row[1]; \
                temp_f3 += input_scale2 * input_row[2]; \
                if(components == 4) temp_f4 += input_scale2 * input_row[3]; \
        } \
}

Definition at line 911 of file overlayframe.C.

#define SCALE_TRANSLATE max,
temp_type,
type,
components,
chroma_offset   ) 
 

Definition at line 2124 of file overlayframe.C.

Referenced by ScaleTranslateUnit::process_package().

#define TRANSLATE max,
temp_type,
type,
components,
chroma_offset   ) 
 

Definition at line 1840 of file overlayframe.C.

Referenced by TranslateUnit::process_package().


Function Documentation

static float my_abs float  x  )  [static]
 

Definition at line 37 of file overlayframe.C.

static int my_abs uint64_t  x  )  [static]
 

Definition at line 32 of file overlayframe.C.

static int my_abs int64_t  x  )  [static]
 

Definition at line 27 of file overlayframe.C.

static int my_abs uint32_t  x  )  [static]
 

Definition at line 22 of file overlayframe.C.

static int my_abs int32_t  x  )  [static]
 

Definition at line 17 of file overlayframe.C.


Generated on Sun Jan 8 13:39:05 2006 for Cinelerra-svn by  doxygen 1.4.4