Mercurial > mplayer.hg
annotate libvo/vo_dxr3.c @ 9160:2a67f587c792
Here is updated manual (24.01.2003).
- by imoteph
author | gabucino |
---|---|
date | Wed, 29 Jan 2003 17:23:23 +0000 |
parents | e0ec616c5985 |
children | 23b1d5ef281b |
rev | line source |
---|---|
6748
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
1 /* |
2645 | 2 * vo_dxr3.c - DXR3/H+ video out |
3 * | |
8924
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
4 * Copyright (C) 2002-2003 David Holm <david@realityrift.com> |
2645 | 5 * |
6 */ | |
7 | |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
8 /* ChangeLog added 2002-01-10 |
8924
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
9 * 2003-01-12: |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
10 * Added patch from Tamas Kohegyi to fix subpic placement with freetype. |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
11 * |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
12 * 2003-01-02: |
8724 | 13 * Added patch from Jens Axboe that makes vo_dxr3 return to previous TV norm |
14 * after quiting. | |
8728 | 15 * Added patch from Thomas Jarosch that fixed alot of textual ouput |
16 * errors. | |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
17 * |
8549 | 18 * 2002-12-24: (Hohoho) |
19 * Added patch from Thomas Jarosch <tomj@simonv.com> which adds support | |
20 * for setting the TV norm by movie framerate. | |
21 * | |
8317 | 22 * 2002-11-03: |
8088 | 23 * Cleaned up syncing code and renamed setup variables so |
24 * they can be accessed from the GUI. | |
25 * | |
8317 | 26 * 2002-11-02: |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
27 * Added native overlay support, activate with :overlay |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
28 * you have to run dxr3view to modify settings (or manually |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
29 * edit the files in ~/.overlay. |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
30 * |
7950 | 31 * 2002-10-29: |
32 * Added new sync-engine, activate with :sync option. | |
33 * Greatly improved commandline parser. | |
34 * Replaced :noprebuf with :prebuf and made noprebuf the default. | |
35 * | |
7945
32939f2b3d2e
Fixed stupid bug relating to multiple cards on athlons
mswitch
parents:
7932
diff
changeset
|
36 * 2002-10-28: |
32939f2b3d2e
Fixed stupid bug relating to multiple cards on athlons
mswitch
parents:
7932
diff
changeset
|
37 * Fixed multicard bug on athlons |
32939f2b3d2e
Fixed stupid bug relating to multiple cards on athlons
mswitch
parents:
7932
diff
changeset
|
38 * |
6748
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
39 * 2002-07-18: |
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
40 * Disabled spuenc support, this is still not stable enough =( |
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
41 * |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
42 * 2002-07-05: |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
43 * Removed lavc and fame encoder to be compatible with new libvo style. |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
44 * Added graphic equalizer support. |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
45 * |
5647
5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
mswitch
parents:
5547
diff
changeset
|
46 * 2002-04-15: |
5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
mswitch
parents:
5547
diff
changeset
|
47 * The spuenc code isn't 100% stable yet, therefore I'm disabling |
5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
mswitch
parents:
5547
diff
changeset
|
48 * it due to the upcoming stable release. |
5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
mswitch
parents:
5547
diff
changeset
|
49 * |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
50 * 2002-04-03: |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
51 * Carl George added spuenc support |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
52 * |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
53 * 2002-03-26: |
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
54 * XorA added an option parser and support for selecting encoder |
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
55 * codec. We thank him again. |
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
56 * |
5330 | 57 * 2002-03-25: |
58 * A couple of bugfixes by XorA | |
59 * | |
5273
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
60 * 2002-03-23: |
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
61 * Thanks to Marcel Hild <hild@b4mad.net> the jitter-bug experienced |
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
62 * with some videos have been fixed, many thanks goes to him. |
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
63 * |
5134
83b3dc5132a5
Fixed some bugs with fame, had to disable prebuffering with fame though
mswitch
parents:
5132
diff
changeset
|
64 * 2002-03-16: |
83b3dc5132a5
Fixed some bugs with fame, had to disable prebuffering with fame though
mswitch
parents:
5132
diff
changeset
|
65 * Fixed problems with fame, it gives a better picture than avcodec, |
83b3dc5132a5
Fixed some bugs with fame, had to disable prebuffering with fame though
mswitch
parents:
5132
diff
changeset
|
66 * but is slightly slower. Most notably the wobbling effect is gone |
83b3dc5132a5
Fixed some bugs with fame, had to disable prebuffering with fame though
mswitch
parents:
5132
diff
changeset
|
67 * with fame. |
83b3dc5132a5
Fixed some bugs with fame, had to disable prebuffering with fame though
mswitch
parents:
5132
diff
changeset
|
68 * |
5064 | 69 * 2002-03-13: |
70 * Preliminary fame support added (it breaks after seeking, why?) | |
71 * | |
4755
67c33b0fb847
Accidentally mixed experimental code with stable one during last commit,
mswitch
parents:
4754
diff
changeset
|
72 * 2002-02-18: |
67c33b0fb847
Accidentally mixed experimental code with stable one during last commit,
mswitch
parents:
4754
diff
changeset
|
73 * Fixed sync problems when pausing video (while using prebuffering) |
67c33b0fb847
Accidentally mixed experimental code with stable one during last commit,
mswitch
parents:
4754
diff
changeset
|
74 * |
4723
93e959f0a6e4
Fixed bug which would cause gibberish to be printed when using :noprebuf
mswitch
parents:
4685
diff
changeset
|
75 * 2002-02-16: |
93e959f0a6e4
Fixed bug which would cause gibberish to be printed when using :noprebuf
mswitch
parents:
4685
diff
changeset
|
76 * Fixed bug which would case invalid output when using :noprebuf |
93e959f0a6e4
Fixed bug which would cause gibberish to be printed when using :noprebuf
mswitch
parents:
4685
diff
changeset
|
77 * Removed equalization code, it caused problems on slow systems |
93e959f0a6e4
Fixed bug which would cause gibberish to be printed when using :noprebuf
mswitch
parents:
4685
diff
changeset
|
78 * |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
79 * 2002-02-13: |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
80 * Using the swscaler instead of the old hand coded shit. (Checkout man mplayer and search for sws ;). |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
81 * Using aspect function to setup a proper mpeg1, no more hassling with odd resolutions or GOP-sizes, |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
82 * this would only create jitter on some vids! |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
83 * The swscaler sometimes exits with sig8 on mpegs, I don't know why yet (just use -vc mpegpes in this |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
84 * case, and report to me if you have any avi's etc which does this...) |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
85 * |
4602
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
86 * 2002-02-09: |
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
87 * Thanks to the new control() method I have finally been able to enable the em8300 prebuffering. |
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
88 * This should speed up playback on all systems, the vout cpu usage should rocket since I will be hogging |
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
89 * the pci bus. Not to worry though, since frames are prebuffered it should be able to take a few blows |
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
90 * if you start doing other stuff simultaneously. |
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
91 * |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
92 * 2002-02-03: |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
93 * Removal of libmp1e, libavcodec has finally become faster (and it's code is helluva lot cleaner) |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
94 * |
4480 | 95 * 2002-02-02: |
96 * Cleaned out some old code which might have slowed down writes | |
97 * | |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
98 * 2002-01-17: |
4219 | 99 * Testrelease of new sync engine (using previously undocumented feature of em8300). |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
100 * |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
101 * 2002-01-15: |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
102 * Preliminary subpic support with -vc mpegpes and dvd's |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
103 * Device interfaces tries the new naming scheme by default (even though most users probably still use the old one) |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
104 * |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
105 * 2002-01-10: |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
106 * I rehauled the entire codebase. I have now changed to |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
107 * Kernighan & Ritchie codingstyle, please mail me if you |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
108 * find any inconcistencies. |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
109 */ |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
110 |
2921 | 111 #include <linux/em8300.h> |
112 #include <sys/ioctl.h> | |
113 #include <sys/stat.h> | |
114 #include <sys/types.h> | |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
115 #include <sys/select.h> |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
116 #include <unistd.h> |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
117 #include <stdio.h> |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
118 #include <stdlib.h> |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
119 #include <string.h> |
2921 | 120 #include <fcntl.h> |
2645 | 121 #include <stdio.h> |
122 #include <time.h> | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
123 #include <math.h> |
2645 | 124 |
125 #include "config.h" | |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8092
diff
changeset
|
126 #ifdef HAVE_MALLOC_H |
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8092
diff
changeset
|
127 #include <malloc.h> |
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
8092
diff
changeset
|
128 #endif |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
129 #include "fastmemcpy.h" |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
130 |
2645 | 131 #include "video_out.h" |
132 #include "video_out_internal.h" | |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
133 #include "aspect.h" |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
134 #include "spuenc.h" |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
135 #include "sub.h" |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
136 #ifdef HAVE_NEW_GUI |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
137 #include "../Gui/interface.h" |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
138 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
139 #ifdef HAVE_X11 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
140 #include "x11_common.h" |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
141 #endif |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
142 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
143 #define SPU_SUPPORT |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
144 |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8123
diff
changeset
|
145 static vo_info_t info = |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
146 { |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
147 "DXR3/H+ video out", |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
148 "dxr3", |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
149 "David Holm <dholm@iname.com>", |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
150 "" |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
151 }; |
2645 | 152 LIBVO_EXTERN (dxr3) |
5377 | 153 |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
154 /* Resolutions and positions */ |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
155 static int v_width, v_height; |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
156 static int s_width, s_height; |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
157 static int osd_w, osd_h; |
8724 | 158 static int fullscreen; |
159 static int img_format; | |
3329
529a001496c2
Switched from rte which caused alot of problems for some users to libmp1e.
mswitch
parents:
3232
diff
changeset
|
160 |
8088 | 161 /* Configuration values |
162 * Don't declare these static, they | |
163 * should be accessible from the gui. | |
164 */ | |
165 int dxr3_prebuf = 0; | |
166 int dxr3_newsync = 0; | |
167 int dxr3_overlay = 0; | |
168 int dxr3_device_num = 0; | |
8549 | 169 int dxr3_norm = 0; |
8088 | 170 |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
171 /* File descriptors */ |
2921 | 172 static int fd_control = -1; |
173 static int fd_video = -1; | |
174 static int fd_spu = -1; | |
4602
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
175 static char fdv_name[80]; |
5499
58864ce0eef7
Fixed bug that would cause the dxr3 to lock if too many subpics were sent at once
mswitch
parents:
5497
diff
changeset
|
176 static char fds_name[80]; |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
177 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
178 #ifdef SPU_SUPPORT |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
179 /* on screen display/subpics */ |
8724 | 180 static char *osdpicbuf; |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
181 static int osdpicbuf_w; |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
182 static int osdpicbuf_h; |
8724 | 183 static int disposd; |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
184 static encodedata *spued; |
7950 | 185 static encodedata *spubuf; |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
186 #endif |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
187 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
188 |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
189 /* Static variable used in ioctl's */ |
8724 | 190 static int ioval; |
191 static int prev_pts; | |
192 static int pts_offset; | |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
193 static int old_vmode = -1; |
2645 | 194 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
195 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
196 /* Begin overlay.h */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
197 /* |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
198 Simple analog overlay API for DXR3/H+ linux driver. |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
199 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
200 Henrik Johansson |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
201 */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
202 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
203 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
204 /* Pattern drawing callback used by the calibration functions. |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
205 The function is expected to: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
206 Clear the entire screen. |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
207 Fill the screen with color bgcol (0xRRGGBB) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
208 Draw a rectangle at (xpos,ypos) of size (width,height) in fgcol (0xRRGGBB) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
209 */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
210 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
211 typedef int (*pattern_drawer_cb)(int fgcol, int bgcol, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
212 int xpos, int ypos, int width, int height, void *arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
213 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
214 struct coeff { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
215 float k,m; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
216 }; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
217 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
218 typedef struct { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
219 int dev; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
220 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
221 int xres, yres,depth; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
222 int xoffset,yoffset,xcorr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
223 int jitter; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
224 int stability; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
225 int keycolor; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
226 struct coeff colcal_upper[3]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
227 struct coeff colcal_lower[3]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
228 float color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
229 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
230 pattern_drawer_cb draw_pattern; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
231 void *dp_arg; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
232 } overlay_t; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
233 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
234 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
235 static overlay_t *overlay_init(int dev); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
236 static int overlay_release(overlay_t *); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
237 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
238 static int overlay_read_state(overlay_t *o, char *path); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
239 static int overlay_write_state(overlay_t *o, char *path); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
240 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
241 static int overlay_set_screen(overlay_t *o, int xres, int yres, int depth); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
242 static int overlay_set_mode(overlay_t *o, int mode); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
243 static int overlay_set_attribute(overlay_t *o, int attribute, int val); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
244 static int overlay_set_keycolor(overlay_t *o, int color); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
245 static int overlay_set_window(overlay_t *o, int xpos,int ypos,int width,int height); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
246 static int overlay_set_bcs(overlay_t *o, int brightness, int contrast, int saturation); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
247 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
248 static int overlay_autocalibrate(overlay_t *o, pattern_drawer_cb pd, void *arg); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
249 static void overlay_update_params(overlay_t *o); |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
250 static int overlay_signalmode(overlay_t *o, int mode); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
251 /* End overlay.h */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
252 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
253 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
254 #ifdef HAVE_X11 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
255 #define KEY_COLOR 0x80a040 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
256 static XWindowAttributes xwin_attribs; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
257 static overlay_t *overlay_data; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
258 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
259 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
260 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
261 /* Functions for working with the em8300's internal clock */ |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
262 /* End of internal clock functions */ |
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
263 |
7932 | 264 static uint32_t control(uint32_t request, void *data, ...) |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
265 { |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
266 switch (request) { |
7009 | 267 case VOCTRL_GUISUPPORT: |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
268 return VO_TRUE; |
7009 | 269 case VOCTRL_GUI_NOWINDOW: |
8088 | 270 if (dxr3_overlay) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
271 return VO_FALSE; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
272 } |
7009 | 273 return VO_TRUE; |
8088 | 274 case VOCTRL_SET_SPU_PALETTE: |
275 if (ioctl(fd_spu, EM8300_IOCTL_SPU_SETPALETTE, data) < 0) { | |
276 printf("VO: [dxr3] Unable to load new SPU palette!\n"); | |
277 return VO_ERROR; | |
278 } | |
279 return VO_TRUE; | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
280 #ifdef HAVE_X11 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
281 case VOCTRL_FULLSCREEN: |
8088 | 282 if (dxr3_overlay) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
283 vo_x11_fullscreen(); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
284 if (fullscreen) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
285 overlay_signalmode(overlay_data, EM8300_OVERLAY_SIGNAL_WITH_VGA); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
286 fullscreen = 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
287 } else { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
288 overlay_signalmode(overlay_data, EM8300_OVERLAY_SIGNAL_ONLY); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
289 fullscreen = 1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
290 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
291 return VO_TRUE; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
292 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
293 return VO_FALSE; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
294 #endif |
4754 | 295 case VOCTRL_RESUME: |
8088 | 296 if (dxr3_newsync) { |
297 ioctl(fd_control, EM8300_IOCTL_SCR_GET, &ioval); | |
298 pts_offset = vo_pts - (ioval << 1); | |
299 if (pts_offset < 0) { | |
300 pts_offset = 0; | |
301 } | |
302 } | |
303 | |
304 if (dxr3_prebuf) { | |
4754 | 305 ioval = EM8300_PLAYMODE_PLAY; |
306 if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) { | |
307 printf("VO: [dxr3] Unable to set playmode!\n"); | |
308 } | |
309 } | |
310 return VO_TRUE; | |
311 case VOCTRL_PAUSE: | |
8088 | 312 if (dxr3_prebuf) { |
4754 | 313 ioval = EM8300_PLAYMODE_PAUSED; |
314 if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) { | |
315 printf("VO: [dxr3] Unable to set playmode!\n"); | |
316 } | |
317 } | |
318 return VO_TRUE; | |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
319 case VOCTRL_RESET: |
8088 | 320 if (dxr3_prebuf) { |
4605 | 321 close(fd_video); |
322 fd_video = open(fdv_name, O_WRONLY); | |
5499
58864ce0eef7
Fixed bug that would cause the dxr3 to lock if too many subpics were sent at once
mswitch
parents:
5497
diff
changeset
|
323 close(fd_spu); |
58864ce0eef7
Fixed bug that would cause the dxr3 to lock if too many subpics were sent at once
mswitch
parents:
5497
diff
changeset
|
324 fd_spu = open(fds_name, O_WRONLY); |
4609 | 325 fsync(fd_video); |
5499
58864ce0eef7
Fixed bug that would cause the dxr3 to lock if too many subpics were sent at once
mswitch
parents:
5497
diff
changeset
|
326 fsync(fd_spu); |
4605 | 327 } |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
328 return VO_TRUE; |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
329 case VOCTRL_QUERY_FORMAT: |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
330 { |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
331 uint32_t flag = 0; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
332 |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
333 if (*((uint32_t*)data) != IMGFMT_MPEGPES) |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
334 return 0; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
335 |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
336 flag = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_SPU; |
8088 | 337 if (dxr3_prebuf) |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
338 flag |= VFCAP_TIMER; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
339 return flag; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
340 } |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
341 case VOCTRL_SET_EQUALIZER: |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
342 { |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
343 va_list ap; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
344 int value; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
345 em8300_bcs_t bcs; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
346 |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
347 va_start(ap, data); |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
348 value = va_arg(ap, int); |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
349 va_end(ap); |
6748
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
350 |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
351 if (ioctl(fd_control, EM8300_IOCTL_GETBCS, &bcs) < 0) |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
352 return VO_FALSE; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
353 if (!strcasecmp(data, "brightness")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
354 bcs.brightness = (value+100)*5; |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
355 else if (!strcasecmp(data, "contrast")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
356 bcs.contrast = (value+100)*5; |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
357 else if (!strcasecmp(data, "saturation")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
358 bcs.saturation = (value+100)*5; |
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
359 else return VO_FALSE; |
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
360 |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
361 if (ioctl(fd_control, EM8300_IOCTL_SETBCS, &bcs) < 0) |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
362 return VO_FALSE; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
363 return VO_TRUE; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
364 } |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
365 case VOCTRL_GET_EQUALIZER: |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
366 { |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
367 va_list ap; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
368 int *value; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
369 em8300_bcs_t bcs; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
370 |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
371 va_start(ap, data); |
6843 | 372 value = va_arg(ap, int*); |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
373 va_end(ap); |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
374 |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
375 if (ioctl(fd_control, EM8300_IOCTL_GETBCS, &bcs) < 0) |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
376 return VO_FALSE; |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
377 |
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
378 if (!strcasecmp(data, "brightness")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
379 *value = (bcs.brightness/5)-100; |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
380 else if (!strcasecmp(data, "contrast")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
381 *value = (bcs.contrast/5)-100; |
6787
f6a349add30d
eq synced to new way, not tested, but the old one isn't working yet
alex
parents:
6748
diff
changeset
|
382 else if (!strcasecmp(data, "saturation")) |
7095
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
383 *value = (bcs.saturation/5)-100; |
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
384 else return VO_FALSE; |
fad0147bd3aa
- add dxr3 equ patch from "Szombathelyi [iso-8859-2] Gy«Órgy" <gyurco@freemail.hu>
pontscho
parents:
7067
diff
changeset
|
385 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
386 return VO_TRUE; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
387 } |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
388 } |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
389 return VO_NOTIMPL; |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
390 } |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4523
diff
changeset
|
391 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
392 void calculate_cvals(unsigned long mask, int *shift, int *prec) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
393 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
394 /* Calculate shift and precision */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
395 (*shift) = 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
396 (*prec) = 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
397 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
398 while (!(mask & 0x1)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
399 (*shift)++; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
400 mask >>= 1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
401 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
402 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
403 while (mask & 0x1) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
404 (*prec)++; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
405 mask >>= 1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
406 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
407 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
408 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
7095
diff
changeset
|
409 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format) |
2645 | 410 { |
4754 | 411 int tmp1, tmp2, size; |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
412 em8300_register_t reg; |
5273
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
413 extern float monitor_aspect; |
6748
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
414 |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
415 /* Softzoom turned on, downscale */ |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
416 /* This activates the subpicture processor, you can safely disable this and still send */ |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
417 /* broken subpics to the em8300, if it's enabled and you send broken subpics you will end */ |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
418 /* up in a lockup */ |
4160 | 419 ioval = EM8300_SPUMODE_ON; |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
420 if (ioctl(fd_control, EM8300_IOCTL_SET_SPUMODE, &ioval) < 0) { |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
421 printf("VO: [dxr3] Unable to set subpicture mode!\n"); |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
422 uninit(); |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
423 return -1; |
3201 | 424 } |
425 | |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
426 /* Set the playmode to play (just in case another app has set it to something else) */ |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
427 ioval = EM8300_PLAYMODE_PLAY; |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
428 if (ioctl(fd_control, EM8300_IOCTL_SET_PLAYMODE, &ioval) < 0) { |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
429 printf("VO: [dxr3] Unable to set playmode!\n"); |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
430 } |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
431 |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
432 /* Start em8300 prebuffering and sync engine */ |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
433 reg.microcode_register = 1; |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
434 reg.reg = 0; |
8317 | 435 reg.val = MVCOMMAND_SYNC; |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
436 ioctl(fd_control, EM8300_IOCTL_WRITEREG, ®); |
6618 | 437 |
4607
da09673aea00
Removed some stuff from the em8300 driver, had to compensate
mswitch
parents:
4605
diff
changeset
|
438 /* Clean buffer by syncing it */ |
4609 | 439 ioval = EM8300_SUBDEVICE_VIDEO; |
440 ioctl(fd_control, EM8300_IOCTL_FLUSH, &ioval); | |
441 ioval = EM8300_SUBDEVICE_AUDIO; | |
442 ioctl(fd_control, EM8300_IOCTL_FLUSH, &ioval); | |
6618 | 443 |
7950 | 444 /* Sync the video device to make sure the buffers are empty |
445 * and set the playback speed to normal. Also reset the | |
446 * em8300 internal clock. | |
447 */ | |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
448 fsync(fd_video); |
7950 | 449 ioval = 0x900; |
450 ioctl(fd_control, EM8300_IOCTL_SCR_SETSPEED, &ioval); | |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
451 |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
452 /* Store some variables statically that we need later in another scope */ |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
453 img_format = format; |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
454 v_width = width; |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
455 v_height = height; |
2866
4f6190ab52e7
Added a temporary fix to the DXR3 win32 codec playback, win32 codecs might prove to play back an unscaled image!
mswitch
parents:
2770
diff
changeset
|
456 |
5273
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
457 /* Set monitor_aspect to avoid jitter */ |
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
458 monitor_aspect = (float) width / (float) height; |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
459 |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
460 if (ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &old_vmode) < 0) { |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
461 printf("VO: [dxr3] Unable to get TV norm!\n"); |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
462 old_vmode = -1; |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
463 } |
5273
8af542acc1b6
Jitter-bug fixed by Marcel Hild <hild@b4mad.net>, many many thanks goes
mswitch
parents:
5225
diff
changeset
|
464 |
8549 | 465 /* adjust TV norm */ |
466 if (dxr3_norm != 0) { | |
467 if (dxr3_norm == 5) { | |
468 ioval = EM8300_VIDEOMODE_NTSC; | |
469 } else if (dxr3_norm == 4) { | |
470 ioval = EM8300_VIDEOMODE_PAL60; | |
471 } else if (dxr3_norm == 3) { | |
472 ioval = EM8300_VIDEOMODE_PAL; | |
473 } else if (dxr3_norm == 2) { | |
474 if (vo_fps > 28) { | |
475 ioval = EM8300_VIDEOMODE_PAL60; | |
476 } else { | |
477 ioval = EM8300_VIDEOMODE_PAL; | |
478 } | |
479 | |
480 printf("VO: [dxr3] Auto-selected TV norm by frame rate: "); | |
481 ioval == EM8300_VIDEOMODE_PAL60 ? printf("PAL-60") : printf("PAL"); | |
8728 | 482 printf(".\n"); |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
483 } else { |
8549 | 484 if (vo_fps > 28) { |
485 ioval = EM8300_VIDEOMODE_NTSC; | |
486 } else { | |
487 ioval = EM8300_VIDEOMODE_PAL; | |
488 } | |
489 | |
490 printf("VO: [dxr3] Auto-selected TV norm by frame rate: "); | |
491 ioval == EM8300_VIDEOMODE_NTSC ? printf("NTSC") : printf("PAL"); | |
8728 | 492 printf(".\n"); |
8549 | 493 } |
494 | |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
495 if (old_vmode != ioval) { |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
496 if (ioctl(fd_control, EM8300_IOCTL_SET_VIDEOMODE, &ioval) < 0) { |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
497 printf("VO: [dxr3] Unable to set TV norm!\n"); |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
498 } |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
499 } |
8549 | 500 } |
501 | |
502 | |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
503 /* libavcodec requires a width and height that is x|16 */ |
5281
88df6d5f6ce7
Aspect code reenabled, apparently users didn't like running movies
mswitch
parents:
5275
diff
changeset
|
504 aspect_save_orig(width, height); |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
505 aspect_save_prescale(d_width, d_height); |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
506 ioctl(fd_control, EM8300_IOCTL_GET_VIDEOMODE, &ioval); |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
507 if (ioval == EM8300_VIDEOMODE_NTSC) { |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
508 printf("VO: [dxr3] Setting up for NTSC.\n"); |
5065 | 509 aspect_save_screenres(352, 240); |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
510 } else { |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
511 printf("VO: [dxr3] Setting up for PAL/SECAM.\n"); |
5065 | 512 aspect_save_screenres(352, 288); |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
513 } |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
514 aspect(&s_width, &s_height, A_ZOOM); |
5064 | 515 s_width -= s_width % 16; |
5281
88df6d5f6ce7
Aspect code reenabled, apparently users didn't like running movies
mswitch
parents:
5275
diff
changeset
|
516 s_height -= s_height % 16; |
5064 | 517 |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
518 /* Try to figure out whether to use widescreen output or not */ |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
519 /* Anamorphic widescreen modes makes this a pain in the ass */ |
4685
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
520 tmp1 = abs(d_height - ((d_width / 4) * 3)); |
e8a749c866cf
Using the mplayer SwScaler instead of doing scaling manually (sometimes this dies with sig FPE
mswitch
parents:
4613
diff
changeset
|
521 tmp2 = abs(d_height - (int) (d_width / 2.35)); |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
522 if (tmp1 < tmp2) { |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
523 ioval = EM8300_ASPECTRATIO_4_3; |
8728 | 524 printf("VO: [dxr3] Setting aspect ratio to 4:3.\n"); |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
525 } else { |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
526 ioval = EM8300_ASPECTRATIO_16_9; |
8728 | 527 printf("VO: [dxr3] Setting aspect ratio to 16:9.\n"); |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
528 } |
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
529 ioctl(fd_control, EM8300_IOCTL_SET_ASPECTRATIO, &ioval); |
5064 | 530 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
531 #ifdef SPU_SUPPORT |
7151 | 532 #ifdef HAVE_FREETYPE |
8924
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
533 if (ioval == EM8300_ASPECTRATIO_16_9) { |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
534 s_width *= 1.5; |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
535 } else { |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
536 s_width *= 0.84; |
e0ec616c5985
Added patch from Tamas Kohegyi to fix subpic placement with freetype
mswitch
parents:
8728
diff
changeset
|
537 } |
7151 | 538 #else |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
539 s_width*=2; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
540 s_height*=2; |
7151 | 541 #endif |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
542 |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
543 osdpicbuf = calloc( 1,s_width * s_height); |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
544 if (osdpicbuf == NULL) { |
8728 | 545 printf("VO: [dxr3] Out of memory.\n"); |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
546 return -1; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
547 } |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
548 spued = (encodedata *) malloc(sizeof(encodedata)); |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
549 if (spued == NULL) { |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
550 free( osdpicbuf ); |
8728 | 551 printf("VO: [dxr3] Out of memory.\n"); |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
552 return -1; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
553 } |
7950 | 554 spubuf = (encodedata *) malloc(sizeof(encodedata)); |
555 if (spubuf == NULL) { | |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
556 free( osdpicbuf ); |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
557 free( spued ); |
8728 | 558 printf("VO: [dxr3] Out of memory.\n"); |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
559 return -1; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
560 } |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
561 osd_w = s_width; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
562 osd_h = s_height; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
563 osdpicbuf_w = s_width; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
564 osdpicbuf_h = s_height; |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
565 |
7950 | 566 spubuf->count=0; |
567 pixbuf_encode_rle( 0,0,osdpicbuf_w,osdpicbuf_h - 1,osdpicbuf,osdpicbuf_w,spubuf ); | |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
568 |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
569 #endif |
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
570 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
571 #ifdef HAVE_X11 |
8088 | 572 if (dxr3_overlay) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
573 XVisualInfo vinfo; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
574 XSetWindowAttributes xswa; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
575 XSizeHints hint; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
576 unsigned long xswamask; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
577 Colormap cmap; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
578 XColor key_color; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
579 Window junkwindow; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
580 Screen *scr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
581 int depth, red_shift, red_prec, green_shift, green_prec, blue_shift, blue_prec, acq_color; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
582 em8300_overlay_screen_t ovlscr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
583 em8300_attribute_t ovlattr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
584 |
8037 | 585 vo_dx = (vo_screenwidth - d_width) / 2; |
586 vo_dy = (vo_screenheight - d_height) / 2; | |
587 vo_dwidth = d_width; | |
588 vo_dheight = d_height; | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
589 #ifdef HAVE_NEW_GUI |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
590 if (use_gui) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
591 guiGetEvent(guiSetShVideo, 0); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
592 XSetWindowBackground(mDisplay, vo_window, KEY_COLOR); |
8037 | 593 XClearWindow(mDisplay, vo_window); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
594 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), &xwin_attribs); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
595 depth = xwin_attribs.depth; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
596 if (depth != 15 && depth != 16 && depth != 24 && depth != 32) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
597 depth = 24; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
598 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
599 XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
600 } else |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
601 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
602 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
603 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), &xwin_attribs); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
604 depth = xwin_attribs.depth; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
605 if (depth != 15 && depth != 16 && depth != 24 && depth != 32) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
606 depth = 24; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
607 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
608 XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
609 xswa.background_pixel = KEY_COLOR; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
610 xswa.border_pixel = 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
611 xswamask = CWBackPixel | CWBorderPixel; |
8037 | 612 hint.y = vo_dy; |
613 hint.x = vo_dx; | |
614 hint.base_width = hint.width = vo_dwidth; | |
615 hint.base_height = hint.height = vo_dheight; | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
616 hint.flags = PPosition | PSize; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
617 vo_window = XCreateWindow(mDisplay, mRootWin, hint.x, hint.y, hint.width, hint.height, 0, depth, CopyFromParent, vinfo.visual, xswamask, &xswa); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
618 vo_x11_classhint(mDisplay, vo_window, "Viewing Window"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
619 vo_hidecursor(mDisplay, vo_window); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
620 vo_x11_selectinput_witherr(mDisplay, vo_window, StructureNotifyMask | KeyPressMask | PropertyChangeMask); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
621 XSetStandardProperties(mDisplay, vo_window, "DXR3 Overlay", "DXR3 Overlay", None, NULL, 0, &hint); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
622 XSetWMNormalHints(mDisplay, vo_window, &hint); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
623 XMapWindow(mDisplay, vo_window); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
624 XFlush(mDisplay); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
625 XSync(mDisplay, False); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
626 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
627 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
628 /* Start setting up overlay */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
629 XGetWindowAttributes(mDisplay, mRootWin, &xwin_attribs); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
630 overlay_set_screen(overlay_data, xwin_attribs.width, xwin_attribs.height, xwin_attribs.depth); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
631 overlay_read_state(overlay_data, NULL); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
632 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
633 /* Allocate keycolor */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
634 cmap = vo_x11_create_colormap(&vinfo); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
635 calculate_cvals(vinfo.red_mask, &red_shift, &red_prec); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
636 calculate_cvals(vinfo.green_mask, &green_shift, &green_prec); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
637 calculate_cvals(vinfo.blue_mask, &blue_shift, &blue_prec); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
638 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
639 key_color.red = ((KEY_COLOR >> 16) & 0xff) * 256; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
640 key_color.green = ((KEY_COLOR >> 8) & 0xff) * 256; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
641 key_color.blue = (KEY_COLOR & 0xff) * 256; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
642 key_color.pixel = (((key_color.red >> (16 - red_prec)) << red_shift) + |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
643 ((key_color.green >> (16 - green_prec)) << green_shift) + |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
644 ((key_color.blue >> (16 - blue_prec)) << blue_shift)); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
645 key_color.flags = DoRed | DoGreen | DoBlue; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
646 if (!XAllocColor(mDisplay, cmap, &key_color)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
647 printf("VO: [dxr3] Unable to allocate keycolor!\n"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
648 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
649 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
650 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
651 acq_color = ((key_color.red / 256) << 16) | ((key_color.green / 256) << 8) | key_color.blue; |
8037 | 652 if (key_color.pixel != KEY_COLOR) { |
8728 | 653 printf("VO: [dxr3] Unable to allocate exact keycolor, using closest match (%0x).\n", key_color.pixel); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
654 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
655 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
656 /* Set keycolor and activate overlay */ |
8037 | 657 XSetWindowBackground(mDisplay, vo_window, key_color.pixel); |
658 XClearWindow(mDisplay, vo_window); | |
659 overlay_set_keycolor(overlay_data, key_color.pixel); | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
660 overlay_set_mode(overlay_data, EM8300_OVERLAY_MODE_OVERLAY); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
661 overlay_set_mode(overlay_data, EM8300_OVERLAY_MODE_RECTANGLE); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
662 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
663 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
664 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
665 return 0; |
2645 | 666 } |
667 | |
4602
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
668 static void draw_alpha(int x, int y, int w, int h, unsigned char* src, unsigned char *srca, int srcstride) |
2645 | 669 { |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
670 #ifdef SPU_SUPPORT |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
671 unsigned char *buf = &osdpicbuf[(y * osdpicbuf_w) + x]; |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
672 int by = 0; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
673 register int lx, ly; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
674 register int stride = 0; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
675 |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
676 for (ly = 0; ly < h - 1; ly++) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
677 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
678 for(lx = 0; lx < w; lx++ ) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
679 if ( ( srca[stride + lx] )&&( src[stride + lx] >= 128 ) ) buf[by + lx] = 3; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
680 by+=osdpicbuf_w; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
681 stride+=srcstride; |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
682 } |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
683 pixbuf_encode_rle(x, y, osdpicbuf_w, osdpicbuf_h - 1, osdpicbuf, osdpicbuf_w, spued); |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
684 #endif |
2645 | 685 } |
686 | |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
687 extern int vo_osd_changed_flag; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
688 extern mp_osd_obj_t* vo_osd_list; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
689 |
2645 | 690 static void draw_osd(void) |
691 { | |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
692 #ifdef SPU_SUPPORT |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
693 static int cleared = 0; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
694 int changed = 0; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
695 |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
696 if ((disposd % 15) == 0) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
697 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
698 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
699 mp_osd_obj_t* obj = vo_osd_list; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
700 vo_update_osd( osd_w,osd_h ); |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
701 while( obj ) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
702 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
703 if ( obj->flags & OSDFLAG_VISIBLE ) { changed=1; break; } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
704 obj=obj->next; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
705 } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
706 } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
707 if ( changed ) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
708 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
709 vo_draw_text(osd_w, osd_h, draw_alpha); |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
710 memset(osdpicbuf, 0, s_width * s_height); |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
711 cleared=0; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
712 } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
713 else |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
714 { |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
715 if ( !cleared ) |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
716 { |
7950 | 717 spued->count=spubuf->count; |
718 memcpy( spued->data,spubuf->data,DATASIZE ); | |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
719 cleared=1; |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
720 } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
721 } |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
722 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
723 |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
724 /* could stand some check here to see if the subpic hasn't changed |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
725 * as if it hasn't and we re-send it it will "blink" as the last one |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
726 * is turned off, and the new one (same one) is turned on |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
727 */ |
6748
c0e8034d47e4
Disabled spuenc, it still doesn't work well with the em8300
mswitch
parents:
6647
diff
changeset
|
728 /* Subpics are not stable yet =( |
7067
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
729 expect lockups if you enable */ |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
730 #if 1 |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
731 write(fd_spu, spued->data, spued->count); |
b395b1240954
fix dxr3 subtitle handling and add some optimizations
pontscho
parents:
7009
diff
changeset
|
732 #endif |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
733 } |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
734 disposd++; |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
735 #endif |
2645 | 736 } |
737 | |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
738 |
2645 | 739 static uint32_t draw_frame(uint8_t * src[]) |
740 { | |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
741 vo_mpegpes_t *p = (vo_mpegpes_t *) src[0]; |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
742 |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
743 #ifdef SPU_SUPPORT |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
744 if (p->id == 0x20) { |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
745 write(fd_spu, p->data, p->size); |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
746 } else |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
747 #endif |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
748 write(fd_video, p->data, p->size); |
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
749 return 0; |
2645 | 750 } |
751 | |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
752 static void flip_page(void) |
2645 | 753 { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
754 #ifdef HAVE_X11 |
8088 | 755 if (dxr3_overlay) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
756 int event = vo_x11_check_events(mDisplay); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
757 if (event & VO_EVENT_RESIZE) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
758 Window junkwindow; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
759 XGetWindowAttributes(mDisplay, vo_window, &xwin_attribs); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
760 XTranslateCoordinates(mDisplay, vo_window, mRootWin, -xwin_attribs.border_width, -xwin_attribs.border_width, &xwin_attribs.x, &xwin_attribs.y, &junkwindow); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
761 overlay_set_window(overlay_data, xwin_attribs.x, xwin_attribs.y, xwin_attribs.width, xwin_attribs.height); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
762 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
763 if (event & VO_EVENT_EXPOSE) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
764 Window junkwindow; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
765 XSetWindowBackground(mDisplay, vo_window, KEY_COLOR); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
766 XClearWindow(mDisplay, vo_window); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
767 XGetWindowAttributes(mDisplay, vo_window, &xwin_attribs); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
768 XTranslateCoordinates(mDisplay, vo_window, mRootWin, -xwin_attribs.border_width, -xwin_attribs.border_width, &xwin_attribs.x, &xwin_attribs.y, &junkwindow); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
769 overlay_set_window(overlay_data, xwin_attribs.x, xwin_attribs.y, xwin_attribs.width, xwin_attribs.height); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
770 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
771 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
772 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
773 |
8088 | 774 if (dxr3_newsync) { |
7950 | 775 ioctl(fd_control, EM8300_IOCTL_SCR_GET, &ioval); |
776 ioval <<= 1; | |
777 if (vo_pts == 0) { | |
778 ioval = 0; | |
779 ioctl(fd_control, EM8300_IOCTL_SCR_SET, &ioval); | |
780 pts_offset = 0; | |
781 } else if ((vo_pts - pts_offset) < (ioval - 7200) || (vo_pts - pts_offset) > (ioval + 7200)) { | |
782 ioval = (vo_pts + pts_offset) >> 1; | |
783 ioctl(fd_control, EM8300_IOCTL_SCR_SET, &ioval); | |
784 ioctl(fd_control, EM8300_IOCTL_SCR_GET, &ioval); | |
785 pts_offset = vo_pts - (ioval << 1); | |
786 if (pts_offset < 0) { | |
787 pts_offset = 0; | |
788 } | |
789 } | |
790 ioval = vo_pts + pts_offset; | |
791 ioctl(fd_video, EM8300_IOCTL_SPU_SETPTS, &ioval); | |
792 ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &ioval); | |
793 prev_pts = vo_pts; | |
8088 | 794 } else if (dxr3_prebuf) { |
7950 | 795 ioctl(fd_spu, EM8300_IOCTL_SPU_SETPTS, &vo_pts); |
4755
67c33b0fb847
Accidentally mixed experimental code with stable one during last commit,
mswitch
parents:
4754
diff
changeset
|
796 ioctl(fd_video, EM8300_IOCTL_VIDEO_SETPTS, &vo_pts); |
67c33b0fb847
Accidentally mixed experimental code with stable one during last commit,
mswitch
parents:
4754
diff
changeset
|
797 } |
2645 | 798 } |
799 | |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
800 static uint32_t draw_slice(uint8_t *srcimg[], int stride[], int w, int h, int x0, int y0) |
2645 | 801 { |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
802 return -1; |
2645 | 803 } |
804 | |
3208 | 805 static void uninit(void) |
2645 | 806 { |
8728 | 807 printf("VO: [dxr3] Uninitializing.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
808 #ifdef HAVE_X11 |
8088 | 809 if (dxr3_overlay) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
810 overlay_set_mode(overlay_data, EM8300_OVERLAY_MODE_OFF); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
811 overlay_release(overlay_data); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
812 |
8042 | 813 #ifdef HAVE_NEW_GUI |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
814 if (!use_gui) { |
8042 | 815 #endif |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
816 vo_x11_uninit(); |
8088 | 817 |
8042 | 818 #ifdef HAVE_NEW_GUI |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
819 } |
8042 | 820 #endif |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
821 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
822 #endif |
8722
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
823 if (old_vmode != -1) { |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
824 if (ioctl(fd_control, EM8300_IOCTL_SET_VIDEOMODE, &old_vmode) < 0) { |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
825 printf("VO: [dxr3] Failed restoring TV norm!\n"); |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
826 } |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
827 } |
86c0d90cd841
Added patch that makes the dxr3 return to the previous tv norm when quiting.
mswitch
parents:
8549
diff
changeset
|
828 |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
829 if (fd_video) { |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
830 close(fd_video); |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
831 } |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
832 if (fd_spu) { |
4095
a3f3858b8c15
useless cosmetics changes... a.k.a. cvslog killer - patch by David Holm
arpi
parents:
4063
diff
changeset
|
833 close(fd_spu); |
4218
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
834 } |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
835 if (fd_control) { |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
836 close(fd_control); |
3931c41f740a
Added new syncengine thanks to a new previously undocumented feature of the em8300, this might fix playback on both slow and fast machines (more testing needed). This also requires users to get the em8300 driver from cvs until the next version is released (will probably happen this weekend)
mswitch
parents:
4166
diff
changeset
|
837 } |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
838 #ifdef SPU_SUPPORT |
5490
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
839 if(osdpicbuf) { |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
840 free(osdpicbuf); |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
841 } |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
842 if(spued) { |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
843 free(spued); |
78bd1fa449c3
Added spuenc... should write a draw_alpha_spu perhaps =D
mswitch
parents:
5397
diff
changeset
|
844 } |
6647
c66284733f3d
removed fame and lavc encoder, enabled spu encoder, added equaliuzer support
alex
parents:
6618
diff
changeset
|
845 #endif |
2645 | 846 } |
847 | |
848 static void check_events(void) | |
849 { | |
850 } | |
4352 | 851 |
852 static uint32_t preinit(const char *arg) | |
853 { | |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
854 char devname[80]; |
4605 | 855 int fdflags = O_WRONLY; |
5097 | 856 |
7950 | 857 /* Parse commandline */ |
858 while (arg) { | |
8088 | 859 if (!strncmp("prebuf", arg, 6) && !dxr3_prebuf) { |
7950 | 860 printf("VO: [dxr3] Enabling prebuffering.\n"); |
8088 | 861 dxr3_prebuf = 1; |
862 fdflags |= O_NONBLOCK; | |
863 } else if (!strncmp("sync", arg, 4) && !dxr3_newsync) { | |
7950 | 864 printf("VO: [dxr3] Using new sync engine.\n"); |
8088 | 865 dxr3_newsync = 1; |
866 } else if (!strncmp("overlay", arg, 7) && !dxr3_overlay) { | |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
867 #ifdef HAVE_X11 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
868 printf("VO: [dxr3] Using overlay.\n"); |
8088 | 869 dxr3_overlay = 1; |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
870 #else |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
871 printf("VO: [dxr3] Error: You need to compile mplayer with x11 libraries and headers installed to use overlay.\n"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
872 #endif |
8549 | 873 } else if (!strncmp("norm=", arg, 5)) { |
874 arg += 5; | |
875 // dxr3_norm is 0 (-> don't change norm) by default | |
876 // but maybe someone changes this in the future | |
877 | |
878 printf("VO: [dxr3] Will set TV norm to: "); | |
879 | |
880 if (*arg == '5') { | |
881 dxr3_norm = 5; | |
882 printf("NTSC"); | |
883 } else if (*arg == '4') { | |
884 dxr3_norm = 4; | |
885 printf("PAL-60"); | |
886 } else if (*arg == '3') { | |
887 dxr3_norm = 3; | |
888 printf("PAL"); | |
889 } else if (*arg == '2') { | |
890 dxr3_norm = 2; | |
8728 | 891 printf("Auto-adjust to movie frame rate (PAL/PAL-60)"); |
8549 | 892 } else if (*arg == '1') { |
893 dxr3_norm = 1; | |
894 printf("Auto-adjust to movie frame rate (PAL/NTSC)"); | |
895 } else if (*arg == '0') { | |
896 dxr3_norm = 0; | |
897 printf("Use current norm"); | |
898 } else { | |
899 dxr3_norm = 0; | |
900 printf("Unknown norm supplied. Use current norm"); | |
901 } | |
902 | |
8728 | 903 printf(".\n"); |
7950 | 904 } else if (arg[0] == '0' || arg[0] == '1' || arg[0] == '2' || arg[0] == '3') { |
8088 | 905 dxr3_device_num = arg[0]; |
7950 | 906 } |
907 | |
5377 | 908 arg = strchr(arg, ':'); |
909 if (arg) { | |
910 arg++; | |
911 } | |
5361
3e81a50e33ff
XorA added the option of switching between fame/avcodec without
mswitch
parents:
5330
diff
changeset
|
912 } |
7950 | 913 |
5225 | 914 |
7950 | 915 /* Open the control interface */ |
8088 | 916 sprintf(devname, "/dev/em8300-%d", dxr3_device_num); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
917 fd_control = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
918 if (fd_control < 1) { |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
919 /* Fall back to old naming scheme */ |
8728 | 920 printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300 instead.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
921 sprintf(devname, "/dev/em8300"); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
922 fd_control = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
923 if (fd_control < 1) { |
8728 | 924 printf("VO: [dxr3] Error opening /dev/em8300 for writing as well!\nBailing.\n"); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
925 return -1; |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
926 } |
8088 | 927 } else { |
8728 | 928 printf("VO: [dxr3] Opened %s.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
929 } |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
930 |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
931 /* Open the video interface */ |
8088 | 932 sprintf(devname, "/dev/em8300_mv-%d", dxr3_device_num); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
933 fd_video = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
934 if (fd_video < 0) { |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
935 /* Fall back to old naming scheme */ |
8728 | 936 printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300_mv instead.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
937 sprintf(devname, "/dev/em8300_mv"); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
938 fd_video = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
939 if (fd_video < 0) { |
8728 | 940 printf("VO: [dxr3] Error opening /dev/em8300_mv for writing as well!\nBailing.\n"); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
941 uninit(); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
942 return -1; |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
943 } |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
944 } else { |
8728 | 945 printf("VO: [dxr3] Opened %s.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
946 } |
4602
e4a96fe4f3d2
Thanks to the new control() method I've finally been able to add prebuffering support. This
mswitch
parents:
4596
diff
changeset
|
947 strcpy(fdv_name, devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
948 |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
949 /* Open the subpicture interface */ |
5647
5a2d49aa72c2
Disabled spuenc code due to upcoming prerelease, there are still bugs here
mswitch
parents:
5547
diff
changeset
|
950 fdflags |= O_NONBLOCK; |
8088 | 951 sprintf(devname, "/dev/em8300_sp-%d", dxr3_device_num); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
952 fd_spu = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
953 if (fd_spu < 0) { |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
954 /* Fall back to old naming scheme */ |
8728 | 955 printf("VO: [dxr3] Error opening %s for writing, trying /dev/em8300_sp instead.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
956 sprintf(devname, "/dev/em8300_sp"); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
957 fd_spu = open(devname, fdflags); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
958 if (fd_spu < 0) { |
8728 | 959 printf("VO: [dxr3] Error opening /dev/em8300_sp for writing as well!\nBailing.\n"); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
960 uninit(); |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
961 return -1; |
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
962 } |
8088 | 963 } else { |
8728 | 964 printf("VO: [dxr3] Opened %s.\n", devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
965 } |
5499
58864ce0eef7
Fixed bug that would cause the dxr3 to lock if too many subpics were sent at once
mswitch
parents:
5497
diff
changeset
|
966 strcpy(fds_name, devname); |
4513
2e3800da1ceb
Switched from libmp1e to libavcodec, at least for me it runs helluva lot faster than libmp1e
mswitch
parents:
4480
diff
changeset
|
967 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
968 #ifdef HAVE_X11 |
8088 | 969 if (dxr3_overlay) { |
7950 | 970 |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
971 /* Fucked up hack needed to enable overlay. |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
972 * Will be removed as soon as I figure out |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
973 * how to make it work like it should |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
974 */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
975 Display *dpy; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
976 overlay_t *ov; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
977 XWindowAttributes attribs; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
978 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
979 dpy = XOpenDisplay(NULL); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
980 if (!dpy) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
981 printf("VO: [dxr3] Unable to open display during overlay hack setup!\n"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
982 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
983 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
984 XGetWindowAttributes(dpy, RootWindow(dpy, DefaultScreen(dpy)), &attribs); |
8037 | 985 ov = overlay_init(fd_control); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
986 overlay_set_screen(ov, attribs.width, attribs.height, PlanesOfScreen(ScreenOfDisplay(dpy, 0))); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
987 overlay_read_state(ov, NULL); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
988 overlay_set_keycolor(ov, KEY_COLOR); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
989 overlay_set_mode(ov, EM8300_OVERLAY_MODE_OVERLAY); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
990 overlay_set_mode(ov, EM8300_OVERLAY_MODE_RECTANGLE); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
991 overlay_release(ov); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
992 XCloseDisplay(dpy); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
993 /* End of fucked up hack */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
994 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
995 /* Initialize overlay and X11 */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
996 overlay_data = overlay_init(fd_control); |
8042 | 997 #ifdef HAVE_NEW_GUI |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
998 if (!use_gui) { |
8042 | 999 #endif |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1000 if (!vo_init()) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1001 printf("VO: [dxr3] Unable to init x11!\n"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1002 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1003 } |
8042 | 1004 #ifdef HAVE_NEW_GUI |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1005 } |
8042 | 1006 #endif |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1007 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1008 #endif |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1009 |
8088 | 1010 if (dxr3_newsync) { |
1011 ioctl(fd_control, EM8300_IOCTL_SCR_GET, &ioval); | |
1012 pts_offset = vo_pts - (ioval << 1); | |
1013 if (pts_offset < 0) { | |
1014 pts_offset = 0; | |
1015 } | |
1016 } | |
1017 | |
4480 | 1018 return 0; |
4352 | 1019 } |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1020 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1021 /* Begin overlay.c */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1022 static int update_parameters(overlay_t *o) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1023 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1024 overlay_set_attribute(o, EM9010_ATTRIBUTE_XOFFSET, o->xoffset); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1025 overlay_set_attribute(o, EM9010_ATTRIBUTE_YOFFSET, o->yoffset); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1026 overlay_set_attribute(o, EM9010_ATTRIBUTE_XCORR, o->xcorr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1027 overlay_set_attribute(o, EM9010_ATTRIBUTE_STABILITY, o->stability); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1028 overlay_set_attribute(o, EM9010_ATTRIBUTE_JITTER, o->jitter); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1029 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1030 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1031 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1032 static int overlay_set_attribute(overlay_t *o, int attribute, int value) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1033 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1034 em8300_attribute_t attr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1035 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1036 attr.attribute = attribute; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1037 attr.value = value; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1038 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SET_ATTRIBUTE, &attr)==-1) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1039 { |
8728 | 1040 printf("VO: [dxr3] Failed setting overlay attribute.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1041 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1042 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1043 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1044 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1045 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1046 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1047 static overlay_t *overlay_init(int dev) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1048 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1049 overlay_t *o; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1050 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1051 o = (overlay_t *) malloc(sizeof(overlay_t)); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1052 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1053 if(!o) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1054 return NULL; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1055 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1056 memset(o,sizeof(overlay_t),0); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1057 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1058 o->dev = dev; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1059 o->xres = 1280; o->yres=1024; o->xcorr=1000; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1060 o->color_interval=10; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1061 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1062 return o; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1063 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1064 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1065 static int overlay_release(overlay_t *o) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1066 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1067 if(o) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1068 free(o); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1069 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1070 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1071 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1072 #define TYPE_INT 1 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1073 #define TYPE_XINT 2 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1074 #define TYPE_COEFF 3 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1075 #define TYPE_FLOAT 4 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1076 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1077 struct lut_entry { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1078 char *name; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1079 int type; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1080 void *ptr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1081 }; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1082 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1083 static struct lut_entry *new_lookuptable(overlay_t *o) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1084 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1085 struct lut_entry m[] = { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1086 {"xoffset", TYPE_INT, &o->xoffset}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1087 {"yoffset", TYPE_INT, &o->yoffset}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1088 {"xcorr", TYPE_INT, &o->xcorr}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1089 {"jitter", TYPE_INT, &o->jitter}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1090 {"stability", TYPE_INT, &o->stability}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1091 {"keycolor", TYPE_XINT, &o->keycolor}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1092 {"colcal_upper", TYPE_COEFF, &o->colcal_upper[0]}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1093 {"colcal_lower", TYPE_COEFF, &o->colcal_lower[0]}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1094 {"color_interval", TYPE_FLOAT, &o->color_interval}, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1095 {0,0,0} |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1096 },*p; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1097 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1098 p = malloc(sizeof(m)); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1099 memcpy(p,m,sizeof(m)); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1100 return p; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1101 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1102 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1103 static int lookup_parameter(overlay_t *o, struct lut_entry *lut, char *name, void **ptr, int *type) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1104 int i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1105 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1106 for(i=0; lut[i].name; i++) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1107 if(!strcmp(name,lut[i].name)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1108 *ptr = lut[i].ptr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1109 *type = lut[i].type; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1110 return 1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1111 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1112 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1113 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1114 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1115 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1116 static int overlay_read_state(overlay_t *o, char *p) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1117 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1118 char *a,*tok; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1119 char path[128],fname[128],tmp[128],line[256]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1120 FILE *fp; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1121 struct lut_entry *lut; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1122 void *ptr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1123 int type; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1124 int j; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1125 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1126 if(!p) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1127 strcpy(fname,getenv("HOME")); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1128 strcat(fname,"/.overlay"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1129 } else |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1130 strcpy(fname,p); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1131 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1132 sprintf(tmp,"/res_%dx%dx%d",o->xres,o->yres,o->depth); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1133 strcat(fname,tmp); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1134 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1135 if(!(fp=fopen(fname,"r"))) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1136 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1137 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1138 lut = new_lookuptable(o); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1139 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1140 while(!feof(fp)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1141 if(!fgets(line,256,fp)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1142 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1143 tok=strtok(line," "); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1144 if(lookup_parameter(o,lut,tok,&ptr,&type)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1145 tok=strtok(NULL," "); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1146 switch(type) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1147 case TYPE_INT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1148 sscanf(tok,"%d",(int *)ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1149 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1150 case TYPE_XINT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1151 sscanf(tok,"%x",(int *)ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1152 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1153 case TYPE_FLOAT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1154 sscanf(tok,"%f",(float *)ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1155 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1156 case TYPE_COEFF: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1157 for(j=0;j<3;j++) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1158 sscanf(tok,"%f",&((struct coeff *)ptr)[j].k); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1159 tok=strtok(NULL," "); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1160 sscanf(tok,"%f",&((struct coeff *)ptr)[j].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1161 tok=strtok(NULL," "); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1162 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1163 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1164 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1165 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1166 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1167 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1168 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1169 update_parameters(o); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1170 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1171 free(lut); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1172 fclose(fp); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1173 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1174 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1175 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1176 static void overlay_update_params(overlay_t *o) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1177 update_parameters(o); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1178 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1179 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1180 static int overlay_write_state(overlay_t *o, char *p) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1181 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1182 char *a; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1183 char path[128],fname[128],tmp[128]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1184 FILE *fp; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1185 char line[256],*tok; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1186 struct lut_entry *lut; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1187 int i,j; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1188 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1189 if(!p) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1190 strcpy(fname,getenv("HOME")); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1191 strcat(fname,"/.overlay"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1192 } else |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1193 strcpy(fname,p); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1194 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1195 if(access(fname, W_OK|X_OK|R_OK)) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1196 if(mkdir(fname,0766)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1197 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1198 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1199 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1200 sprintf(tmp,"/res_%dx%dx%d",o->xres,o->yres,o->depth); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1201 strcat(fname,tmp); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1202 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1203 if(!(fp=fopen(fname,"w"))) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1204 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1205 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1206 lut = new_lookuptable(o); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1207 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1208 for(i=0; lut[i].name; i++) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1209 fprintf(fp,"%s ",lut[i].name); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1210 switch(lut[i].type) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1211 case TYPE_INT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1212 fprintf(fp,"%d\n",*(int *)lut[i].ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1213 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1214 case TYPE_XINT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1215 fprintf(fp,"%06x\n",*(int *)lut[i].ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1216 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1217 case TYPE_FLOAT: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1218 fprintf(fp,"%f\n",*(float *)lut[i].ptr); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1219 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1220 case TYPE_COEFF: |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1221 for(j=0;j<3;j++) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1222 fprintf(fp,"%f %f ",((struct coeff *)lut[i].ptr)[j].k, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1223 ((struct coeff *)lut[i].ptr)[j].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1224 fprintf(fp,"\n"); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1225 break; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1226 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1227 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1228 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1229 fclose(fp); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1230 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1231 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1232 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1233 static int overlay_set_screen(overlay_t *o, int xres, int yres, int depth) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1234 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1235 em8300_overlay_screen_t scr; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1236 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1237 o->xres = xres; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1238 o->yres = yres; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1239 o->depth = depth; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1240 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1241 scr.xsize = xres; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1242 scr.ysize = yres; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1243 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1244 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETSCREEN, &scr)==-1) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1245 { |
8728 | 1246 printf("VO: [dxr3] Failed setting overlay screen!\nExiting.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1247 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1248 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1249 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1250 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1251 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1252 static int overlay_set_mode(overlay_t *o, int mode) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1253 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1254 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETMODE, &mode)==-1) { |
8728 | 1255 printf("VO: [dxr3] Failed enabling overlay!\nExiting.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1256 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1257 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1258 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1259 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1260 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1261 static int overlay_set_window(overlay_t *o, int xpos,int ypos,int width,int height) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1262 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1263 em8300_overlay_window_t win; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1264 win.xpos = xpos; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1265 win.ypos = ypos; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1266 win.width = width; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1267 win.height = height; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1268 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1269 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETWINDOW, &win)==-1) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1270 { |
8728 | 1271 printf("VO: [dxr3] Failed resizing overlay window!\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1272 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1273 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1274 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1275 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1276 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1277 static int overlay_set_bcs(overlay_t *o, int brightness, int contrast, int saturation) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1278 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1279 em8300_bcs_t bcs; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1280 bcs.brightness = brightness; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1281 bcs.contrast = contrast; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1282 bcs.saturation = saturation; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1283 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1284 if (ioctl(o->dev, EM8300_IOCTL_GETBCS, &bcs)==-1) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1285 { |
8728 | 1286 printf("VO: [dxr3] Failed setting overlay bcs!\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1287 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1288 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1289 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1290 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1291 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1292 static int col_interp(float x, struct coeff c) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1293 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1294 float y; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1295 y = x*c.k + c.m; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1296 if(y > 255) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1297 y = 255; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1298 if(y < 0) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1299 y = 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1300 return rint(y); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1301 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1302 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1303 static int overlay_set_keycolor(overlay_t *o, int color) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1304 int r = (color & 0xff0000) >> 16; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1305 int g = (color & 0x00ff00) >> 8; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1306 int b = (color & 0x0000ff); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1307 float ru,gu,bu; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1308 float rl,gl,bl; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1309 int upper,lower; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1310 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1311 ru = r+o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1312 gu = g+o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1313 bu = b+o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1314 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1315 rl = r-o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1316 gl = g-o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1317 bl = b-o->color_interval; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1318 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1319 upper = (col_interp(ru, o->colcal_upper[0]) << 16) | |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1320 (col_interp(gu, o->colcal_upper[1]) << 8) | |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1321 (col_interp(bu, o->colcal_upper[2])); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1322 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1323 lower = (col_interp(rl, o->colcal_lower[0]) << 16) | |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1324 (col_interp(gl, o->colcal_lower[1]) << 8) | |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1325 (col_interp(bl, o->colcal_lower[2])); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1326 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1327 //printf("0x%06x 0x%06x\n",upper,lower); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1328 overlay_set_attribute(o,EM9010_ATTRIBUTE_KEYCOLOR_UPPER,upper); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1329 overlay_set_attribute(o,EM9010_ATTRIBUTE_KEYCOLOR_LOWER,lower); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1330 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1331 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1332 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1333 static void least_sq_fit(int *x, int *y, int n, float *k, float *m) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1334 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1335 float sx=0,sy=0,sxx=0,sxy=0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1336 float delta,b; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1337 int i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1338 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1339 for(i=0; i < n; i++) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1340 sx=sx+x[i]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1341 sy=sy+y[i]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1342 sxx=sxx+x[i]*x[i]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1343 sxy=sxy+x[i]*y[i]; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1344 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1345 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1346 delta=sxx*n-sx*sx; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1347 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1348 *m=(sxx*sy-sx*sxy)/delta; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1349 *k=(sxy*n-sx*sy)/delta; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1350 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1351 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1352 static int overlay_autocalibrate(overlay_t *o, pattern_drawer_cb pd, void *arg) |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1353 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1354 em8300_overlay_calibrate_t cal; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1355 em8300_overlay_window_t win; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1356 int x[256],r[256],g[256],b[256],n; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1357 float k,m; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1358 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1359 int i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1360 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1361 o->draw_pattern=pd; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1362 o->dp_arg = arg; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1363 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1364 overlay_set_mode(o, EM8300_OVERLAY_MODE_OVERLAY); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1365 overlay_set_screen(o, o->xres, o->yres, o->depth); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1366 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1367 /* Calibrate Y-offset */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1368 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1369 o->draw_pattern(0x0000ff, 0, 0, 0, 355, 1, o->dp_arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1370 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1371 cal.cal_mode = EM8300_OVERLAY_CALMODE_YOFFSET; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1372 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1373 { |
8728 | 1374 printf("VO: [dxr3] Failed getting overlay Y-offset values!\nExiting.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1375 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1376 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1377 o->yoffset = cal.result; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1378 printf("Yoffset: %d\n",cal.result); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1379 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1380 /* Calibrate X-offset */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1381 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1382 o->draw_pattern(0x0000ff, 0, 0, 0, 2, 288, o->dp_arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1383 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1384 cal.cal_mode = EM8300_OVERLAY_CALMODE_XOFFSET; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1385 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1386 { |
8728 | 1387 printf("VO: [dxr3] Failed getting overlay X-offset values!\nExiting.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1388 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1389 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1390 o->xoffset = cal.result; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1391 printf("Xoffset: %d\n",cal.result); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1392 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1393 /* Calibrate X scale correction */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1394 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1395 o->draw_pattern(0x0000ff, 0, 355, 0, 2, 288, o->dp_arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1396 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1397 cal.cal_mode = EM8300_OVERLAY_CALMODE_XCORRECTION; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1398 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1399 { |
8728 | 1400 printf("VO: [dxr3] Failed getting overlay X-scale correction!\nExiting.\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1401 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1402 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1403 printf("Xcorrection: %d\n",cal.result); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1404 o->xcorr = cal.result; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1405 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1406 win.xpos = 10; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1407 win.ypos = 10; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1408 win.width = o->xres-20; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1409 win.height = o->yres-20; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1410 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_SETWINDOW, &win)==-1) { |
8728 | 1411 printf("VO: [dxr3] Failed resizing overlay window!\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1412 exit(1); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1413 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1414 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1415 /* Calibrate key color upper limit */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1416 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1417 for(i=128,n=0; i <= 0xff; i+=4) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1418 o->draw_pattern(i | (i << 8) | (i << 16), 0, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1419 (o->xres-200)/2,0,200,o->yres,o->dp_arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1420 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1421 cal.arg = i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1422 cal.arg2 = 1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1423 cal.cal_mode = EM8300_OVERLAY_CALMODE_COLOR; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1424 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1425 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1426 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1427 return -1 ; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1428 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1429 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1430 x[n] = i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1431 r[n] = (cal.result>>16)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1432 g[n] = (cal.result>>8)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1433 b[n] = (cal.result)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1434 n++; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1435 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1436 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1437 least_sq_fit(x,r,n,&o->colcal_upper[0].k,&o->colcal_upper[0].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1438 least_sq_fit(x,g,n,&o->colcal_upper[1].k,&o->colcal_upper[1].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1439 least_sq_fit(x,b,n,&o->colcal_upper[2].k,&o->colcal_upper[2].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1440 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1441 /* Calibrate key color lower limit */ |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1442 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1443 for(i=128,n=0; i <= 0xff; i+=4) { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1444 o->draw_pattern(i | (i << 8) | (i << 16), 0xffffff, |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1445 (o->xres-200)/2,0,200,o->yres, o->dp_arg); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1446 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1447 cal.arg = i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1448 cal.arg2 = 2; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1449 cal.cal_mode = EM8300_OVERLAY_CALMODE_COLOR; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1450 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1451 if (ioctl(o->dev, EM8300_IOCTL_OVERLAY_CALIBRATE, &cal)) |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1452 { |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1453 return -1 ; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1454 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1455 x[n] = i; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1456 r[n] = (cal.result>>16)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1457 g[n] = (cal.result>>8)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1458 b[n] = (cal.result)&0xff; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1459 n++; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1460 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1461 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1462 least_sq_fit(x,r,n,&o->colcal_lower[0].k,&o->colcal_lower[0].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1463 least_sq_fit(x,g,n,&o->colcal_lower[1].k,&o->colcal_lower[1].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1464 least_sq_fit(x,b,n,&o->colcal_lower[2].k,&o->colcal_lower[2].m); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1465 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1466 overlay_set_mode(o, EM8300_OVERLAY_MODE_OFF); |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1467 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1468 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1469 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1470 |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1471 |
8092
f880c1de0e9b
Made new overlay functions static so they won't interfere with the rest
mswitch
parents:
8091
diff
changeset
|
1472 static int overlay_signalmode(overlay_t *o, int mode) { |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1473 if(ioctl(o->dev, EM8300_IOCTL_OVERLAY_SIGNALMODE, &mode) ==-1) { |
8728 | 1474 printf("VO: [dxr3] Failed set signal mix!\n"); |
8031
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1475 return -1; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1476 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1477 return 0; |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1478 } |
ad62a544964c
Huge update, added native overlay support (no more need for dxr3view).
mswitch
parents:
7989
diff
changeset
|
1479 /* End overlay.c */ |