summaryrefslogtreecommitdiffstats
path: root/libvo/vo_cvidix.c
diff options
context:
space:
mode:
authorfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-05 15:34:40 +0000
committerfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-10-05 15:34:40 +0000
commit54818d9782c00ceb0b431ba4093c4921738bb244 (patch)
tree51d881f5236ff62f738439b6be94dd673928489e /libvo/vo_cvidix.c
parent216733657103281462206dfdcbc9d5b4153d25d2 (diff)
downloadmpv-54818d9782c00ceb0b431ba4093c4921738bb244.tar.bz2
mpv-54818d9782c00ceb0b431ba4093c4921738bb244.tar.xz
consolevidix -> cvidix
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11018 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/vo_cvidix.c')
-rw-r--r--libvo/vo_cvidix.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/libvo/vo_cvidix.c b/libvo/vo_cvidix.c
new file mode 100644
index 0000000000..981f344200
--- /dev/null
+++ b/libvo/vo_cvidix.c
@@ -0,0 +1,119 @@
+/*
+ VIDIX accelerated overlay on black background
+ should work on any OS
+ TODO: implement blanking, aspect, geometry,fs etc.
+
+ (C) Sascha Sommer
+
+
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <errno.h>
+
+#include "config.h"
+#include "video_out.h"
+#include "video_out_internal.h"
+
+#include "mp_msg.h"
+
+#include "vosub_vidix.h"
+#include "../vidix/vidixlib.h"
+
+
+static vo_info_t info = {
+ "VIDIX",
+ "cvidix",
+ "Sascha Sommer",
+ ""
+};
+
+LIBVO_EXTERN(cvidix)
+
+#define UNUSED(x) ((void)(x)) /* Removes warning about unused arguments */
+
+/* VIDIX related */
+static char *vidix_name;
+
+
+static vidix_grkey_t gr_key;
+
+static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width,uint32_t d_height, uint32_t flags, char *title, uint32_t format){
+ if(vidix_init(width, height, 0, 0, d_width, d_height, format, 32, 640, 480))mp_msg(MSGT_VO, MSGL_FATAL, "Can't initialize VIDIX driver: %s\n", strerror(errno));
+ /*set colorkey*/
+ vidix_start();
+ if(vidix_grkey_support()){
+ vidix_grkey_get(&gr_key);
+ gr_key.key_op = KEYS_PUT;
+ gr_key.ckey.op = CKEY_TRUE;
+ gr_key.ckey.red = gr_key.ckey.green = gr_key.ckey.blue = 0;
+ vidix_grkey_set(&gr_key);
+ }
+ return 0;
+}
+
+static void check_events(void){
+}
+
+/* draw_osd, flip_page, draw_slice, draw_frame should be
+ overwritten with vidix functions (vosub_vidix.c) */
+static void draw_osd(void){
+ mp_msg(MSGT_VO, MSGL_FATAL, "vo_consolevidix: error: didn't use vidix draw_osd!\n");
+ return;
+}
+
+static void flip_page(void){
+ mp_msg(MSGT_VO, MSGL_FATAL, "vo_consolevidix: error: didn't use vidix flip_page!\n");
+ return;
+}
+
+static uint32_t draw_slice(uint8_t *src[], int stride[],int w, int h, int x, int y){
+ UNUSED(src);
+ UNUSED(stride);
+ UNUSED(w);
+ UNUSED(h);
+ UNUSED(x);
+ UNUSED(y);
+ mp_msg(MSGT_VO, MSGL_FATAL, "vo_consolevidix: error: didn't use vidix draw_slice!\n");
+ return -1;
+}
+
+static uint32_t draw_frame(uint8_t *src[]){
+ UNUSED(src);
+ mp_msg(MSGT_VO, MSGL_FATAL, "vo_consolevidix: error: didn't use vidix draw_frame!\n");
+ return -1;
+}
+
+static uint32_t query_format(uint32_t format){
+ return(vidix_query_fourcc(format));
+}
+
+static void uninit(void){
+ if(!vo_config_count) return;
+ vidix_term();
+ if(vidix_name){
+ free(vidix_name);
+ vidix_name = NULL;
+ }
+}
+
+static uint32_t preinit(const char *arg){
+ if(arg)vidix_name = strdup(arg);
+ else {
+ mp_msg(MSGT_VO, MSGL_INFO, "vo_consolevidix: No vidix driver name provided, probing available ones!\n");
+ vidix_name = NULL;
+ }
+ if(vidix_preinit(vidix_name, &video_out_consolevidix))return 1;
+ return 0;
+}
+
+static uint32_t control(uint32_t request, void *data, ...){
+ switch (request) {
+ case VOCTRL_QUERY_FORMAT:
+ return query_format(*((uint32_t*)data));
+ }
+ return vidix_control(request, data);
+}