mirror of
https://github.com/videolan/vlc.git
synced 2024-11-28 12:26:11 +08:00
* ./mozilla/vlcshell.cpp: ported the Mozilla plugin to Windows.
For the moment it spawns a separate window and seems to behave nastily (read: crashes) when the target has sound, but the javascript interface works perfectly, for instance. To build it, I installed Mozilla development files in my mingw32 dir and hacked mozilla-config so that it uses these files. I also hacked jri_md.h and jni_md.h to put "defined(_MSC_VER) || defined(__MINGW32__)" where it read "defined(_MSC_VER)". No other changes were necessary.
This commit is contained in:
parent
d962425058
commit
435bab6bc1
45
Makefile.am
45
Makefile.am
@ -417,7 +417,7 @@ endif
|
||||
|
||||
noinst_LIBRARIES += $(noinst_LIBRARIES_mozilla)
|
||||
|
||||
MOSTLYCLEANFILES += mozilla/libvlcplugin$(LIBEXT)
|
||||
MOSTLYCLEANFILES += $(LIBRARIES_mozilla)
|
||||
|
||||
EXTRA_DIST += $(SOURCES_mozilla) mozilla/vlcintf.idl
|
||||
|
||||
@ -430,7 +430,20 @@ SOURCES_mozilla = \
|
||||
mozilla/vlcpeer.cpp \
|
||||
mozilla/vlcpeer.h \
|
||||
mozilla/classinfo.h \
|
||||
mozilla/npunix.c
|
||||
$(SOURCES_mozilla_win32) \
|
||||
$(SOURCES_mozilla_unix)
|
||||
|
||||
# Under Win32, Mozilla plugins need to be named NP******.DLL, but under Unix
|
||||
# the common naming scheme is lib******plugin.so. Also, we need npwin.cpp
|
||||
# under Win32 and npunix.c under Unix.
|
||||
if HAVE_WIN32
|
||||
LIBRARIES_mozilla = mozilla/npvlc$(LIBEXT)
|
||||
SOURCES_mozilla_win32 = mozilla/npwin.cpp
|
||||
CPPFLAGS_mozilla_EXTRA = -DXP_WIN -DXP_WIN32
|
||||
else
|
||||
LIBRARIES_mozilla = mozilla/libvlcplugin$(LIBEXT)
|
||||
SOURCES_mozilla_unix = mozilla/npunix.c
|
||||
endif
|
||||
|
||||
if BUILD_MOZILLA
|
||||
noinst_LIBRARIES_mozilla = mozilla/libvlcplugin.a
|
||||
@ -438,20 +451,22 @@ noinst_LIBRARIES_mozilla = mozilla/libvlcplugin.a
|
||||
mozilla_libvlcplugin_a_SOURCES = $(SOURCES_mozilla) $(BUILT_SOURCES_mozilla) \
|
||||
$(SOURCES_libgetopt)
|
||||
mozilla_libvlcplugin_a_CFLAGS = $(CPPFLAGS_pic) $(CFLAGS_pic) \
|
||||
$(CPPFLAGS_mozilla) $(CFLAGS_mozilla)
|
||||
$(CPPFLAGS_mozilla) $(CFLAGS_mozilla) \
|
||||
$(CPPFLAGS_mozilla_EXTRA)
|
||||
mozilla_libvlcplugin_a_CXXFLAGS = $(CPPFLAGS_pic) $(CXXFLAGS_pic) \
|
||||
$(CPPFLAGS_mozilla) $(CXXFLAGS_mozilla)
|
||||
mozilla_libvlcplugin_a_DEPENDENCIES = lib/libvlc_pic.a $(L_builtin_pic)
|
||||
$(CPPFLAGS_mozilla) $(CXXFLAGS_mozilla) \
|
||||
$(CPPFLAGS_mozilla_EXTRA)
|
||||
mozilla_libvlcplugin_a_DEPENDENCIES = lib/libvlc_pic.a $(L_builtin_pic) $(DATA_npvlc_rc)
|
||||
|
||||
BUILT_SOURCES_mozilla = mozilla/vlcintf.h
|
||||
$(SOURCES_mozilla): mozilla/vlcintf.h
|
||||
|
||||
mozilla_libvlcplugin_DATA = mozilla/libvlcplugin$(LIBEXT)
|
||||
mozilla_libvlcplugindir = $(libdir)/mozilla/plugins
|
||||
mozilla/libvlcplugin$(LIBEXT): mozilla/libvlcplugin.a $(L_builtin_pic)
|
||||
$(CC) -o $@ $(mozilla_libvlcplugin_a_OBJECTS) lib/libvlc_pic.a \
|
||||
$(L_builtin_pic) -shared $(LDFLAGS) $(LDFLAGS_vlc) \
|
||||
$(LDFLAGS_mozilla) $(LDFLAGS_builtin_pic)
|
||||
mozilla_plugin_DATA = $(LIBRARIES_mozilla)
|
||||
mozilla_plugindir = $(libdir)/mozilla/plugins
|
||||
$(LIBRARIES_mozilla): mozilla/libvlcplugin.a $(L_builtin_pic)
|
||||
$(CXXLINK) -o $@ $(mozilla_libvlcplugin_a_OBJECTS) $(DATA_npvlc_rc) \
|
||||
lib/libvlc_pic.a $(L_builtin_pic) -shared $(LDFLAGS) \
|
||||
$(LDFLAGS_vlc) $(LDFLAGS_mozilla) $(LDFLAGS_builtin_pic)
|
||||
|
||||
mozilla_vlcintf_xpt_DATA = mozilla/vlcintf.xpt
|
||||
mozilla_vlcintf_xptdir = $(libdir)/mozilla/components
|
||||
@ -462,6 +477,14 @@ mozilla/vlcintf.xpt: Makefile mozilla/vlcintf.idl
|
||||
mozilla/vlcintf.h: Makefile mozilla/vlcintf.idl
|
||||
$(XPIDL) -I/usr/share/idl/mozilla -m header \
|
||||
-o mozilla/vlcintf mozilla/vlcintf.idl
|
||||
|
||||
if HAVE_WIN32
|
||||
DATA_npvlc_rc = $(noinst_mozilla_npvlc_rc_DATA)
|
||||
noinst_mozilla_npvlc_rc_DATA = mozilla/npvlc_rc.$(OBJEXT)
|
||||
noinst_mozilla_npvlc_rcdir = $(libdir)
|
||||
mozilla/npvlc_rc.$(OBJEXT): mozilla/npvlc_rc.rc
|
||||
$(WINDRES) -i $< -o $@
|
||||
endif
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
|
@ -2,7 +2,7 @@
|
||||
* test2.cpp : Empty C++ module for vlc
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2000-2001 VideoLAN
|
||||
* $Id: test2.cpp,v 1.1 2002/10/04 13:13:54 sam Exp $
|
||||
* $Id: test2.cpp,v 1.2 2002/10/22 21:10:27 sam Exp $
|
||||
*
|
||||
* Authors: Samuel Hocevar <sam@zoy.org>
|
||||
*
|
||||
@ -33,8 +33,8 @@
|
||||
*****************************************************************************/
|
||||
vlc_module_begin();
|
||||
/* Minimal C++ usage */
|
||||
string description = "C++ module that does nothing";
|
||||
set_description( _( description.c_str() ) );
|
||||
std::string description = "C++ module that does nothing";
|
||||
set_description( (char*)_( description.c_str() ) );
|
||||
vlc_module_end();
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
* vout.c: Windows DirectX video output display method
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2001 VideoLAN
|
||||
* $Id: directx.c,v 1.3 2002/10/06 19:28:28 gbazin Exp $
|
||||
* $Id: directx.c,v 1.4 2002/10/22 21:10:28 sam Exp $
|
||||
*
|
||||
* Authors: Gildas Bazin <gbazin@netcourrier.com>
|
||||
*
|
||||
@ -105,6 +105,7 @@ vlc_module_begin();
|
||||
add_bool( "directx-use-sysmem", 0, NULL, SYSMEM_TEXT, SYSMEM_LONGTEXT );
|
||||
set_description( _("DirectX video module") );
|
||||
set_capability( "video output", 100 );
|
||||
add_shortcut( "directx" );
|
||||
set_callbacks( OpenVideo, CloseVideo );
|
||||
vlc_module_end();
|
||||
|
||||
|
44
mozilla/npvlc_rc.rc
Normal file
44
mozilla/npvlc_rc.rc
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// VideoLAN Client Plugin description.
|
||||
//
|
||||
|
||||
//VS_VERSION_INFO VERSIONINFO
|
||||
1 VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "ProductName", "VideoLAN Client Plugin\0"
|
||||
VALUE "ProductVersion", "1, 0, 0, 1\0"
|
||||
VALUE "OriginalFilename", "npvlc.dll\0"
|
||||
VALUE "FileVersion", "1, 0, 0, 1\0"
|
||||
VALUE "FileDescription", "VideoLAN Client Multimedia Player Plugin<br><br>VideoLAN WWW: <a href=""http://www.videolan.org/"">http://www.videolan.org/</a>\0"
|
||||
VALUE "InternalName", "npvlc\0"
|
||||
VALUE "CompanyName", "VideoLAN\0"
|
||||
VALUE "LegalCopyright", "Copyright VideoLAN \251 1996-2002\0"
|
||||
VALUE "MIMEType", "audio/mpeg|audio/x-mpeg|video/mpeg|video/x-mpeg|video/mpeg-system|video/x-mpeg-system|video/mpeg4|audio/mpeg4|application/mpeg4-iod|application/mpeg4-muxcodetable|video/x-msvideo|video/quicktime|application/x-vlc-plugin\0"
|
||||
VALUE "FileExtents", "mp2,mp3,mpga,mpega|mp2,mp3,mpga,mpega|mpg,mpeg,mpe|mpg,mpeg,mpe|mpg,mpeg,vob|mpg,mpeg,vob|mp4,mpg4|mp4,mpg4|mp4,mpg4|mp4,mpg4|avi|mov,qt|\0"
|
||||
VALUE "FileOpenName", "MPEG audio|MPEG audio|MPEG video|MPEG video|MPEG video|MPEG video|MPEG-4 video|MPEG-4 audio|MPEG-4 video|MPEG-4 video|AVI video|QuickTime video|VLC plugin\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
361
mozilla/npwin.cpp
Normal file
361
mozilla/npwin.cpp
Normal file
@ -0,0 +1,361 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.1 (the "License"); you may not use this file except in
|
||||
* compliance with the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Communicator client code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the NPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the NPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef _NPAPI_H_
|
||||
#include "npapi.h"
|
||||
#endif
|
||||
#ifndef _NPUPP_H_
|
||||
#include "npupp.h"
|
||||
#endif
|
||||
|
||||
//\\// DEFINE
|
||||
#define NP_EXPORT
|
||||
|
||||
//\\// GLOBAL DATA
|
||||
NPNetscapeFuncs* g_pNavigatorFuncs = 0;
|
||||
JRIGlobalRef Private_GetJavaClass(void);
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// Private_GetJavaClass (global function)
|
||||
//
|
||||
// Given a Java class reference (thru NPP_GetJavaClass) inform JRT
|
||||
// of this class existence
|
||||
//
|
||||
JRIGlobalRef
|
||||
Private_GetJavaClass(void)
|
||||
{
|
||||
jref clazz = NPP_GetJavaClass();
|
||||
if (clazz) {
|
||||
JRIEnv* env = NPN_GetJavaEnv();
|
||||
return JRI_NewGlobalRef(env, clazz);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// PLUGIN DLL entry points
|
||||
//
|
||||
// These are the Windows specific DLL entry points. They must be exoprted
|
||||
//
|
||||
|
||||
// we need these to be global since we have to fill one of its field
|
||||
// with a data (class) which requires knowlwdge of the navigator
|
||||
// jump-table. This jump table is known at Initialize time (NP_Initialize)
|
||||
// which is called after NP_GetEntryPoint
|
||||
static NPPluginFuncs* g_pluginFuncs;
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_GetEntryPoints
|
||||
//
|
||||
// fills in the func table used by Navigator to call entry points in
|
||||
// plugin DLL. Note that these entry points ensure that DS is loaded
|
||||
// by using the NP_LOADDS macro, when compiling for Win16
|
||||
//
|
||||
#ifdef __MINGW32__
|
||||
extern "C" NPError
|
||||
#else
|
||||
NPError WINAPI NP_EXPORT
|
||||
#endif
|
||||
NP_GetEntryPoints(NPPluginFuncs* pFuncs)
|
||||
{
|
||||
// trap a NULL ptr
|
||||
if(pFuncs == NULL)
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
|
||||
// if the plugin's function table is smaller than the plugin expects,
|
||||
// then they are incompatible, and should return an error
|
||||
|
||||
pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
|
||||
pFuncs->newp = NPP_New;
|
||||
pFuncs->destroy = NPP_Destroy;
|
||||
pFuncs->setwindow = NPP_SetWindow;
|
||||
pFuncs->newstream = NPP_NewStream;
|
||||
pFuncs->destroystream = NPP_DestroyStream;
|
||||
pFuncs->asfile = NPP_StreamAsFile;
|
||||
pFuncs->writeready = NPP_WriteReady;
|
||||
pFuncs->write = NPP_Write;
|
||||
pFuncs->print = NPP_Print;
|
||||
pFuncs->getvalue = NPP_GetValue;
|
||||
pFuncs->event = 0; /// reserved
|
||||
|
||||
g_pluginFuncs = pFuncs;
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_Initialize
|
||||
//
|
||||
// called immediately after the plugin DLL is loaded
|
||||
//
|
||||
#ifdef __MINGW32__
|
||||
extern "C" NPError
|
||||
#else
|
||||
NPError WINAPI NP_EXPORT
|
||||
#endif
|
||||
NP_Initialize(NPNetscapeFuncs* pFuncs)
|
||||
{
|
||||
// trap a NULL ptr
|
||||
if(pFuncs == NULL)
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
|
||||
g_pNavigatorFuncs = pFuncs; // save it for future reference
|
||||
|
||||
// if the plugin's major ver level is lower than the Navigator's,
|
||||
// then they are incompatible, and should return an error
|
||||
if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
|
||||
return NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
|
||||
// We have to defer these assignments until g_pNavigatorFuncs is set
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
g_pluginFuncs->urlnotify = NPP_URLNotify;
|
||||
}
|
||||
|
||||
if( navMinorVers >= NPVERS_HAS_LIVECONNECT ) {
|
||||
g_pluginFuncs->javaClass = Private_GetJavaClass();
|
||||
}
|
||||
|
||||
// NPP_Initialize is a standard (cross-platform) initialize function.
|
||||
return NPP_Initialize();
|
||||
}
|
||||
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
// NP_Shutdown
|
||||
//
|
||||
// called immediately before the plugin DLL is unloaded.
|
||||
// This functio shuold check for some ref count on the dll to see if it is
|
||||
// unloadable or it needs to stay in memory.
|
||||
//
|
||||
#ifdef __MINGW32__
|
||||
extern "C" NPError
|
||||
#else
|
||||
NPError WINAPI NP_EXPORT
|
||||
#endif
|
||||
NP_Shutdown()
|
||||
{
|
||||
NPP_Shutdown();
|
||||
g_pNavigatorFuncs = NULL;
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
// END - PLUGIN DLL entry points
|
||||
////\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//.
|
||||
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\.
|
||||
|
||||
/* NAVIGATOR Entry points */
|
||||
|
||||
/* These entry points expect to be called from within the plugin. The
|
||||
noteworthy assumption is that DS has already been set to point to the
|
||||
plugin's DLL data segment. Don't call these functions from outside
|
||||
the plugin without ensuring DS is set to the DLLs data segment first,
|
||||
typically using the NP_LOADDS macro
|
||||
*/
|
||||
|
||||
/* returns the major/minor version numbers of the Plugin API for the plugin
|
||||
and the Navigator
|
||||
*/
|
||||
void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor)
|
||||
{
|
||||
*plugin_major = NP_VERSION_MAJOR;
|
||||
*plugin_minor = NP_VERSION_MINOR;
|
||||
*netscape_major = HIBYTE(g_pNavigatorFuncs->version);
|
||||
*netscape_minor = LOBYTE(g_pNavigatorFuncs->version);
|
||||
}
|
||||
|
||||
NPError NPN_GetValue(NPP instance, NPNVariable variable, void *result)
|
||||
{
|
||||
return g_pNavigatorFuncs->getvalue(instance, variable, result);
|
||||
}
|
||||
|
||||
|
||||
/* causes the specified URL to be fetched and streamed in
|
||||
*/
|
||||
NPError NPN_GetURLNotify(NPP instance, const char *url, const char *target, void* notifyData)
|
||||
|
||||
{
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
NPError err;
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
err = g_pNavigatorFuncs->geturlnotify(instance, url, target, notifyData);
|
||||
}
|
||||
else {
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
NPError NPN_GetURL(NPP instance, const char *url, const char *target)
|
||||
{
|
||||
return g_pNavigatorFuncs->geturl(instance, url, target);
|
||||
}
|
||||
|
||||
NPError NPN_PostURLNotify(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file, void* notifyData)
|
||||
{
|
||||
int navMinorVers = g_pNavigatorFuncs->version & 0xFF;
|
||||
NPError err;
|
||||
if( navMinorVers >= NPVERS_HAS_NOTIFICATION ) {
|
||||
err = g_pNavigatorFuncs->posturlnotify(instance, url, window, len, buf, file, notifyData);
|
||||
}
|
||||
else {
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file)
|
||||
{
|
||||
return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file);
|
||||
}
|
||||
|
||||
/* Requests that a number of bytes be provided on a stream. Typically
|
||||
this would be used if a stream was in "pull" mode. An optional
|
||||
position can be provided for streams which are seekable.
|
||||
*/
|
||||
NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList)
|
||||
{
|
||||
return g_pNavigatorFuncs->requestread(stream, rangeList);
|
||||
}
|
||||
|
||||
/* Creates a new stream of data from the plug-in to be interpreted
|
||||
by Netscape in the current window.
|
||||
*/
|
||||
NPError NPN_NewStream(NPP instance, NPMIMEType type,
|
||||
const char* target, NPStream** stream)
|
||||
{
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
NPError err;
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
err = g_pNavigatorFuncs->newstream(instance, type, target, stream);
|
||||
}
|
||||
else {
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Provides len bytes of data.
|
||||
*/
|
||||
int32 NPN_Write(NPP instance, NPStream *stream,
|
||||
int32 len, void *buffer)
|
||||
{
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
int32 result;
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
result = g_pNavigatorFuncs->write(instance, stream, len, buffer);
|
||||
}
|
||||
else {
|
||||
result = -1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Closes a stream object.
|
||||
reason indicates why the stream was closed.
|
||||
*/
|
||||
NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason)
|
||||
{
|
||||
int navMinorVersion = g_pNavigatorFuncs->version & 0xFF;
|
||||
NPError err;
|
||||
|
||||
if( navMinorVersion >= NPVERS_HAS_STREAMOUTPUT ) {
|
||||
err = g_pNavigatorFuncs->destroystream(instance, stream, reason);
|
||||
}
|
||||
else {
|
||||
err = NPERR_INCOMPATIBLE_VERSION_ERROR;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Provides a text status message in the Netscape client user interface
|
||||
*/
|
||||
void NPN_Status(NPP instance, const char *message)
|
||||
{
|
||||
g_pNavigatorFuncs->status(instance, message);
|
||||
}
|
||||
|
||||
/* returns the user agent string of Navigator, which contains version info
|
||||
*/
|
||||
const char* NPN_UserAgent(NPP instance)
|
||||
{
|
||||
return g_pNavigatorFuncs->uagent(instance);
|
||||
}
|
||||
|
||||
/* allocates memory from the Navigator's memory space. Necessary so that
|
||||
saved instance data may be freed by Navigator when exiting.
|
||||
*/
|
||||
|
||||
|
||||
void* NPN_MemAlloc(uint32 size)
|
||||
{
|
||||
return g_pNavigatorFuncs->memalloc(size);
|
||||
}
|
||||
|
||||
/* reciprocal of MemAlloc() above
|
||||
*/
|
||||
void NPN_MemFree(void* ptr)
|
||||
{
|
||||
g_pNavigatorFuncs->memfree(ptr);
|
||||
}
|
||||
|
||||
/* private function to Netscape. do not use!
|
||||
*/
|
||||
void NPN_ReloadPlugins(NPBool reloadPages)
|
||||
{
|
||||
g_pNavigatorFuncs->reloadplugins(reloadPages);
|
||||
}
|
||||
|
||||
JRIEnv* NPN_GetJavaEnv(void)
|
||||
{
|
||||
return g_pNavigatorFuncs->getJavaEnv();
|
||||
}
|
||||
|
||||
jref NPN_GetJavaPeer(NPP instance)
|
||||
{
|
||||
return g_pNavigatorFuncs->getJavaPeer(instance);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
* vlcplugin.h: a VideoLAN plugin for Mozilla
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2002 VideoLAN
|
||||
* $Id: vlcplugin.h,v 1.5 2002/10/11 22:32:56 sam Exp $
|
||||
* $Id: vlcplugin.h,v 1.6 2002/10/22 21:10:28 sam Exp $
|
||||
*
|
||||
* Authors: Samuel Hocevar <sam@zoy.org>
|
||||
*
|
||||
@ -40,11 +40,15 @@ public:
|
||||
NPWindow* fWindow;
|
||||
uint16 fMode;
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#else
|
||||
/* UNIX data members */
|
||||
Window window;
|
||||
Display *display;
|
||||
uint32 x, y;
|
||||
uint32 width, height;
|
||||
#endif
|
||||
|
||||
/* vlc data members */
|
||||
int i_vlc;
|
||||
@ -60,7 +64,7 @@ private:
|
||||
/*******************************************************************************
|
||||
* Plugin properties.
|
||||
******************************************************************************/
|
||||
#define PLUGIN_NAME "VideoLAN Client Plug-in"
|
||||
#define PLUGIN_NAME "VideoLAN Client Plugin"
|
||||
#define PLUGIN_DESCRIPTION \
|
||||
"VideoLAN Client Multimedia Player Plugin <br>" \
|
||||
" <br>" \
|
||||
|
@ -2,7 +2,7 @@
|
||||
* vlcshell.c: a VideoLAN Client plugin for Mozilla
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2002 VideoLAN
|
||||
* $Id: vlcshell.cpp,v 1.4 2002/10/11 22:32:56 sam Exp $
|
||||
* $Id: vlcshell.cpp,v 1.5 2002/10/22 21:10:28 sam Exp $
|
||||
*
|
||||
* Authors: Samuel Hocevar <sam@zoy.org>
|
||||
*
|
||||
@ -168,10 +168,6 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
|
||||
{
|
||||
"vlc"
|
||||
/*, "--plugin-path", "/home/sam/videolan/vlc_MAIN/plugins"*/
|
||||
, "--vout", "xvideo,x11,dummy"
|
||||
, "--aout", "dsp"
|
||||
, "--intf", "dummy"
|
||||
/*, "--noaudio"*/
|
||||
};
|
||||
|
||||
if( instance == NULL )
|
||||
@ -190,7 +186,11 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
|
||||
|
||||
p_plugin->fMode = mode;
|
||||
p_plugin->fWindow = NULL;
|
||||
#ifdef WIN32
|
||||
|
||||
#else
|
||||
p_plugin->window = 0;
|
||||
#endif
|
||||
|
||||
p_plugin->i_vlc = VLC_Create();
|
||||
if( p_plugin->i_vlc < 0 )
|
||||
@ -211,10 +211,20 @@ NPError NPP_New( NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
|
||||
return NPERR_GENERIC_ERROR;
|
||||
}
|
||||
|
||||
value.psz_string = "xvideo,x11,dummy";
|
||||
VLC_Set( p_plugin->i_vlc, "conf::vout", value );
|
||||
value.psz_string = "dummy";
|
||||
VLC_Set( p_plugin->i_vlc, "conf::intf", value );
|
||||
#ifdef WIN32
|
||||
value.psz_string = "directx,dummy";
|
||||
#else
|
||||
value.psz_string = "xvideo,x11,dummy";
|
||||
#endif
|
||||
VLC_Set( p_plugin->i_vlc, "conf::vout", value );
|
||||
#ifdef WIN32
|
||||
value.psz_string = "none";//"directx,waveout,dummy";
|
||||
#else
|
||||
value.psz_string = "dsp,dummy";
|
||||
#endif
|
||||
VLC_Set( p_plugin->i_vlc, "conf::aout", value );
|
||||
|
||||
p_plugin->b_stream = 0;
|
||||
p_plugin->b_autoplay = 0;
|
||||
@ -295,8 +305,12 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
|
||||
VlcPlugin* p_plugin = (VlcPlugin*)instance->pdata;
|
||||
|
||||
/* Write the window ID for vlc */
|
||||
value.p_address = (void*)window->window;
|
||||
VLC_Set( p_plugin->i_vlc, "drawable", value );
|
||||
//value.p_address = (void*)window->window;
|
||||
//VLC_Set( p_plugin->i_vlc, "drawable", value );
|
||||
/* FIXME: this cast sucks */
|
||||
value.i_int = (int) (long long) (void *) window->window;
|
||||
VLC_Set( p_plugin->i_vlc, "conf::x11-drawable", value );
|
||||
VLC_Set( p_plugin->i_vlc, "conf::xvideo-drawable", value );
|
||||
|
||||
/*
|
||||
* PLUGIN DEVELOPERS:
|
||||
@ -306,6 +320,9 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
|
||||
* size changes, etc.
|
||||
*/
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#else
|
||||
Widget netscape_widget;
|
||||
|
||||
p_plugin->window = (Window) window->window;
|
||||
@ -318,6 +335,7 @@ NPError NPP_SetWindow( NPP instance, NPWindow* window )
|
||||
netscape_widget = XtWindowToWidget(p_plugin->display, p_plugin->window);
|
||||
XtAddEventHandler(netscape_widget, ExposureMask, FALSE, (XtEventHandler)Redraw, p_plugin);
|
||||
Redraw(netscape_widget, (XtPointer)p_plugin, NULL);
|
||||
#endif
|
||||
|
||||
p_plugin->fWindow = window;
|
||||
|
||||
@ -400,7 +418,7 @@ int32 NPP_WriteReady( NPP instance, NPStream *stream )
|
||||
int32 NPP_Write( NPP instance, NPStream *stream, int32 offset,
|
||||
int32 len, void *buffer )
|
||||
{
|
||||
fprintf(stderr, "NPP_Write %i\n", len);
|
||||
fprintf(stderr, "NPP_Write %i\n", (int)len);
|
||||
|
||||
if( instance != NULL )
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
* modules, especially intf modules. See config.h for output configuration.
|
||||
*****************************************************************************
|
||||
* Copyright (C) 1998-2002 VideoLAN
|
||||
* $Id: messages.c,v 1.15 2002/10/14 16:46:56 sam Exp $
|
||||
* $Id: messages.c,v 1.16 2002/10/22 21:10:28 sam Exp $
|
||||
*
|
||||
* Authors: Vincent Seguin <seguin@via.ecp.fr>
|
||||
* Samuel Hocevar <sam@zoy.org>
|
||||
@ -480,6 +480,8 @@ static void PrintMsg ( vlc_object_t * p_this, msg_item_t * p_item )
|
||||
p_item->psz_module, psz_object, ppsz_type[i_type],
|
||||
p_item->psz_msg );
|
||||
}
|
||||
|
||||
fflush( stderr );
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user