Browse code

doxy: provide a start page and document libavutil

Introduce a basic layout, the subpages are currently left empty.

Split libavutil in multiple groups as example of the structure

Luca Barbato authored on 2011/11/21 04:38:24
Showing 19 changed files
... ...
@@ -25,6 +25,7 @@
25 25
 #include "attributes.h"
26 26
 
27 27
 /**
28
+ * @ingroup lavu_crypto
28 29
  * Calculate the Adler32 checksum of a buffer.
29 30
  *
30 31
  * Passing the return value to a subsequent av_adler32_update() call
... ...
@@ -23,6 +23,12 @@
23 23
 
24 24
 #include <stdint.h>
25 25
 
26
+/**
27
+ * @defgroup lavu_aes AES
28
+ * @ingroup lavu_crypto
29
+ * @{
30
+ */
31
+
26 32
 extern const int av_aes_size;
27 33
 
28 34
 struct AVAES;
... ...
@@ -44,4 +50,8 @@ int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt);
44 44
  */
45 45
 void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
46 46
 
47
+/**
48
+ * @}
49
+ */
50
+
47 51
 #endif /* AVUTIL_AES_H */
... ...
@@ -29,7 +29,15 @@
29 29
  * audio conversion routines
30 30
  */
31 31
 
32
-/* Audio channel masks */
32
+/**
33
+ * @addtogroup lavu_audio
34
+ * @{
35
+ */
36
+
37
+/**
38
+ * @defgroup channel_masks Audio channel masks
39
+ * @{
40
+ */
33 41
 #define AV_CH_FRONT_LEFT             0x00000001
34 42
 #define AV_CH_FRONT_RIGHT            0x00000002
35 43
 #define AV_CH_FRONT_CENTER           0x00000004
... ...
@@ -56,7 +64,11 @@
56 56
     to be the native codec channel order. */
57 57
 #define AV_CH_LAYOUT_NATIVE          0x8000000000000000LL
58 58
 
59
-/* Audio channel convenience macros */
59
+/**
60
+ * @}
61
+ * @defgroup channel_mask_c Audio channel convenience macros
62
+ * @{
63
+ * */
60 64
 #define AV_CH_LAYOUT_MONO              (AV_CH_FRONT_CENTER)
61 65
 #define AV_CH_LAYOUT_STEREO            (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
62 66
 #define AV_CH_LAYOUT_2_1               (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
... ...
@@ -74,6 +86,10 @@
74 74
 #define AV_CH_LAYOUT_STEREO_DOWNMIX    (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
75 75
 
76 76
 /**
77
+ * @}
78
+ */
79
+
80
+/**
77 81
  * Return a channel layout id that matches name, 0 if no match.
78 82
  */
79 83
 int64_t av_get_channel_layout(const char *name);
... ...
@@ -92,4 +108,8 @@ void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, int6
92 92
  */
93 93
 int av_get_channel_layout_nb_channels(int64_t channel_layout);
94 94
 
95
+/**
96
+ * @}
97
+ */
98
+
95 99
 #endif /* AVUTIL_AUDIOCONVERT_H */
... ...
@@ -25,6 +25,11 @@
25 25
 #include "attributes.h"
26 26
 
27 27
 /**
28
+ * @addtogroup lavu_string
29
+ * @{
30
+ */
31
+
32
+/**
28 33
  * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to
29 34
  * the address of the first character in str after the prefix.
30 35
  *
... ...
@@ -72,7 +77,7 @@ char *av_stristr(const char *haystack, const char *needle);
72 72
  * @param size size of destination buffer
73 73
  * @return the length of src
74 74
  *
75
- * WARNING: since the return value is the length of src, src absolutely
75
+ * @warning since the return value is the length of src, src absolutely
76 76
  * _must_ be a properly 0-terminated string, otherwise this will read beyond
77 77
  * the end of the buffer and possibly crash.
78 78
  */
... ...
@@ -90,9 +95,9 @@ size_t av_strlcpy(char *dst, const char *src, size_t size);
90 90
  * @param size size of destination buffer
91 91
  * @return the total length of src and dst
92 92
  *
93
- * WARNING: since the return value use the length of src and dst, these absolutely
94
- * _must_ be a properly 0-terminated strings, otherwise this will read beyond
95
- * the end of the buffer and possibly crash.
93
+ * @warning since the return value use the length of src and dst, these
94
+ * absolutely _must_ be a properly 0-terminated strings, otherwise this
95
+ * will read beyond the end of the buffer and possibly crash.
96 96
  */
97 97
 size_t av_strlcat(char *dst, const char *src, size_t size);
98 98
 
... ...
@@ -153,14 +158,18 @@ static inline int av_tolower(int c)
153 153
 
154 154
 /*
155 155
  * Locale independent case-insensitive compare.
156
- * Note: This means only ASCII-range characters are case-insensitive
156
+ * @note This means only ASCII-range characters are case-insensitive
157 157
  */
158 158
 int av_strcasecmp(const char *a, const char *b);
159 159
 
160 160
 /**
161 161
  * Locale independent case-insensitive compare.
162
- * Note: This means only ASCII-range characters are case-insensitive
162
+ * @note This means only ASCII-range characters are case-insensitive
163 163
  */
164 164
 int av_strncasecmp(const char *a, const char *b, size_t n);
165 165
 
166
+/**
167
+ * @}
168
+ */
169
+
166 170
 #endif /* AVUTIL_AVSTRING_H */
... ...
@@ -26,6 +26,95 @@
26 26
  * external API header
27 27
  */
28 28
 
29
+/**
30
+ * @mainpage
31
+ *
32
+ * @section libav_intro Introduction
33
+ *
34
+ * This document describe the usage of the different libraries
35
+ * provided by Libav.
36
+ *
37
+ * @li @subpage libavcodec  encoding/decoding library
38
+ * @li @subpage libavfilter graph based frame editing library
39
+ * @li @subpage libavformat I/O and muxing/demuxing library
40
+ * @li @ref lavu "libavutil" common utility library
41
+ * @li @subpage libpostproc post processing library
42
+ * @li @subpage libswscale  color conversion and scaling library
43
+ *
44
+ */
45
+
46
+/**
47
+ * @defgroup lavu Common utility functions
48
+ *
49
+ * @brief
50
+ * libavutil contains the code shared across all the other Libav
51
+ * libraries
52
+ *
53
+ * @note In order to use the functions provided by avutil you must include
54
+ * the specific header.
55
+ *
56
+ * @{
57
+ *
58
+ * @defgroup lavu_crypto Crypto and Hashing
59
+ *
60
+ * @{
61
+ * @}
62
+ *
63
+ * @defgroup lavu_math Maths
64
+ * @{
65
+ *
66
+ * @}
67
+ *
68
+ * @defgroup lavu_string String Manipulation
69
+ *
70
+ * @{
71
+ *
72
+ * @}
73
+ *
74
+ * @defgroup lavu_mem Memory Management
75
+ *
76
+ * @{
77
+ *
78
+ * @}
79
+ *
80
+ * @defgroup lavu_data Data Structures
81
+ * @{
82
+ *
83
+ * @}
84
+ *
85
+ * @defgroup lavu_audio Audio related
86
+ *
87
+ * @{
88
+ *
89
+ * @}
90
+ *
91
+ * @defgroup lavu_error Error Codes
92
+ *
93
+ * @{
94
+ *
95
+ * @}
96
+ *
97
+ * @defgroup lavu_misc Other
98
+ *
99
+ * @{
100
+ *
101
+ * @defgroup lavu_internal Internal
102
+ *
103
+ * Not exported functions, for internal usage only
104
+ *
105
+ * @{
106
+ *
107
+ * @}
108
+ */
109
+
110
+
111
+/**
112
+ * @defgroup preproc_misc Preprocessor String Macros
113
+ *
114
+ * String manipulation macros
115
+ *
116
+ * @{
117
+ */
29 118
 
30 119
 #define AV_STRINGIFY(s)         AV_TOSTRING(s)
31 120
 #define AV_TOSTRING(s) #s
... ...
@@ -35,10 +124,34 @@
35 35
 
36 36
 #define AV_PRAGMA(s) _Pragma(#s)
37 37
 
38
+/**
39
+ * @}
40
+ */
41
+
42
+/**
43
+ * @defgroup version_utils Library Version Macros
44
+ *
45
+ * Useful to check and match library version in order to maintain
46
+ * backward compatibility.
47
+ *
48
+ * @{
49
+ */
50
+
38 51
 #define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
39 52
 #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
40 53
 #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
41 54
 
55
+/**
56
+ * @}
57
+ *
58
+ * @defgroup lavu_ver Version and Build diagnostics
59
+ *
60
+ * Macros and function useful to check at compiletime and at runtime
61
+ * which version of libavutil is in use.
62
+ *
63
+ * @{
64
+ */
65
+
42 66
 #define LIBAVUTIL_VERSION_MAJOR 51
43 67
 #define LIBAVUTIL_VERSION_MINOR 16
44 68
 #define LIBAVUTIL_VERSION_MICRO  0
... ...
@@ -54,8 +167,16 @@
54 54
 #define LIBAVUTIL_IDENT         "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
55 55
 
56 56
 /**
57
+ * @}
58
+ *
59
+ * @defgroup depr_guards Deprecation guards
57 60
  * Those FF_API_* defines are not part of public API.
58 61
  * They may change, break or disappear at any time.
62
+ *
63
+ * They are used mostly internally to mark code that will be removed
64
+ * on the next major version.
65
+ *
66
+ * @{
59 67
  */
60 68
 #ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
61 69
 #define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 52)
... ...
@@ -71,6 +192,15 @@
71 71
 #endif
72 72
 
73 73
 /**
74
+ * @}
75
+ */
76
+
77
+/**
78
+ * @addtogroup lavu_ver
79
+ * @{
80
+ */
81
+
82
+/**
74 83
  * Return the LIBAVUTIL_VERSION_INT constant.
75 84
  */
76 85
 unsigned avutil_version(void);
... ...
@@ -85,16 +215,35 @@ const char *avutil_configuration(void);
85 85
  */
86 86
 const char *avutil_license(void);
87 87
 
88
+/**
89
+ * @}
90
+ */
91
+
92
+/**
93
+ * @addtogroup lavu_media Media Type
94
+ * @brief Media Type
95
+ */
96
+
88 97
 enum AVMediaType {
89
-    AVMEDIA_TYPE_UNKNOWN = -1,
98
+    AVMEDIA_TYPE_UNKNOWN = -1,  ///< Usually treated as AVMEDIA_TYPE_DATA
90 99
     AVMEDIA_TYPE_VIDEO,
91 100
     AVMEDIA_TYPE_AUDIO,
92
-    AVMEDIA_TYPE_DATA,
101
+    AVMEDIA_TYPE_DATA,          ///< Opaque data information usually continuous
93 102
     AVMEDIA_TYPE_SUBTITLE,
94
-    AVMEDIA_TYPE_ATTACHMENT,
103
+    AVMEDIA_TYPE_ATTACHMENT,    ///< Opaque data information usually sparse
95 104
     AVMEDIA_TYPE_NB
96 105
 };
97 106
 
107
+/**
108
+ * @defgroup lavu_const Constants
109
+ * @{
110
+ *
111
+ * @defgroup lavu_enc Encoding specific
112
+ *
113
+ * @note those definition should move to avcodec
114
+ * @{
115
+ */
116
+
98 117
 #define FF_LAMBDA_SHIFT 7
99 118
 #define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
100 119
 #define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
... ...
@@ -102,10 +251,46 @@ enum AVMediaType {
102 102
 
103 103
 #define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
104 104
 
105
+/**
106
+ * @}
107
+ * @defgroup lavu_time Timestamp specific
108
+ *
109
+ * Libav internal timebase and timestamp definitions
110
+ *
111
+ * @{
112
+ */
113
+
114
+/**
115
+ * @brief Undefined timestamp value
116
+ *
117
+ * Usually reported by demuxer that work on containers that do not provide
118
+ * either pts or dts.
119
+ */
120
+
105 121
 #define AV_NOPTS_VALUE          INT64_C(0x8000000000000000)
122
+
123
+/**
124
+ * Internal time base represented as integer
125
+ */
126
+
106 127
 #define AV_TIME_BASE            1000000
128
+
129
+/**
130
+ * Internal time base represented as fractional value
131
+ */
132
+
107 133
 #define AV_TIME_BASE_Q          (AVRational){1, AV_TIME_BASE}
108 134
 
135
+/**
136
+ * @}
137
+ * @}
138
+ * @defgroup lavu_picture Image related
139
+ *
140
+ * AVPicture types, pixel formats and basic image planes manipulation.
141
+ *
142
+ * @{
143
+ */
144
+
109 145
 enum AVPictureType {
110 146
     AV_PICTURE_TYPE_I = 1, ///< Intra
111 147
     AV_PICTURE_TYPE_P,     ///< Predicted
... ...
@@ -125,7 +310,16 @@ enum AVPictureType {
125 125
  */
126 126
 char av_get_picture_type_char(enum AVPictureType pict_type);
127 127
 
128
+/**
129
+ * @}
130
+ */
131
+
128 132
 #include "common.h"
129 133
 #include "error.h"
130 134
 
135
+/**
136
+ * @}
137
+ * @}
138
+ */
139
+
131 140
 #endif /* AVUTIL_AVUTIL_H */
... ...
@@ -24,6 +24,13 @@
24 24
 #include <stdint.h>
25 25
 
26 26
 /**
27
+ * @defgroup lavu_base64 Base64
28
+ * @ingroup lavu_crypto
29
+ * @{
30
+ */
31
+
32
+
33
+/**
27 34
  * Decode a base64-encoded string.
28 35
  *
29 36
  * @param out      buffer for decoded data
... ...
@@ -51,4 +58,8 @@ char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
51 51
  */
52 52
 #define AV_BASE64_SIZE(x)  (((x)+2) / 3 * 4 + 1)
53 53
 
54
+ /**
55
+  * @}
56
+  */
57
+
54 58
 #endif /* AVUTIL_BASE64_H */
... ...
@@ -26,7 +26,11 @@
26 26
 #define AVUTIL_DICT_H
27 27
 
28 28
 /**
29
- * @defgroup dict_api Public Dictionary API
29
+ * @addtogroup lavu_dict AVDictionary
30
+ * @ingroup lavu_data
31
+ *
32
+ * @brief Simple key:value store
33
+ *
30 34
  * @{
31 35
  * Dictionaries are used for storing key:value pairs. To create
32 36
  * an AVDictionary, simply pass an address of a NULL pointer to
... ...
@@ -52,7 +56,6 @@
52 52
  * av_dict_free(&d);
53 53
  * @endcode
54 54
  *
55
- * @}
56 55
  */
57 56
 
58 57
 #define AV_DICT_MATCH_CASE      1
... ...
@@ -111,4 +114,8 @@ void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags);
111 111
  */
112 112
 void av_dict_free(AVDictionary **m);
113 113
 
114
+/**
115
+ * @}
116
+ */
117
+
114 118
 #endif // AVUTIL_DICT_H
... ...
@@ -27,6 +27,13 @@
27 27
 #include <errno.h>
28 28
 #include "avutil.h"
29 29
 
30
+/**
31
+ * @addtogroup lavu_error
32
+ *
33
+ * @{
34
+ */
35
+
36
+
30 37
 /* error handling */
31 38
 #if EDOM > 0
32 39
 #define AVERROR(e) (-(e))   ///< Returns a negative error code from a POSIX error code, to return from library functions.
... ...
@@ -65,4 +72,8 @@
65 65
  */
66 66
 int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
67 67
 
68
+/**
69
+ * @}
70
+ */
71
+
68 72
 #endif /* AVUTIL_ERROR_H */
... ...
@@ -22,6 +22,9 @@
22 22
 /**
23 23
  * @file
24 24
  * misc image utilities
25
+ *
26
+ * @addtogroup lavu_picture
27
+ * @{
25 28
  */
26 29
 
27 30
 #include "avutil.h"
... ...
@@ -127,4 +130,9 @@ int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *lo
127 127
 
128 128
 int ff_set_systematic_pal2(uint32_t pal[256], enum PixelFormat pix_fmt);
129 129
 
130
+/**
131
+ * @}
132
+ */
133
+
134
+
130 135
 #endif /* AVUTIL_IMGUTILS_H */
... ...
@@ -25,6 +25,11 @@
25 25
 #include "config.h"
26 26
 #include "attributes.h"
27 27
 
28
+/**
29
+ * @addtogroup lavu_internal
30
+ * @{
31
+ */
32
+
28 33
 extern const uint32_t ff_inverse[257];
29 34
 
30 35
 #if   ARCH_ARM
... ...
@@ -76,4 +81,7 @@ static inline av_const unsigned int ff_sqrt(unsigned int a)
76 76
     return b - (a < b * b);
77 77
 }
78 78
 
79
+/**
80
+ * @}
81
+ */
79 82
 #endif /* AVUTIL_INTMATH_H */
... ...
@@ -22,6 +22,13 @@
22 22
 #ifndef AVUTIL_LZO_H
23 23
 #define AVUTIL_LZO_H
24 24
 
25
+/**
26
+ * @defgroup lavu_lzo LZO
27
+ * @ingroup lavu_crypto
28
+ *
29
+ * @{
30
+ */
31
+
25 32
 #include <stdint.h>
26 33
 
27 34
 /** @name Error flags returned by av_lzo1x_decode
... ...
@@ -63,4 +70,8 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
63 63
  */
64 64
 void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
65 65
 
66
+/**
67
+ * @}
68
+ */
69
+
66 70
 #endif /* AVUTIL_LZO_H */
... ...
@@ -57,6 +57,12 @@
57 57
 #define INFINITY       (1.0/0.0)
58 58
 #endif
59 59
 
60
+/**
61
+ * @addtogroup lavu_math
62
+ * @{
63
+ */
64
+
65
+
60 66
 enum AVRounding {
61 67
     AV_ROUND_ZERO     = 0, ///< Round toward zero.
62 68
     AV_ROUND_INF      = 1, ///< Round away from zero.
... ...
@@ -109,4 +115,8 @@ int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
109 109
  */
110 110
 int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
111 111
 
112
+/**
113
+ * @}
114
+ */
115
+
112 116
 #endif /* AVUTIL_MATHEMATICS_H */
... ...
@@ -23,6 +23,12 @@
23 23
 
24 24
 #include <stdint.h>
25 25
 
26
+/**
27
+ * @defgroup lavu_md5 MD5
28
+ * @ingroup lavu_crypto
29
+ * @{
30
+ */
31
+
26 32
 extern const int av_md5_size;
27 33
 
28 34
 struct AVMD5;
... ...
@@ -32,5 +38,9 @@ void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len);
32 32
 void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
33 33
 void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
34 34
 
35
+/**
36
+ * @}
37
+ */
38
+
35 39
 #endif /* AVUTIL_MD5_H */
36 40
 
... ...
@@ -29,6 +29,12 @@
29 29
 #include "attributes.h"
30 30
 #include "avutil.h"
31 31
 
32
+/**
33
+ * @addtogroup lavu_mem
34
+ * @{
35
+ */
36
+
37
+
32 38
 #if defined(__ICC) && _ICC < 1200 || defined(__SUNPRO_C)
33 39
     #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n))) v
34 40
     #define DECLARE_ASM_CONST(n,t,v)    const t __attribute__ ((aligned (n))) v
... ...
@@ -123,4 +129,8 @@ char *av_strdup(const char *s) av_malloc_attrib;
123 123
  */
124 124
 void av_freep(void *ptr);
125 125
 
126
+/**
127
+ * @}
128
+ */
129
+
126 130
 #endif /* AVUTIL_MEM_H */
... ...
@@ -34,6 +34,7 @@
34 34
 
35 35
 /**
36 36
  * @defgroup avoptions AVOptions
37
+ * @ingroup lavu_data
37 38
  * @{
38 39
  * AVOptions provide a generic system to declare options on arbitrary structs
39 40
  * ("objects"). An option can have a help text, a type and a range of possible
... ...
@@ -212,7 +213,6 @@
212 212
  * filled with option as a parameter. This allows to set some options
213 213
  * that cannot be set otherwise, since e.g. the input file format is not known
214 214
  * before the file is actually opened.
215
- * @}
216 215
  */
217 216
 
218 217
 enum AVOptionType{
... ...
@@ -585,6 +585,7 @@ int av_opt_get_double(void *obj, const char *name, int search_flags, double
585 585
 int av_opt_get_q     (void *obj, const char *name, int search_flags, AVRational *out_val);
586 586
 /**
587 587
  * @}
588
+ * @}
588 589
  */
589 590
 
590 591
 #endif /* AVUTIL_OPT_H */
... ...
@@ -22,6 +22,10 @@
22 22
 #define AVUTIL_RANDOM_SEED_H
23 23
 
24 24
 #include <stdint.h>
25
+/**
26
+ * @addtogroup lavu_crypto
27
+ * @{
28
+ */
25 29
 
26 30
 /**
27 31
  * Get random data.
... ...
@@ -33,4 +37,8 @@
33 33
  */
34 34
 uint32_t av_get_random_seed(void);
35 35
 
36
+/**
37
+ * @}
38
+ */
39
+
36 40
 #endif /* AVUTIL_RANDOM_SEED_H */
... ...
@@ -33,6 +33,11 @@
33 33
 #include "attributes.h"
34 34
 
35 35
 /**
36
+ * @addtogroup lavu_math
37
+ * @{
38
+ */
39
+
40
+/**
36 41
  * rational number numerator/denominator
37 42
  */
38 43
 typedef struct AVRational{
... ...
@@ -132,4 +137,8 @@ int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
132 132
  */
133 133
 int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
134 134
 
135
+/**
136
+ * @}
137
+ */
138
+
135 139
 #endif /* AVUTIL_RATIONAL_H */
... ...
@@ -23,6 +23,12 @@
23 23
 
24 24
 #include <stdint.h>
25 25
 
26
+/**
27
+ * @defgroup lavu_sha SHA
28
+ * @ingroup lavu_crypto
29
+ * @{
30
+ */
31
+
26 32
 extern const int av_sha_size;
27 33
 
28 34
 struct AVSHA;
... ...
@@ -53,4 +59,8 @@ void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len)
53 53
  */
54 54
 void av_sha_final(struct AVSHA* context, uint8_t *digest);
55 55
 
56
+/**
57
+ * @}
58
+ */
59
+
56 60
 #endif /* AVUTIL_SHA_H */
... ...
@@ -21,14 +21,24 @@
21 21
 /**
22 22
  * @file
23 23
  * A tree container.
24
- * Insertion, removal, finding equal, largest which is smaller than and
25
- * smallest which is larger than, all have O(log n) worst case complexity.
26 24
  * @author Michael Niedermayer <michaelni@gmx.at>
27 25
  */
28 26
 
29 27
 #ifndef AVUTIL_TREE_H
30 28
 #define AVUTIL_TREE_H
31 29
 
30
+/**
31
+ * @addtogroup lavu_tree AVTree
32
+ * @ingroup lavu_data
33
+ *
34
+ * Low complexity tree container
35
+ *
36
+ * Insertion, removal, finding equal, largest which is smaller than and
37
+ * smallest which is larger than, all have O(log n) worst case complexity.
38
+ * @{
39
+ */
40
+
41
+
32 42
 struct AVTreeNode;
33 43
 extern const int av_tree_node_size;
34 44
 
... ...
@@ -91,5 +101,8 @@ void av_tree_destroy(struct AVTreeNode *t);
91 91
  */
92 92
 void av_tree_enumerate(struct AVTreeNode *t, void *opaque, int (*cmp)(void *opaque, void *elem), int (*enu)(void *opaque, void *elem));
93 93
 
94
+/**
95
+ * @}
96
+ */
94 97
 
95 98
 #endif /* AVUTIL_TREE_H */