Mercurial > mplayer.hg
annotate osdep/priority.c @ 28992:947ef23ba798
Test if create_vdp_decoder() might succeed by calling it from config()
with a small value for max_reference_frames.
This does not make automatic recovery by using software decoder possible,
but lets MPlayer fail more graciously on - actually existing - buggy
hardware that does not support certain H264 widths when using
hardware accelerated decoding (784, 864, 944, 1024, 1808, 1888 pixels on
NVIDIA G98) and if the user tries to hardware-decode more samples at
the same time than supported.
Might break playback of H264 Intra-Only samples on hardware with very
little video memory.
author | cehoyos |
---|---|
date | Sat, 21 Mar 2009 20:11:05 +0000 |
parents | 01b2dcc76143 |
children | 32725ca88fed |
rev | line source |
---|---|
28485
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
1 /* |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
2 * implementation of '-priority' for OS/2 and Win32 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
3 * |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
4 * Copyright (c) 2009 by KO Myung-Hun (komh@chollian.net) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
5 * |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
6 * This file is part of MPlayer. |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
7 * |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
8 * MPlayer is free software; you can redistribute it and/or modify |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
11 * (at your option) any later version. |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
12 * |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
13 * MPlayer is distributed in the hope that it will be useful, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
16 * GNU General Public License for more details. |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
17 * |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
18 * You should have received a copy of the GNU General Public License along |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
19 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
21 */ |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
22 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
23 #ifdef __OS2__ |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
24 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
25 #define INCL_DOS |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
26 #include <os2.h> |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
27 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
28 #define REALTIME_PRIORITY_CLASS MAKESHORT(0, PRTYC_TIMECRITICAL) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
29 #define HIGH_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM, PRTYC_REGULAR) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
30 #define ABOVE_NORMAL_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM / 2, PRTYC_REGULAR) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
31 #define NORMAL_PRIORITY_CLASS MAKESHORT(0, PRTYC_REGULAR) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
32 #define BELOW_NORMAL_PRIORITY_CLASS MAKESHORT(PRTYD_MAXIMUM, PRTYC_IDLETIME) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
33 #define IDLE_PRIORITY_CLASS MAKESHORT(0, PRTYC_IDLETIME) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
34 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
35 #else |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
36 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
37 #include <windows.h> |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
38 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
39 #endif /* __OS2__ */ |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
40 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
41 #include <string.h> |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
42 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
43 #include "mp_msg.h" |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
44 #include "help_mp.h" |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
45 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
46 #include "priority.h" |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
47 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
48 char *proc_priority = NULL; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
49 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
50 void set_priority(void) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
51 { |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
52 struct { |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
53 char* name; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
54 int prio; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
55 } priority_presets_defs[] = { |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
56 { "realtime", REALTIME_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
57 { "high", HIGH_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
58 #ifdef ABOVE_NORMAL_PRIORITY_CLASS |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
59 { "abovenormal", ABOVE_NORMAL_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
60 #endif |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
61 { "normal", NORMAL_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
62 #ifdef BELOW_NORMAL_PRIORITY_CLASS |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
63 { "belownormal", BELOW_NORMAL_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
64 #endif |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
65 { "idle", IDLE_PRIORITY_CLASS}, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
66 { NULL, NORMAL_PRIORITY_CLASS} /* default */ |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
67 }; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
68 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
69 if (proc_priority) { |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
70 int i; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
71 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
72 for (i = 0; priority_presets_defs[i].name; i++) { |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
73 if (strcasecmp(priority_presets_defs[i].name, proc_priority) == 0) |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
74 break; |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
75 } |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
76 mp_msg(MSGT_CPLAYER, MSGL_STATUS, MSGTR_SettingProcessPriority, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
77 priority_presets_defs[i].name); |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
78 |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
79 #ifdef __OS2__ |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
80 DosSetPriority(PRTYS_PROCESS, |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
81 HIBYTE(priority_presets_defs[i].prio), |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
82 LOBYTE(priority_presets_defs[i].prio), |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
83 0); |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
84 #else |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
85 SetPriorityClass(GetCurrentProcess(), priority_presets_defs[i].prio); |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
86 #endif |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
87 } |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
88 } |
3f597aacbb69
Add priority support for OS/2 and factorize the Windows priority support.
diego
parents:
diff
changeset
|
89 |