FFmpeg
Macros | Functions
internal.h File Reference

common internal API header More...

#include <limits.h>
#include <stdint.h>
#include <stddef.h>
#include <assert.h>
#include "config.h"
#include "attributes.h"
#include "timer.h"
#include "cpu.h"
#include "dict.h"
#include "macros.h"
#include "mem.h"
#include "pixfmt.h"
#include "version.h"
#include "libm.h"

Go to the source code of this file.

Macros

#define NDEBUG
 
#define emms_c()   while(0)
 
#define attribute_align_arg
 
#define av_export_avutil
 
#define FF_DISABLE_DEPRECATION_WARNINGS
 
#define FF_ENABLE_DEPRECATION_WARNINGS
 
#define FF_MEMORY_POISON   0x2a
 
#define MAKE_ACCESSORS(str, name, type, field)
 
#define E1(x)   x
 
#define AV_CHECK_OFFSET(s, m, o)
 
#define LOCAL_ALIGNED_A(a, t, v, s, o, ...)
 
#define LOCAL_ALIGNED_D(a, t, v, s, o, ...)
 
#define LOCAL_ALIGNED(a, t, v, ...)   LOCAL_ALIGNED_##a(t, v, __VA_ARGS__)
 
#define LOCAL_ALIGNED_4(t, v, ...)   E1(LOCAL_ALIGNED_A(4, t, v, __VA_ARGS__,,))
 
#define LOCAL_ALIGNED_8(t, v, ...)   E1(LOCAL_ALIGNED_A(8, t, v, __VA_ARGS__,,))
 
#define LOCAL_ALIGNED_16(t, v, ...)   E1(LOCAL_ALIGNED_A(16, t, v, __VA_ARGS__,,))
 
#define LOCAL_ALIGNED_32(t, v, ...)   E1(LOCAL_ALIGNED_A(32, t, v, __VA_ARGS__,,))
 
#define FF_ALLOC_OR_GOTO(ctx, p, size, label)
 
#define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)
 
#define FF_ALLOC_ARRAY_OR_GOTO(ctx, p, nelem, elsize, label)
 
#define FF_ALLOCZ_ARRAY_OR_GOTO(ctx, p, nelem, elsize, label)
 
#define NULL_IF_CONFIG_SMALL(x)   x
 Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. More...
 
#define ONLY_IF_THREADS_ENABLED(x)   NULL
 Define a function with only the non-default version specified. More...
 
#define PTRDIFF_SPECIFIER   "td"
 
#define SIZE_SPECIFIER   "zu"
 
#define ff_dlog(ctx, ...)   do { if (0) av_log(ctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0)
 
#define SUINT   unsigned
 
#define SUINT32   uint32_t
 
#define FF_PSEUDOPAL   AV_PIX_FMT_FLAG_PSEUDOPAL
 

Functions

void avpriv_report_missing_feature (void *avc, const char *msg,...) av_printf_format(2
 Log a generic warning message about a missing feature. More...
 
void void avpriv_request_sample (void *avc, const char *msg,...) av_printf_format(2
 Log a generic warning message about a missing feature. More...
 
av_warn_unused_result int avpriv_open (const char *filename, int flags,...)
 A wrapper for open() setting O_CLOEXEC.
 
int avpriv_tempfile (const char *prefix, char **filename, int log_offset, void *log_ctx)
 Wrapper to work around the lack of mkstemp() on mingw. More...
 
int avpriv_set_systematic_pal2 (uint32_t pal[256], enum AVPixelFormat pix_fmt)
 
void ff_check_pixfmt_descriptors (void)
 
int avpriv_dict_set_timestamp (AVDictionary **dict, const char *key, int64_t timestamp)
 Set a dictionary value to an ISO-8601 compliant timestamp string. More...
 

Detailed Description

common internal API header

Macro Definition Documentation

§ AV_CHECK_OFFSET

#define AV_CHECK_OFFSET (   s,
  m,
 
)
Value:
struct check_##o { \
int x_##o[offsetof(s, m) == o? 1: -1]; \
}

§ FF_ALLOC_ARRAY_OR_GOTO

#define FF_ALLOC_ARRAY_OR_GOTO (   ctx,
  p,
  nelem,
  elsize,
  label 
)
Value:
{\
p = av_malloc_array(nelem, elsize);\
if (!p) {\
av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto label;\
}\
}
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176

§ FF_ALLOC_OR_GOTO

#define FF_ALLOC_OR_GOTO (   ctx,
  p,
  size,
  label 
)
Value:
{\
p = av_malloc(size);\
if (!(p) && (size) != 0) {\
av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto label;\
}\
}
void * av_malloc(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:77
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176

§ FF_ALLOCZ_ARRAY_OR_GOTO

#define FF_ALLOCZ_ARRAY_OR_GOTO (   ctx,
  p,
  nelem,
  elsize,
  label 
)
Value:
{\
p = av_mallocz_array(nelem, elsize);\
if (!p) {\
av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto label;\
}\
}
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176

§ FF_ALLOCZ_OR_GOTO

#define FF_ALLOCZ_OR_GOTO (   ctx,
  p,
  size,
  label 
)
Value:
{\
p = av_mallocz(size);\
if (!(p) && (size) != 0) {\
av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto label;\
}\
}
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:236

§ LOCAL_ALIGNED_A

#define LOCAL_ALIGNED_A (   a,
  t,
  v,
  s,
  o,
  ... 
)
Value:
uint8_t la_##v[sizeof(t s o) + (a)]; \
t (*v) o = (void *)FFALIGN((uintptr_t)la_##v, a)

§ LOCAL_ALIGNED_D

#define LOCAL_ALIGNED_D (   a,
  t,
  v,
  s,
  o,
  ... 
)
Value:
DECLARE_ALIGNED(a, t, la_##v) s o; \
t (*v) o = la_##v
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition: mem.h:120

§ MAKE_ACCESSORS

#define MAKE_ACCESSORS (   str,
  name,
  type,
  field 
)
Value:
type av_##name##_get_##field(const str *s) { return s->field; } \
void av_##name##_set_##field(str *s, type v) { s->field = v; }

§ NULL_IF_CONFIG_SMALL

#define NULL_IF_CONFIG_SMALL (   x)    x

Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.

Used to disable the definition of strings (for example AVCodec long_names).

§ ONLY_IF_THREADS_ENABLED

#define ONLY_IF_THREADS_ENABLED (   x)    NULL

Define a function with only the non-default version specified.

On systems with ELF shared libraries, all symbols exported from FFmpeg libraries are tagged with the name and major version of the library to which they belong. If a function is moved from one library to another, a wrapper must be retained in the original location to preserve binary compatibility.

Functions defined with this macro will never be used to resolve symbols by the build-time linker.

Parameters
typereturn type of function
namename of function
argsargument list of function
verversion tag to assign function Return NULL if a threading library has not been enabled. Used to disable threading functions in AVCodec definitions when not needed.

Function Documentation

§ avpriv_dict_set_timestamp()

int avpriv_dict_set_timestamp ( AVDictionary **  dict,
const char *  key,
int64_t  timestamp 
)

Set a dictionary value to an ISO-8601 compliant timestamp string.

Parameters
sAVFormatContext
keymetadata key
timestampunix timestamp in microseconds
Returns
<0 on error

§ avpriv_report_missing_feature()

void avpriv_report_missing_feature ( void *  avc,
const char *  msg,
  ... 
)

Log a generic warning message about a missing feature.

Parameters
[in]avca pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct
[in]msgstring containing the name of the missing feature

§ avpriv_request_sample()

void void avpriv_request_sample ( void *  avc,
const char *  msg,
  ... 
)

Log a generic warning message about a missing feature.

Additionally request that a sample showcasing the feature be uploaded.

Parameters
[in]avca pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct
[in]msgstring containing the name of the missing feature

§ avpriv_tempfile()

int avpriv_tempfile ( const char *  prefix,
char **  filename,
int  log_offset,
void *  log_ctx 
)

Wrapper to work around the lack of mkstemp() on mingw.

Also, tries to create file in /tmp first, if possible. *prefix can be a character constant; *filename will be allocated internally.

Returns
file descriptor of opened file (or negative value corresponding to an AVERROR code on error) and opened file name in **filename.
Note
On very old libcs it is necessary to set a secure umask before calling this, av_tempfile() can't call umask itself as it is used in libraries and could interfere with the calling application.