/src/ffmpeg/libavutil/utils.c
Line | Count | Source |
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 | | |
28 | | const char *av_get_media_type_string(enum AVMediaType media_type) |
29 | 1.99M | { |
30 | 1.99M | switch (media_type) { |
31 | 920k | case AVMEDIA_TYPE_VIDEO: return "video"; |
32 | 882k | case AVMEDIA_TYPE_AUDIO: return "audio"; |
33 | 1.14k | case AVMEDIA_TYPE_DATA: return "data"; |
34 | 24.7k | case AVMEDIA_TYPE_SUBTITLE: return "subtitle"; |
35 | 12.7k | case AVMEDIA_TYPE_ATTACHMENT: return "attachment"; |
36 | 153k | default: return NULL; |
37 | 1.99M | } |
38 | 1.99M | } |
39 | | |
40 | | char av_get_picture_type_char(enum AVPictureType pict_type) |
41 | 648k | { |
42 | 648k | switch (pict_type) { |
43 | 249k | case AV_PICTURE_TYPE_I: return 'I'; |
44 | 265k | case AV_PICTURE_TYPE_P: return 'P'; |
45 | 67.6k | case AV_PICTURE_TYPE_B: return 'B'; |
46 | 10.9k | case AV_PICTURE_TYPE_S: return 'S'; |
47 | 4.91k | case AV_PICTURE_TYPE_SI: return 'i'; |
48 | 19.5k | case AV_PICTURE_TYPE_SP: return 'p'; |
49 | 30 | case AV_PICTURE_TYPE_BI: return 'b'; |
50 | 31.2k | default: return '?'; |
51 | 648k | } |
52 | 648k | } |
53 | | |
54 | | #if FF_API_OPT_INT_LIST |
55 | | unsigned av_int_list_length_for_size(unsigned elsize, |
56 | | const void *list, uint64_t term) |
57 | 0 | { |
58 | 0 | unsigned i; |
59 | |
|
60 | 0 | if (!list) |
61 | 0 | return 0; |
62 | 0 | #define LIST_LENGTH(type) \ |
63 | 0 | { type t = term, *l = (type *)list; for (i = 0; l[i] != t; i++); } |
64 | 0 | switch (elsize) { |
65 | 0 | case 1: LIST_LENGTH(uint8_t); break; |
66 | 0 | case 2: LIST_LENGTH(uint16_t); break; |
67 | 0 | case 4: LIST_LENGTH(uint32_t); break; |
68 | 0 | case 8: LIST_LENGTH(uint64_t); break; |
69 | 0 | default: av_assert0(!"valid element size"); |
70 | 0 | } |
71 | 0 | return i; |
72 | 0 | } |
73 | | #endif |
74 | | |
75 | | char *av_fourcc_make_string(char *buf, uint32_t fourcc) |
76 | 117M | { |
77 | 117M | int i; |
78 | 117M | char *orig_buf = buf; |
79 | 117M | size_t buf_size = AV_FOURCC_MAX_STRING_SIZE; |
80 | | |
81 | 585M | for (i = 0; i < 4; i++) { |
82 | 468M | const int c = fourcc & 0xff; |
83 | 468M | const int print_chr = (c >= '0' && c <= '9') || |
84 | 460M | (c >= 'a' && c <= 'z') || |
85 | 174M | (c >= 'A' && c <= 'Z') || |
86 | 159M | (c && strchr(". -_", c)); |
87 | 468M | const int len = snprintf(buf, buf_size, print_chr ? "%c" : "[%d]", c); |
88 | 468M | if (len < 0) |
89 | 0 | break; |
90 | 468M | buf += len; |
91 | 468M | buf_size = buf_size > len ? buf_size - len : 0; |
92 | 468M | fourcc >>= 8; |
93 | 468M | } |
94 | | |
95 | 117M | return orig_buf; |
96 | 117M | } |
97 | | |
98 | | AVRational av_get_time_base_q(void) |
99 | 0 | { |
100 | 0 | return (AVRational){1, AV_TIME_BASE}; |
101 | 0 | } |
102 | | |
103 | 0 | void av_assert0_fpu(void) { |
104 | | #if HAVE_MMX_INLINE |
105 | | uint16_t state[14]; |
106 | | __asm__ volatile ( |
107 | | "fstenv %0 \n\t" |
108 | | : "+m" (state) |
109 | | : |
110 | | : "memory" |
111 | | ); |
112 | | av_assert0((state[4] & 3) == 3); |
113 | | #endif |
114 | 0 | } |