FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Typedefs | Functions | Variables
swscale_unscaled.c File Reference
#include <inttypes.h>
#include <string.h>
#include <math.h>
#include <stdio.h>
#include "config.h"
#include "swscale.h"
#include "swscale_internal.h"
#include "rgb2rgb.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/cpu.h"
#include "libavutil/avutil.h"
#include "libavutil/mathematics.h"
#include "libavutil/bswap.h"
#include "libavutil/pixdesc.h"
#include "libavutil/avassert.h"

Go to the source code of this file.

Macros

#define isRGBA32(x)
 
#define isRGBA64(x)
 
#define isRGB48(x)
 
#define IS_NOT_NE(bpp, desc)
 
#define CONV_IS(src, dst)   (srcFormat == AV_PIX_FMT_##src && dstFormat == AV_PIX_FMT_##dst)
 
#define DITHER_COPY(dst, dstStride, src, srcStride, bswap, dbswap)
 
#define COPY816(w)
 
#define FAST_COPY_UP(shift)
 
#define COPY_UP(r, w)
 
#define IS_DIFFERENT_ENDIANESS(src_fmt, dst_fmt, pix_fmt)
 
#define isByteRGB(f)
 
#define isPlanarGray(x)   (isGray(x) && (x) != AV_PIX_FMT_GRAY8A)
 

Typedefs

typedef void(* rgbConvFn )(const uint8_t *, uint8_t *, int)
 

Functions

static void fillPlane (uint8_t *plane, int stride, int width, int height, int y, uint8_t val)
 
static void copyPlane (const uint8_t *src, int srcStride, int srcSliceY, int srcSliceH, int width, uint8_t *dst, int dstStride)
 
static int planarToNv12Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int planarToYuy2Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int planarToUyvyWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int yuv422pToYuy2Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int yuv422pToUyvyWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int yuyvToYuv420Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int yuyvToYuv422Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int uyvyToYuv420Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static int uyvyToYuv422Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dstParam[], int dstStride[])
 
static void gray8aToPacked32 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
 
static void gray8aToPacked32_1 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
 
static void gray8aToPacked24 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
 
static int packed_16bpc_bswap (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int palToRgbWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static void gbr16ptopacked16 (const uint16_t *src[], int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int alpha, int swap, int bpp, int width)
 
static int planarRgb16ToRgb16Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static void gbr24ptopacked24 (const uint8_t *src[], int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int width)
 
static void gbr24ptopacked32 (const uint8_t *src[], int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int alpha_first, int width)
 
static int planarRgbToRgbWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int planarRgbToplanarRgbWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static void packedtogbr24p (const uint8_t *src, int srcStride, uint8_t *dst[], int dstStride[], int srcSliceH, int alpha_first, int inc_size, int width)
 
static int rgbToPlanarRgbWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static rgbConvFn findRgbConvFn (SwsContext *c)
 
static int rgbToRgbWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int bgr24ToYv12Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int yvu9ToYv12Wrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int packedCopyWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
static int planarCopyWrapper (SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
 
void ff_get_unscaled_swscale (SwsContext *c)
 Set c->swscale to an unscaled converter if one exists for the specific source and destination formats, bit depths, flags, etc.
 
void sws_convertPalette8ToPacked32 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
 Convert an 8-bit paletted frame into a frame with a color depth of 32 bits.
 
void sws_convertPalette8ToPacked24 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette)
 Convert an 8-bit paletted frame into a frame with a color depth of 24 bits.
 

Variables

static const uint8_t dithers [8][8][8]
 
static const uint16_t dither_scale [15][16]
 

Macro Definition Documentation

#define isRGBA32 (   x)
Value:
( \
(x) == AV_PIX_FMT_ARGB \
|| (x) == AV_PIX_FMT_RGBA \
|| (x) == AV_PIX_FMT_BGRA \
|| (x) == AV_PIX_FMT_ABGR \
)

Definition at line 764 of file swscale_unscaled.c.

Referenced by findRgbConvFn(), and rgbToRgbWrapper().

#define isRGBA64 (   x)
Value:
( \
|| (x) == AV_PIX_FMT_RGBA64BE \
|| (x) == AV_PIX_FMT_BGRA64LE \
|| (x) == AV_PIX_FMT_BGRA64BE \
)

Definition at line 771 of file swscale_unscaled.c.

Referenced by findRgbConvFn().

#define isRGB48 (   x)
Value:
( \
|| (x) == AV_PIX_FMT_RGB48BE \
|| (x) == AV_PIX_FMT_BGR48LE \
|| (x) == AV_PIX_FMT_BGR48BE \
)

Definition at line 778 of file swscale_unscaled.c.

Referenced by findRgbConvFn().

#define IS_NOT_NE (   bpp,
  desc 
)
Value:
(((bpp + 7) >> 3) == 2 && \
(!(desc->flags & AV_PIX_FMT_FLAG_BE) != !HAVE_BIGENDIAN))

Referenced by rgbToRgbWrapper().

#define CONV_IS (   src,
  dst 
)    (srcFormat == AV_PIX_FMT_##src && dstFormat == AV_PIX_FMT_##dst)

Referenced by findRgbConvFn().

#define DITHER_COPY (   dst,
  dstStride,
  src,
  srcStride,
  bswap,
  dbswap 
)
Value:
uint16_t scale= dither_scale[dst_depth-1][src_depth-1];\
int shift= src_depth-dst_depth + dither_scale[src_depth-2][dst_depth-1];\
for (i = 0; i < height; i++) {\
const uint8_t *dither= dithers[src_depth-9][i&7];\
for (j = 0; j < length-7; j+=8){\
dst[j+0] = dbswap((bswap(src[j+0]) + dither[0])*scale>>shift);\
dst[j+1] = dbswap((bswap(src[j+1]) + dither[1])*scale>>shift);\
dst[j+2] = dbswap((bswap(src[j+2]) + dither[2])*scale>>shift);\
dst[j+3] = dbswap((bswap(src[j+3]) + dither[3])*scale>>shift);\
dst[j+4] = dbswap((bswap(src[j+4]) + dither[4])*scale>>shift);\
dst[j+5] = dbswap((bswap(src[j+5]) + dither[5])*scale>>shift);\
dst[j+6] = dbswap((bswap(src[j+6]) + dither[6])*scale>>shift);\
dst[j+7] = dbswap((bswap(src[j+7]) + dither[7])*scale>>shift);\
}\
for (; j < length; j++)\
dst[j] = dbswap((bswap(src[j]) + dither[j&7])*scale>>shift);\
dst += dstStride;\
src += srcStride;\
}

Definition at line 1010 of file swscale_unscaled.c.

Referenced by planarCopyWrapper().

#define COPY816 (   w)
Value:
if(shiftonly){\
for (j = 0; j < length; j++)\
w(&dstPtr2[j], srcPtr[j]<<(dst_depth-8));\
}else{\
for (j = 0; j < length; j++)\
w(&dstPtr2[j], (srcPtr[j]<<(dst_depth-8)) |\
(srcPtr[j]>>(2*8-dst_depth)));\
}

Referenced by planarCopyWrapper().

#define FAST_COPY_UP (   shift)
Value:
for (j = 0; j < length - 1; j += 2) { \
uint32_t v = AV_RN32A(srcPtr2 + j); \
AV_WN32A(dstPtr2 + j, v << shift); \
} \
length &= 1;

Referenced by planarCopyWrapper().

#define COPY_UP (   r,
 
)
Value:
if(shiftonly){\
for (j = 0; j < length; j++){ \
unsigned int v= r(&srcPtr2[j]);\
w(&dstPtr2[j], v<<(dst_depth-src_depth));\
}\
}else{\
for (j = 0; j < length; j++){ \
unsigned int v= r(&srcPtr2[j]);\
w(&dstPtr2[j], (v<<(dst_depth-src_depth)) | \
(v>>(2*src_depth-dst_depth)));\
}\
}

Referenced by planarCopyWrapper().

#define IS_DIFFERENT_ENDIANESS (   src_fmt,
  dst_fmt,
  pix_fmt 
)
Value:
((src_fmt == pix_fmt ## BE && dst_fmt == pix_fmt ## LE) || \
(src_fmt == pix_fmt ## LE && dst_fmt == pix_fmt ## BE))

Definition at line 1196 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

#define isByteRGB (   f)
Value:

Referenced by ff_get_unscaled_swscale().

#define isPlanarGray (   x)    (isGray(x) && (x) != AV_PIX_FMT_GRAY8A)

Referenced by ff_get_unscaled_swscale().

Typedef Documentation

typedef void(* rgbConvFn)(const uint8_t *, uint8_t *, int)

Definition at line 786 of file swscale_unscaled.c.

Function Documentation

static void fillPlane ( uint8_t plane,
int  stride,
int  width,
int  height,
int  y,
uint8_t  val 
)
static
static void copyPlane ( const uint8_t src,
int  srcStride,
int  srcSliceY,
int  srcSliceH,
int  width,
uint8_t dst,
int  dstStride 
)
static
static int planarToNv12Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 159 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int planarToYuy2Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 179 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int planarToUyvyWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 191 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int yuv422pToYuy2Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 203 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int yuv422pToUyvyWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 215 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int yuyvToYuv420Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 227 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int yuyvToYuv422Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 244 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int uyvyToYuv420Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 258 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int uyvyToYuv422Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dstParam[],
int  dstStride[] 
)
static

Definition at line 275 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static void gray8aToPacked32 ( const uint8_t src,
uint8_t dst,
int  num_pixels,
const uint8_t palette 
)
static

Definition at line 289 of file swscale_unscaled.c.

Referenced by palToRgbWrapper().

static void gray8aToPacked32_1 ( const uint8_t src,
uint8_t dst,
int  num_pixels,
const uint8_t palette 
)
static

Definition at line 297 of file swscale_unscaled.c.

Referenced by palToRgbWrapper().

static void gray8aToPacked24 ( const uint8_t src,
uint8_t dst,
int  num_pixels,
const uint8_t palette 
)
static

Definition at line 306 of file swscale_unscaled.c.

Referenced by palToRgbWrapper().

static int packed_16bpc_bswap ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 320 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int palToRgbWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 346 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static void gbr16ptopacked16 ( const uint16_t *  src[],
int  srcStride[],
uint8_t dst,
int  dstStride,
int  srcSliceH,
int  alpha,
int  swap,
int  bpp,
int  width 
)
static

Definition at line 392 of file swscale_unscaled.c.

Referenced by planarRgb16ToRgb16Wrapper().

static int planarRgb16ToRgb16Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 511 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static void gbr24ptopacked24 ( const uint8_t src[],
int  srcStride[],
uint8_t dst,
int  dstStride,
int  srcSliceH,
int  width 
)
static

Definition at line 571 of file swscale_unscaled.c.

Referenced by planarRgbToRgbWrapper().

static void gbr24ptopacked32 ( const uint8_t src[],
int  srcStride[],
uint8_t dst,
int  dstStride,
int  srcSliceH,
int  alpha_first,
int  width 
)
static

Definition at line 589 of file swscale_unscaled.c.

Referenced by planarRgbToRgbWrapper().

static int planarRgbToRgbWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 618 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int planarRgbToplanarRgbWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 674 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static void packedtogbr24p ( const uint8_t src,
int  srcStride,
uint8_t dst[],
int  dstStride[],
int  srcSliceH,
int  alpha_first,
int  inc_size,
int  width 
)
static

Definition at line 690 of file swscale_unscaled.c.

Referenced by rgbToPlanarRgbWrapper().

static int rgbToPlanarRgbWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 719 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static rgbConvFn findRgbConvFn ( SwsContext c)
static

Definition at line 787 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale(), and rgbToRgbWrapper().

static int rgbToRgbWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 888 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int bgr24ToYv12Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 949 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int yvu9ToYv12Wrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 966 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int packedCopyWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 983 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

static int planarCopyWrapper ( SwsContext c,
const uint8_t src[],
int  srcStride[],
int  srcSliceY,
int  srcSliceH,
uint8_t dst[],
int  dstStride[] 
)
static

Definition at line 1031 of file swscale_unscaled.c.

Referenced by ff_get_unscaled_swscale().

void ff_get_unscaled_swscale ( SwsContext c)

Set c->swscale to an unscaled converter if one exists for the specific source and destination formats, bit depths, flags, etc.

Definition at line 1201 of file swscale_unscaled.c.

Referenced by sws_init_context().

Variable Documentation

const uint8_t dithers[8][8][8]
static

Definition at line 37 of file swscale_unscaled.c.

const uint16_t dither_scale[15][16]
static
Initial value:
={
{ 2, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,},
{ 2, 3, 7, 7, 13, 13, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,},
{ 3, 3, 4, 15, 15, 29, 57, 57, 57, 113, 113, 113, 113, 113, 113, 113,},
{ 3, 4, 4, 5, 31, 31, 61, 121, 241, 241, 241, 241, 481, 481, 481, 481,},
{ 3, 4, 5, 5, 6, 63, 63, 125, 249, 497, 993, 993, 993, 993, 993, 1985,},
{ 3, 5, 6, 6, 6, 7, 127, 127, 253, 505, 1009, 2017, 4033, 4033, 4033, 4033,},
{ 3, 5, 6, 7, 7, 7, 8, 255, 255, 509, 1017, 2033, 4065, 8129,16257,16257,},
{ 3, 5, 6, 8, 8, 8, 8, 9, 511, 511, 1021, 2041, 4081, 8161,16321,32641,},
{ 3, 5, 7, 8, 9, 9, 9, 9, 10, 1023, 1023, 2045, 4089, 8177,16353,32705,},
{ 3, 5, 7, 8, 10, 10, 10, 10, 10, 11, 2047, 2047, 4093, 8185,16369,32737,},
{ 3, 5, 7, 8, 10, 11, 11, 11, 11, 11, 12, 4095, 4095, 8189,16377,32753,},
{ 3, 5, 7, 9, 10, 12, 12, 12, 12, 12, 12, 13, 8191, 8191,16381,32761,},
{ 3, 5, 7, 9, 10, 12, 13, 13, 13, 13, 13, 13, 14,16383,16383,32765,},
{ 3, 5, 7, 9, 10, 12, 14, 14, 14, 14, 14, 14, 14, 15,32767,32767,},
{ 3, 5, 7, 9, 11, 12, 14, 15, 15, 15, 15, 15, 15, 15, 16,65535,},
}

Definition at line 112 of file swscale_unscaled.c.