summaryrefslogtreecommitdiffstats
path: root/libvo/video_out.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-11-05 17:02:04 +0100
committerwm4 <wm4@nowhere>2012-11-12 20:06:14 +0100
commitd4bdd0473d6f43132257c9fb3848d829755167a3 (patch)
tree8021c2f7da1841393c8c832105e20cd527826d6c /libvo/video_out.h
parentbd48deba77bd5582c5829d6fe73a7d2571088aba (diff)
downloadmpv-d4bdd0473d6f43132257c9fb3848d829755167a3.tar.bz2
mpv-d4bdd0473d6f43132257c9fb3848d829755167a3.tar.xz
Rename directories, move files (step 1 of 2) (does not compile)
Tis drops the silly lib prefixes, and attempts to organize the tree in a more logical way. Make the top-level directory less cluttered as well. Renames the following directories: libaf -> audio/filter libao2 -> audio/out libvo -> video/out libmpdemux -> demux Split libmpcodecs: vf* -> video/filter vd*, dec_video.* -> video/decode mp_image*, img_format*, ... -> video/ ad*, dec_audio.* -> audio/decode libaf/format.* is moved to audio/ - this is similar to how mp_image.* is located in video/. Move most top-level .c/.h files to core. (talloc.c/.h is left on top- level, because it's external.) Park some of the more annoying files in compat/. Some of these are relicts from the time mplayer used ffmpeg internals. sub/ is not split, because it's too much of a mess (subtitle code is mixed with OSD display and rendering). Maybe the organization of core is not ideal: it mixes playback core (like mplayer.c) and utility helpers (like bstr.c/h). Should the need arise, the playback core will be moved somewhere else, while core contains all helper and common code.
Diffstat (limited to 'libvo/video_out.h')
-rw-r--r--libvo/video_out.h352
1 files changed, 0 insertions, 352 deletions
diff --git a/libvo/video_out.h b/libvo/video_out.h
deleted file mode 100644
index ac2ded9b3c..0000000000
--- a/libvo/video_out.h
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) Aaron Holtzman - Aug 1999
- * Strongly modified, most parts rewritten: A'rpi/ESP-team - 2000-2001
- * (C) MPlayer developers
- *
- * This file is part of MPlayer.
- *
- * MPlayer is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * MPlayer is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with MPlayer; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef MPLAYER_VIDEO_OUT_H
-#define MPLAYER_VIDEO_OUT_H
-
-#include <inttypes.h>
-#include <stdbool.h>
-
-#include "libmpcodecs/img_format.h"
-#include "mpcommon.h"
-
-#define VO_EVENT_EXPOSE 1
-#define VO_EVENT_RESIZE 2
-#define VO_EVENT_KEYPRESS 4
-#define VO_EVENT_REINIT 8
-#define VO_EVENT_MOVE 16
-
-enum mp_voctrl {
- /* does the device support the required format */
- VOCTRL_QUERY_FORMAT = 1,
- /* signal a device reset seek */
- VOCTRL_RESET,
- /* used to switch to fullscreen */
- VOCTRL_FULLSCREEN,
- /* signal a device pause */
- VOCTRL_PAUSE,
- /* start/resume playback */
- VOCTRL_RESUME,
- /* libmpcodecs direct rendering */
- VOCTRL_GET_IMAGE,
- VOCTRL_DRAW_IMAGE,
- VOCTRL_GET_PANSCAN,
- VOCTRL_SET_PANSCAN,
- VOCTRL_SET_EQUALIZER, // struct voctrl_set_equalizer_args
- VOCTRL_GET_EQUALIZER, // struct voctrl_get_equalizer_args
- VOCTRL_DUPLICATE_FRAME,
-
- VOCTRL_START_SLICE,
-
- VOCTRL_NEWFRAME,
- VOCTRL_SKIPFRAME,
- VOCTRL_REDRAW_FRAME,
-
- VOCTRL_ONTOP,
- VOCTRL_ROOTWIN,
- VOCTRL_BORDER,
-
- VOCTRL_SET_DEINTERLACE,
- VOCTRL_GET_DEINTERLACE,
-
- VOCTRL_UPDATE_SCREENINFO,
-
- VOCTRL_SET_YUV_COLORSPACE, // struct mp_csp_details
- VOCTRL_GET_YUV_COLORSPACE, // struct mp_csp_details
-
- VOCTRL_SCREENSHOT, // struct voctrl_screenshot_args
-
- VOCTRL_SET_COMMAND_LINE, // char*
-};
-
-// VOCTRL_SET_EQUALIZER
-struct voctrl_set_equalizer_args {
- const char *name;
- int value;
-};
-
-// VOCTRL_GET_EQUALIZER
-struct voctrl_get_equalizer_args {
- const char *name;
- int *valueptr;
-};
-
-// VOCTRL_SCREENSHOT
-struct voctrl_screenshot_args {
- // 0: Save image of the currently displayed video frame, in original
- // resolution.
- // 1: Save full screenshot of the window. Should contain OSD, EOSD, and the
- // scaled video.
- // The value of this variable can be ignored if only a single method is
- // implemented.
- int full_window;
- // Will be set to a newly allocated image, that contains the screenshot.
- // The caller has to free the pointer with free_mp_image().
- // It is not specified whether the image data is a copy or references the
- // image data directly.
- // Is never NULL. (Failure has to be indicated by returning VO_FALSE.)
- struct mp_image *out_image;
- // Whether the VO rendered OSD/subtitles into out_image
- bool has_osd;
-};
-
-typedef struct {
- int x,y;
- int w,h;
-} mp_win_t;
-
-#define VO_TRUE 1
-#define VO_FALSE 0
-#define VO_ERROR -1
-#define VO_NOTAVAIL -2
-#define VO_NOTIMPL -3
-
-#define VOFLAG_FULLSCREEN 0x01
-#define VOFLAG_MODESWITCHING 0x02
-#define VOFLAG_SWSCALE 0x04
-#define VOFLAG_FLIPPING 0x08
-#define VOFLAG_HIDDEN 0x10 //< Use to create a hidden window
-#define VOFLAG_STEREO 0x20 //< Use to create a stereo-capable window
-#define VOFLAG_GL_DEBUG 0x40 // Hint to request debug OpenGL context
-
-typedef struct vo_info_s
-{
- /* driver name ("Matrox Millennium G200/G400" */
- const char *name;
- /* short name (for config strings) ("vdpau") */
- const char *short_name;
- /* author ("Aaron Holtzman <aholtzma@ess.engr.uvic.ca>") */
- const char *author;
- /* any additional comments */
- const char *comment;
-} vo_info_t;
-
-struct vo;
-struct osd_state;
-struct mp_image;
-
-struct vo_driver {
- // Driver uses new API
- bool is_new;
- // Driver buffers or adds (deinterlace) frames and will keep track
- // of pts values itself
- bool buffer_frames;
-
- const vo_info_t *info;
- /*
- * Preinitializes driver (real INITIALIZATION)
- * arg - currently it's vo_subdevice
- * returns: zero on successful initialization, non-zero on error.
- */
- int (*preinit)(struct vo *vo, const char *arg);
- /*
- * Initialize (means CONFIGURE) the display driver.
- * params:
- * width,height: image source size
- * d_width,d_height: size of the requested window size, just a hint
- * fullscreen: flag, 0=windowd 1=fullscreen, just a hint
- * title: window title, if available
- * format: fourcc of pixel format
- * returns : zero on successful initialization, non-zero on error.
- */
- int (*config)(struct vo *vo, uint32_t width, uint32_t height,
- uint32_t d_width, uint32_t d_height, uint32_t fullscreen,
- uint32_t format);
-
- /*
- * Control interface
- */
- int (*control)(struct vo *vo, uint32_t request, void *data);
-
- void (*draw_image)(struct vo *vo, struct mp_image *mpi, double pts);
-
- /*
- * Get extra frames from the VO, such as those added by VDPAU
- * deinterlace. Preparing the next such frame if any could be done
- * automatically by the VO after a previous flip_page(), but having
- * it as a separate step seems to allow making code more robust.
- */
- void (*get_buffered_frame)(struct vo *vo, bool eof);
-
- /*
- * Draw a planar YUV slice to the buffer:
- * params:
- * src[3] = source image planes (Y,U,V)
- * stride[3] = source image planes line widths (in bytes)
- * w,h = width*height of area to be copied (in Y pixels)
- * x,y = position at the destination image (in Y pixels)
- */
- int (*draw_slice)(struct vo *vo, uint8_t *src[], int stride[], int w,
- int h, int x, int y);
-
- /*
- * Draws OSD to the screen buffer
- */
- void (*draw_osd)(struct vo *vo, struct osd_state *osd);
-
- /*
- * Blit/Flip buffer to the screen. Must be called after each frame!
- */
- void (*flip_page)(struct vo *vo);
- void (*flip_page_timed)(struct vo *vo, unsigned int pts_us, int duration);
-
- /*
- * This func is called after every frames to handle keyboard and
- * other events. It's called in PAUSE mode too!
- */
- void (*check_events)(struct vo *vo);
-
- /*
- * Closes driver. Should restore the original state of the system.
- */
- void (*uninit)(struct vo *vo);
-
- // Size of private struct for automatic allocation (0 doesn't allocate)
- int priv_size;
-
- // If not NULL, it's copied into the newly allocated private struct.
- const void *priv_defaults;
-
- // List of options to parse into priv struct (requires privsize to be set)
- const struct m_option *options;
-};
-
-struct vo {
- int config_ok; // Last config call was successful?
- int config_count; // Total number of successful config calls
- int default_caps; // query_format() result for configured video format
-
- bool frame_loaded; // Is there a next frame the VO could flip to?
- struct mp_image *waiting_mpi;
- double next_pts; // pts value of the next frame if any
- double next_pts2; // optional pts of frame after that
- bool want_redraw; // visible frame wrong (window resize), needs refresh
- bool redrawing; // between redrawing frame and flipping it
- bool hasframe; // >= 1 frame has been drawn, so redraw is possible
-
- double flip_queue_offset; // queue flip events at most this much in advance
-
- const struct vo_driver *driver;
- void *priv;
- struct MPOpts *opts;
- struct vo_x11_state *x11;
- struct vo_w32_state *w32;
- struct vo_cocoa_state *cocoa;
- struct mp_fifo *key_fifo;
- struct encode_lavc_context *encode_lavc_ctx;
- struct input_ctx *input_ctx;
- int event_fd; // check_events() should be called when this has input
- int registered_fd; // set to event_fd when registered in input system
-
- // requested position/resolution (usually window position/window size)
- int dx;
- int dy;
- int dwidth;
- int dheight;
-
- int panscan_x;
- int panscan_y;
- float panscan_amount;
- float monitor_par;
- struct aspect_data {
- int orgw; // real width
- int orgh; // real height
- int prew; // prescaled width
- int preh; // prescaled height
- float par; // pixel aspect ratio out of orgw/orgh and prew/preh
- int scrw; // horizontal resolution
- int scrh; // vertical resolution
- float asp;
- } aspdat;
-
- char *window_title;
-};
-
-struct vo *init_best_video_out(struct MPOpts *opts,
- struct mp_fifo *key_fifo,
- struct input_ctx *input_ctx,
- struct encode_lavc_context *encode_lavc_ctx);
-int vo_config(struct vo *vo, uint32_t width, uint32_t height,
- uint32_t d_width, uint32_t d_height, uint32_t flags,
- uint32_t format);
-void list_video_out(void);
-
-int vo_control(struct vo *vo, uint32_t request, void *data);
-int vo_draw_image(struct vo *vo, struct mp_image *mpi, double pts);
-int vo_redraw_frame(struct vo *vo);
-int vo_get_buffered_frame(struct vo *vo, bool eof);
-void vo_skip_frame(struct vo *vo);
-int vo_draw_slice(struct vo *vo, uint8_t *src[], int stride[], int w, int h, int x, int y);
-void vo_new_frame_imminent(struct vo *vo);
-void vo_draw_osd(struct vo *vo, struct osd_state *osd);
-void vo_flip_page(struct vo *vo, unsigned int pts_us, int duration);
-void vo_check_events(struct vo *vo);
-void vo_seek_reset(struct vo *vo);
-void vo_destroy(struct vo *vo);
-
-const char *vo_get_window_title(struct vo *vo);
-
-// NULL terminated array of all drivers
-extern const struct vo_driver *video_out_drivers[];
-
-extern int xinerama_screen;
-extern int xinerama_x;
-extern int xinerama_y;
-
-extern int vo_grabpointer;
-extern int vo_vsync;
-extern int vo_fs;
-extern int vo_fsmode;
-extern float vo_panscan;
-extern int vo_refresh_rate;
-extern int vo_keepaspect;
-extern int vo_rootwin;
-extern int vo_border;
-
-extern int vo_nomouse_input;
-extern int enable_mouse_movements;
-
-extern int vo_pts;
-extern float vo_fps;
-
-extern int vo_colorkey;
-
-extern int64_t WinID;
-
-struct mp_keymap {
- int from;
- int to;
-};
-int lookup_keymap_table(const struct mp_keymap *map, int key);
-
-void vo_mouse_movement(struct vo *vo, int posx, int posy);
-
-struct mp_osd_res;
-void vo_get_src_dst_rects(struct vo *vo, struct mp_rect *out_src,
- struct mp_rect *out_dst, struct mp_osd_res *out_osd);
-
-static inline int aspect_scaling(void)
-{
- return vo_keepaspect || vo_fs;
-}
-
-#endif /* MPLAYER_VIDEO_OUT_H */