X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=projects%2Fmozilla%2Fvlcplugin.h;h=ed109ae4ecbd124bacbf913f2ee5e11750bc6973;hb=53ac2e4ffe70b12bc4052c244b77e932e38a9bfa;hp=d3c9af356bc4b44a6aae090882982cf2c8b1fbf6;hpb=cf3100336b61b3297f368c68c5e019b157dba63b;p=vlc diff --git a/projects/mozilla/vlcplugin.h b/projects/mozilla/vlcplugin.h index d3c9af356b..ed109ae4ec 100644 --- a/projects/mozilla/vlcplugin.h +++ b/projects/mozilla/vlcplugin.h @@ -1,11 +1,12 @@ /***************************************************************************** * vlcplugin.h: a VLC plugin for Mozilla ***************************************************************************** - * Copyright (C) 2002-2006 the VideoLAN team + * Copyright (C) 2002-2009 the VideoLAN team * $Id$ * * Authors: Samuel Hocevar - Damien Fouilleul + * Damien Fouilleul + * Jean-Paul Saman * * 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 @@ -28,7 +29,7 @@ #ifndef __VLCPLUGIN_H__ #define __VLCPLUGIN_H__ -#include +#include #include #include "control/nporuntime.h" @@ -66,6 +67,18 @@ # define __MIN(a, b) ( ((a) < (b)) ? (a) : (b) ) #endif +typedef enum vlc_toolbar_clicked_e { + clicked_Unknown = 0, + clicked_Play, + clicked_Pause, + clicked_Stop, + clicked_timeline, + clicked_Time, + clicked_Fullscreen, + clicked_Mute, + clicked_Unmute +} vlc_toolbar_clicked_t; + class VlcPlugin { public: @@ -75,6 +88,14 @@ public: NPError init(int argc, char* const argn[], char* const argv[]); libvlc_instance_t* getVLC() { return libvlc_instance; }; + libvlc_media_player_t* getMD(libvlc_exception_t *ex) + { + if( !libvlc_media_player ) + { + libvlc_exception_raise(ex,"no mediaplayer"); + } + return libvlc_media_player; + } NPP getBrowser() { return p_browser; }; char* getAbsoluteURL(const char *url); @@ -111,6 +132,11 @@ public: void showToolbar(); void hideToolbar(); void redrawToolbar(); + void getToolbarSize(unsigned int *width, unsigned int *height) + { *width = i_tb_width; *height = i_tb_height; }; + int setToolbarSize(unsigned int width, unsigned int height) + { i_tb_width = width; i_tb_height = height; return 1; }; + vlc_toolbar_clicked_t getToolbarButtonClicked( int i_xpos, int i_ypos ); #endif uint16 i_npmode; /* either NP_EMBED or NP_FULL */ @@ -118,15 +144,70 @@ public: /* plugin properties */ int b_stream; int b_autoplay; + int b_toolbar; char * psz_target; -#if XP_UNIX - /* toolbar */ - int i_control_height; -#endif + void playlist_play(libvlc_exception_t *ex) + { + if( libvlc_media_player||playlist_select(0,ex) ) + libvlc_media_player_play(libvlc_media_player,ex); + } + void playlist_play_item(int idx,libvlc_exception_t *ex) + { + if( playlist_select(idx,ex) ) + libvlc_media_player_play(libvlc_media_player,ex); + } + void playlist_stop(libvlc_exception_t *ex) + { + if( libvlc_media_player ) + libvlc_media_player_stop(libvlc_media_player,ex); + } + void playlist_next(libvlc_exception_t *ex) + { + if( playlist_select(playlist_index+1,ex) ) + libvlc_media_player_play(libvlc_media_player,ex); + } + void playlist_prev(libvlc_exception_t *ex) + { + if( playlist_select(playlist_index-1,ex) ) + libvlc_media_player_play(libvlc_media_player,ex); + } + void playlist_pause(libvlc_exception_t *ex) + { + if( libvlc_media_player ) + libvlc_media_player_pause(libvlc_media_player,ex); + } + int playlist_isplaying(libvlc_exception_t *ex) + { + int is_playing = 0; + if( libvlc_media_player ) + is_playing = libvlc_media_player_is_playing( + libvlc_media_player, ex ); + return is_playing; + } + + int playlist_add( const char *, libvlc_exception_t * ); + int playlist_add_extended_untrusted( const char *, const char *, int, + const char **, libvlc_exception_t * ); + void playlist_delete_item( int, libvlc_exception_t * ); + void playlist_clear( libvlc_exception_t * ); + int playlist_count( libvlc_exception_t * ); + + void toggle_fullscreen( libvlc_exception_t * ); + void set_fullscreen( int, libvlc_exception_t * ); + int get_fullscreen( libvlc_exception_t * ); + + int player_has_vout( libvlc_exception_t * ); + private: + bool playlist_select(int,libvlc_exception_t *); + void set_player_window( libvlc_exception_t * ); + /* VLC reference */ + int playlist_index; libvlc_instance_t *libvlc_instance; + libvlc_media_list_t *libvlc_media_list; + libvlc_media_player_t *libvlc_media_player; libvlc_log_t *libvlc_log; NPClass *p_scriptClass; @@ -141,6 +222,7 @@ private: #endif #if XP_UNIX unsigned int i_width, i_height; + unsigned int i_tb_width, i_tb_height; Window npvideo, npcontrol; XImage *p_btnPlay; @@ -172,9 +254,12 @@ private: "video/x-mpeg:mpg,mpeg,mpe:MPEG video;" \ "video/mpeg-system:mpg,mpeg,mpe,vob:MPEG video;" \ "video/x-mpeg-system:mpg,mpeg,mpe,vob:MPEG video;" \ + /* M3U */ \ + "audio/x-mpegurl:m3u:MPEG audio;" \ /* MPEG-4 */ \ - "video/mpeg4:mp4,mpg4:MPEG-4 video;" \ - "audio/mpeg4:mp4,mpg4:MPEG-4 audio;" \ + "video/mp4:mp4,mpg4:MPEG-4 video;" \ + "audio/mp4:mp4,mpg4:MPEG-4 audio;" \ + "audio/x-m4a:m4a:MPEG-4 audio;" \ "application/mpeg4-iod:mp4,mpg4:MPEG-4 video;" \ "application/mpeg4-muxcodetable:mp4,mpg4:MPEG-4 video;" \ /* AVI */ \ @@ -192,6 +277,7 @@ private: "application/x-mplayer2::Windows Media;" \ "video/x-ms-wmv:wmv:Windows Media;" \ "video/x-ms-wvx:wvx:Windows Media Video;" \ + "audio/x-ms-wma:wma:Windows Media Audio;" \ /* Google VLC */ \ "application/x-google-vlc-plugin::Google VLC plug-in;" \ /* WAV audio */ \ @@ -207,8 +293,11 @@ private: "video/divx:divx:DivX video;" \ /* FLV */ \ "video/flv:flv:FLV video;" \ - "video/x-flv:flv:FLV video;" - - + "video/x-flv:flv:FLV video;" \ + /* Matroska */ \ + "video/x-matroska:mkv:Matroska video;" \ + "audio/x-matroska:mka:Matroska audio;" \ + /* XSPF */ \ + "application/xspf+xml:xspf:Playlist xspf;" #endif