diff options
-rw-r--r-- | DOCS/man/en/vo.rst | 11 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | configure | 26 | ||||
-rw-r--r-- | libvo/video_out.c | 4 | ||||
-rw-r--r-- | libvo/vo_sharedbuffer.h | 37 | ||||
-rw-r--r-- | libvo/vo_sharedbuffer.m | 269 |
6 files changed, 0 insertions, 348 deletions
diff --git a/DOCS/man/en/vo.rst b/DOCS/man/en/vo.rst index 75ef3ae784..5f501f0348 100644 --- a/DOCS/man/en/vo.rst +++ b/DOCS/man/en/vo.rst @@ -712,14 +712,3 @@ image JPEG DPI (default: 72) outdir=<dirname> Specify the directory to save the image files to (default: ``./``). - -sharedbuffer (Mac OS X 10.6 and later) - Mac OS X headless video output designed to interact with GUIs. It copies - image data to a shared buffer so that the data can be read from a GUI and - rendered. - - It uses the same protocol as MPlayer's ``-vo corevideo:shared_buffer`` - - buffer_name=<buffer_name> - Name of the shared buffer created with shm_open() as well as the name - of the NSConnection mplayer2 will try to open (default: mplayerosx). @@ -381,7 +381,6 @@ SRCS_MPLAYER-$(APPLE_REMOTE) += input/ar.c SRCS_MPLAYER-$(CACA) += libvo/vo_caca.c SRCS_MPLAYER-$(COREAUDIO) += libao2/ao_coreaudio.c SRCS_MPLAYER-$(COREVIDEO) += libvo/vo_corevideo.m -SRCS_MPLAYER-$(SHAREDBUFFER) += libvo/vo_sharedbuffer.m SRCS_MPLAYER-$(DIRECT3D) += libvo/vo_direct3d.c libvo/w32_common.c SRCS_MPLAYER-$(DIRECTFB) += libvo/vo_directfb2.c SRCS_MPLAYER-$(DIRECTX) += libao2/ao_dsound.c libvo/vo_directx.c @@ -372,7 +372,6 @@ Video output: --enable-directfb enable DirectFB video output [autodetect] --disable-corevideo disable CoreVideo video output [autodetect] --disable-cocoa disable Cocoa OpenGL backend [autodetect] - --disable-sharedbuffer disable OSX shared buffer video output [autodetect] Audio output: --disable-alsa disable ALSA audio output [autodetect] @@ -527,7 +526,6 @@ _qtx=auto _coreaudio=auto _corevideo=auto _cocoa=auto -_sharedbuffer=auto quicktime=auto _macosx_finder=no _macosx_bundle=auto @@ -834,8 +832,6 @@ for ac_option do --disable-corevideo) _corevideo=no ;; --enable-cocoa) _cocoa=yes ;; --disable-cocoa) _cocoa=no ;; - --enable-sharedbuffer) _sharedbuffer=yes ;; - --disable-sharedbuffer) _sharedbuffer=no ;; --enable-macosx-finder) _macosx_finder=yes ;; --disable-macosx-finder) _macosx_finder=no ;; --enable-macosx-bundle) _macosx_bundle=yes ;; @@ -2127,26 +2123,6 @@ else fi echores "$_corevideo" -echocheck "SharedBuffer" -if test "$_sharedbuffer" = auto ; then - cat > $TMPC <<EOF -int main(void) { - NSApplicationLoad(); -} -EOF - _sharedbuffer=no - cc_check -framework Cocoa && _sharedbuffer=yes -fi -if test "$_sharedbuffer" = yes ; then - vomodules="sharedbuffer $vomodules" - libs_mplayer="$libs_mplayer -framework Cocoa" - def_sharedbuffer='#define CONFIG_SHAREDBUFFER 1' -else - novomodules="sharedbuffer $novomodules" - def_sharedbuffer='#undef CONFIG_SHAREDBUFFER' -fi -echores "$_sharedbuffer" - depends_on_application_services(){ test "$_corevideo" = yes } @@ -3872,7 +3848,6 @@ CDDB = $_cddb COCOA = $_cocoa COREAUDIO = $_coreaudio COREVIDEO = $_corevideo -SHAREDBUFFER = $_sharedbuffer DIRECT3D = $_direct3d DIRECTFB = $_directfb DIRECTX = $_directx @@ -4187,7 +4162,6 @@ $def_lcms2 $def_caca $def_corevideo $def_cocoa -$def_sharedbuffer $def_direct3d $def_directfb $def_directx diff --git a/libvo/video_out.c b/libvo/video_out.c index 218dd36d1b..4066146152 100644 --- a/libvo/video_out.c +++ b/libvo/video_out.c @@ -87,7 +87,6 @@ extern struct vo_driver video_out_direct3d_shaders; extern struct vo_driver video_out_directx; extern struct vo_driver video_out_directfb; extern struct vo_driver video_out_corevideo; -extern struct vo_driver video_out_sharedbuffer; const struct vo_driver *video_out_drivers[] = { @@ -124,9 +123,6 @@ const struct vo_driver *video_out_drivers[] = #endif &video_out_null, // should not be auto-selected -#ifdef CONFIG_SHAREDBUFFER - &video_out_sharedbuffer, -#endif #ifdef CONFIG_DIRECTFB // vo directfb can call exit() if initialization fails &video_out_directfb, diff --git a/libvo/vo_sharedbuffer.h b/libvo/vo_sharedbuffer.h deleted file mode 100644 index c25463aa0a..0000000000 --- a/libvo/vo_sharedbuffer.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * OSX Shared Buffer Video Output (extracted from mplayer's corevideo) - * - * This file is part of mplayer2. - * - * mplayer2 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. - * - * mplayer2 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 mplayer2. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef MPLAYER_VO_OSX_SHAREDBUFFER_H -#define MPLAYER_VO_OSX_SHAREDBUFFER_H - -#import <Cocoa/Cocoa.h> - -// Protocol to communicate with the GUI -@protocol MPlayerOSXVOProto -- (int) startWithWidth: (bycopy int)width - withHeight: (bycopy int)height - withBytes: (bycopy int)bytes - withAspect: (bycopy int)aspect; -- (void) stop; -- (void) render; -- (void) toggleFullscreen; -- (void) ontop; -@end - -#endif /* MPLAYER_VO_OSX_SHAREDBUFFER_H */ diff --git a/libvo/vo_sharedbuffer.m b/libvo/vo_sharedbuffer.m deleted file mode 100644 index 219ad91474..0000000000 --- a/libvo/vo_sharedbuffer.m +++ /dev/null @@ -1,269 +0,0 @@ -/* - * OSX Shared Buffer Video Output (extracted from mplayer's corevideo) - * - * This file is part of mplayer2. - * - * mplayer2 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. - * - * mplayer2 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 mplayer2. If not, see <http://www.gnu.org/licenses/>. - */ - -/* - * This video output was extracted from mplayer's corevideo. Its purpose is - * to copy mp_image data to a shared buffer using mmap and to do simple - * coordination with the GUIs using Distributed Objects. - */ - -#include <sys/mman.h> - -#include "vo_sharedbuffer.h" -#include "video_out.h" -#include "m_option.h" -#include "talloc.h" - -#include "libmpcodecs/vfcap.h" -#include "libmpcodecs/mp_image.h" -#include "fastmemcpy.h" - -#include "sub/sub.h" -#include "osd.h" - -// declarations -struct priv { - char *buffer_name; - unsigned char *image_data; - unsigned int image_bytespp; - unsigned int image_width; - unsigned int image_height; - - void (*vo_draw_alpha_fnc)(int w, int h, unsigned char* src, - unsigned char *srca, int srcstride, unsigned char* dstbase, - int dststride); - - NSDistantObject *mposx_proxy; - id <MPlayerOSXVOProto> mposx_proto; -}; - -// implementation -static void draw_alpha(void *ctx, int x0, int y0, int w, int h, - unsigned char *src, unsigned char *srca, - int stride) -{ - struct priv *p = ((struct vo *) ctx)->priv; - p->vo_draw_alpha_fnc(w, h, src, srca, stride, - p->image_data + (x0 + y0 * p->image_width) * p->image_bytespp, - p->image_width * p->image_bytespp); -} - -static unsigned int image_bytes(struct priv *p) -{ - return p->image_width * p->image_height * p->image_bytespp; -} - -static int preinit(struct vo *vo, const char *arg) -{ - return 0; -} - -static void flip_page(struct vo *vo) -{ - struct priv *p = vo->priv; - NSAutoreleasePool *pool = [NSAutoreleasePool new]; - [p->mposx_proto render]; - [pool release]; -} - -static void check_events(struct vo *vo) { } - -static uint32_t draw_image(struct vo *vo, mp_image_t *mpi) -{ - struct priv *p = vo->priv; - memcpy_pic(p->image_data, mpi->planes[0], - (p->image_width) * (p->image_bytespp), p->image_height, - (p->image_width) * (p->image_bytespp), mpi->stride[0]); - return 0; -} - -static void draw_osd(struct vo *vo, struct osd_state *osd) { - struct priv *p = vo->priv; - osd_draw_text(osd, p->image_width, p->image_height, draw_alpha, vo); -} - -static void free_buffers(struct priv *p) -{ - [p->mposx_proto stop]; - p->mposx_proto = nil; - [p->mposx_proxy release]; - p->mposx_proxy = nil; - - if (p->image_data) { - if (munmap(p->image_data, image_bytes(p)) == -1) - mp_msg(MSGT_VO, MSGL_FATAL, "[vo_sharedbuffer] uninit: munmap " - "failed. Error: %s\n", strerror(errno)); - - if (shm_unlink(p->buffer_name) == -1) - mp_msg(MSGT_VO, MSGL_FATAL, "[vo_sharedbuffer] uninit: shm_unlink " - "failed. Error: %s\n", strerror(errno)); - } -} - -static int config(struct vo *vo, uint32_t width, uint32_t height, - uint32_t d_width, uint32_t d_height, uint32_t flags, - uint32_t format) -{ - struct priv *p = vo->priv; - NSAutoreleasePool *pool = [NSAutoreleasePool new]; - free_buffers(p); - - p->image_width = width; - p->image_height = height; - - mp_msg(MSGT_VO, MSGL_INFO, "[vo_sharedbuffer] writing output to a shared " - "buffer named \"%s\"\n", p->buffer_name); - - // create shared memory - int shm_fd = shm_open(p->buffer_name, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); - if (shm_fd == -1) { - mp_msg(MSGT_VO, MSGL_FATAL, - "[vo_sharedbuffer] failed to open shared memory. Error: %s\n", - strerror(errno)); - goto err_out; - } - - if (ftruncate(shm_fd, image_bytes(p)) == -1) { - mp_msg(MSGT_VO, MSGL_FATAL, - "[vo_sharedbuffer] failed to size shared memory, possibly " - "already in use. Error: %s\n", strerror(errno)); - close(shm_fd); - shm_unlink(p->buffer_name); - goto err_out; - } - - p->image_data = mmap(NULL, image_bytes(p), - PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); - close(shm_fd); - - if (p->image_data == MAP_FAILED) { - mp_msg(MSGT_VO, MSGL_FATAL, - "[vo_sharedbuffer] failed to map shared memory. " - "Error: %s\n", strerror(errno)); - shm_unlink(p->buffer_name); - goto err_out; - } - - //connect to mplayerosx - p->mposx_proxy = [NSConnection - rootProxyForConnectionWithRegisteredName: - [NSString stringWithUTF8String:p->buffer_name] host:nil]; - - if ([p->mposx_proxy conformsToProtocol:@protocol(MPlayerOSXVOProto)]) { - [p->mposx_proxy setProtocolForProxy:@protocol(MPlayerOSXVOProto)]; - p->mposx_proto = (id <MPlayerOSXVOProto>)p->mposx_proxy; - [p->mposx_proto startWithWidth:p->image_width - withHeight:p->image_height - withBytes:p->image_bytespp - withAspect:d_width*100/d_height]; - } else { - mp_msg(MSGT_VO, MSGL_ERR, - "[vo_sharedbuffer] distributed object doesn't conform " - "to the correct protocol.\n"); - [p->mposx_proxy release]; - p->mposx_proxy = nil; - p->mposx_proto = nil; - } - - [pool release]; - return 0; -err_out: - [pool release]; - return 1; -} - -static int query_format(struct vo *vo, uint32_t format) -{ - struct priv *p = vo->priv; - unsigned int image_depth = 0; - switch (format) { - case IMGFMT_YUY2: - p->vo_draw_alpha_fnc = vo_draw_alpha_yuy2; - image_depth = 16; - goto supported; - case IMGFMT_RGB24: - p->vo_draw_alpha_fnc = vo_draw_alpha_rgb24; - image_depth = 24; - goto supported; - case IMGFMT_ARGB: - p->vo_draw_alpha_fnc = vo_draw_alpha_rgb32; - image_depth = 32; - goto supported; - case IMGFMT_BGRA: - p->vo_draw_alpha_fnc = vo_draw_alpha_rgb32; - image_depth = 32; - goto supported; - } - return 0; - -supported: - p->image_bytespp = (image_depth + 7) / 8; - return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | - VFCAP_OSD | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | - VOCAP_NOSLICES; -} - -static void uninit(struct vo *vo) -{ - struct priv *p = vo->priv; - free_buffers(p); -} - -static int control(struct vo *vo, uint32_t request, void *data) -{ - struct priv *p = vo->priv; - switch (request) { - case VOCTRL_DRAW_IMAGE: - return draw_image(vo, data); - case VOCTRL_FULLSCREEN: - [p->mposx_proto toggleFullscreen]; - return VO_TRUE; - case VOCTRL_QUERY_FORMAT: - return query_format(vo, *(uint32_t*)data); - case VOCTRL_ONTOP: - [p->mposx_proto ontop]; - return VO_TRUE; - } - return VO_NOTIMPL; -} - -#undef OPT_BASE_STRUCT -#define OPT_BASE_STRUCT struct priv - -const struct vo_driver video_out_sharedbuffer = { - .is_new = true, - .info = &(const vo_info_t) { - "Mac OS X Shared Buffer (headless video output for GUIs)", - "sharedbuffer", - "Stefano Pigozzi <stefano.pigozzi@gmail.com> and others.", - "" - }, - .preinit = preinit, - .config = config, - .control = control, - .flip_page = flip_page, - .check_events = check_events, - .uninit = uninit, - .draw_osd = draw_osd, - .priv_size = sizeof(struct priv), - .options = (const struct m_option[]) { - OPT_STRING("buffer_name", buffer_name, 0, OPTDEF_STR("mplayerosx")), - {NULL}, - }, -}; |