Introduce a basic layout, the subpages are currently left empty.
Split libavutil in multiple groups as example of the structure
#include "attributes.h"
/**
+ * @ingroup lavu_crypto
* Calculate the Adler32 checksum of a buffer.
*
* Passing the return value to a subsequent av_adler32_update() call
#include <stdint.h>
+/**
+ * @defgroup lavu_aes AES
+ * @ingroup lavu_crypto
+ * @{
+ */
+
extern const int av_aes_size;
struct AVAES;
*/
void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_AES_H */
* audio conversion routines
*/
-/* Audio channel masks */
+/**
+ * @addtogroup lavu_audio
+ * @{
+ */
+
+/**
+ * @defgroup channel_masks Audio channel masks
+ * @{
+ */
#define AV_CH_FRONT_LEFT 0x00000001
#define AV_CH_FRONT_RIGHT 0x00000002
#define AV_CH_FRONT_CENTER 0x00000004
to be the native codec channel order. */
#define AV_CH_LAYOUT_NATIVE 0x8000000000000000LL
-/* Audio channel convenience macros */
+/**
+ * @}
+ * @defgroup channel_mask_c Audio channel convenience macros
+ * @{
+ * */
#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER)
#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
+/**
+ * @}
+ */
+
/**
* Return a channel layout id that matches name, 0 if no match.
*/
*/
int av_get_channel_layout_nb_channels(int64_t channel_layout);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_AUDIOCONVERT_H */
#include <stddef.h>
#include "attributes.h"
+/**
+ * @addtogroup lavu_string
+ * @{
+ */
+
/**
* Return non-zero if pfx is a prefix of str. If it is, *ptr is set to
* the address of the first character in str after the prefix.
* @param size size of destination buffer
* @return the length of src
*
- * WARNING: since the return value is the length of src, src absolutely
+ * @warning since the return value is the length of src, src absolutely
* _must_ be a properly 0-terminated string, otherwise this will read beyond
* the end of the buffer and possibly crash.
*/
* @param size size of destination buffer
* @return the total length of src and dst
*
- * WARNING: since the return value use the length of src and dst, these absolutely
- * _must_ be a properly 0-terminated strings, otherwise this will read beyond
- * the end of the buffer and possibly crash.
+ * @warning since the return value use the length of src and dst, these
+ * absolutely _must_ be a properly 0-terminated strings, otherwise this
+ * will read beyond the end of the buffer and possibly crash.
*/
size_t av_strlcat(char *dst, const char *src, size_t size);
/*
* Locale independent case-insensitive compare.
- * Note: This means only ASCII-range characters are case-insensitive
+ * @note This means only ASCII-range characters are case-insensitive
*/
int av_strcasecmp(const char *a, const char *b);
/**
* Locale independent case-insensitive compare.
- * Note: This means only ASCII-range characters are case-insensitive
+ * @note This means only ASCII-range characters are case-insensitive
*/
int av_strncasecmp(const char *a, const char *b, size_t n);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_AVSTRING_H */
* external API header
*/
+/**
+ * @mainpage
+ *
+ * @section libav_intro Introduction
+ *
+ * This document describe the usage of the different libraries
+ * provided by Libav.
+ *
+ * @li @subpage libavcodec encoding/decoding library
+ * @li @subpage libavfilter graph based frame editing library
+ * @li @subpage libavformat I/O and muxing/demuxing library
+ * @li @ref lavu "libavutil" common utility library
+ * @li @subpage libpostproc post processing library
+ * @li @subpage libswscale color conversion and scaling library
+ *
+ */
+
+/**
+ * @defgroup lavu Common utility functions
+ *
+ * @brief
+ * libavutil contains the code shared across all the other Libav
+ * libraries
+ *
+ * @note In order to use the functions provided by avutil you must include
+ * the specific header.
+ *
+ * @{
+ *
+ * @defgroup lavu_crypto Crypto and Hashing
+ *
+ * @{
+ * @}
+ *
+ * @defgroup lavu_math Maths
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_string String Manipulation
+ *
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_mem Memory Management
+ *
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_data Data Structures
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_audio Audio related
+ *
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_error Error Codes
+ *
+ * @{
+ *
+ * @}
+ *
+ * @defgroup lavu_misc Other
+ *
+ * @{
+ *
+ * @defgroup lavu_internal Internal
+ *
+ * Not exported functions, for internal usage only
+ *
+ * @{
+ *
+ * @}
+ */
+
+
+/**
+ * @defgroup preproc_misc Preprocessor String Macros
+ *
+ * String manipulation macros
+ *
+ * @{
+ */
#define AV_STRINGIFY(s) AV_TOSTRING(s)
#define AV_TOSTRING(s) #s
#define AV_PRAGMA(s) _Pragma(#s)
+/**
+ * @}
+ */
+
+/**
+ * @defgroup version_utils Library Version Macros
+ *
+ * Useful to check and match library version in order to maintain
+ * backward compatibility.
+ *
+ * @{
+ */
+
#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
+/**
+ * @}
+ *
+ * @defgroup lavu_ver Version and Build diagnostics
+ *
+ * Macros and function useful to check at compiletime and at runtime
+ * which version of libavutil is in use.
+ *
+ * @{
+ */
+
#define LIBAVUTIL_VERSION_MAJOR 51
#define LIBAVUTIL_VERSION_MINOR 16
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
/**
+ * @}
+ *
+ * @defgroup depr_guards Deprecation guards
* Those FF_API_* defines are not part of public API.
* They may change, break or disappear at any time.
+ *
+ * They are used mostly internally to mark code that will be removed
+ * on the next major version.
+ *
+ * @{
*/
#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52)
#define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 52)
#endif
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup lavu_ver
+ * @{
+ */
+
/**
* Return the LIBAVUTIL_VERSION_INT constant.
*/
*/
const char *avutil_license(void);
+/**
+ * @}
+ */
+
+/**
+ * @addtogroup lavu_media Media Type
+ * @brief Media Type
+ */
+
enum AVMediaType {
- AVMEDIA_TYPE_UNKNOWN = -1,
+ AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
AVMEDIA_TYPE_VIDEO,
AVMEDIA_TYPE_AUDIO,
- AVMEDIA_TYPE_DATA,
+ AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
AVMEDIA_TYPE_SUBTITLE,
- AVMEDIA_TYPE_ATTACHMENT,
+ AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
AVMEDIA_TYPE_NB
};
+/**
+ * @defgroup lavu_const Constants
+ * @{
+ *
+ * @defgroup lavu_enc Encoding specific
+ *
+ * @note those definition should move to avcodec
+ * @{
+ */
+
#define FF_LAMBDA_SHIFT 7
#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
+/**
+ * @}
+ * @defgroup lavu_time Timestamp specific
+ *
+ * Libav internal timebase and timestamp definitions
+ *
+ * @{
+ */
+
+/**
+ * @brief Undefined timestamp value
+ *
+ * Usually reported by demuxer that work on containers that do not provide
+ * either pts or dts.
+ */
+
#define AV_NOPTS_VALUE INT64_C(0x8000000000000000)
+
+/**
+ * Internal time base represented as integer
+ */
+
#define AV_TIME_BASE 1000000
+
+/**
+ * Internal time base represented as fractional value
+ */
+
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
+/**
+ * @}
+ * @}
+ * @defgroup lavu_picture Image related
+ *
+ * AVPicture types, pixel formats and basic image planes manipulation.
+ *
+ * @{
+ */
+
enum AVPictureType {
AV_PICTURE_TYPE_I = 1, ///< Intra
AV_PICTURE_TYPE_P, ///< Predicted
*/
char av_get_picture_type_char(enum AVPictureType pict_type);
+/**
+ * @}
+ */
+
#include "common.h"
#include "error.h"
+/**
+ * @}
+ * @}
+ */
+
#endif /* AVUTIL_AVUTIL_H */
#include <stdint.h>
+/**
+ * @defgroup lavu_base64 Base64
+ * @ingroup lavu_crypto
+ * @{
+ */
+
+
/**
* Decode a base64-encoded string.
*
*/
#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
+ /**
+ * @}
+ */
+
#endif /* AVUTIL_BASE64_H */
#define AVUTIL_DICT_H
/**
- * @defgroup dict_api Public Dictionary API
+ * @addtogroup lavu_dict AVDictionary
+ * @ingroup lavu_data
+ *
+ * @brief Simple key:value store
+ *
* @{
* Dictionaries are used for storing key:value pairs. To create
* an AVDictionary, simply pass an address of a NULL pointer to
* av_dict_free(&d);
* @endcode
*
- * @}
*/
#define AV_DICT_MATCH_CASE 1
*/
void av_dict_free(AVDictionary **m);
+/**
+ * @}
+ */
+
#endif // AVUTIL_DICT_H
#include <errno.h>
#include "avutil.h"
+/**
+ * @addtogroup lavu_error
+ *
+ * @{
+ */
+
+
/* error handling */
#if EDOM > 0
#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions.
*/
int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_ERROR_H */
/**
* @file
* misc image utilities
+ *
+ * @addtogroup lavu_picture
+ * @{
*/
#include "avutil.h"
int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt);
+/**
+ * @}
+ */
+
+
#endif /* AVUTIL_IMGUTILS_H */
#include "config.h"
#include "attributes.h"
+/**
+ * @addtogroup lavu_internal
+ * @{
+ */
+
extern const uint32_t ff_inverse[257];
#if ARCH_ARM
return b - (a < b * b);
}
+/**
+ * @}
+ */
#endif /* AVUTIL_INTMATH_H */
#ifndef AVUTIL_LZO_H
#define AVUTIL_LZO_H
+/**
+ * @defgroup lavu_lzo LZO
+ * @ingroup lavu_crypto
+ *
+ * @{
+ */
+
#include <stdint.h>
/** @name Error flags returned by av_lzo1x_decode
*/
void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_LZO_H */
#define INFINITY (1.0/0.0)
#endif
+/**
+ * @addtogroup lavu_math
+ * @{
+ */
+
+
enum AVRounding {
AV_ROUND_ZERO = 0, ///< Round toward zero.
AV_ROUND_INF = 1, ///< Round away from zero.
*/
int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_MATHEMATICS_H */
#include <stdint.h>
+/**
+ * @defgroup lavu_md5 MD5
+ * @ingroup lavu_crypto
+ * @{
+ */
+
extern const int av_md5_size;
struct AVMD5;
void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_MD5_H */
#include "attributes.h"
#include "avutil.h"
+/**
+ * @addtogroup lavu_mem
+ * @{
+ */
+
+
#if defined(__ICC) && _ICC < 1200 || defined(__SUNPRO_C)
#define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
#define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
*/
void av_freep(void *ptr);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_MEM_H */
/**
* @defgroup avoptions AVOptions
+ * @ingroup lavu_data
* @{
* AVOptions provide a generic system to declare options on arbitrary structs
* ("objects"). An option can have a help text, a type and a range of possible
* filled with option as a parameter. This allows to set some options
* that cannot be set otherwise, since e.g. the input file format is not known
* before the file is actually opened.
- * @}
*/
enum AVOptionType{
int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val);
int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val);
/**
+ * @}
* @}
*/
#define AVUTIL_RANDOM_SEED_H
#include <stdint.h>
+/**
+ * @addtogroup lavu_crypto
+ * @{
+ */
/**
* Get random data.
*/
uint32_t av_get_random_seed(void);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_RANDOM_SEED_H */
#include <limits.h>
#include "attributes.h"
+/**
+ * @addtogroup lavu_math
+ * @{
+ */
+
/**
* rational number numerator/denominator
*/
*/
int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_RATIONAL_H */
#include <stdint.h>
+/**
+ * @defgroup lavu_sha SHA
+ * @ingroup lavu_crypto
+ * @{
+ */
+
extern const int av_sha_size;
struct AVSHA;
*/
void av_sha_final(struct AVSHA* context, uint8_t *digest);
+/**
+ * @}
+ */
+
#endif /* AVUTIL_SHA_H */
/**
* @file
* A tree container.
- * Insertion, removal, finding equal, largest which is smaller than and
- * smallest which is larger than, all have O(log n) worst case complexity.
* @author Michael Niedermayer <michaelni@gmx.at>
*/
#ifndef AVUTIL_TREE_H
#define AVUTIL_TREE_H
+/**
+ * @addtogroup lavu_tree AVTree
+ * @ingroup lavu_data
+ *
+ * Low complexity tree container
+ *
+ * Insertion, removal, finding equal, largest which is smaller than and
+ * smallest which is larger than, all have O(log n) worst case complexity.
+ * @{
+ */
+
+
struct AVTreeNode;
extern const int av_tree_node_size;
*/
void av_tree_enumerate(struct AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem));
+/**
+ * @}
+ */
#endif /* AVUTIL_TREE_H */