Mercurial > mplayer.hg
annotate libvo/vo_zr.c @ 36215:4eb27365d0b0
Add hack to fix compilation issues on OSX with broken libiconv.
Such a hack is not really a good solution, but since the
issue is relatively common it seems worth it for the moment.
author | reimar |
---|---|
date | Sun, 09 Jun 2013 13:54:47 +0000 |
parents | 389d43c448b3 |
children |
rev | line source |
---|---|
27509
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
1 /* |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
2 * playback on Zoran cards |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
3 * copyright (C) 2001, 2003 Rik Snel |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
4 * |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
5 * This file is part of MPlayer. |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
6 * |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
7 * MPlayer is free software; you can redistribute it and/or modify |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
8 * it under the terms of the GNU General Public License as published by |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
9 * the Free Software Foundation; either version 2 of the License, or |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
10 * (at your option) any later version. |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
11 * |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
12 * MPlayer is distributed in the hope that it will be useful, |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
15 * GNU General Public License for more details. |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
16 * |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
17 * You should have received a copy of the GNU General Public License along |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
18 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
d97a607821f1
Replace casual GPL notices by proper license headers.
diego
parents:
26203
diff
changeset
|
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
20 */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
21 |
5666 | 22 /* $Id$ */ |
23 | |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
24 #include <stdio.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
25 #include <stdlib.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
26 #include <string.h> |
35903 | 27 #include <strings.h> |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
28 #include <unistd.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
29 #include <fcntl.h> |
4737
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
30 #include <errno.h> |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
31 #include <sys/stat.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
32 #include <sys/types.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
33 #include <sys/time.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
34 #include <sys/mman.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
35 #include <sys/ioctl.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
36 #include <linux/types.h> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
37 #include <linux/videodev.h> |
26203 | 38 #include "config.h" |
4668
d20978449650
migration of -vo zr to Recommended Interface definition (this obsoletes zoran.h)
rik
parents:
4651
diff
changeset
|
39 #include "videodev_mjpeg.h" |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
40 #include "video_out.h" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
41 #include "video_out_internal.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11376
diff
changeset
|
42 #include "mp_msg.h" |
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11376
diff
changeset
|
43 #include "m_option.h" |
4232 | 44 #include "fastmemcpy.h" |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
45 #include "jpeg_enc.h" |
30593
8fccdda74db0
Add header for functions exported from vo_zr.c and use it appropriately.
diego
parents:
30556
diff
changeset
|
46 #include "vo_zr.h" |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
47 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
48 static const vo_info_t info = |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
49 { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
50 "Zoran ZR360[56]7/ZR36060 Driver (DC10(+)/buz/lml33/MatroxRR)", |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
51 "zr", |
14429
90b4a1345b96
replace almost obsolete email address: snel@phys.uu.nl -> rsnel@cube.dyndns.org
rik
parents:
13787
diff
changeset
|
52 "Rik Snel <rsnel@cube.dyndns.org>", |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
53 "" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
54 }; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
55 |
25220
c9e9ac2008c2
Mark the vo_functions_t definitions as const where possible.
reimar
parents:
25216
diff
changeset
|
56 const LIBVO_EXTERN (zr) |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7962
diff
changeset
|
57 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
58 #define ZR_MAX_DEVICES 4 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
59 /* General variables */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
60 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
61 typedef struct { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
62 int width; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
63 int height; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
64 int xoff; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
65 int yoff; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
66 int set; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
67 } geo_t; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
68 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
69 static int zr_count = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
70 static int zr_parsing = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
71 static int framenum; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
72 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
73 typedef struct { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
74 /* commandline args given for this device (and defaults) */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
75 int vdec, hdec; /* requested decimation 1,2,4 */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
76 int fd; /* force decimation */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
77 int xdoff, ydoff; /* offset from upperleft of screen |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
78 * default is 'centered' */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
79 int quality; /* jpeg quality 1=best, 20=bad */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
80 geo_t g; /* view window (zrcrop) */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
81 char *device; /* /dev/video1 */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
82 int bw; /* if bw == 1, display in black&white */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
83 int norm; /* PAL/NTSC */ |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
84 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
85 /* buffers + pointers + info */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
86 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
87 unsigned char *image; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
88 int image_width, image_height, size; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
89 int off_y, off_c, stride; /* for use by 'draw slice/frame' */ |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
90 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
91 unsigned char *buf; /* the jpeg images will be placed here */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
92 jpeg_enc_t *j; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
93 unsigned char *y_data, *u_data, *v_data; /* used by the jpeg encoder */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
94 int y_stride, u_stride, v_stride; /* these point somewhere in image */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
95 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
96 /* information for (and about) the zoran card */ |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
97 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
98 int vdes; /* file descriptor of card */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
99 int frame, synco, queue; /* buffer management */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
100 struct mjpeg_sync zs; /* state information */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
101 struct mjpeg_params p; |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
102 struct mjpeg_requestbuffers zrq; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
103 struct video_capability vc; /* max resolution and so on */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
104 int fields, stretchy; /* must the *image be interlaced |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
105 or stretched to fit on the screen? */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
106 } zr_info_t; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
107 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
108 static zr_info_t zr_info[ZR_MAX_DEVICES] = { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
109 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 110 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}, {{0}}, 0, 0}, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
111 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 112 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}, {{0}}, 0, 0}, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
113 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 114 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}, {{0}}, 0, 0}, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
115 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 116 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, {0}, {0}, {0}, {{0}}, 0, 0}}; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
117 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
118 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
119 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
120 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
121 #define MJPEG_NBUFFERS 2 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
122 #define MJPEG_SIZE 1024*256 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
123 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
124 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
125 static int zoran_getcap(zr_info_t *zr) |
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
126 { |
10319 | 127 char* dev = NULL; |
5666 | 128 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
129 if (zr->device) |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
130 dev = zr->device; |
10319 | 131 else { |
5666 | 132 struct stat vstat; |
10319 | 133 const char *devs[] = { |
134 "/dev/video", | |
135 "/dev/video0", | |
136 "/dev/v4l/video0", | |
137 "/dev/v4l0", | |
138 "/dev/v4l", | |
139 NULL | |
140 }; | |
141 int i = 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
142 |
10319 | 143 do |
144 { | |
145 if ((stat(devs[i], &vstat) == 0) && S_ISCHR(vstat.st_mode)) | |
146 { | |
147 dev = devs[i]; | |
148 mp_msg(MSGT_VO, MSGL_V, "zr: found video device %s\n", dev); | |
149 break; | |
150 } | |
151 } while (devs[++i] != NULL); | |
5666 | 152 |
10319 | 153 if (!dev) |
154 { | |
155 mp_msg(MSGT_VO, MSGL_ERR, "zr: unable to find video device\n"); | |
156 return 1; | |
5666 | 157 } |
158 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
159 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
160 zr->vdes = open(dev, O_RDWR); |
5666 | 161 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
162 if (zr->vdes < 0) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
163 mp_msg(MSGT_VO, MSGL_ERR, "zr: error opening %s: %s\n", |
5666 | 164 dev, strerror(errno)); |
165 return 1; | |
166 } | |
167 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
168 /* before we can ask for the maximum resolution, we must set |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
169 * the correct tv norm */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
170 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
171 if (ioctl(zr->vdes, MJPIOC_G_PARAMS, &zr->p) < 0) { |
5666 | 172 mp_msg(MSGT_VO, MSGL_ERR, "zr: device at %s is probably not a DC10(+)/buz/lml33\n", dev); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
173 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
174 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
175 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
176 if (zr->p.norm != zr->norm && zr->norm != VIDEO_MODE_AUTO) { |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
177 /* attempt to set requested norm */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
178 zr->p.norm = zr->norm; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
179 if (ioctl(zr->vdes, MJPIOC_S_PARAMS, &zr->p) < 0) { |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
180 mp_msg(MSGT_VO, MSGL_ERR, |
5666 | 181 "zr: unable to change video norm, use another program to change it (XawTV)\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
182 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
183 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
184 ioctl(zr->vdes, MJPIOC_G_PARAMS, &zr->p); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
185 if (zr->norm != zr->p.norm) { |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
186 mp_msg(MSGT_VO, MSGL_ERR, |
5666 | 187 "zr: unable to change video norm, use another program to change it (XawTV)\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
188 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
189 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
190 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
191 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
192 if (ioctl(zr->vdes, VIDIOCGCAP, &zr->vc) < 0) { |
10718 | 193 mp_msg(MSGT_VO, MSGL_ERR, "zr: error getting video capabilities from %s\n", dev); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
194 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
195 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
196 mp_msg(MSGT_VO, MSGL_V, "zr: MJPEG card reports maxwidth=%d, maxheight=%d\n", zr->vc.maxwidth, zr->vc.maxheight); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
197 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
198 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
199 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
200 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
201 static int init_zoran(zr_info_t *zr, int stretchx, int stretchy) |
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
202 { |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
203 /* center the image, and stretch it as far as possible (try to keep |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
204 * aspect) and check if it fits */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
205 if (zr->image_width > zr->vc.maxwidth) { |
23873 | 206 mp_msg(MSGT_VO, MSGL_ERR, "zr: movie to be played is too wide, max width currently %d\n", zr->vc.maxwidth); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
207 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
208 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
209 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
210 if (zr->image_height > zr->vc.maxheight) { |
23873 | 211 mp_msg(MSGT_VO, MSGL_ERR, "zr: movie to be played is too high, max height currently %d\n", zr->vc.maxheight); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
212 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
213 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
214 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
215 zr->p.decimation = 0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
216 zr->p.HorDcm = stretchx; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
217 zr->p.VerDcm = stretchy; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
218 zr->p.TmpDcm = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
219 zr->p.field_per_buff = zr->fields; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
220 if (zr->xdoff == -1) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
221 zr->p.img_x = (zr->vc.maxwidth - |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
222 zr->p.HorDcm*(int)zr->image_width/zr->hdec)/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
223 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
224 zr->p.img_x = zr->xdoff; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
225 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
226 if (zr->ydoff == -1) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
227 zr->p.img_y = (zr->vc.maxheight - zr->p.VerDcm* |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
228 (3-zr->fields)*(int)zr->image_height)/4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
229 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
230 zr->p.img_y = zr->ydoff; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
231 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
232 zr->p.img_width = zr->p.HorDcm*zr->image_width/zr->hdec; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
233 zr->p.img_height = zr->p.VerDcm*zr->image_height/zr->fields; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
234 mp_msg(MSGT_VO, MSGL_V, "zr: geometry (after 'scaling'): %dx%d+%d+%d fields=%d, w=%d, h=%d\n", zr->p.img_width, (3-zr->fields)*zr->p.img_height, zr->p.img_x, zr->p.img_y, zr->fields, zr->image_width/zr->hdec, zr->image_height); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
235 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
236 if (ioctl(zr->vdes, MJPIOC_S_PARAMS, &zr->p) < 0) { |
5666 | 237 mp_msg(MSGT_VO, MSGL_ERR, "zr: error setting display parameters\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
238 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
239 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
240 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
241 zr->zrq.count = MJPEG_NBUFFERS; |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
242 zr->zrq.size = MJPEG_SIZE; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
243 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
244 if (ioctl(zr->vdes, MJPIOC_REQBUFS, &zr->zrq)) { |
25511
93af51aec103
Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents:
25426
diff
changeset
|
245 mp_msg(MSGT_VO, MSGL_ERR, "zr: error requesting %ld buffers of size %ld\n", zr->zrq.count, zr->zrq.size); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
246 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
247 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
248 |
9976
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
249 /* the buffer count allocated may be different to the request */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
250 zr->buf = (unsigned char*)mmap(0, zr->zrq.count*zr->zrq.size, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
251 PROT_READ|PROT_WRITE, MAP_SHARED, zr->vdes, 0); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
252 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
253 if (zr->buf == MAP_FAILED) { |
25511
93af51aec103
Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents:
25426
diff
changeset
|
254 mp_msg(MSGT_VO, MSGL_ERR, "zr: error requesting %ld buffers of size %ld\n", zr->zrq.count, zr->zrq.size); |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
255 return 1; |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
256 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
257 |
25511
93af51aec103
Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents:
25426
diff
changeset
|
258 mp_msg(MSGT_VO, MSGL_V, "zr: got %ld buffers of size %ld (wanted %d buffers of size %d)\n", zr->zrq.count, zr->zrq.size, MJPEG_NBUFFERS, MJPEG_SIZE); |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
259 if (zr->zrq.count < MJPEG_NBUFFERS) { |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
260 mp_msg(MSGT_VO, MSGL_V, "zr: got not enough buffers\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
261 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
262 } |
9976
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
263 |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
264 zr->queue = 0; |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
265 zr->synco = 0; |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
266 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
267 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
268 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
269 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
270 static void uninit_zoran(zr_info_t *zr) |
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
271 { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
272 free(zr->image); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
273 zr->image=NULL; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
274 while (zr->queue > zr->synco + 1) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
275 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
276 mp_msg(MSGT_VO, MSGL_ERR, "zr: error waiting for buffers to become free\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
277 zr->synco++; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
278 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
279 /* stop streaming */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
280 zr->frame = -1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
281 if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0) |
5666 | 282 mp_msg(MSGT_VO, MSGL_ERR, "zr: error stopping playback of last frame\n"); |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
283 if (munmap(zr->buf,zr->zrq.count*zr->zrq.size)) |
9976
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
284 mp_msg(MSGT_VO, MSGL_ERR, "zr: error unmapping buffer\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
285 close(zr->vdes); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
286 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
287 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
288 static int zr_geometry_sane(geo_t *g, unsigned int width, unsigned int height) |
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
289 { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
290 if (g->set) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
291 if (g->width%2 != 0 || g->height%2 != 0 || |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
292 g->xoff%2 != 0 || g->yoff%2 != 0) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
293 mp_msg(MSGT_VO, MSGL_ERR, "zr: arguments in -zrcrop must be multiples of 2\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
294 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
295 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
296 if (g->width <= 0 || g->height <= 0 || |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
297 g->xoff < 0 || g->yoff < 0) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
298 mp_msg(MSGT_VO, MSGL_ERR, "zr: width and height must be positive and offset nonnegative\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
299 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
300 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
301 if (g->width + g->xoff > width) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
302 mp_msg(MSGT_VO, MSGL_ERR, "zr: width+xoffset (%d+%d>%d) is too big\n", g->width, g->xoff, width); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
303 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
304 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
305 if (g->height + g->yoff > height) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
306 mp_msg(MSGT_VO, MSGL_ERR, "zr: height+yoffset (%d+%d>%d) is too big\n", g->height, g->yoff, height); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
307 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
308 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
309 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
310 g->width = width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
311 g->height = height; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
312 g->xoff = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
313 g->yoff = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
314 g->set = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
315 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
316 return 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
317 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
318 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
319 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
320 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14429
diff
changeset
|
321 uint32_t d_height, uint32_t flags, char *title, uint32_t format) |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
322 { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
323 int i, tmp, stretchx, stretchy; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
324 framenum = 0; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
325 if (format != IMGFMT_YV12 && format != IMGFMT_YUY2) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
326 printf("vo_zr called with wrong format"); |
10605 | 327 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
328 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
329 for (i = 0; i < zr_count; i++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
330 zr_info_t *zr = &zr_info[i]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
331 geo_t *g = &zr->g; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
332 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
333 zr->stride = 2*width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
334 if (zr_geometry_sane(g, width, height)) return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
335 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
336 /* we must know the maximum resolution of the device |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
337 * it differs for DC10+ and buz for example */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
338 zoran_getcap(zr); /*must be called before init_zoran */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
339 /* make the scaling decision |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
340 * we are capable of stretching the image in the horizontal |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
341 * direction by factors 1, 2 and 4 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
342 * we can stretch the image in the vertical direction by a |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
343 * factor of 1 and 2 AND we must decide about interlacing */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
344 if (g->width > zr->vc.maxwidth/2 || |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
345 g->height > zr->vc.maxheight/2) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
346 stretchx = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
347 stretchy = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
348 zr->fields = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
349 if (zr->vdec == 2) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
350 zr->fields = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
351 } else if (zr->vdec == 4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
352 zr->fields = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
353 stretchy = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
354 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
355 stretchx = zr->hdec; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
356 } else if (g->width > zr->vc.maxwidth/4 || |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
357 g->height > zr->vc.maxheight/4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
358 stretchx = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
359 stretchy = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
360 zr->fields = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
361 if (zr->vdec == 2) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
362 stretchy = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
363 } else if (zr->vdec == 4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
364 if (!zr->fd) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
365 mp_msg(MSGT_VO, MSGL_WARN, "zr: vertical decimation too high, changing to 2 (use -zrfd to keep vdec=4)\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
366 zr->vdec = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
367 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
368 stretchy = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
369 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
370 if (zr->hdec == 2) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
371 stretchx = 4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
372 } else if (zr->hdec == 4){ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
373 if (!zr->fd) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
374 mp_msg(MSGT_VO, MSGL_WARN, "zr: horizontal decimation too high, changing to 2 (use -zrfd to keep hdec=4)\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
375 zr->hdec = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
376 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
377 stretchx = 4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
378 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
379 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
380 /* output image is maximally stretched */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
381 stretchx = 4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
382 stretchy = 2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
383 zr->fields = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
384 if (zr->vdec != 1 && !zr->fd) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
385 mp_msg(MSGT_VO, MSGL_WARN, "zr: vertical decimation too high, changing to 1 (use -zrfd to keep vdec=%d)\n", zr->vdec); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
386 zr->vdec = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
387 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
388 if (zr->hdec != 1 && !zr->fd) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
389 mp_msg(MSGT_VO, MSGL_WARN, "zr: vertical decimation too high, changing to 1 (use -zrfd to keep hdec=%d)\n", zr->hdec); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
390 zr->hdec = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
391 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
392 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
393 /* It can be that the original frame was too big for display, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
394 * or that the width of the decimated image (for example) after |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
395 * padding up to a multiple of 16 has become too big. (orig |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
396 * width 720 (exactly right for the Buz) after decimation 360, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
397 * after padding up to a multiple of 16 368, display 736 -> too |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
398 * large). In these situations we auto(re)crop. */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
399 tmp = 16*((g->width - 1)/(zr->hdec*16) + 1); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
400 if (stretchx*tmp > zr->vc.maxwidth) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
401 g->xoff += 2*((g->width - zr->hdec*(tmp-16))/4); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
402 /* g->off must be a multiple of 2 */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
403 g->width = zr->hdec*(tmp - 16); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
404 g->set = 0; /* we abuse this field to |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
405 report that g has changed*/ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
406 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
407 tmp = 8*zr->fields*((g->height - 1)/(zr->vdec*zr->fields*8)+1); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
408 if (stretchy*tmp > zr->vc.maxheight) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
409 g->yoff += 2*((g->height - zr->vdec* |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
410 (tmp - 8*zr->fields))/4); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
411 g->height = zr->vdec*(tmp - 8*zr->fields); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
412 g->set = 0; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
413 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
414 if (!g->set) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
415 mp_msg(MSGT_VO, MSGL_V, "zr: auto(re)cropping %dx%d+%d+%d to make the image fit on the screen\n", g->width, g->height, g->xoff, g->yoff); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
416 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
417 /* the height must be a multiple of fields*8 and the width |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
418 * must be a multiple of 16 */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
419 /* add some black borders to make it so, and center the image*/ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
420 zr->image_height = zr->fields*8*((g->height/zr->vdec - 1)/ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
421 (zr->fields*8) + 1); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
422 zr->image_width = (zr->hdec*16)*((g->width - 1)/(zr->hdec*16) + 1); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
423 zr->off_y = (zr->image_height - g->height/zr->vdec)/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
424 if (zr->off_y%2 != 0) zr->off_y++; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
425 zr->off_y *= zr->image_width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
426 zr->off_c = zr->off_y/4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
427 zr->off_y += (zr->image_width - g->width)/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
428 if (zr->off_y%2 != 0) zr->off_y--; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
429 zr->off_c += (zr->image_width - g->width)/4; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
430 zr->size = zr->image_width*zr->image_height; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
431 mp_msg(MSGT_VO, MSGL_V, "zr: input: %dx%d, cropped: %dx%d, output: %dx%d, off_y=%d, off_c=%d\n", width, height, g->width, g->height, zr->image_width, zr->image_height, zr->off_y, zr->off_c); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
432 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
433 zr->image = malloc(2*zr->size); /* this buffer allows for YUV422 data, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
434 * so it is a bit too big for YUV420 */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
435 if (!zr->image) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
436 mp_msg(MSGT_VO, MSGL_ERR, "zr: Memory exhausted\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
437 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
438 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
439 /* and make sure that the borders are _really_ black */ |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
440 switch (format) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
441 case IMGFMT_YV12: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
442 memset(zr->image, 0, zr->size); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
443 memset(zr->image + zr->size, 0x80, zr->size/4); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
444 memset(zr->image + 3*zr->size/2, 0x80, zr->size/4); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
445 zr->y_data = zr->image; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
446 zr->u_data = zr->image + zr->size; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
447 zr->v_data = zr->image + 3*zr->size/2; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
448 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
449 zr->y_stride = zr->image_width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
450 zr->u_stride = zr->image_width/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
451 zr->v_stride = zr->image_width/2; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
452 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
453 zr->j = jpeg_enc_init(zr->image_width/zr->hdec, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
454 zr->image_height/zr->fields, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
455 zr->hdec, zr->y_stride*zr->fields, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
456 zr->hdec, zr->u_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
457 zr->hdec, zr->v_stride*zr->fields, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
458 1, zr->quality, zr->bw); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
459 break; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
460 case IMGFMT_YUY2: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
461 for (tmp = 0; tmp < 2*zr->size; tmp+=4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
462 zr->image[tmp] = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
463 zr->image[tmp+1] = 0x80; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
464 zr->image[tmp+2] = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
465 zr->image[tmp+3] = 0x80; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
466 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
467 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
468 zr->y_data = zr->image; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
469 zr->u_data = zr->image + 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
470 zr->v_data = zr->image + 3; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
471 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
472 zr->y_stride = 2*zr->image_width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
473 zr->u_stride = 2*zr->image_width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
474 zr->v_stride = 2*zr->image_width; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
475 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
476 zr->j = jpeg_enc_init(zr->image_width/zr->hdec, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
477 zr->image_height/zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
478 zr->hdec*2, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
479 zr->y_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
480 zr->hdec*4, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
481 zr->u_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
482 zr->hdec*4, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
483 zr->v_stride*zr->fields, |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
484 0, zr->quality, zr->bw); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
485 break; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
486 default: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
487 mp_msg(MSGT_VO, MSGL_FATAL, "zr: internal inconsistency in vo_zr\n"); |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
488 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
489 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
490 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
491 if (zr->j == NULL) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
492 mp_msg(MSGT_VO, MSGL_ERR, "zr: error initializing the jpeg encoder\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
493 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
494 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
495 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
496 if (init_zoran(zr, stretchx, stretchy)) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
497 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
498 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
499 |
4361
e7744189e03f
fix a decimation/scaling bug in vo_zr and some verbose messages have changed - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4352
diff
changeset
|
500 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
501 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
502 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
503 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
504 static void draw_osd(void) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
505 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
506 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
507 static void flip_page (void) { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
508 int i, j, k; |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
509 //FILE *fp; |
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
510 //char filename[100]; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
511 /* do we have a free buffer? */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
512 for (j = 0; j < zr_count; j++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
513 zr_info_t *zr = &zr_info[j]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
514 /* using MJPEG_NBUFFERS here, using the real number of |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
515 * buffers may give sync issues (real number of buffers |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
516 * is always sufficient) */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
517 if (zr->queue-zr->synco < MJPEG_NBUFFERS) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
518 zr->frame = zr->queue; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
519 } else { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
520 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
521 mp_msg(MSGT_VO, MSGL_ERR, "zr: error waiting for buffers to become free\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
522 zr->frame = zr->zs.frame; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
523 zr->synco++; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
524 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
525 k=0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
526 for (i = 0; i < zr->fields; i++) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
527 k+=jpeg_enc_frame(zr->j, zr->y_data + i*zr->y_stride, |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
528 zr->u_data + i*zr->u_stride, |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
529 zr->v_data + i*zr->v_stride, |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
530 zr->buf + zr->frame*zr->zrq.size+k); |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
531 if (k > zr->zrq.size) mp_msg(MSGT_VO, MSGL_WARN, "zr: jpeg image too large for maximum buffer size. Lower the jpeg encoding\nquality or the resolution of the movie.\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
532 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
533 /* Warning: Only the first jpeg image contains huffman- and |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
534 * quantisation tables, so don't expect files other than |
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
535 * test0001.jpg to be readable */ |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
536 /*sprintf(filename, "test%04d.jpg", framenum); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
537 fp = fopen(filename, "w"); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
538 if (!fp) exit(1); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
539 fwrite(buf+frame*zrq.size, 1, k, fp); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
540 fclose(fp);*/ |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
541 /*fp = fopen("test1.jpg", "r"); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
542 fread(buf+frame*zrq.size, 1, 2126, fp); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
543 fclose(fp);*/ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
544 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
545 for (j = 0; j < zr_count; j++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
546 zr_info_t *zr = &zr_info[j]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
547 if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
548 mp_msg(MSGT_VO, MSGL_ERR, "zr: error queueing buffer for playback\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
549 zr->queue++; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
550 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
551 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
552 framenum++; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
553 return; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
554 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
555 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
556 static int draw_frame(uint8_t * src[]) { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
557 int i, j; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
558 char *source, *dest; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
559 //printf("draw frame called\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
560 for (j = 0; j < zr_count; j++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
561 zr_info_t *zr = &zr_info[j]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
562 geo_t *g = &zr->g; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
563 source = src[0] + 2*g->yoff*zr->vdec*zr->stride + 2*g->xoff; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
564 dest = zr->image + 2*zr->off_y; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
565 for (i = 0; i < g->height/zr->vdec; i++) { |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
16171
diff
changeset
|
566 fast_memcpy(dest, source, zr->image_width*2); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
567 dest += 2*zr->image_width; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
568 source += zr->vdec*zr->stride; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
569 } |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
570 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
571 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
572 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
573 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
574 static int query_format(uint32_t format) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
575 if(format==IMGFMT_YV12 || format==IMGFMT_YUY2) |
6235
3fbaae881e40
10l - noticed by Terry Mohan <tmohan@users.sourceforge.net>
arpi
parents:
6213
diff
changeset
|
576 return VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
577 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
578 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
579 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
580 static void uninit(void) { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
581 int j; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
582 mp_msg(MSGT_VO, MSGL_V, "zr: uninit called\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
583 for (j = 0; j < zr_count; j++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
584 jpeg_enc_uninit(zr_info[j].j); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
585 uninit_zoran(&zr_info[j]); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
586 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
587 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
588 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
589 static void check_events(void) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
590 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
591 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
592 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
593 static int draw_slice(uint8_t *srcimg[], int stride[], |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
594 int wf, int hf, int xf, int yf) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
595 int i, j, w, h, x, y; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
596 /* Apply 'geometry', crop unwanted parts */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
597 uint8_t *dst; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
598 //printf("before: w=%d, h=%d, x=%d, y=%d, src0=%p, src1=%p, src2=%p\n", w, h, x, y, srcimg[0], srcimg[1], srcimg[2]); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
599 for (j = 0; j < zr_count; j++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
600 uint8_t *src=srcimg[0]; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
601 uint8_t *src1=srcimg[1]; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
602 uint8_t *src2=srcimg[2]; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
603 zr_info_t *zr = &zr_info[j]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
604 geo_t *g = &zr->g; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
605 w = wf; h = hf; x = xf; y = yf; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
606 if (x < g->xoff) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
607 src += g->xoff - x; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
608 src1 += (g->xoff - x)/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
609 src2 += (g->xoff - x)/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
610 w -= g->xoff - x; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
611 if (w < 0) break; //return 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
612 x = 0 /*g.xoff*/; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
613 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
614 x -= g->xoff; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
615 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
616 if (x + w > g->width) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
617 w = g->width - x; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
618 if (w < 0) break; //return 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
619 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
620 if (y < g->yoff) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
621 src += (g->yoff - y)*stride[0]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
622 src1 += ((g->yoff - y)/2)*stride[1]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
623 src2 += ((g->yoff - y)/2)*stride[2]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
624 h -= g->yoff - y; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
625 if (h < 0) break; //return 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
626 y = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
627 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
628 y -= g->yoff; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
629 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
630 if (y + h > g->height) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
631 h = g->height - y; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
632 if (h < 0) break; //return 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
633 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
634 //printf("after: w=%d, h=%d, x=%d, y=%d, src0=%p, src1=%p, src2=%p\n", w, h, x, y, srcimg[0], srcimg[1], srcimg[2]); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
635 dst=zr->image + zr->off_y + zr->image_width*(y/zr->vdec)+x; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
636 // copy Y: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
637 for (i = 0; i < h; i++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
638 if ((i + x)%zr->vdec == 0) { |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
16171
diff
changeset
|
639 fast_memcpy(dst,src,w); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
640 dst+=zr->image_width; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
641 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
642 src+=stride[0]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
643 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
644 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
645 if (!zr->bw) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
646 // copy U+V: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
647 uint8_t *dst1=zr->image + zr->size + zr->off_c+ (y/(zr->vdec*2))*zr->image_width/2+(x/2); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
648 uint8_t *dst2=zr->image + 3*zr->size/2 + zr->off_c + |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
649 (y/(zr->vdec*2))* |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
650 zr->image_width/2+(x/2); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
651 for (i = 0; i< h/2; i++) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
652 if ((i+x/2)%zr->vdec == 0) { |
23457
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
16171
diff
changeset
|
653 fast_memcpy(dst1,src1,w/2); |
a124f3abc1ec
Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents:
16171
diff
changeset
|
654 fast_memcpy(dst2,src2,w/2); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
655 dst1+=zr->image_width/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
656 dst2+=zr->image_width/2; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
657 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
658 src1+=stride[1]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
659 src2+=stride[2]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
660 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
661 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
662 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
663 return 0; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
664 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
665 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
666 |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
667 /* copied and adapted from vo_aa_parseoption */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
668 int |
25232
893db6cc97b2
Add appropriate const specifiers to some custom parse functions.
reimar
parents:
25220
diff
changeset
|
669 vo_zr_parseoption(const m_option_t* conf, const char *opt, const char *param){ |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
670 /* got an option starting with zr */ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
671 zr_info_t *zr = &zr_info[zr_parsing]; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
672 int i; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
673 /* do WE need it ?, always */ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
674 if (!strcasecmp(opt, "zrdev")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
675 if (param == NULL) return ERR_MISSING_PARAM; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
676 //if ((i=getcolor(param))==-1) return ERR_OUT_OF_RANGE; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
677 //aaopt_osdcolor=i; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
678 free(zr->device); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
679 zr->device = malloc(strlen(param)+1); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
680 strcpy(zr->device, param); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
681 mp_msg(MSGT_VO, MSGL_V, "zr: using device %s\n", zr->device); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
682 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
683 } else if (!strcasecmp(opt, "zrbw")) { |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
684 if (param != NULL) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
685 return ERR_OUT_OF_RANGE; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
686 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
687 zr->bw = 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
688 return 1; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
689 } else if (!strcasecmp(opt, "zrfd")) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
690 if (param != NULL) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
691 return ERR_OUT_OF_RANGE; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
692 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
693 zr->fd = 1; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
694 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
695 } else if (!strcasecmp(opt, "zrcrop")){ |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
696 geo_t *g = &zr->g; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
697 if (g->set == 1) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
698 zr_parsing++; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
699 zr_count++; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
700 zr = &zr_info[zr_parsing]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
701 g = &zr->g; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
702 if (zr_count > 4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
703 mp_msg(MSGT_VO, MSGL_ERR, "zr: too many simultaneus display devices requested (max. is 4)\n"); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
704 return ERR_OUT_OF_RANGE; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
705 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
706 } |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
707 if (param == NULL) return ERR_MISSING_PARAM; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
708 if (sscanf(param, "%dx%d+%d+%d", &g->width, &g->height, |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
709 &g->xoff, &g->yoff) != 4) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
710 g->xoff = 0; g->yoff = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
711 if (sscanf(param, "%dx%d", &g->width, &g->height) != 2) { |
5666 | 712 mp_msg(MSGT_VO, MSGL_ERR, "zr: argument to -zrcrop must be of the form 352x288+16+0\n"); |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
713 return ERR_OUT_OF_RANGE; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
714 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
715 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
716 g->set = 1; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
717 mp_msg(MSGT_VO, MSGL_V, "zr: cropping %s\n", param); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
718 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
719 }else if (!strcasecmp(opt, "zrhdec")) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
720 i = atoi(param); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
721 if (i != 1 && i != 2 && i != 4) return ERR_OUT_OF_RANGE; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
722 zr->hdec = i; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
723 return 1; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
724 }else if (!strcasecmp(opt, "zrvdec")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
725 i = atoi(param); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
726 if (i != 1 && i != 2 && i != 4) return ERR_OUT_OF_RANGE; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
727 zr->vdec = i; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
728 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
729 }else if (!strcasecmp(opt, "zrxdoff")) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
730 i = atoi(param); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
731 zr->xdoff = i; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
732 return 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
733 }else if (!strcasecmp(opt, "zrydoff")) { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
734 i = atoi(param); |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
735 zr->ydoff = i; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
736 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
737 }else if (!strcasecmp(opt, "zrquality")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
738 i = atoi(param); |
5865
f4b470b66a99
update: we use the new quantizer in libavcodec, -zrquality 1 is allowed
rik
parents:
5666
diff
changeset
|
739 if (i < 1 || i > 20) return ERR_OUT_OF_RANGE; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
740 zr->quality = i; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
741 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
742 }else if (!strcasecmp(opt, "zrnorm")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
743 if (param == NULL) return ERR_MISSING_PARAM; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
744 if (!strcasecmp(param, "NTSC")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
745 mp_msg(MSGT_VO, MSGL_V, "zr: Norm set to NTSC\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
746 zr->norm = VIDEO_MODE_NTSC; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
747 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
748 } else if (!strcasecmp(param, "PAL")) { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
749 mp_msg(MSGT_VO, MSGL_V, "zr: Norm set to PAL\n"); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
750 zr->norm = VIDEO_MODE_PAL; |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
751 return 1; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
752 } else { |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
753 return ERR_OUT_OF_RANGE; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
754 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
755 }else if (!strcasecmp(opt, "zrhelp")){ |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
756 printf("Help for -vo zr: Zoran ZR360[56]7/ZR36060 based MJPEG capture/playback cards\n"); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
757 printf("\n"); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
758 printf("Here are the zr options:\n"); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
759 printf( |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
760 "\n" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
761 " -zrcrop specify part of the input image that\n" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
762 " you want to see as an x-style geometry string\n" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
763 " example: -zrcrop 352x288+16+0\n" |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
764 " -zrvdec vertical decimation 1, 2 or 4\n" |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
765 " -zrhdec horizontal decimation 1, 2 or 4\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
766 " -zrfd decimation is only done if the primitive\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
767 " hardware upscaler can correct for the decimation,\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
768 " this switch allows you to see the effects\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
769 " of too much decimation\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
770 " -zrbw display in black&white (speed increase)\n" |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
771 " -zrxdoff x offset from upper-left of TV screen (default is 'centered')\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
772 " -zrydoff y offset from upper-left of TV screen (default is 'centered')\n" |
5865
f4b470b66a99
update: we use the new quantizer in libavcodec, -zrquality 1 is allowed
rik
parents:
5666
diff
changeset
|
773 " -zrquality jpeg compression quality [BEST] 1 - 20 [VERY BAD]\n" |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
774 " -zrdev playback device (example -zrdev /dev/video1)\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
775 " -zrnorm specify norm PAL/NTSC (default: leave at current setting)\n" |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
776 "\n" |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
777 "Cinerama support: additional occurances of -zrcrop activate cinerama mode,\n" |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
778 "suppose you have a 704x272 movie, two DC10+ cards and two beamers (or tv's),\n" |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
779 "then you would issue the following command:\n\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
780 "mplayer -vo zr -zrcrop 352x272+0+0 -zrdev /dev/video0 -zrcrop 352x272+352+0 \\\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
781 " -zrdev /dev/video1 movie.avi\n\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
782 "Options appearing after the second -zrcrop apply to the second card, it is\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
783 "possible to dispay at a different jpeg quality or at different decimations.\n\n" |
7903 | 784 "The parameters -zrxdoff and -zrydoff can be used to align the two images.\n" |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
785 "The maximum number of zoran cards participating in cinerama is 4, so you can\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
786 "build a 2x2 vidiwall. (untested for obvious reasons, the setup wit a buz and\n" |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
787 "a DC10+ (and no beamers) is tested, however)\n" |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
788 ); |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
789 exit(0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
790 |
4214
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
791 } |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
792 return ERR_NOT_AN_OPTION; |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
793 } |
4259 | 794 |
25232
893db6cc97b2
Add appropriate const specifiers to some custom parse functions.
reimar
parents:
25220
diff
changeset
|
795 void vo_zr_revertoption(const m_option_t* opt,const char* param) { |
4259 | 796 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
797 zr_info_t *zr = &zr_info[1]; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
798 zr_count = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
799 zr_parsing = 0; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
800 |
4259 | 801 if (!strcasecmp(param, "zrdev")) { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
802 free(zr->device); |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
803 zr->device=NULL; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
804 } else if (!strcasecmp(param, "zrbw")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
805 zr->bw=0; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
806 else if (!strcasecmp(param, "zrfd")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
807 zr->fd=0; |
4259 | 808 else if (!strcasecmp(param, "zrcrop")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
809 zr->g.set = zr->g.xoff = zr->g.yoff = 0; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
810 else if (!strcasecmp(param, "zrhdec")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
811 zr->hdec = 1; |
4259 | 812 else if (!strcasecmp(param, "zrvdec")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
813 zr->vdec = 1; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
814 else if (!strcasecmp(param, "zrxdoff")) |
6933 | 815 zr->xdoff = -1; |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
816 else if (!strcasecmp(param, "zrydoff")) |
6933 | 817 zr->ydoff = -1; |
4259 | 818 else if (!strcasecmp(param, "zrquality")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
819 zr->quality = 2; |
4259 | 820 else if (!strcasecmp(param, "zrnorm")) |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
821 zr->norm = VIDEO_MODE_AUTO; |
4259 | 822 |
823 } | |
4352 | 824 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
825 static int preinit(const char *arg) |
4352 | 826 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
827 if(arg) |
4737
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
828 { |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
829 printf("vo_zr: Unknown subdevice: %s\n",arg); |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
830 return ENOSYS; |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
831 } |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
832 return 0; |
4352 | 833 } |
834 | |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
32537
diff
changeset
|
835 static int control(uint32_t request, void *data) |
4352 | 836 { |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
837 switch (request) { |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
838 case VOCTRL_QUERY_FORMAT: |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
839 return query_format(*((uint32_t*)data)); |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
840 } |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
841 return VO_NOTIMPL; |
4352 | 842 } |