FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavutil
utils.c
Go to the documentation of this file.
1
/*
2
* This file is part of FFmpeg.
3
*
4
* FFmpeg is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* FFmpeg is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* Lesser General Public License for more details.
13
*
14
* You should have received a copy of the GNU Lesser General Public
15
* License along with FFmpeg; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#include "config.h"
20
#include "
avutil.h
"
21
#include "
avassert.h
"
22
#include "
samplefmt.h
"
23
#include "
pixdesc.h
"
24
25
/**
26
* @file
27
* various utility functions
28
*/
29
30
unsigned
avutil_version
(
void
)
31
{
32
static
int
checks_done;
33
if
(checks_done)
34
return
LIBAVUTIL_VERSION_INT
;
35
36
av_assert0
(
AV_PIX_FMT_VDA_VLD
== 81);
//check if the pix fmt enum has not had anything inserted or removed by mistake
37
av_assert0
(
AV_SAMPLE_FMT_DBLP
== 9);
38
av_assert0
(
AVMEDIA_TYPE_ATTACHMENT
== 4);
39
av_assert0
(
AV_PICTURE_TYPE_BI
== 7);
40
av_assert0
(
LIBAVUTIL_VERSION_MICRO
>= 100);
41
av_assert0
(HAVE_MMX2 == HAVE_MMXEXT);
42
43
av_assert0
(((
size_t
)-1) > 0);
// C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844
44
45
if
(av_sat_dadd32(1, 2) != 5) {
46
av_log
(NULL,
AV_LOG_FATAL
,
"Libavutil has been build with a broken binutils, please upgrade binutils and rebuild\n"
);
47
abort();
48
}
49
50
if
(
llrint
(1LL<<60) != 1LL<<60) {
51
av_log
(NULL,
AV_LOG_ERROR
,
"Libavutil has been linked to a broken llrint()\n"
);
52
}
53
54
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
55
ff_check_pixfmt_descriptors
();
56
#endif
57
checks_done = 1;
58
return
LIBAVUTIL_VERSION_INT
;
59
}
60
61
const
char
*
avutil_configuration
(
void
)
62
{
63
return
FFMPEG_CONFIGURATION;
64
}
65
66
const
char
*
avutil_license
(
void
)
67
{
68
#define LICENSE_PREFIX "libavutil license: "
69
return
LICENSE_PREFIX
FFMPEG_LICENSE +
sizeof
(
LICENSE_PREFIX
) - 1;
70
}
71
72
const
char
*
av_get_media_type_string
(
enum
AVMediaType
media_type)
73
{
74
switch
(media_type) {
75
case
AVMEDIA_TYPE_VIDEO
:
return
"video"
;
76
case
AVMEDIA_TYPE_AUDIO
:
return
"audio"
;
77
case
AVMEDIA_TYPE_DATA
:
return
"data"
;
78
case
AVMEDIA_TYPE_SUBTITLE
:
return
"subtitle"
;
79
case
AVMEDIA_TYPE_ATTACHMENT
:
return
"attachment"
;
80
default
:
return
NULL;
81
}
82
}
83
84
char
av_get_picture_type_char
(
enum
AVPictureType
pict_type)
85
{
86
switch
(pict_type) {
87
case
AV_PICTURE_TYPE_I
:
return
'I'
;
88
case
AV_PICTURE_TYPE_P
:
return
'P'
;
89
case
AV_PICTURE_TYPE_B
:
return
'B'
;
90
case
AV_PICTURE_TYPE_S
:
return
'S'
;
91
case
AV_PICTURE_TYPE_SI
:
return
'i'
;
92
case
AV_PICTURE_TYPE_SP
:
return
'p'
;
93
case
AV_PICTURE_TYPE_BI
:
return
'b'
;
94
default
:
return
'?'
;
95
}
96
}
97
98
unsigned
av_int_list_length_for_size
(
unsigned
elsize,
99
const
void
*list, uint64_t term)
100
{
101
unsigned
i;
102
103
if
(!list)
104
return
0;
105
#define LIST_LENGTH(type) \
106
{ type t = term, *l = (type *)list; for (i = 0; l[i] != t; i++); }
107
switch
(elsize) {
108
case
1:
LIST_LENGTH
(
uint8_t
);
break
;
109
case
2:
LIST_LENGTH
(uint16_t);
break
;
110
case
4:
LIST_LENGTH
(uint32_t);
break
;
111
case
8:
LIST_LENGTH
(uint64_t);
break
;
112
default
:
av_assert0
(!
"valid element size"
);
113
}
114
return
i;
115
}
116
117
AVRational
av_get_time_base_q
(
void
)
118
{
119
return
(
AVRational
){1,
AV_TIME_BASE
};
120
}
Generated on Fri Dec 5 2014 04:42:03 for FFmpeg by
1.8.2