Mercurial > mplayer.hg
annotate libmpcodecs/ve.c @ 35663:d1f84b219340
Don't unnecessarily and annoyingly move the video window.
So far, this has been done at the start and end of a video (in
non-fullscreen mode) as well as when selecting half, normal or
double size of the video.
Don't position the video window to the values given in the skin file,
because the user might have moved it in the meantime, so just let it
where it currently is.
This closes Bugzilla #1355.
author | ib |
---|---|
date | Wed, 16 Jan 2013 19:38:44 +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 } |