xine-lib 1.2.11
video_out_dxr3.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2000-2020 the xine project
3 *
4 * This file is part of xine, a unix video player.
5 *
6 * xine is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * xine is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 */
20
21#if defined(HAVE_CONFIG_H) && !defined(__XINE_LIB_CONFIG_H__)
22# error config.h not included
23#endif
24
25#ifdef HAVE_X11
26# include <X11/Xlib.h>
27#endif
28
29#include <xine/xine_internal.h>
30#include <xine/vo_scale.h>
31#include "dxr3_scr.h"
32#include "dxr3.h"
33
34/* the number of supported encoders */
35#define SUPPORTED_ENCODER_COUNT 3
36
37
38/* plugin structures */
41
43
44
45struct coeff {
46 float k,m;
47};
48
49typedef struct dxr3_overlay_s {
51
53
56 int xcorr;
57 int jitter;
64 int shrink;
65
69
70typedef struct dxr3_driver_class_s {
73
75 int instance; /* we allow only one instance of this plugin */
76
77 int devnum;
79
80typedef struct dxr3_driver_s {
83 dxr3_scr_t *scr; /* to provide dxr3 clocking */
84
86 pthread_mutex_t video_device_lock;
88 pthread_mutex_t spu_device_lock;
89 int fd_spu; /* to access the relevant dxr3 devices */
90 int clut_cluttered; /* to tell spu decoder that it has to restore the palette */
91
93 int swap_fields; /* swap fields */
94 int add_bars; /* add black bars to correct a.r. */
95
96 int aspect;
100 int tv_switchable; /* can switch from overlay<->tvout */
103
104 encoder_data_t *enc; /* mpeg encoder data */
105 spu_encoder_t *spu_enc; /* spu encoder */
106 int need_update; /* the mpeg encoder needs to be updated */
107
108 uint32_t video_iheight; /* input height (before adding black bars) */
109 uint32_t video_oheight; /* output height (after adding black bars) */
110 uint32_t video_width;
113 int top_bar; /* the height of the upper black bar */
114
117
119#ifdef HAVE_X11
120 Display *display;
121 Drawable win;
122 GC gc;
123 XColor black;
124 XColor key;
125#endif
126
128
129typedef struct dxr3_frame_s {
131 uint32_t oheight;
133 void *mem; /* allocated for YV12 or YUY2 buffers */
134 uint8_t *real_base[3]; /* yuv/yuy2 buffers in mem aligned on 16 */
135 int swap_fields; /* shifts Y buffer one line to exchange odd/even lines */
137
141 int (*on_frame_copy)(dxr3_driver_t *, dxr3_frame_t *, uint8_t **src);
145
146 /* this is only used by the libavcodec encoder */
147 void *handle;
148};
149
153 uint8_t *target;
154 int size;
156 uint32_t color[16];
157 uint8_t trans[4];
159 uint32_t hili_color[16];
160 uint8_t hili_trans[4];
162};
163
164/* mpeg encoder plugins initialization functions */
165#ifdef HAVE_LIBRTE
166int dxr3_rte_init(dxr3_driver_t *);
167#endif
168#ifdef HAVE_LIBFAME
169int dxr3_fame_init(dxr3_driver_t *);
170#endif
172
173/* spu encoder functions */
176
177#define dxr3_video_setpts(fd,arg) dxr3_compat_ioctl((fd), EM8300_IOCTL_VIDEO_SETPTS, (arg))
178#define dxr3_spu_setpts(fd,arg) dxr3_compat_ioctl((fd), EM8300_IOCTL_SPU_SETPTS, (arg))
179#define dxr3_spu_setpalette(fd,arg) dxr3_compat_ioctl((fd), EM8300_IOCTL_SPU_SETPALETTE, (arg))
180#define dxr3_spu_button(fd,arg) dxr3_compat_ioctl((fd), EM8300_IOCTL_SPU_BUTTON, (arg))
181int dxr3_compat_ioctl (int, int, void *);
#define OVL_PALETTE_SIZE
Definition: video_out.h:280
Definition: alphablend.h:30
Definition: video_out_dxr3.h:45
float m
Definition: video_out_dxr3.h:46
float k
Definition: video_out_dxr3.h:46
Definition: video_out_dxr3.h:70
int devnum
Definition: video_out_dxr3.h:77
xine_t * xine
Definition: video_out_dxr3.h:72
int instance
Definition: video_out_dxr3.h:75
video_driver_class_t video_driver_class
Definition: video_out_dxr3.h:71
int visual_type
Definition: video_out_dxr3.h:74
Definition: video_out_dxr3.h:80
int tv_mode
Definition: video_out_dxr3.h:97
int tv_switchable
Definition: video_out_dxr3.h:100
int add_bars
Definition: video_out_dxr3.h:94
int enhanced_mode
Definition: video_out_dxr3.h:92
dxr3_overlay_t overlay
Definition: video_out_dxr3.h:118
int clut_cluttered
Definition: video_out_dxr3.h:90
int video_aspect
Definition: video_out_dxr3.h:112
spu_encoder_t * spu_enc
Definition: video_out_dxr3.h:105
uint32_t video_width
Definition: video_out_dxr3.h:110
int widescreen_enabled
Definition: video_out_dxr3.h:101
double video_ratio
Definition: video_out_dxr3.h:111
dxr3_scr_t * scr
Definition: video_out_dxr3.h:83
em8300_bcs_t bcs
Definition: video_out_dxr3.h:102
pthread_mutex_t spu_device_lock
Definition: video_out_dxr3.h:88
int overlay_enabled
Definition: video_out_dxr3.h:99
pthread_mutex_t video_device_lock
Definition: video_out_dxr3.h:86
int fd_spu
Definition: video_out_dxr3.h:89
int aspect
Definition: video_out_dxr3.h:96
vo_driver_t vo_driver
Definition: video_out_dxr3.h:81
int need_update
Definition: video_out_dxr3.h:106
int fd_control
Definition: video_out_dxr3.h:85
int fd_video
Definition: video_out_dxr3.h:87
int pan_scan
Definition: video_out_dxr3.h:98
int swap_fields
Definition: video_out_dxr3.h:93
int top_bar
Definition: video_out_dxr3.h:113
vo_scale_t scale
Definition: video_out_dxr3.h:115
alphablend_t alphablend_extra_data
Definition: video_out_dxr3.h:116
uint32_t video_iheight
Definition: video_out_dxr3.h:108
uint32_t video_oheight
Definition: video_out_dxr3.h:109
encoder_data_t * enc
Definition: video_out_dxr3.h:104
Definition: video_out_dxr3.h:129
int swap_fields
Definition: video_out_dxr3.h:135
vo_frame_t vo_frame
Definition: video_out_dxr3.h:130
int pan_scan
Definition: video_out_dxr3.h:132
uint32_t oheight
Definition: video_out_dxr3.h:131
int aspect
Definition: video_out_dxr3.h:132
void * mem
Definition: video_out_dxr3.h:133
uint8_t * real_base[3]
Definition: video_out_dxr3.h:134
Definition: video_out_dxr3.h:49
int screen_depth
Definition: video_out_dxr3.h:63
int fd_control
Definition: video_out_dxr3.h:52
float color_interval
Definition: video_out_dxr3.h:60
int screen_xres
Definition: video_out_dxr3.h:61
xine_t * xine
Definition: video_out_dxr3.h:50
int xcorr
Definition: video_out_dxr3.h:56
struct coeff colcal_upper[3]
Definition: video_out_dxr3.h:66
int shrink
Definition: video_out_dxr3.h:64
int colorkey
Definition: video_out_dxr3.h:59
int stability
Definition: video_out_dxr3.h:58
int xoffset
Definition: video_out_dxr3.h:54
int yoffset
Definition: video_out_dxr3.h:55
int screen_yres
Definition: video_out_dxr3.h:62
struct coeff colcal_lower[3]
Definition: video_out_dxr3.h:67
int jitter
Definition: video_out_dxr3.h:57
Definition: dxr3_scr.h:25
Definition: em8300.h:44
Definition: video_out_dxr3.h:138
int(* on_frame_copy)(dxr3_driver_t *, dxr3_frame_t *, uint8_t **src)
Definition: video_out_dxr3.h:141
int(* on_unneeded)(dxr3_driver_t *)
Definition: video_out_dxr3.h:143
int(* on_close)(dxr3_driver_t *)
Definition: video_out_dxr3.h:144
void * handle
Definition: video_out_dxr3.h:147
encoder_type type
Definition: video_out_dxr3.h:139
int(* on_display_frame)(dxr3_driver_t *, dxr3_frame_t *)
Definition: video_out_dxr3.h:142
int(* on_update_format)(dxr3_driver_t *, dxr3_frame_t *)
Definition: video_out_dxr3.h:140
Definition: plugin_catalog.h:44
Definition: video_out_dxr3.h:150
int clip_map[OVL_PALETTE_SIZE]
Definition: video_out_dxr3.h:161
uint8_t hili_trans[4]
Definition: video_out_dxr3.h:160
uint32_t color[16]
Definition: video_out_dxr3.h:156
int malloc_size
Definition: video_out_dxr3.h:155
int size
Definition: video_out_dxr3.h:154
uint8_t * target
Definition: video_out_dxr3.h:153
uint8_t trans[4]
Definition: video_out_dxr3.h:157
vo_overlay_t * overlay
Definition: video_out_dxr3.h:151
int need_reencode
Definition: video_out_dxr3.h:152
int map[OVL_PALETTE_SIZE]
Definition: video_out_dxr3.h:158
uint32_t hili_color[16]
Definition: video_out_dxr3.h:159
Definition: video_out.h:426
Definition: video_out.h:50
Definition: video_out.h:59
Definition: video_out.h:472
Definition: vo_scale.h:39
Definition: xine_internal.h:80
struct dxr3_overlay_s dxr3_overlay_t
struct dxr3_driver_s dxr3_driver_t
void dxr3_spu_encode(spu_encoder_t *)
Definition: dxr3_spu_encoder.c:84
int dxr3_lavc_init(dxr3_driver_t *, plugin_node_t *)
Definition: ffmpeg_encoder.c:89
int dxr3_compat_ioctl(int, int, void *)
Definition: compat.c:31
spu_encoder_t * dxr3_spu_encoder_init(void)
Definition: dxr3_spu_encoder.c:72
encoder_type
Definition: video_out_dxr3.h:42
@ ENC_LAVC
Definition: video_out_dxr3.h:42
@ ENC_RTE
Definition: video_out_dxr3.h:42
@ ENC_FAME
Definition: video_out_dxr3.h:42
struct dxr3_frame_s dxr3_frame_t
struct dxr3_driver_class_s dxr3_driver_class_t
char key[16]
Definition: xine_speex_decoder.c:94