Mercurial > mplayer.hg
annotate libvo/vo_zr.c @ 35418:cedb0ba2b5c6
Move the code to set guiInfo's Track, Chapter and Angle start values.
Set them before checking whether there is any media opened, because
with no media opened we clear the counters.
author | ib |
---|---|
date | Thu, 29 Nov 2012 14:11:03 +0000 |
parents | dac9d4f90e89 |
children | 389d43c448b3 |
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> |
664984198aef
zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff
changeset
|
27 #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
|
28 #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
|
29 #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
|
30 #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
|
31 #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
|
32 #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
|
33 #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
|
34 #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
|
35 #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
|
36 #include <linux/videodev.h> |
26203 | 37 #include "config.h" |
4668
d20978449650
migration of -vo zr to Recommended Interface definition (this obsoletes zoran.h)
rik
parents:
4651
diff
changeset
|
38 #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
|
39 #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
|
40 #include "video_out_internal.h" |
13787
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11376
diff
changeset
|
41 #include "mp_msg.h" |
e047e70a9767
Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents:
11376
diff
changeset
|
42 #include "m_option.h" |
4232 | 43 #include "fastmemcpy.h" |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
44 #include "jpeg_enc.h" |
30593
8fccdda74db0
Add header for functions exported from vo_zr.c and use it appropriately.
diego
parents:
30556
diff
changeset
|
45 #include "vo_zr.h" |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
46 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
47 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
|
48 { |
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 "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
|
50 "zr", |
14429
90b4a1345b96
replace almost obsolete email address: snel@phys.uu.nl -> rsnel@cube.dyndns.org
rik
parents:
13787
diff
changeset
|
51 "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
|
52 "" |
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 |
25220
c9e9ac2008c2
Mark the vo_functions_t definitions as const where possible.
reimar
parents:
25216
diff
changeset
|
55 const LIBVO_EXTERN (zr) |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7962
diff
changeset
|
56 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
57 #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
|
58 /* 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
|
59 |
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 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
|
61 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
|
62 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
|
63 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
|
64 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
|
65 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
|
66 } 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
|
67 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
68 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
|
69 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
|
70 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
|
71 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
72 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
|
73 /* 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
|
74 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
|
75 int fd; /* force decimation */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
76 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
|
77 * 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
|
78 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
|
79 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
|
80 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
|
81 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
|
82 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
|
83 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
84 /* 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
|
85 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
86 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
|
87 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
|
88 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
|
89 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
90 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
|
91 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
|
92 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
|
93 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
|
94 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
95 /* 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
|
96 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
97 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
|
98 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
|
99 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
|
100 struct mjpeg_params p; |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
101 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
|
102 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
|
103 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
|
104 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
|
105 } 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
|
106 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
107 static zr_info_t zr_info[ZR_MAX_DEVICES] = { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
108 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 109 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
|
110 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 111 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
|
112 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 113 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
|
114 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0, |
33840 | 115 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
|
116 |
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 |
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
|
120 #define MJPEG_NBUFFERS 2 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
121 #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
|
122 |
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 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
124 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
|
125 { |
10319 | 126 char* dev = NULL; |
5666 | 127 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
128 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
|
129 dev = zr->device; |
10319 | 130 else { |
5666 | 131 struct stat vstat; |
10319 | 132 const char *devs[] = { |
133 "/dev/video", | |
134 "/dev/video0", | |
135 "/dev/v4l/video0", | |
136 "/dev/v4l0", | |
137 "/dev/v4l", | |
138 NULL | |
139 }; | |
140 int i = 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
141 |
10319 | 142 do |
143 { | |
144 if ((stat(devs[i], &vstat) == 0) && S_ISCHR(vstat.st_mode)) | |
145 { | |
146 dev = devs[i]; | |
147 mp_msg(MSGT_VO, MSGL_V, "zr: found video device %s\n", dev); | |
148 break; | |
149 } | |
150 } while (devs[++i] != NULL); | |
5666 | 151 |
10319 | 152 if (!dev) |
153 { | |
154 mp_msg(MSGT_VO, MSGL_ERR, "zr: unable to find video device\n"); | |
155 return 1; | |
5666 | 156 } |
157 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
158 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
159 zr->vdes = open(dev, O_RDWR); |
5666 | 160 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
161 if (zr->vdes < 0) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
162 mp_msg(MSGT_VO, MSGL_ERR, "zr: error opening %s: %s\n", |
5666 | 163 dev, strerror(errno)); |
164 return 1; | |
165 } | |
166 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
167 /* 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
|
168 * 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
|
169 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
170 if (ioctl(zr->vdes, MJPIOC_G_PARAMS, &zr->p) < 0) { |
5666 | 171 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
|
172 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
|
173 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
174 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
175 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
|
176 /* 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
|
177 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
|
178 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
|
179 mp_msg(MSGT_VO, MSGL_ERR, |
5666 | 180 "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
|
181 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
|
182 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
183 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
|
184 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
|
185 mp_msg(MSGT_VO, MSGL_ERR, |
5666 | 186 "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
|
187 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
|
188 } |
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 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
190 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
191 if (ioctl(zr->vdes, VIDIOCGCAP, &zr->vc) < 0) { |
10718 | 192 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
|
193 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
|
194 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
195 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
|
196 |
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
|
197 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
|
198 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
199 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
200 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
|
201 { |
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
|
202 /* 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
|
203 * 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
|
204 if (zr->image_width > zr->vc.maxwidth) { |
23873 | 205 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
|
206 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
|
207 } |
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 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
209 if (zr->image_height > zr->vc.maxheight) { |
23873 | 210 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
|
211 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
|
212 } |
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 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
214 zr->p.decimation = 0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 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
|
219 if (zr->xdoff == -1) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
220 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
|
221 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
|
222 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
223 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
|
224 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
225 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
|
226 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
|
227 (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
|
228 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
229 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
|
230 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
231 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
|
232 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
|
233 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
|
234 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
235 if (ioctl(zr->vdes, MJPIOC_S_PARAMS, &zr->p) < 0) { |
5666 | 236 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
|
237 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
|
238 } |
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 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
240 zr->zrq.count = MJPEG_NBUFFERS; |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
241 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
|
242 |
11376
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
243 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
|
244 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
|
245 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
|
246 } |
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 |
9976
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
248 /* the buffer count allocated may be different to the request */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
249 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
|
250 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
|
251 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
252 if (zr->buf == MAP_FAILED) { |
25511
93af51aec103
Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents:
25426
diff
changeset
|
253 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
|
254 return 1; |
70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents:
10718
diff
changeset
|
255 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
256 |
25511
93af51aec103
Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents:
25426
diff
changeset
|
257 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
|
258 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
|
259 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
|
260 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
|
261 } |
9976
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
262 |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
263 zr->queue = 0; |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
264 zr->synco = 0; |
5843993013a8
fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents:
8148
diff
changeset
|
265 |
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
|
266 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
|
267 } |
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 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
269 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
|
270 { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
271 free(zr->image); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
272 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
|
273 while (zr->queue > zr->synco + 1) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
274 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
275 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
|
276 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
|
277 } |
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 /* 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
|
279 zr->frame = -1; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
280 if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0) |
5666 | 281 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
|
282 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
|
283 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
|
284 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
|
285 } |
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 |
30556
358ac046eccc
libvo: Mark functions not used outside of their files as static.
diego
parents:
29263
diff
changeset
|
287 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
|
288 { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
289 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
|
290 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
|
291 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
|
292 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
|
293 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
|
294 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
295 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
|
296 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
|
297 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
|
298 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
|
299 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
300 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
|
301 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
|
302 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
|
303 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
304 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
|
305 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
|
306 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
|
307 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
308 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
309 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
|
310 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
|
311 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
|
312 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
|
313 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
|
314 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
315 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
|
316 } |
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 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
319 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
|
320 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
|
321 { |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
322 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
|
323 framenum = 0; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
324 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
|
325 printf("vo_zr called with wrong format"); |
10605 | 326 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
327 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
328 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
|
329 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
|
330 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
|
331 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
332 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
|
333 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
|
334 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
335 /* 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
|
336 * 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
|
337 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
|
338 /* 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
|
339 * 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
|
340 * direction by factors 1, 2 and 4 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
341 * 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
|
342 * factor of 1 and 2 AND we must decide about interlacing */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
343 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
|
344 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
|
345 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
|
346 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
|
347 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
|
348 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
|
349 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
|
350 } 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
|
351 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
|
352 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
|
353 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
354 stretchx = zr->hdec; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
355 } 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
|
356 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
|
357 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
|
358 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
|
359 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
|
360 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
|
361 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
|
362 } 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
|
363 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
|
364 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
|
365 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
|
366 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
367 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
|
368 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
369 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
|
370 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
|
371 } 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
|
372 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
|
373 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
|
374 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
|
375 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
376 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
|
377 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
378 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
379 /* 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
|
380 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
|
381 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
|
382 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
|
383 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
|
384 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
|
385 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
|
386 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
387 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
|
388 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
|
389 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
|
390 } |
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
|
391 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
392 /* 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
|
393 * 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
|
394 * 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
|
395 * 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
|
396 * 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
|
397 * 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
|
398 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
|
399 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
|
400 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
|
401 /* 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
|
402 g->width = zr->hdec*(tmp - 16); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
403 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
|
404 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
|
405 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
406 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
|
407 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
|
408 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
|
409 (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
|
410 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
|
411 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
|
412 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
413 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
|
414 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
|
415 |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
416 /* 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
|
417 * 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
|
418 /* 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
|
419 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
|
420 (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
|
421 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
|
422 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
|
423 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
|
424 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
|
425 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
|
426 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
|
427 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
|
428 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
|
429 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
|
430 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
|
431 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
432 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
|
433 * 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
|
434 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
|
435 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
|
436 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
|
437 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
438 /* 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
|
439 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
|
440 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
|
441 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
|
442 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
|
443 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
|
444 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
|
445 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
|
446 zr->v_data = zr->image + 3*zr->size/2; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
447 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
448 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
|
449 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
|
450 zr->v_stride = zr->image_width/2; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
451 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
452 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
|
453 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
|
454 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
|
455 zr->hdec, zr->u_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
456 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
|
457 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
|
458 break; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
459 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
|
460 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
|
461 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
|
462 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
|
463 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
|
464 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
|
465 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
466 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
467 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
|
468 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
|
469 zr->v_data = zr->image + 3; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
470 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
471 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
|
472 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
|
473 zr->v_stride = 2*zr->image_width; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
474 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
475 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
|
476 zr->image_height/zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
477 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
|
478 zr->y_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
479 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
|
480 zr->u_stride*zr->fields, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
481 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
|
482 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
|
483 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
|
484 break; |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
485 default: |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
486 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
|
487 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
488 |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
489 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
490 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
|
491 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
|
492 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
493 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
494 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
495 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
|
496 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
497 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
498 |
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
|
499 } |
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
|
500 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
|
501 } |
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 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
|
504 } |
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 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
|
507 int i, j, k; |
4651
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
508 //FILE *fp; |
49f2bc22f880
mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4596
diff
changeset
|
509 //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
|
510 /* 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
|
511 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
|
512 zr_info_t *zr = &zr_info[j]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
513 /* 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
|
514 * 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
|
515 * 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
|
516 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
|
517 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
|
518 } else { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
519 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
520 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
|
521 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
|
522 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
|
523 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
524 k=0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
525 for (i = 0; i < zr->fields; i++) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
526 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
|
527 zr->u_data + i*zr->u_stride, |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
528 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
|
529 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
|
530 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
|
531 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
532 /* 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
|
533 * 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
|
534 * 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
|
535 /*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
|
536 fp = fopen(filename, "w"); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
537 if (!fp) exit(1); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
538 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
|
539 fclose(fp);*/ |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
540 /*fp = fopen("test1.jpg", "r"); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
541 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
|
542 fclose(fp);*/ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
543 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
544 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
|
545 zr_info_t *zr = &zr_info[j]; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
546 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
|
547 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
|
548 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
|
549 } |
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
|
550 |
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 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
|
552 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
|
553 } |
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 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
555 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
|
556 int i, j; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
557 char *source, *dest; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
558 //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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 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
|
566 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
|
567 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
|
568 } |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
569 } |
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
|
570 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
|
571 } |
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 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
573 static int query_format(uint32_t format) { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
574 if(format==IMGFMT_YV12 || format==IMGFMT_YUY2) |
6235
3fbaae881e40
10l - noticed by Terry Mohan <tmohan@users.sourceforge.net>
arpi
parents:
6213
diff
changeset
|
575 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
|
576 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
|
577 } |
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 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
|
580 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
|
581 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
|
582 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
|
583 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
|
584 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
|
585 } |
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
|
586 } |
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 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
|
589 } |
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 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
592 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
|
593 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
|
594 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
|
595 /* 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
|
596 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
|
597 //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
|
598 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
|
599 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
|
600 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
|
601 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
|
602 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
|
603 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
|
604 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
|
605 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
|
606 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
|
607 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
|
608 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
|
609 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
|
610 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
|
611 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
|
612 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
613 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
|
614 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
615 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
|
616 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
|
617 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
|
618 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
619 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
|
620 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
|
621 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
|
622 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
|
623 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
|
624 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
|
625 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
|
626 } else { |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
627 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
|
628 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
629 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
|
630 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
|
631 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
|
632 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
633 //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
|
634 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
|
635 // 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
|
636 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
|
637 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
|
638 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
|
639 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
|
640 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
641 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
|
642 |
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
|
643 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
644 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
|
645 // 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
|
646 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
|
647 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
|
648 (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
|
649 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
|
650 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
|
651 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
|
652 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
|
653 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
|
654 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
|
655 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
|
656 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
657 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
|
658 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
|
659 } |
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 } |
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
|
662 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
|
663 } |
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 /* 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
|
667 int |
25232
893db6cc97b2
Add appropriate const specifiers to some custom parse functions.
reimar
parents:
25220
diff
changeset
|
668 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
|
669 /* 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
|
670 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
|
671 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
|
672 /* 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
|
673 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
|
674 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
|
675 //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
|
676 //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
|
677 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
|
678 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
|
679 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
|
680 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
|
681 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
682 } 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
|
683 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
|
684 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
|
685 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
686 zr->bw = 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
687 return 1; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
688 } else if (!strcasecmp(opt, "zrfd")) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
689 if (param != NULL) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
690 return ERR_OUT_OF_RANGE; |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
691 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
692 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
|
693 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
|
694 } 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
|
695 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
|
696 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
|
697 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
|
698 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
|
699 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
|
700 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
|
701 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
|
702 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
|
703 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
|
704 } |
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
705 } |
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
|
706 if (param == NULL) return ERR_MISSING_PARAM; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
707 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
|
708 &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
|
709 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
|
710 if (sscanf(param, "%dx%d", &g->width, &g->height) != 2) { |
5666 | 711 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
|
712 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
|
713 } |
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 } |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
715 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
|
716 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
|
717 return 1; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
718 }else if (!strcasecmp(opt, "zrhdec")) { |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
719 i = atoi(param); |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
720 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
|
721 zr->hdec = i; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
722 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
|
723 }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
|
724 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
|
725 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
|
726 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
|
727 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
|
728 }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
|
729 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
|
730 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
|
731 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
|
732 }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
|
733 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
|
734 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
|
735 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
|
736 }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
|
737 i = atoi(param); |
5865
f4b470b66a99
update: we use the new quantizer in libavcodec, -zrquality 1 is allowed
rik
parents:
5666
diff
changeset
|
738 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
|
739 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
|
740 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
|
741 }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
|
742 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
|
743 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
|
744 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
|
745 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
|
746 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
|
747 } 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
|
748 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
|
749 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
|
750 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
|
751 } 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
|
752 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
|
753 } |
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 }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
|
755 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
|
756 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
|
757 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
|
758 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
|
759 "\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
|
760 " -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
|
761 " 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
|
762 " 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
|
763 " -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
|
764 " -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
|
765 " -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
|
766 " 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
|
767 " 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
|
768 " of too much decimation\n" |
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
769 " -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
|
770 " -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
|
771 " -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
|
772 " -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
|
773 " -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
|
774 " -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
|
775 "\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
|
776 "Cinerama support: additional occurances of -zrcrop activate cinerama mode,\n" |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
777 "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
|
778 "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
|
779 "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
|
780 " -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
|
781 "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
|
782 "possible to dispay at a different jpeg quality or at different decimations.\n\n" |
7903 | 783 "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
|
784 "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
|
785 "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
|
786 "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
|
787 ); |
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 exit(0); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
789 |
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
|
790 } |
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 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
|
792 } |
4259 | 793 |
25232
893db6cc97b2
Add appropriate const specifiers to some custom parse functions.
reimar
parents:
25220
diff
changeset
|
794 void vo_zr_revertoption(const m_option_t* opt,const char* param) { |
4259 | 795 |
6932
56cb4837384b
cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents:
6235
diff
changeset
|
796 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
|
797 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
|
798 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
|
799 |
4259 | 800 if (!strcasecmp(param, "zrdev")) { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
30593
diff
changeset
|
801 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
|
802 zr->device=NULL; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
803 } 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
|
804 zr->bw=0; |
4348
d4acef803c94
use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
4259
diff
changeset
|
805 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
|
806 zr->fd=0; |
4259 | 807 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
|
808 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
|
809 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
|
810 zr->hdec = 1; |
4259 | 811 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
|
812 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
|
813 else if (!strcasecmp(param, "zrxdoff")) |
6933 | 814 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
|
815 else if (!strcasecmp(param, "zrydoff")) |
6933 | 816 zr->ydoff = -1; |
4259 | 817 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
|
818 zr->quality = 2; |
4259 | 819 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
|
820 zr->norm = VIDEO_MODE_AUTO; |
4259 | 821 |
822 } | |
4352 | 823 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
824 static int preinit(const char *arg) |
4352 | 825 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27509
diff
changeset
|
826 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
|
827 { |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
828 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
|
829 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
|
830 } |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4668
diff
changeset
|
831 return 0; |
4352 | 832 } |
833 | |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
32537
diff
changeset
|
834 static int control(uint32_t request, void *data) |
4352 | 835 { |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
836 switch (request) { |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
837 case VOCTRL_QUERY_FORMAT: |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
838 return query_format(*((uint32_t*)data)); |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
839 } |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
840 return VO_NOTIMPL; |
4352 | 841 } |