annotate libvo/vo_zr.c @ 26279:c7508e9f9b8c

Ahem, fix quoting of $ in DEPEND_CMD.
author diego
date Mon, 31 Mar 2008 17:48:50 +0000
parents 0d255d03016f
children d97a607821f1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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
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
2 * vo_zr.c - playback on zoran cards
25426
288d00a5c11e change license from GPLv2 to 'GPL v2 or later', requested by Diego, I can do that since I wrote the files (based on other stuff from MPlayer (and some external things under GPL v2 or later))
rik
parents: 25232
diff changeset
3 * Copyright (C) Rik Snel 2001,2002, License GNU GPL v2 or later
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
4 */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
5
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
6 /* $Id$ */
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
7
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
8 #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
9 #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
10 #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
11 #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
12 #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
13 #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
14 #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
15 #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
16 #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
17 #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
18 #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
19 #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
20 #include <linux/videodev.h>
26203
0d255d03016f #include config.h before all other headers.
diego
parents: 25511
diff changeset
21 #include "config.h"
4668
d20978449650 migration of -vo zr to Recommended Interface definition (this obsoletes zoran.h)
rik
parents: 4651
diff changeset
22 #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
23 #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
24 #include "video_out_internal.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 11376
diff changeset
25 #include "mp_msg.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 11376
diff changeset
26 #include "m_option.h"
4232
3a5f381c8c19 Missed fastmemcpy
nick
parents: 4214
diff changeset
27 #include "fastmemcpy.h"
4214
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
28
4651
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
29 #include "jpeg_enc.h"
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
30
25216
3aee342be929 Make vo info structs const
reimar
parents: 23873
diff changeset
31 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
32 {
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 "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
34 "zr",
14429
90b4a1345b96 replace almost obsolete email address: snel@phys.uu.nl -> rsnel@cube.dyndns.org
rik
parents: 13787
diff changeset
35 "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
36 ""
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
37 };
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
38
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
39 const LIBVO_EXTERN (zr)
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7962
diff changeset
40
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
41 #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
42 /* 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
43
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
44 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
45 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
46 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
47 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
48 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
49 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
50 } 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
51
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
52 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
53 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
54 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
55
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
56 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
57 /* 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
58 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
59 int fd; /* force decimation */
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
60 int xdoff, ydoff; /* offset from upperleft of screen
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
61 * 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
62 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
63 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
64 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
65 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
66 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
67
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
68 /* 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
69
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
70 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
71 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
72 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
73
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
74 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
75 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
76 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
77 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
78
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
79 /* 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
80
6932
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 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
82 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
83 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
84 struct mjpeg_params p;
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
85 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
86 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
87 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
88 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
89 } 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
90
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
91 static zr_info_t zr_info[ZR_MAX_DEVICES] = {
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
92 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0,
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
93 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
94 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0,
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
95 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
96 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0,
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
97 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
98 {1, 1, 1, -1, -1, 2, {0, 0, 0, 0, 0}, NULL, 0, VIDEO_MODE_AUTO, NULL, 0, 0, 0, 0, 0,
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
99 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 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
100
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
101
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
102
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
103
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
104 #define MJPEG_NBUFFERS 2
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
105 #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
106
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
107
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
108 int zoran_getcap(zr_info_t *zr) {
10319
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
109 char* dev = NULL;
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
110
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
111 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
112 dev = zr->device;
10319
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
113 else {
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
114 struct stat vstat;
10319
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
115 const char *devs[] = {
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
116 "/dev/video",
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
117 "/dev/video0",
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
118 "/dev/v4l/video0",
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
119 "/dev/v4l0",
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
120 "/dev/v4l",
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
121 NULL
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
122 };
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
123 int i = 0;
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
124
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
125 do
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
126 {
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
127 if ((stat(devs[i], &vstat) == 0) && S_ISCHR(vstat.st_mode))
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
128 {
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
129 dev = devs[i];
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
130 mp_msg(MSGT_VO, MSGL_V, "zr: found video device %s\n", dev);
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
131 break;
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
132 }
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
133 } while (devs[++i] != NULL);
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
134
10319
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
135 if (!dev)
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
136 {
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
137 mp_msg(MSGT_VO, MSGL_ERR, "zr: unable to find video device\n");
2e9b7465d242 more flexible device name guessing
alex
parents: 9976
diff changeset
138 return 1;
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
139 }
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
140 }
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
141
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
142 zr->vdes = open(dev, O_RDWR);
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
143
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
144 if (zr->vdes < 0) {
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
145 mp_msg(MSGT_VO, MSGL_ERR, "zr: error opening %s: %s\n",
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
146 dev, strerror(errno));
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
147 return 1;
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
148 }
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
149
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
150 /* before we can ask for the maximum resolution, we must set
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
151 * 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
152
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
153 if (ioctl(zr->vdes, MJPIOC_G_PARAMS, &zr->p) < 0) {
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
154 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
155 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
156 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
157
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
158 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
159 /* 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
160 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
161 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
162 mp_msg(MSGT_VO, MSGL_ERR,
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
163 "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
164 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
165 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
166 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
167 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
168 mp_msg(MSGT_VO, MSGL_ERR,
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
169 "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
170 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
171 }
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 }
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
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
174 if (ioctl(zr->vdes, VIDIOCGCAP, &zr->vc) < 0) {
10718
alex
parents: 10605
diff changeset
175 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
176 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
177 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
178 mp_msg(MSGT_VO, MSGL_V, "zr: MJPEG card reports maxwidth=%d, maxheight=%d\n", zr->vc.maxwidth, 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
179
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
180 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
181 }
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 int init_zoran(zr_info_t *zr, int stretchx, int stretchy) {
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
184 /* 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
185 * 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
186 if (zr->image_width > zr->vc.maxwidth) {
23873
49a433e2e78f cosmetics: misc typo fixes
diego
parents: 23457
diff changeset
187 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
188 return 1;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
189 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
190
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 (zr->image_height > zr->vc.maxheight) {
23873
49a433e2e78f cosmetics: misc typo fixes
diego
parents: 23457
diff changeset
192 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
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 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
195
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
196 zr->p.decimation = 0;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
197 zr->p.HorDcm = stretchx;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
198 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
199 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
200 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
201 if (zr->xdoff == -1) {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
202 zr->p.img_x = (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
203 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
204 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
205 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
206 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
207 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
208 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
209 (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
210 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
211 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
212 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
213 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
214 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
215 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
216
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
217 if (ioctl(zr->vdes, MJPIOC_S_PARAMS, &zr->p) < 0) {
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
218 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
219 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
220 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
221
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
222 zr->zrq.count = MJPEG_NBUFFERS;
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
223 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
224
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
225 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
226 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
227 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
228 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
229
9976
5843993013a8 fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents: 8148
diff changeset
230 /* the buffer count allocated may be different to the request */
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
231 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
232 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
233
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
234 if (zr->buf == MAP_FAILED) {
25511
93af51aec103 Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents: 25426
diff changeset
235 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
236 return 1;
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
237 }
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
238
25511
93af51aec103 Use proper length specifiers in mp_msg calls, fixes the warnings:
diego
parents: 25426
diff changeset
239 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
240 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
241 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
242 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
243 }
9976
5843993013a8 fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents: 8148
diff changeset
244
5843993013a8 fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents: 8148
diff changeset
245 zr->queue = 0;
5843993013a8 fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents: 8148
diff changeset
246 zr->synco = 0;
5843993013a8 fixes to the zr driver (uninit->reinit) by Stephan Bain <sjbain@akamail.com>
rik
parents: 8148
diff changeset
247
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
248 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
249 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
250
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
251 void uninit_zoran(zr_info_t *zr) {
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->image) {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
253 free(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
254 zr->image=NULL;
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
255 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
256 while (zr->queue > zr->synco + 1) {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
257 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0)
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
258 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
259 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
260 }
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 /* 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
262 zr->frame = -1;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
263 if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0)
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
264 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
265 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
266 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
267 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
268 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
269
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
270 int zr_geometry_sane(geo_t *g, unsigned int width, unsigned int height) {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
271 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
272 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
273 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
274 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
275 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
276 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
277 if (g->width <= 0 || g->height <= 0 ||
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
278 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
279 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
280 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
281 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
282 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
283 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
284 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
285 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
286 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
287 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
288 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
289 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
290 } else {
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->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
292 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
293 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
294 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
295 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
296 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
297 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
298 }
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
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
301 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
302 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
303 {
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
304 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
305 framenum = 0;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
306 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
307 printf("vo_zr called with wrong format");
10605
alex
parents: 10594
diff changeset
308 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
309 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
310 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
311 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
312 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
313
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
314 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
315 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
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 /* 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
318 * 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
319 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
320 /* 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
321 * 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
322 * direction by factors 1, 2 and 4
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
323 * we can stretch the image in the vertical direction by a
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
324 * factor of 1 and 2 AND we must decide about interlacing */
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
325 if (g->width > zr->vc.maxwidth/2 ||
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
326 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
327 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
328 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
329 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
330 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
331 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
332 } 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
333 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
334 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
335 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
336 stretchx = 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
337 } else if (g->width > zr->vc.maxwidth/4 ||
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
338 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
339 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
340 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
341 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
342 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
343 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
344 } 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
345 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
346 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
347 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
348 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
349 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
350 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
351 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
352 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
353 } 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
354 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
355 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
356 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
357 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
358 stretchx = 4;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
359 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
360 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
361 /* 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
362 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
363 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
364 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
365 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
366 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
367 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
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 != 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
370 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
371 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
372 }
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
373 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
374 /* 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
375 * 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
376 * 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
377 * 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
378 * 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
379 * 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
380 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
381 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
382 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
383 /* 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
384 g->width = zr->hdec*(tmp - 16);
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
385 g->set = 0; /* we abuse this field to
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
386 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
387 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
388 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
389 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
390 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
391 (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
392 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
393 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
394 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
395 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
396 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
397
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
398 /* 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
399 * 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
400 /* 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
401 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
402 (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
403 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
404 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
405 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
406 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
407 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
408 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
409 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
410 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
411 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
412 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);
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
413
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
414 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
415 * 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
416 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
417 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
418 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
419 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
420 /* 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
421 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
422 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
423 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
424 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
425 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
426 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
427 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
428 zr->v_data = zr->image + 3*zr->size/2;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
429
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
430 zr->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
431 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
432 zr->v_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
433
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
434 zr->j = jpeg_enc_init(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
435 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
436 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
437 zr->hdec, zr->u_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
438 zr->hdec, 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
439 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
440 break;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
441 case IMGFMT_YUY2:
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
442 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
443 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
444 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
445 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
446 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
447 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
448
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
449 zr->y_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
450 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
451 zr->v_data = zr->image + 3;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
452
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->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
454 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
455 zr->v_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
456
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
457 zr->j = jpeg_enc_init(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
458 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
459 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
460 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
461 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
462 zr->u_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
463 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
464 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
465 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
466 break;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
467 default:
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
468 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
469 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
470
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
471
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
472 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
473 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
474 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
475 }
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
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
477 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
478 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
479 }
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
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
481 }
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
482 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
483 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
484
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
485 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
486 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
487
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
488 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
489 int i, j, k;
4651
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
490 //FILE *fp;
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
491 //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
492 /* 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
493 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
494 zr_info_t *zr = &zr_info[j];
11376
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
495 /* using MJPEG_NBUFFERS here, using the real number of
70b1673fe399 proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
rik
parents: 10718
diff changeset
496 * 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
497 * 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
498 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
499 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
500 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
501 if (ioctl(zr->vdes, MJPIOC_SYNC, &zr->zs) < 0)
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
502 mp_msg(MSGT_VO, MSGL_ERR, "zr: error waiting for buffers to become free\n");
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
503 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
504 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
505 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
506 k=0;
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
507 for (i = 0; i < zr->fields; i++)
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
508 k+=jpeg_enc_frame(zr->j, zr->y_data + i*zr->y_stride,
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
509 zr->u_data + i*zr->u_stride,
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
510 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
511 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
512 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
513 }
4651
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
514 /* Warning: Only the first jpeg image contains huffman- and
49f2bc22f880 mjpeg encoder cleanup - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4596
diff changeset
515 * 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
516 * 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
517 /*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
518 fp = fopen(filename, "w");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
519 if (!fp) exit(1);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
520 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
521 fclose(fp);*/
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
522 /*fp = fopen("test1.jpg", "r");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
523 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
524 fclose(fp);*/
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
525
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
526 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
527 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
528 if (ioctl(zr->vdes, MJPIOC_QBUF_PLAY, &zr->frame) < 0)
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
529 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
530 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
531 }
4214
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
532
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
533 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
534 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
535 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
536
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
537 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
538 int i, j;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
539 char *source, *dest;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
540 //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
541 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
542 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
543 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
544 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
545 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
546 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
547 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
548 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
549 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
550 }
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
551 }
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
552 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
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 query_format(uint32_t format) {
6213
7accc81d6f04 revised query_format
alex
parents: 5865
diff changeset
556 if(format==IMGFMT_YV12 || format==IMGFMT_YUY2)
6235
3fbaae881e40 10l - noticed by Terry Mohan <tmohan@users.sourceforge.net>
arpi
parents: 6213
diff changeset
557 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
558 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
559 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
560
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
561 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
562 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
563 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
564 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
565 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
566 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
567 }
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
568 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
569
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 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
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
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
573
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
574 static int 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
575 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
576 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
577 /* 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
578 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
579 //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
580 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
581 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
582 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
583 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
584 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
585 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
586 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
587 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
588 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
589 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
590 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
591 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
592 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
593 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
594 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
595 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
596 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
597 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
598 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
599 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
600 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
601 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
602 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
603 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
604 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
605 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
606 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
607 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
608 } else {
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
609 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
610 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
611 if (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
612 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
613 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
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 //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
616 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
617 // 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
618 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
619 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
620 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
621 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
622 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
623 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
624
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
625 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
626 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
627 // 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
628 uint8_t *dst1=zr->image + zr->size + zr->off_c+ (y/(zr->vdec*2))*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
629 uint8_t *dst2=zr->image + 3*zr->size/2 + zr->off_c +
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
630 (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
631 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
632 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
633 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
634 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
635 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
636 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
637 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
638 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
639 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
640 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
641 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
642 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
643 }
4214
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
644 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
645 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
646
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
647
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
648 /* 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
649 int
25232
893db6cc97b2 Add appropriate const specifiers to some custom parse functions.
reimar
parents: 25220
diff changeset
650 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
651 /* 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
652 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
653 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
654 /* 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
655 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
656 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
657 //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
658 //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
659 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
660 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
661 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
662 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
663 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
664 } 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
665 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
666 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
667 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
668 zr->bw = 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
669 return 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
670 } else if (!strcasecmp(opt, "zrfd")) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
671 if (param != NULL) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
672 return ERR_OUT_OF_RANGE;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
673 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
674 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
675 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
676 } 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
677 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
678 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
679 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
680 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
681 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
682 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
683 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
684 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
685 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
686 }
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
687 }
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
688 if (param == NULL) return ERR_MISSING_PARAM;
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
689 if (sscanf(param, "%dx%d+%d+%d", &g->width, &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
690 &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
691 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
692 if (sscanf(param, "%dx%d", &g->width, &g->height) != 2) {
5666
685df37d2c80 Minor patches from Tomi Ollila <Tomi.Ollila@iki.fi>:
rik
parents: 4737
diff changeset
693 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
694 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
695 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
696 }
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
697 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
698 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
699 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
700 }else if (!strcasecmp(opt, "zrhdec")) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
701 i = atoi(param);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
702 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
703 zr->hdec = i;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
704 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
705 }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
706 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
707 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
708 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
709 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
710 }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
711 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
712 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
713 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
714 }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
715 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
716 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
717 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
718 }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
719 i = atoi(param);
5865
f4b470b66a99 update: we use the new quantizer in libavcodec, -zrquality 1 is allowed
rik
parents: 5666
diff changeset
720 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
721 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
722 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
723 }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
724 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
725 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
726 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
727 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
728 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
729 } 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
730 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
731 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
732 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
733 } 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
734 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
735 }
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, "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
737 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
738 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
739 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
740 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
741 "\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
742 " -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
743 " 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
744 " 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
745 " -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
746 " -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
747 " -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
748 " 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
749 " 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
750 " of too much decimation\n"
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
751 " -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
752 " -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
753 " -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
754 " -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
755 " -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
756 " -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
757 "\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
758 "Cinerama support: additional occurances of -zrcrop activate cinerama mode,\n"
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
759 "suppose you have a 704x272 movie, two DC10+ cards and two beamers (or tv's),\n"
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
760 "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
761 "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
762 " -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
763 "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
764 "possible to dispay at a different jpeg quality or at different decimations.\n\n"
7903
5b9707780f3d spelling: paramerters -> parameters
rik
parents: 7124
diff changeset
765 "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
766 "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
767 "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
768 "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
769 );
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
770 exit(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
771
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
772 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
773 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
774 }
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
775
25232
893db6cc97b2 Add appropriate const specifiers to some custom parse functions.
reimar
parents: 25220
diff changeset
776 void vo_zr_revertoption(const m_option_t* opt,const char* param) {
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
777
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 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
779 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
780 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
781
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
782 if (!strcasecmp(param, "zrdev")) {
6932
56cb4837384b cinerama support in -vo zr for people with more than one zoran card, documentation contained in -zrhelp
rik
parents: 6235
diff changeset
783 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
784 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
785 zr->device=NULL;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
786 } 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
787 zr->bw=0;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
788 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
789 zr->fd=0;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
790 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
791 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
792 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
793 zr->hdec = 1;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
794 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
795 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
796 else if (!strcasecmp(param, "zrxdoff"))
6933
rik
parents: 6932
diff changeset
797 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
798 else if (!strcasecmp(param, "zrydoff"))
6933
rik
parents: 6932
diff changeset
799 zr->ydoff = -1;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
800 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
801 zr->quality = 2;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
802 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
803 zr->norm = VIDEO_MODE_AUTO;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
804
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
805 }
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
806
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
807 static int preinit(const char *arg)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
808 {
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4668
diff changeset
809 if(arg)
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4668
diff changeset
810 {
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4668
diff changeset
811 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
812 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
813 }
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4668
diff changeset
814 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
815 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
816
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15212
diff changeset
817 static int control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
818 {
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
819 switch (request) {
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
820 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
821 return query_format(*((uint32_t*)data));
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
822 }
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
823 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
824 }