drop directfb #352

This commit is contained in:
niels
2026-05-02 03:47:17 +02:00
parent e850183767
commit abea17b77f
12 changed files with 5 additions and 517 deletions
-1
View File
@@ -244,7 +244,6 @@ see also : [How to video wall](./veejay-current/veejay-server/doc/video-wall.md)
* Support for Frei0r plugins
* Support for LiVIDO plugins
* Support for FreeFrame plugins (only for 32 bit systems!)
* Support for GMIC plugins
* Android client!
-1
View File
@@ -149,7 +149,6 @@ Plugins and more...
----------
# Support for Frei0r plugins
# Support for LiVIDO plugins
# Support for FreeFrame plugins (only for 32 bit systems!)
# Android server!
+1 -21
View File
@@ -69,10 +69,7 @@ AC_ARG_WITH([pixbuf],
AC_ARG_WITH([playthread],
AS_HELP_STRING([--without-playthread],[Do not use playback thread]),
[], [with_playthread=yes])
AC_ARG_WITH([directfb],
AS_HELP_STRING([--without-directfb],[Do not use DirectFB.]),
[], [with_directfb=yes])
AC_ARG_WITH([sdl],
AS_HELP_STRING([--without-sdl],[Do not use SDL.]),
[], [with_sdl=yes])
@@ -1002,21 +999,6 @@ else
AC_DEFINE(HAVE_LIBLO,1,[define if liblo])
fi
dnl *********************************************************************
dnl Check for the DirectFB library (for Matrox G550 Tvout)
dnl
have_directfb=false
if test x$with_directfb != xno ; then
PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.17, have_directfb=true,
have_directfb=false)
if test x$have_directfb = xtrue ; then
AC_SUBST(DIRECTFB_LIBS)
AC_SUBST(DIRECTFB_CFLAGS)
AC_DEFINE(HAVE_DIRECTFB,1,[Compiling with DirectFB])
fi
fi
dnl *********************************************************************
dnl Check for the Jack Audio connection kit
dnl AC_DEFINE(HAVE_JACK,,[Compiling with support for Jack])
@@ -1141,7 +1123,6 @@ AM_CONDITIONAL(HAVE_SSE2, test x$have_asm_sse2 = xtrue)
AM_CONDITIONAL(HAVE_SDL, test x$have_sdl = xtrue)
AM_CONDITIONAL(HAVE_XML2, test x$have_xml2 = xtrue)
AM_CONDITIONAL(HAVE_JACK, test x$have_jack = xtrue)
AM_CONDITIONAL(HAVE_DIRECTFB, test x$have_directfb = xtrue)
AM_CONDITIONAL(HAVE_FREETYPE, test x$have_freetype = xtrue)
AM_CONDITIONAL(HAVE_V4L2, test x$have_v4l2 = xtrue)
AM_CONDITIONAL(SUPPORT_READ_DV2, test x$have_libdv = xtrue)
@@ -1287,7 +1268,6 @@ AC_MSG_NOTICE([ - XML c library for Gnome : ${have_xml2}])
AC_MSG_NOTICE([ - JPEG support : ${have_jpeg} ])
AC_MSG_NOTICE([ - GDK Pixbuf support : ${have_pixbuf}])
AC_MSG_NOTICE([ Optional dependencies])
AC_MSG_NOTICE([ - DirectFB support : ${have_directfb}])
AC_MSG_NOTICE([ - libDV (digital video) support : ${have_libdv} ])
AC_MSG_NOTICE([ - QuickTime support : ${have_libquicktime} ])
AC_MSG_NOTICE([ - Jack Audio Connection Kit : ${have_jack}])
@@ -322,7 +322,6 @@ usable without them.
- (optional) libdv >= 1.02
- (optional) The SDL library >= 2.0.0
- (optional) JACK low latency audio server >= 0.98.1
- (optional) DirectFB >= 0.9.17
- (optional) FreeType >= 2.1.9
- (optional) GTK >= 3.22.0
- (optional) libqrencode >= 3.4.2
@@ -1000,7 +999,6 @@ as packages you can use in combination with veejay.
- [Quasar DV Codec - libdv.sourceforge.net/](http://libdv.sourceforge.net/)
- [Simple DirectMedia Layer - libsdl.org](https://libsdl.org/)
- [The XML C library for Gnome - xmlsoft.org](http://www.xmlsoft.org/)
- [DirectFB - directfb.org](http://www.directfb.org) (outdated)
- [JACK - jackaudio.org](http://jackaudio.org/)
- [FreeType - freetype.org](https://www.freetype.org/)
- [Ffmpeg - ffmpeg.org](https://ffmpeg.org)
@@ -27,7 +27,6 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) \
$(DV_FLAGS) \
$(X_CFLAGS) \
$(LIBLO_CFLAGS) \
$(DIRECTFB_CFLAGS) \
$(SDL2_CFLAGS) \
$(JPEG_CFLAGS) \
$(JACK_CFLAGS) \
@@ -81,7 +80,6 @@ libveejay_la_LIBADD = \
$(top_builddir)/libqrwrap/libqrwrap.la \
$(top_builddir)/libvjxml/libvjxml.la \
$(SDL2_LIBS) \
$(DIRECTFB_LIBS) \
$(X_LIBS) \
$(PTHREAD_LIBS) \
$(FT_LDFLAGS) \
@@ -109,9 +109,7 @@
#ifdef HAVE_SDL
#include <SDL2/SDL.h>
#endif
#ifdef HAVE_DIRECTFB
#include <libveejay/vj-dfb.h>
#endif
#ifdef STRICT_CHECKING
#include <assert.h>
#endif
@@ -1861,40 +1859,10 @@ int veejay_setup_video_out(veejay_t *info) {
break;
case 1:
veejay_msg(VEEJAY_MSG_INFO, "Using output driver DirectFB");
#ifdef HAVE_DIRECTFB
info->dfb =(vj_dfb *) vj_dfb_allocate(info->video_output_width,info->video_output_height,el->video_norm);
if( !info->dfb )
return -1;
if (vj_dfb_init(info->dfb) != 0)
return -1;
#endif
break;
case 2:
veejay_msg(VEEJAY_MSG_INFO,
"Using output driver SDL & DirectFB");
#ifdef HAVE_SDL
info->sdl = vj_sdl_allocate(info->effect_frame1, info->use_keyb,info->use_mouse,info->show_cursor, info->borderless);
if(!info->sdl)
return -1;
title = veejay_title(info);
if (!vj_sdl_init(info->sdl,x,y,info->video_output_width, info->video_output_height, info->bes_width, info->bes_height,title,1,info->settings->full_screen,info->pixel_format, el->video_fps, &settings->vsync_interval_s)) {
free(title);
return -1;
}
free(title);
#endif
#ifdef HAVE_DIRECTFB
info->dfb = (vj_dfb *) vj_dfb_allocate( info->video_output_width, info->video_output_height, el->video_norm);
if(!info->dfb)
return -1;
if (vj_dfb_init(info->dfb) != 0)
return -1;
#endif
break;
case 3:
case 4:
@@ -3288,12 +3256,6 @@ static void veejay_playback_close(veejay_t *info)
}
vj_sdl_quit();
#endif
#ifdef HAVE_DIRECTFB
if( info->dfb ) {
vj_dfb_free(info->dfb);
free(info->dfb);
}
#endif
#ifdef HAVE_FREETYPE
//vj_font_destroy( info->font );
vj_font_destroy( info->osd );
@@ -3512,16 +3474,6 @@ veejay_t *veejay_malloc()
veejay_memset( info->dummy, 0, sizeof(dummy_t));
veejay_memset(&(info->settings->sws_templ), 0, sizeof(sws_template));
#ifdef HAVE_SDL
info->video_out = 0;
#else
#ifdef HAVE_DIRECTFB
info->video_out = 1;
#else
info->video_out = 3;
#endif
#endif
info->pixel_format = FMT_422F; //@default
info->settings->ncpu = smp_check();
@@ -1,341 +0,0 @@
/*
* Linux VeeJay
*
* Copyright(C)2002-2004 Niels Elburg <nwelburg@gmail.com>
*
* This program 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.
*
* This program 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 this program; if not, write to the Free Software
*/
/* DirectFB support, this file is part of veejay
code inspired by mplayer and dfbtv
*/
#include <stdio.h>
#include <stdint.h>
#include <veejaycore/vjmem.h>
#include <stdlib.h>
#include <config.h>
#ifdef HAVE_DIRECTFB
#include "vj-dfb.h"
void *vj_dfb_allocate(int width, int height, int norm)
{
vj_dfb *dfb = (vj_dfb *) malloc(sizeof(vj_dfb));
if (!dfb)
return NULL;
dfb->buffer = NULL;
dfb->screen_width = 0;
dfb->screen_height = 0;
dfb->screen_framebuffer = 0;
dfb->screen_pitch = 0;
sprintf(dfb->dev_name, "%s", "/dev/fb0");
fprintf(stderr, "DirectFB: using [%s]\n", dfb->dev_name);
dfb->width = width;
dfb->height = height;
dfb->norm = norm;
dfb->stretch = 0;
return (void*)dfb;
}
int vj_dfb_init(void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
DFBDisplayLayerConfig dlc;
DFBDisplayLayerConfigFlags failed;
DFBSurfaceDescription dsc;
int n;
DirectFBInit(0, 0);
DirectFBSetOption("fbdev", framebuffer->dev_name);
DirectFBSetOption("no-cursor", "");
DirectFBSetOption("bg-color", "00000000");
DirectFBSetOption("matrox-crtc2", "");
DirectFBSetOption("matrox-tv-standard",
framebuffer->norm ? "pal" : "ntsc");
fprintf(stderr, "DirectFB: PAL = %s\n",
framebuffer->norm ? "pal" : "ntsc");
framebuffer->bufs[0] = framebuffer->bufs[1] = framebuffer->bufs[2] =
NULL;
DirectFBCreate(&framebuffer->d);
framebuffer->d->GetDisplayLayer(framebuffer->d, 2,
&(framebuffer->crtc2));
if (!framebuffer->crtc2) {
fprintf(stderr, "Unable to initialize display layern");
return -1;
}
framebuffer->crtc2->SetCooperativeLevel(framebuffer->crtc2,
DLSCL_EXCLUSIVE);
framebuffer->d->GetInputDevice(framebuffer->d, DIDID_KEYBOARD,
&(framebuffer->keyboard));
framebuffer->keyboard->CreateEventBuffer(framebuffer->keyboard,
&(framebuffer->buffer));
framebuffer->buffer->Reset(framebuffer->buffer);
dlc.flags = DLCONF_PIXELFORMAT | DLCONF_BUFFERMODE;
dlc.buffermode = DLBM_BACKVIDEO;
dlc.pixelformat = DSPF_I420;
dsc.flags = DSDESC_WIDTH | DSDESC_HEIGHT | DSDESC_PIXELFORMAT;
dsc.width = framebuffer->width;
dsc.height = framebuffer->height;
dsc.pixelformat = dlc.pixelformat;
if (framebuffer->d->CreateSurface(framebuffer->d, &dsc,
&framebuffer->frame) != DFB_OK)
return -1;
if (framebuffer->crtc2->TestConfiguration(framebuffer->crtc2,
&dlc, &failed) != DFB_OK) {
fprintf(stderr, "TestConfiguration failed\n");
return -1;
}
framebuffer->crtc2->SetConfiguration(framebuffer->crtc2, &dlc);
framebuffer->crtc2->GetSurface(framebuffer->crtc2,
&(framebuffer->c2frame)
);
framebuffer->c2frame->GetSize(framebuffer->c2frame,
&(framebuffer->screen_width),
&(framebuffer->screen_height)
);
fprintf(stderr, "DirectFB: Screen is %d x %d , Video is %d x %d\n",
framebuffer->screen_width, framebuffer->screen_height,
framebuffer->width, framebuffer->height);
if (framebuffer->width != framebuffer->screen_width ||
framebuffer->height != framebuffer->screen_height) {
framebuffer->stretch = 1;
}
framebuffer->drect.x =
(framebuffer->screen_width - framebuffer->width) / 2;
framebuffer->drect.y =
(framebuffer->screen_height - framebuffer->height) / 2;
framebuffer->drect.w = framebuffer->width;
framebuffer->drect.h = framebuffer->height;
framebuffer->c2frame->Clear(framebuffer->c2frame, 0, 0, 0, 0xff);
framebuffer->c2frame->Flip(framebuffer->c2frame, NULL, 0);
framebuffer->c2frame->Clear(framebuffer->c2frame, 0, 0, 0, 0xff);
framebuffer->c2frame->GetPixelFormat(framebuffer->c2frame,
&(framebuffer->frame_format)
);
framebuffer->frame->GetPixelFormat(framebuffer->frame,
&(framebuffer->frame_format)
);
fprintf(stderr, "DirectFB: Frame format = ");
switch (framebuffer->frame_format) {
case DSPF_I420:
fprintf(stderr, "I420\n");
break;
default:
fprintf(stderr, "Wrong pixel format!\n");
break;
}
framebuffer->crtc2->SetOpacity(framebuffer->crtc2, 0xff);
return 0;
}
int vj_dfb_lock(void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
if (!framebuffer)
return -1;
framebuffer->c2frame->Lock(framebuffer->c2frame,
DSLF_WRITE,
&(framebuffer->screen_framebuffer),
&(framebuffer->screen_pitch)
);
return 0;
}
int vj_dfb_unlock(void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
if (!framebuffer)
return -1;
framebuffer->c2frame->Unlock(framebuffer->c2frame);
return 0;
}
int vj_dfb_free(void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*)ptr;
if (!framebuffer)
return -1;
if (framebuffer->buffer) {
framebuffer->buffer->Release(framebuffer->buffer);
}
if (framebuffer->keyboard) {
framebuffer->keyboard->Release(framebuffer->keyboard);
}
if (framebuffer->c2frame) {
framebuffer->c2frame->Release(framebuffer->c2frame);
}
if (framebuffer->crtc2) {
framebuffer->crtc2->Release(framebuffer->crtc2);
}
if (framebuffer->d) {
framebuffer->d->Release(framebuffer->d);
}
return 0;
}
void vj_dfb_wait_for_sync( void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
framebuffer->d->WaitForSync(framebuffer->d);
}
int vj_dfb_get_pitch( void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
return (int) framebuffer->screen_pitch;
}
uint8_t *vj_dfb_get_address(void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
return (uint8_t *) framebuffer->screen_framebuffer;
}
int vj_dfb_get_output_field( void *ptr)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
int fieldid;
framebuffer->crtc2->GetCurrentOutputField(framebuffer->crtc2,
&fieldid);
return fieldid;
}
/*
int vj_dfb_update_yuv_overlay(void *ptr , uint8_t **frame) {
uint8_t *output;
vj_dfb *framebuffer = (vj_dfb*) ptr;
int pitch,i,p;
while(vj_dfb_get_output_field(framebuffer) != 0) {
fprintf(stderr, "resyncing...\n");
vj_dfb_wait_for_sync(framebuffer);
}
if(vj_dfb_lock(framebuffer)!=0) return -1;
output = vj_dfb_get_address(framebuffer);
pitch = vj_dfb_get_pitch(framebuffer);
p = pitch;
if(p > framebuffer->width) p = framebuffer->width;
for(i=0; i < framebuffer->height; i++) {
veejay_memcpy(output+i*pitch, frame[0]+i*framebuffer->width, p);
}
output += pitch * framebuffer->height;
p = p / 2;
for(i=0; i < framebuffer->height/2; i++) {
veejay_memcpy(output+i*pitch/2, frame[1] + i * framebuffer->width/2, p);
}
output += pitch * framebuffer->height/4;
for(i=0; i < framebuffer->height/2; i++) {
veejay_memcpy(output+i * pitch/2, frame[2] + i * framebuffer->width/2, p);
}
if(vj_dfb_unlock(framebuffer)!=0) return -1;
vj_dfb_wait_for_sync(framebuffer);
return 0;
}
*/
int vj_dfb_update_yuv_overlay(void *ptr, uint8_t ** frame)
{
vj_dfb *framebuffer = (vj_dfb*) ptr;
void *dst;
int i, p, pitch;
if (framebuffer->frame->Lock(framebuffer->frame,
DSLF_WRITE, &dst, &pitch) != DFB_OK)
return -1;
p = pitch;
if (p > framebuffer->width)
p = framebuffer->width;
for (i = 0; i < framebuffer->height; i++) {
veejay_memcpy(dst + i * pitch, frame[0] + i * framebuffer->width, p);
}
dst += pitch * framebuffer->height;
p = p / 2;
for (i = 0; i < framebuffer->height / 2; i++) {
veejay_memcpy(dst + i * pitch / 2, frame[1] + i * framebuffer->width / 2,
p);
}
dst += pitch * framebuffer->height / 4;
for (i = 0; i < framebuffer->height / 2; i++) {
veejay_memcpy(dst + i * pitch / 2, frame[2] + i * framebuffer->width / 2,
p);
}
framebuffer->frame->Unlock(framebuffer->frame);
framebuffer->c2frame->SetBlittingFlags(framebuffer->c2frame,
DSBLIT_NOFX);
if (framebuffer->stretch) {
framebuffer->c2frame->StretchBlit(framebuffer->c2frame,
framebuffer->frame, NULL,
//&(framebuffer->drect)
NULL);
} else {
framebuffer->c2frame->Blit(framebuffer->c2frame,
framebuffer->frame,
NULL,
framebuffer->drect.x,
framebuffer->drect.y);
}
framebuffer->c2frame->Flip(framebuffer->c2frame, NULL,
DSFLIP_WAITFORSYNC);
return 0;
}
#endif
@@ -1,71 +0,0 @@
/*
* Linux VeeJay
*
* Copyright(C)2002-2004 Niels Elburg <nwelburg@gmail.com>
*
* This program 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.
*
* This program 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 this program; if not, write to the Free Software
*/
#ifndef VJ_DFB_H
#define VJ_DFB_H
#include <config.h>
#ifdef HAVE_DIRECTFB
#include <directfb.h>
#include <linux/fb.h>
#include <stdint.h>
typedef struct vj_dfb_t {
IDirectFB *d;
IDirectFBDisplayLayer *crtc2;
IDirectFBSurface *bufs[3];
IDirectFBSurface *c2frame;
IDirectFBSurface *frame;
DFBRectangle drect;
DFBSurfacePixelFormat frame_format;
IDirectFBInputDevice *keyboard;
IDirectFBEventBuffer *buffer;
unsigned int screen_width;
unsigned int screen_height;
void *screen_framebuffer;
int screen_pitch;
int stretch;
int width;
int height;
char dev_name[100];
int norm;
} vj_dfb;
void *vj_dfb_allocate(int width, int height, int norm);
int vj_dfb_init(void *dfb);
int vj_dfb_lock(void *dfb);
int vj_dfb_unlock(void * dfb);
int vj_dfb_update_yuv_overlay(void * dfb, uint8_t ** yuv420);
int vj_dfb_free(void * dfb);
void vj_dfb_wait_for_sync();
int vj_dfb_get_pitch( void *dfb);
int vj_dfb_update_yuv_overlay(void *dfb, uint8_t ** frame);
uint8_t *vj_dfb_get_address(void *dfb );
int vj_dfb_get_output_field( void *dfb );
#endif
#endif
@@ -440,9 +440,6 @@ typedef struct {
VJFrameInfo *effect_frame_info2;
vjp_kf *effect_info2; /* effect dependent variables */
vjp_kf *effect_info; /* effect dependent variables */
#ifdef HAVE_DIRECTFB
void *dfb;
#endif
int video_out;
#ifdef HAVE_GL
void *gl;
+2 -2
View File
@@ -83,8 +83,8 @@ Specify video output height
.B \-O/--output [0..8]
Specify video output:
0 = SDL (default)
1 = DirectFB
2 = SDL and DirectFB
1 = (unused)
2 = (unused)
3 = OpenGL (requires ARB fragment shader)
4 = Y4M Stream 4:2:0
5 = VLOOPBACK (native)
+1 -13
View File
@@ -1,5 +1,5 @@
# norootforbuild
# neededforbuild update-desktop-files gtk2-devel-packages glib2 gtk2 libglade3 libdv libxml2 jack DirectFB SDL libjpeg freetype2 gtk2-devel glib2-devel libglade-devel libxml2-devel jack-devel pkgconfig SDL-devel libjpeg-devel freetype2-devel valgrind alsa-devel alsa slang-devel slang libstdc++-devel libstdc++ zlib-devel zlib
# neededforbuild update-desktop-files gtk2-devel-packages glib2 gtk2 libglade3 libdv libxml2 jack SDL libjpeg freetype2 gtk2-devel glib2-devel libglade-devel libxml2-devel jack-devel pkgconfig SDL-devel libjpeg-devel freetype2-devel valgrind alsa-devel alsa slang-devel slang libstdc++-devel libstdc++ zlib-devel zlib
%define name veejay
%define version 1.5
@@ -115,15 +115,3 @@ rm -f %{buildroot}%{_libdir}/lib*.la
%{_mandir}/man1/*
%changelog -n veejay
* Jan 2015 - update build (niels)
* Wed Mar 21 2007 - cleanup
* Sat Nov 20 2005 - bla
* Sat Apr 23 2005 - oc2pus@arcor.de 0.8-0.oc2pus.1
- update to 0.8
- patched configure for using glib2-2.4.*, gtk2-2.4.*, libglade2-2.2.*
- patched gveejay sources for using gtk2-2.4
* Fri Apr 15 2005 - oc2pus@arcor.de 0.7.3-0.oc2pus.2
- directfb re-enabled
* Mon Mar 21 2005 - oc2pus@arcor.de 0.7.3-0.oc2pus.1
- initial rpm
- directfb disabled, doesn't compile
@@ -215,9 +215,6 @@ static void CompiledWith(void)
#ifdef HAVE_LIBUNWIND
fprintf(stdout, "\tSupport for stack unwinding\n");
#endif
#ifdef HAVE_DIRECTFB
fprintf(stdout,"\tSupport for Direct Framebuffer\n");
#endif
#ifdef HAVE_LIBLO
fprintf(stdout,"\tSupport for liblo\n");
#endif
@@ -292,14 +289,6 @@ static void Usage(char *progname)
#ifdef HAVE_SDL
fprintf(stderr,
"\t\t\t\t0 = SDL (default)\t\n");
#endif
#ifdef HAVE_DIRECTFB
fprintf(stderr,
"\t\t\t\t1 = DirectDB\t\n");
#ifdef HAVE_SDL
fprintf(stderr,
"\t\t\t\t2 = SDL and DirectDB secondary head (TV-Out) clone mode\n");
#endif
#endif
fprintf(stderr,
"\t\t\t\t3 = Head less (no video output)\n");