Mercurial > mplayer.hg
annotate libmpcodecs/ve.c @ 36650:8b2c68d6fd89
Enable specifying a font file in the GUI preferences.
This has been broken since the introduction of Fontconfig.
Since Fontconfig is selecting fonts by font patterns and the GUI does so
by selecting a font file, it is necessary to temporarily disable
fontconfig font handling if there is a directory separator character
found in the name (or pattern) of the font to be used, i.e. assume the
font name to be a pattern if and only if it doesn't contain a directory
separator character.
Thus set option 'fontconfig' depending on font_name. Set it in guiInit()
for the font possibly given in a configuration file or on the command
line, and set it in mplayerLoadFont() whenever it is affected by GUI
preferences settings.
(Although the font selection dialog only allows files to be selected,
it is possible to simply enter a fontconfig font pattern in the
preferences' text entry field - or to enter it directly into the GUI
configuration file or to specify on the command line, both of which
always is possible.)
author | ib |
---|---|
date | Sun, 26 Jan 2014 16:40:49 +0000 |
parents | af9ef007bec6 |
children |
rev | line source |
---|---|
30421
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
1 /* |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
2 * This file is part of MPlayer. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
3 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
7 * (at your option) any later version. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
8 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
12 * GNU General Public License for more details. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
13 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
17 */ |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
27363
diff
changeset
|
18 |
5550 | 19 #include <stdio.h> |
20 #include <stdlib.h> | |
21 #include <string.h> | |
22 | |
17012 | 23 #include "config.h" |
24 #include "mp_msg.h" | |
5550 | 25 |
5607 | 26 #include "img_format.h" |
27 #include "mp_image.h" | |
5550 | 28 #include "vf.h" |
32476 | 29 #include "ve.h" |
5550 | 30 |
32033 | 31 extern const vf_info_t ve_info_lavc; |
32 extern const vf_info_t ve_info_vfw; | |
33 extern const vf_info_t ve_info_raw; | |
34 extern const vf_info_t ve_info_libdv; | |
35 extern const vf_info_t ve_info_xvid; | |
36 extern const vf_info_t ve_info_qtvideo; | |
37 extern const vf_info_t ve_info_nuv; | |
38 extern const vf_info_t ve_info_x264; | |
5550 | 39 |
25876
edfe8baed49f
copy note on new demuxers and codecs to the top of the array as well to be
ivo
parents:
25872
diff
changeset
|
40 /* Please do not add any new encoders here. If you want to implement a new |
25880
4df11ac927fc
clarify comments/docs about lav* being the preferred place to implement new
ivo
parents:
25876
diff
changeset
|
41 * encoder, add it to libavcodec, except for wrappers around external |
4df11ac927fc
clarify comments/docs about lav* being the preferred place to implement new
ivo
parents:
25876
diff
changeset
|
42 * libraries and encoders requiring binary support. */ |
25876
edfe8baed49f
copy note on new demuxers and codecs to the top of the array as well to be
ivo
parents:
25872
diff
changeset
|
43 |
32035
bc01ea7a6322
Mark encoder_list declaration as const pointers to const data, fixes:
diego
parents:
32033
diff
changeset
|
44 static const vf_info_t * const encoder_list[] = { |
32142
4614728cab25
build system: Merge all FFmpeg library checks into a single FFmpeg check.
diego
parents:
32035
diff
changeset
|
45 #ifdef CONFIG_FFMPEG |
5550 | 46 &ve_info_lavc, |
47 #endif | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26513
diff
changeset
|
48 #ifdef CONFIG_WIN32DLL |
5550 | 49 &ve_info_vfw, |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26513
diff
changeset
|
50 #ifdef CONFIG_QTX_CODECS_WIN32 |
8471 | 51 &ve_info_qtvideo, |
5550 | 52 #endif |
15453
d7a2ffc6e694
compilation/link fix with --disable-qtx --disable-dshow
diego
parents:
13166
diff
changeset
|
53 #endif |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
54 #ifdef CONFIG_LIBDV095 |
5577 | 55 &ve_info_libdv, |
56 #endif | |
11966 | 57 &ve_info_raw, |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
58 #ifdef CONFIG_XVID4 |
7456 | 59 &ve_info_xvid, |
60 #endif | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26513
diff
changeset
|
61 #ifdef CONFIG_LIBLZO |
9520
2860f7c9d9ca
A new nuppel video encoder. Mainly for RT encoding on slow box.
albeu
parents:
8471
diff
changeset
|
62 &ve_info_nuv, |
22244
675574bebb04
Make liblzo conditional to the appropriate #defines.
diego
parents:
20984
diff
changeset
|
63 #endif |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
64 #ifdef CONFIG_X264 |
13166
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
11966
diff
changeset
|
65 &ve_info_x264, |
d198f255bee9
x264 encoder support. Original patch send by Bernhard Rosenkraenzer <bero at arklinux dot org>, modifications by Loren Merritt <lorenm at u.washington dot edu>, Jeff Clagg <snacky at ikaruga.co dot uk> and me
iive
parents:
11966
diff
changeset
|
66 #endif |
25872
3eeaf9d4c65a
note on new demuxers and codecs, add them to lav* instead of libmp*
ivo
parents:
22244
diff
changeset
|
67 /* Please do not add any new encoders here. If you want to implement a new |
25880
4df11ac927fc
clarify comments/docs about lav* being the preferred place to implement new
ivo
parents:
25876
diff
changeset
|
68 * encoder, add it to libavcodec, except for wrappers around external |
4df11ac927fc
clarify comments/docs about lav* being the preferred place to implement new
ivo
parents:
25876
diff
changeset
|
69 * libraries and encoders requiring binary support. */ |
5550 | 70 NULL |
71 }; | |
72 | |
18980
ed69754aa58d
Marks several string parameters as const when they are not modified in the function, Patch by Stefan Huehner, stefan AT huehner-org
reynaldo
parents:
17012
diff
changeset
|
73 vf_instance_t* vf_open_encoder(vf_instance_t* next, const char *name, char *args){ |
9595 | 74 char* vf_args[] = { "_oldargs_", args, NULL }; |
75 return vf_open_plugin(encoder_list,next,name,vf_args); | |
5550 | 76 } |
32476 | 77 |
78 static double *forced_key_frames_ts; | |
79 static int forced_key_frames_number; | |
80 static int forced_key_frames_idx; | |
81 | |
82 int parse_forced_key_frames(const m_option_t *opt, const char *arg) | |
83 { | |
84 double ts; | |
85 const char *p; | |
86 int nts = 1, idx = 0, len; | |
87 | |
88 for (p = arg; *p; p++) | |
89 nts += *p == ','; | |
90 free(forced_key_frames_ts); | |
91 forced_key_frames_ts = calloc(sizeof(*forced_key_frames_ts), nts); | |
92 p = arg; | |
93 while (1) { | |
94 len = parse_timestring(p, &ts, ','); | |
95 if (!len) { | |
96 mp_msg(MSGT_CFGPARSER, MSGL_ERR, | |
97 "Option force-key-frames: invalid time: '%s'\n", p); | |
98 return M_OPT_INVALID; | |
99 } | |
100 forced_key_frames_ts[idx++] = ts; | |
101 if (!p[len]) | |
102 break; | |
103 p += len + 1; | |
104 } | |
105 forced_key_frames_number = idx; | |
106 forced_key_frames_idx = 0; | |
107 for (idx = 1; idx < forced_key_frames_number; idx++) { | |
108 if (forced_key_frames_ts[idx - 1] >= forced_key_frames_ts[idx]) { | |
109 mp_msg(MSGT_CFGPARSER, MSGL_ERR, "Option force-key-frames: " | |
110 "timestamps are not in ascending order\n"); | |
111 return M_OPT_INVALID; | |
112 } | |
113 } | |
114 return 0; | |
115 } | |
116 | |
117 int is_forced_key_frame(double pts) | |
118 { | |
119 if (forced_key_frames_idx < forced_key_frames_number && | |
120 pts >= forced_key_frames_ts[forced_key_frames_idx]) { | |
121 forced_key_frames_idx++; | |
122 if (forced_key_frames_idx >= forced_key_frames_number) { | |
123 free(forced_key_frames_ts); | |
124 forced_key_frames_number = 0; | |
125 } | |
126 return 1; | |
127 } | |
128 return 0; | |
129 } |