FFmpeg
Loading...
Searching...
No Matches
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
23/**
24 * @file
25 * various utility functions
26 */
27
28const char *av_get_media_type_string(enum AVMediaType media_type)
29{
30 switch (media_type) {
31 case AVMEDIA_TYPE_VIDEO: return "video";
32 case AVMEDIA_TYPE_AUDIO: return "audio";
33 case AVMEDIA_TYPE_DATA: return "data";
34 case AVMEDIA_TYPE_SUBTITLE: return "subtitle";
35 case AVMEDIA_TYPE_ATTACHMENT: return "attachment";
36 default: return NULL;
37 }
38}
39
41{
42 switch (pict_type) {
43 case AV_PICTURE_TYPE_I: return 'I';
44 case AV_PICTURE_TYPE_P: return 'P';
45 case AV_PICTURE_TYPE_B: return 'B';
46 case AV_PICTURE_TYPE_S: return 'S';
47 case AV_PICTURE_TYPE_SI: return 'i';
48 case AV_PICTURE_TYPE_SP: return 'p';
49 case AV_PICTURE_TYPE_BI: return 'b';
50 default: return '?';
51 }
52}
53
54char *av_fourcc_make_string(char *buf, uint32_t fourcc)
55{
56 int i;
57 char *orig_buf = buf;
58 size_t buf_size = AV_FOURCC_MAX_STRING_SIZE;
59
60 for (i = 0; i < 4; i++) {
61 const int c = fourcc & 0xff;
62 const int print_chr = (c >= '0' && c <= '9') ||
63 (c >= 'a' && c <= 'z') ||
64 (c >= 'A' && c <= 'Z') ||
65 (c && strchr(". -_", c));
66 const int len = snprintf(buf, buf_size, print_chr ? "%c" : "[%d]", c);
67 if (len < 0)
68 break;
69 buf += len;
70 buf_size = buf_size > len ? buf_size - len : 0;
71 fourcc >>= 8;
72 }
73
74 return orig_buf;
75}
76
81#if FF_API_ASSERT_FPU
82void av_assert0_fpu(void) {
83#if HAVE_MMX_INLINE
84 uint16_t state[14];
85 __asm__ volatile (
86 "fstenv %0 \n\t"
87 : "+m" (state)
88 :
89 : "memory"
90 );
91 av_assert0((state[4] & 3) == 3);
92#endif
93}
94#endif
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition avassert.h:42
Convenience header that includes libavutil's core.
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63
#define NULL
Definition coverity.c:32
static struct @346255127015250356166251341105367306144006377143 state
const char * av_get_media_type_string(enum AVMediaType media_type)
Return a string describing the media_type enum, NULL if media_type is unknown.
Definition utils.c:28
char * av_fourcc_make_string(char *buf, uint32_t fourcc)
Fill the provided buffer with a string containing a FourCC (four-character code) representation.
Definition utils.c:54
AVMediaType
Definition avutil.h:198
AVRational av_get_time_base_q(void)
Return the fractional representation of the internal time base.
Definition utils.c:77
#define AV_FOURCC_MAX_STRING_SIZE
Definition avutil.h:321
@ AVMEDIA_TYPE_ATTACHMENT
Opaque data information usually sparse.
Definition avutil.h:204
@ AVMEDIA_TYPE_AUDIO
Definition avutil.h:201
@ AVMEDIA_TYPE_SUBTITLE
Definition avutil.h:203
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
@ AVMEDIA_TYPE_DATA
Opaque data information usually continuous.
Definition avutil.h:202
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
Definition utils.c:40
AVPictureType
Definition avutil.h:276
@ AV_PICTURE_TYPE_I
Intra.
Definition avutil.h:278
@ AV_PICTURE_TYPE_BI
BI type.
Definition avutil.h:284
@ AV_PICTURE_TYPE_SP
Switching Predicted.
Definition avutil.h:283
@ AV_PICTURE_TYPE_P
Predicted.
Definition avutil.h:279
@ AV_PICTURE_TYPE_SI
Switching Intra.
Definition avutil.h:282
@ AV_PICTURE_TYPE_S
S(GMC)-VOP MPEG-4.
Definition avutil.h:281
@ AV_PICTURE_TYPE_B
Bi-dir predicted.
Definition avutil.h:280
#define AV_TIME_BASE
Internal time base represented as integer.
Definition avutil.h:253
#define snprintf
Definition snprintf.h:34
Rational number (pair of numerator and denominator).
Definition rational.h:58
uint32_t fourcc
int len
static double c[64]