annotate libvo/vo_zr.c @ 4354:5018e8014ebd

fixed preinit conflict
author alex
date Sat, 26 Jan 2002 16:31:14 +0000
parents ed5b85b713a3
children e7744189e03f
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
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
3 * Copyright (C) Rik Snel 2001,2002, License GNU GPL v2
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
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
6 #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
7 #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
8 #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
9 #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
10 #include <fcntl.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 <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
12 #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
13 #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
14 #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
15 #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
16 #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
17 #include <linux/videodev.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 "zoran.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
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 "config.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
21
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
22 #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
23 #include "video_out_internal.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 "../mp_msg.h"
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
25 #include "../cfgparser.h"
4232
3a5f381c8c19 Missed fastmemcpy
nick
parents: 4214
diff changeset
26 #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
27
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 LIBVO_EXTERN (zr)
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
29
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
30 static vo_info_t vo_info =
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
31 {
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 "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
33 "zr",
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 "Rik Snel <snel@phys.uu.nl>",
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
35 ""
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 /* 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
39
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
40 static int image_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
41 static int image_height;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
42 static 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
43 static int 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
44 static int fields = 1; /* currently no interlacing */
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
45 static int zrfd = 0;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
46 static int bw = 0; /* if bw == 1, then display in black&white */
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
47 static int vdec = 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
48 static int hdec = 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
49 static int size;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
50 static int quality = 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
51
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
52 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
53 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
54 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
55 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
56 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
57 int 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
58 } geo;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
59 geo g = {0, 0, 0, 0, 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
60
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
61 static uint8_t *image=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
62 static uint8_t *buf=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
63
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
64
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
65 /* Variables needed for Zoran */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
66
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 int vdes; /* the file descriptor of the video device */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
68 int frame = 0, synco = 0, queue = 0; /* buffer management */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
69 struct zoran_params zp;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
70 struct zoran_requestbuffers zrq;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
71 struct zoran_sync zs;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
72 struct video_capability vc;
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 #define MJPEG_NBUFFERS 2
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
74 #define MJPEG_SIZE 1024*256
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
75
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
76 //should be command line options
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
77 int norm = VIDEO_MODE_AUTO;
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
78 #ifndef VO_ZR_DEFAULT_DEVICE
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
79 #define VO_ZR_DEFAULT_DEVICE "/dev/video"
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
80 #endif
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
81 char *device = 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
82
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
83
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
84 extern int mjpeg_encode_frame(char *bufr, int field);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
85 extern void mjpeg_encoder_init(int w, int h, unsigned char *y,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
86 int y_psize, int y_rsize, unsigned char *u,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
87 int u_psize, int u_rsize, unsigned char *v,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
88 int v_psize, int v_rsize, int f, int cu, int q, int b);
4214
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
89
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
90 int zoran_getcap() {
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
91 char* dev = device ? device : VO_ZR_DEFAULT_DEVICE;
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
92 vdes = open(dev, O_RDWR);
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
93 /* 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
94 * 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
95
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
96 if (ioctl(vdes, BUZIOC_G_PARAMS, &zp) < 0) {
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
97 mp_msg(MSGT_VO, MSGL_ERR, "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
98 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
99 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
100
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
101 if (zp.norm != norm && norm != VIDEO_MODE_AUTO) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
102 /* attempt to set requested 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
103 zp.norm = 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
104 if (ioctl(vdes, BUZIOC_S_PARAMS, &zp) < 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
105 mp_msg(MSGT_VO, MSGL_ERR,
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 "unable to change video norm, use another program to change it (XawTV)\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
107 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
108 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
109 ioctl(vdes, BUZIOC_G_PARAMS, &zp);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
110 if (norm != zp.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
111 mp_msg(MSGT_VO, MSGL_ERR,
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
112 "unable to change video norm, use another program to change it (XawTV)\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
113 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
114 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
115 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
116
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
117 if (vdes < 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
118 mp_msg(MSGT_VO, MSGL_ERR, "error opening %s\n",
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
119 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
120 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
121 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
122
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
123
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
124 if (ioctl(vdes, VIDIOCGCAP, &vc) < 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
125 mp_msg(MSGT_VO, MSGL_ERR, "error getting video capabilities from %s\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
126 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
127 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
128 mp_msg(MSGT_VO, MSGL_V, "zr36067 reports: maxwidth=%d, maxheight=%d\n", vc.maxwidth, vc.maxheight);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
129
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
130 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
131 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
132
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
133 int init_zoran(int zrhdec, int zrvdec) {
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
134 /* 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
135 * aspect) and check if it fits */
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
136 if (image_width/hdec > 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
137 mp_msg(MSGT_VO, MSGL_ERR, "movie to be played is too wide, max width currenty %d\n", vc.maxwidth);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
138 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
139 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
140
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
141 if (image_height > vc.maxheight) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
142 mp_msg(MSGT_VO, MSGL_ERR, "movie to be played is too high, max height currenty %d\n", vc.maxheight);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
143 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
144 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
145
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
146 zp.decimation = 0;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
147 zp.HorDcm = zrhdec;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
148 zp.VerDcm = zrvdec;
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
149 zp.TmpDcm = 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
150 zp.field_per_buff = fields;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
151 zp.img_x = (vc.maxwidth - zp.HorDcm*(int)image_width/hdec)/2;
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
152 zp.img_y = (vc.maxheight - zp.VerDcm*(3-fields)*(int)image_height)/4;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
153 zp.img_width = zp.HorDcm*image_width/hdec;
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
154 zp.img_height = zp.VerDcm*image_height/fields;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
155 mp_msg(MSGT_VO, MSGL_V, "zr: geometry (after 'scaling'): %dx%d+%d+%d fields=%d, w=%d, h=%d\n", zp.img_width, (3-fields)*zp.img_height, zp.img_x, zp.img_y, fields, image_width/hdec, 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
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 if (ioctl(vdes, BUZIOC_S_PARAMS, &zp) < 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
158 mp_msg(MSGT_VO, MSGL_ERR, "error setting display parameters\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
159 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
160 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
161
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 zrq.count = MJPEG_NBUFFERS;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
163 zrq.size = MJPEG_SIZE;
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
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 if (ioctl(vdes, BUZIOC_REQBUFS, &zrq)) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
166 mp_msg(MSGT_VO, MSGL_ERR, "error requesting %d buffers of size %d\n", zrq.count, zrq.size);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
167 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
168 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
169
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 buf = (char*)mmap(0, zrq.count*zrq.size, PROT_READ|PROT_WRITE,
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 MAP_SHARED, vdes, 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
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 if (buf == MAP_FAILED) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
174 mp_msg(MSGT_VO, MSGL_ERR, "error requesting %d buffers of size %d\n", zrq.count, zrq.size);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
175 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
176 }
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 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
178 }
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 void uninit_zoran(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
181 if (image) {
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 free(image);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
183 image=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
184 }
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 while (queue > synco + 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
186 if (ioctl(vdes, BUZIOC_SYNC, &zs) < 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
187 mp_msg(MSGT_VO, MSGL_ERR, "error waiting for buffers to become free");
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 synco++;
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 /* stop streaming */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
191 frame = -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
192 if (ioctl(vdes, BUZIOC_QBUF_PLAY, &frame) < 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
193 mp_msg(MSGT_VO, MSGL_ERR, "error stopping playback of last frame");
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 close(vdes);
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 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
196
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
197 static uint32_t init(uint32_t width, uint32_t height, uint32_t d_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
198 uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format)
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
199 {
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
200 int j, stretchx, 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
201 /* this allows to crop parts from incoming picture,
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
202 * for easy 512x240 -> 352x240 */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
203 /* These values must be multples of 2 */
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
204 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
205 printf("vo_zr called with wrong format");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
206 exit(1);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
207 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
208 stride = 2*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
209 if (g.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
210 if (g.width%2 != 0 || g.height%2 != 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
211 g.xoff%2 != 0 || g.yoff%2 != 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
212 mp_msg(MSGT_VO, MSGL_ERR, "arguments in -zrcrop must be multiples of 2\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
213 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
214 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
215 if (g.width <= 0 || g.height <= 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
216 g.xoff < 0 || g.yoff < 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
217 mp_msg(MSGT_VO, MSGL_ERR, "width and height must be positive and offset nonnegative\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
218 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
219 }
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 if (g.width + g.xoff > 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
221 mp_msg(MSGT_VO, MSGL_ERR, "width+xoffset (%d+%d>%d) is too big\n", g.width, g.xoff, 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
222 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
223 }
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 if (g.height + g.yoff > 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
225 mp_msg(MSGT_VO, MSGL_ERR, "height+yoffset (%d+%d>%d) is too big\n", g.height, g.yoff, 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
226 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
227 }
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 } 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
229 g.width = 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
230 g.height = 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
231 g.xoff = 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
232 g.yoff = 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
233 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
234 /* we must know the maximum resolution of the device
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
235 * it differs for DC10+ and buz for example */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
236 zoran_getcap(); /*must be called before init_zoran */
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
237 /* make the scaling decision
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
238 * we are capable of stretching the image in the horizontal
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
239 * direction by factors 1, 2 and 4
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
240 * we can stretch the image in the vertical direction by a factor
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
241 * of 1 and 2 AND we must decide about interlacing */
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
242 if (g.width > vc.maxwidth/2 || g.height > vc.maxheight/2) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
243 stretchx = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
244 stretchy = 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
245 fields = 2;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
246 if (vdec == 2) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
247 fields = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
248 } else if (vdec == 4) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
249 stretchy = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
250 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
251 stretchx = hdec;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
252 } else if (g.width > vc.maxwidth/4 || g.height > vc.maxheight/4) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
253 stretchx = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
254 stretchy = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
255 fields = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
256 if (vdec == 2) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
257 stretchy = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
258 } else if (vdec == 4) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
259 if (!zrfd) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
260 mp_msg(MSGT_VO, MSGL_WARN, "vo_zr: vertical decimation too high, changing to 2 (use -zrfd to keep vdec=4)\n");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
261 vdec = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
262 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
263 stretchy = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
264 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
265 if (hdec == 2) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
266 stretchx = 4;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
267 } else if (hdec == 4){
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
268 if (!zrfd) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
269 mp_msg(MSGT_VO, MSGL_WARN, "vo_zr: horizontal decimation too high, changing to 2 (use -zrfd to keep hdec=4)\n");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
270 hdec = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
271 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
272 stretchx = 4;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
273 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
274 } else {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
275 /* output image is maximally stretched */
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
276 stretchx = 4;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
277 stretchy = 2;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
278 fields = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
279 if (vdec != 1 && !zrfd) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
280 mp_msg(MSGT_VO, MSGL_WARN, "vo_zr: vertical decimation too high, changing to 1 (use -zrfd to keep vdec=%d)\n", vdec);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
281 vdec = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
282 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
283
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
284 if (hdec != 1 && !zrfd) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
285 mp_msg(MSGT_VO, MSGL_WARN, "vo_zr: vertical decimation too high, changing to 1 (use -zrfd to keep hdec=%d)\n", hdec);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
286 hdec = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
287 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
288 }
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
289 /* the height must be a multiple of fields*8 and the 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
290 * must be a multiple of 16 */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
291 /* add some black borders to make it so, and center the image*/
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
292 image_height = fields*8*((g.height/vdec - 1)/(fields*8) + 1);
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
293 image_width = (hdec*16)*((g.width - 1)/(hdec*16) + 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
294 off_y = (image_height - g.height/vdec)/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
295 if (off_y%2 != 0) off_y++;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
296 off_y *= image_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
297 off_c = off_y/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
298 off_y += (image_width - g.width)/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
299 if (off_y%2 != 0) off_y--;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
300 off_c += (image_width - g.width)/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
301 framenum = 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
302 size = image_width*image_height;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
303 mp_msg(MSGT_VO, MSGL_V, "input: %dx%d, cropped: %dx%d, output: %dx%d, off_y=%d, off_c=%d\n", width/hdec, height, g.width, g.height, image_width, image_height, off_y, off_c);
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
304
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
305 image = malloc(2*size); /* this buffer allows for YUV422 data,
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
306 * so it is a bit too big for YUV420 */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
307 if (!image) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
308 mp_msg(MSGT_VO, MSGL_ERR, "Memory exhausted\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
309 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
310 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
311 /* and make sure that the borders are _really_ black */
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
312 switch (format) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
313 case IMGFMT_YV12:
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
314 memset(image, 0, image_width*image_height);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
315 memset(image + size, 0x80, image_width*image_height/4);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
316 memset(image + 3*size/2, 0x80, image_width*image_height/4);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
317 mjpeg_encoder_init(image_width/hdec, image_height,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
318 image, hdec, image_width,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
319 image + image_width*image_height,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
320 hdec, image_width/2,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
321 image + 3*image_width*image_height/2,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
322 hdec, image_width/2, fields, 1,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
323 quality, bw);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
324 break;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
325 case IMGFMT_YUY2:
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
326 for (j = 0; j < 2*size; j+=4) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
327 image[j] = 0;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
328 image[j+1] = 0x80;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
329 image[j+2] = 0;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
330 image[j+3] = 0x80;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
331 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
332 mjpeg_encoder_init(image_width/hdec, image_height,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
333 image, hdec*2, image_width*2,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
334 image + 1, hdec*4, image_width*2,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
335 image + 3, hdec*4, image_width*2,
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
336 fields, 0, quality, bw);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
337 break;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
338 default:
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
339 mp_msg(MSGT_VO, MSGL_FATAL, "internal inconsistency in vo_zr\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
340 }
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
341
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
342
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
343 if (init_zoran(stretchx, 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
344 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
345 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
346
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
347 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
348 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
349
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
350 static const vo_info_t* get_info(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
351 return &vo_info;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
352 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
353
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
354 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
355 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
356
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
357 static void flip_page (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
358 int i, j, k;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
359 /*FILE *fp;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
360 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
361 /* do we have a free buffer? */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
362 if (queue-synco < zrq.count) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
363 frame = queue;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
364 } 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
365 if (ioctl(vdes, BUZIOC_SYNC, &zs) < 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
366 mp_msg(MSGT_VO, MSGL_ERR, "error waiting for buffers to become free");
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
367 frame = zs.frame;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
368 synco++;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
369 }
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
370 k=0;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
371 for (i = 0; i < fields; i++)
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
372 k+=mjpeg_encode_frame(buf+frame*zrq.size+k, i);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
373 /* Warning, Quantization and Huffman tables are only
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
374 * written in the first frame by default (to preserver bandwidth) */
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
375 /*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
376 fp = fopen(filename, "w");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
377 if (!fp) exit(1);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
378 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
379 fclose(fp);*/
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
380 /*fp = fopen("test1.jpg", "r");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
381 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
382 fclose(fp);*/
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
383
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
384 if (ioctl(vdes, BUZIOC_QBUF_PLAY, &frame) < 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
385 mp_msg(MSGT_VO, MSGL_ERR,
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
386 "error queueing buffer for playback");
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
387 queue++;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
388
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
389 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
390 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
391 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
392
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
393 static uint32_t draw_frame(uint8_t * src[]) {
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
394 int i;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
395 char *source, *dest;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
396 //printf("draw frame called\n");
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
397 source = src[0] + 2*g.yoff*image_width + 2*g.xoff;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
398 dest = image + 2*off_y;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
399 for (i = 0; i < g.height/vdec; i++) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
400 memcpy(dest, source, image_width*2);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
401 dest += 2*image_width;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
402 source += vdec*stride;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
403 }
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
404 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
405 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
406
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
407 static uint32_t query_format(uint32_t format) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
408 if(format==IMGFMT_YV12) return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
409 if(format==IMGFMT_YUY2) 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
410 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
411 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
412
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
413 static void uninit(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
414 uninit_zoran();
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
415 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
416
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
417 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
418 }
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
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
420
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
421 static uint32_t draw_slice(uint8_t *srcimg[], int stride[],
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
422 int w, int h, int x, int y) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
423 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
424 /* 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
425 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
426 uint8_t *src;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
427 //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]);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
428 if (x < g.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
429 srcimg[0] += g.xoff - x;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
430 srcimg[1] += (g.xoff - x)/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
431 srcimg[2] += (g.xoff - x)/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
432 w -= g.xoff - x;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
433 if (w < 0) 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
434 x = 0 /*g.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
435 } 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
436 x -= g.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
437 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
438 if (x + w > g.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
439 w = g.width - x;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
440 if (w < 0) 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
441 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
442 if (y < g.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
443 srcimg[0] += (g.yoff - y)*stride[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
444 srcimg[1] += ((g.yoff - y)/2)*stride[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
445 srcimg[2] += ((g.yoff - y)/2)*stride[2];
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
446 h -= g.yoff - y;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
447 if (h < 0) 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
448 y = 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
449 } 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
450 y -= g.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
451 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
452 if (y + h > g.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
453 h = g.height - y;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
454 if (h < 0) 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
455 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
456 //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]);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
457 dst=image + off_y + image_width*(y/vdec)+x;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
458 src=srcimg[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
459 // copy Y:
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
460 for (i = 0; i < h; 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
461 if ((i + x)%vdec == 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
462 memcpy(dst,src,w);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
463 dst+=image_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
464 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
465 src+=stride[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
466
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
467 }
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
468 if (!bw) {
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
469 // copy U+V:
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
470 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
471 uint8_t *src2=srcimg[2];
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
472 uint8_t *dst1=image + size + off_c+ (y/(vdec*2))*image_width/2+(x/2);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
473 uint8_t *dst2=image + 3*size/2 + off_c +
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
474 (y/(vdec*2))*image_width/2+(x/2);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
475 for (i = 0; i< h/2; 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
476 if ((i+x/2)%vdec == 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
477 memcpy(dst1,src1,w/2);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
478 memcpy(dst2,src2,w/2);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
479 dst1+=image_width/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
480 dst2+=image_width/2;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
481 }
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 src1+=stride[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
483 src2+=stride[2];
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 }
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 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
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
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
489
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
490 /* 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
491 int
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 vo_zr_parseoption(struct config * conf, char *opt, char *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
493 /* got an option starting with zr */
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
494 char *x, *help;
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
495 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
496 /* 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
497 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
498 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
499 //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
500 //aaopt_osdcolor=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
501 device = malloc(strlen(param)+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
502 strcpy(device, 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
503 mp_msg(MSGT_VO, MSGL_V, "zr: using device %s\n", device);
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
504 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
505 } 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
506 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
507 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
508 }
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
509 bw = 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
510 return 1;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
511 } else if (!strcasecmp(opt, "zrfd")) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
512 if (param != NULL) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
513 return ERR_OUT_OF_RANGE;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
514 }
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
515 zrfd = 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
516 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
517 } else if (!strcasecmp(opt, "zrcrop")){
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
518 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
519 if (sscanf(param, "%dx%d+%d+%d", &g.width, &g.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
520 &g.xoff, &g.yoff) != 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
521 g.xoff = 0; g.yoff = 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
522 if (sscanf(param, "%dx%d", &g.width, &g.height) != 2) {
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
523 mp_msg(MSGT_VO, MSGL_ERR, "argument to -zrcrop must be of the form 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
524 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
525 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
526 }
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
527 g.set = 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
528 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
529 return 1;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
530 }else if (!strcasecmp(opt, "zrhdec")) {
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
531 i = atoi(param);
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
532 if (i != 1 && i != 2 && i != 4) return ERR_OUT_OF_RANGE;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
533 hdec = i;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
534 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
535 }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
536 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
537 if (i != 1 && i != 2 && i != 4) 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
538 vdec = 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
539 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
540 }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
541 i = atoi(param);
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
542 if (i < 1 || i > 20) return ERR_OUT_OF_RANGE;
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
543 quality = 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
544 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
545 }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
546 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
547 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
548 mp_msg(MSGT_VO, MSGL_V, "zr: Norm set to NTSC\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
549 norm = VIDEO_MODE_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
550 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
551 } 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
552 mp_msg(MSGT_VO, MSGL_V, "zr: Norm set to PAL\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
553 norm = VIDEO_MODE_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
554 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
555 } 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
556 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
557 }
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 }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
559 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
560 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
561 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
562 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
563 "\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
564 " -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
565 " 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
566 " 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
567 " -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
568 " -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
569 " -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
570 " 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
571 " 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
572 " of too much decimation\n"
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
573 " -zrbw display in black&white (speed increase)\n"
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
574 " -zrquality jpeg compression quality [BEST] 1 - 20 [VERY BAD]\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
575 " -zrdev playback device (example -zrdev /dev/video1\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
576 " -zrnorm specify norm PAL/NTSC [dev: leave at current setting]\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
577 "\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
578 );
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
579 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
580
664984198aef zr driver (tv-out for DC10/DC10+, iomega buz, LML33...) added - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents:
diff changeset
581 }
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 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
583 }
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
584
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
585 void vo_zr_revertoption(config_t* opt,char* param) {
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
586
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
587 if (!strcasecmp(param, "zrdev")) {
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
588 if(device)
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
589 free(device);
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
590 device=NULL;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
591 } else if (!strcasecmp(param, "zrbw"))
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
592 bw=0;
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
593 else if (!strcasecmp(param, "zrfd"))
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
594 zrfd=0;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
595 else if (!strcasecmp(param, "zrcrop"))
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
596 g.set = g.xoff = g.yoff = 0;
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
597 else if (!strcasecmp(param, "zrhdec"))
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
598 hdec = 1;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
599 else if (!strcasecmp(param, "zrvdec"))
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
600 vdec = 1;
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
601 else if (!strcasecmp(param, "zrquality"))
4348
d4acef803c94 use the new jpeg encoder - patch by Rik Snel <rsnel@cube.dyndns.org>
arpi
parents: 4259
diff changeset
602 quality = 1;
4259
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
603 else if (!strcasecmp(param, "zrnorm"))
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
604 norm = VIDEO_MODE_AUTO;
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
605
f96a2b9b41eb Added reverting support for -zr* options
albeu
parents: 4232
diff changeset
606 }
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
607
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
608 static uint32_t preinit(const char *arg)
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
609 {
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
610 return 0;
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
611 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
612
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
613 static void query_vaa(vo_vaa_t *vaa)
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
614 {
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
615 memset(vaa,0,sizeof(vo_vaa_t));
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4348
diff changeset
616 }