PPAPI-Host NPAPI-Plugin-Adapter.
Wie Sie wissen, hat Adobe die weitere Entwicklung des Flash Player -Plugins für GNU/Linux eingestellt. Das neueste verfügbare NPAPI -Plugin -Version 11.2 wird für fünf Jahre Sicherheitsaktualisierungen erhalten (seit der Veröffentlichung am 4. Mai 2012), aber die weitere Entwicklung wurde eingestellt. Glücklicherweise oder nicht sind neuere Versionen für Linux als Teil des Chrome -Browsers verfügbar, bei dem Flash in Form von PPAPI -Plugin gebündelt wird. Die PPAPI- oder Pfeffer -Plugin -API ist eine Schnittstelle, die vom Chrom-/Chrome -Team für Browser -Plugins gefördert wird. Es ist NPAPI-inspiriert und dennoch deutlich unterschiedliche APIs, die jedes denkbare Funktions-Plugin haben möchten. Zweidimensionale Grafiken, OpenGLE, Schriftart, Netzwerkzugriff, Audio usw. Es ist riesig, es gibt 111 Funktionen von Funktionen, die als Schnittstellen bezeichnet werden und die heute Chrom -Browser Plugins anbietet. Obwohl die Spezifikationen noch nicht endgültig sind und neue Schnittstellenversionen entstehen, werden einige ältere gelöscht. Die Änderungsrate hat sich erheblich verlangsamt.
Aus verschiedenen Gründen interessiert sich Firefox -Entwickler jetzt nicht an der Implementierung von PPAPI in Firefox. Das bedeutet jedoch nicht, dass es nicht getan werden kann.
Das Hauptziel dieses Projekts ist es, den PPAPI -Flash -Player in Firefox zu bearbeiten. Dies kann auf zwei Arten erfolgen. Erstens besteht darin, eine vollständige PPAPI -Schnittstelle in Firefox selbst zu implementieren. Andere besteht darin, einen Wrapper zu implementieren, eine Art Adapter, der wie Browser zum PPAPI -Plugin aussieht und wie ein NPAPI -Plugin für den Browser aussieht.
Der erste Ansatz erfordert starke Kenntnisse über Firefox -Interna und zusätzliche Anstrengungen, um den Code in den Mainstream zu bringen. Die Aufrechterhaltung einer Reihe von Patches sieht nicht nach einer guten Idee aus. Der zweite Ansatz ermöglicht es, sich nur auf zwei APIs zu konzentrieren. Ja, einer von ihnen ist groß, aber immer noch griffbar. Der zweite Weg wird für das Projekt verwendet. Es wird auch anderen Browsern zugute kommen, nicht nur Firefox.
Meistens funktioniert. Sieht so aus, als würden alle wesentlichen APIs implementiert.
hier beschrieben.
Alle verfügbaren Pfeffer -Plugin -API -Dokumentationen sind in der Regel mit Behauptungen einer erweiterten Sicherheit aufgrund der aktiven Verwendung von Sandboxen begleitet. Es lohnt sich zu beachten, dass die API selbst kein Sandboxing macht, sondern nur Sandkästen -Implementierungen ermöglicht. Diese spezielle Implementierung implementiert keine Sandbox . Das heißt, wenn ein böswilliger Code die Plugin -Sicherheit durchbricht, gibt es keine zusätzlichen Hindernisse. Dies ist das gleiche Sicherheitsniveau wie Npapi Flash.
Das Projekt verwendet CMake (> = 2.8.8) Build -System.
Debian/Ubuntu:
$ sudo apt-get install cmake gcc g++ pkg-config ragel libasound2-dev
libssl-dev libglib2.0-dev libpango1.0-dev libgl1-mesa-dev
libevent-dev libgtk2.0-dev libxrandr-dev libxrender-dev
libxcursor-dev libv4l-dev libgles2-mesa-dev libavcodec-dev
libva-dev libvdpau-dev libdrm-dev libicu-dev
Fedora:
$ sudo dnf install cmake gcc gcc-c++ pkgconfig ragel alsa-lib-devel openssl-devel
glib2-devel pango-devel mesa-libGL-devel libevent-devel gtk2-devel
libXrandr-devel libXrender-devel libXcursor-devel libv4l-devel
mesa-libGLES-devel ffmpeg-devel libva-devel libvdpau-devel libdrm-devel
pulseaudio-libs-devel libicu-devel
(Optional) So installieren Sie libpulse-dev , um die Unterstützung von PulseAudio zu aktivieren.
(Optional) So installieren Sie libjack-jackd2-dev und libsoxr-dev
Erstellen Sie ein build -Unterverzeichnis im Stammverzeichnis aus diesem Ordner, rufen Sie aus
$ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
$ make
libfreshwrapper-flashplayer.so in das Browser-Plugins-Verzeichnis ( ~/.mozilla/plugins ) ein oder installieren Sie systemweit auf Anruf: # make install
Standardmäßig werden Plugin (s) an ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/mozilla/plugins make install . Der Pfad kann entweder durch Ändern von CMake -Parameter CMAKE_INSTALL_PREFIX oder durch Einstellen MOZPLUGIN_INSTALL_DIR geändert werden.
Wenn Sie mit dem Browser geladen werden, sucht es nach libpepflashplayer.so So in einem Verzeichnis, in dem es sich um ein Verzeichnis verchromt (stabil/beta/instabil) und in /usr/lib/pepperflashplugin-nonfree/ (Pfefferflashplugin-nonfree setzt es dort an). Es sollte ausreichen, um es zum Laufen zu bringen, aber wenn dies nicht der Fall ist, geben Sie einen vollständigen Pfad in ~/.config/freshwrapper.conf an. Möglicherweise finden Sie Beispielkonfigurationsdateien in /data . Es ist besser, manifest.json neben libpepflashplayer.so zu haben. So wird die tatsächliche Flash -Version aus diesem Manifest entnommen.
Der Hardware-Beschleunigungs-Video-Dekodierungscode erfordert eine relativ neue Version von libavcodec (Januar 2013, Version 54.39.0). Wenn Sie es noch nicht haben, wird Code nicht kompiliert, es sei denn, Sie deaktivieren HWDEC WITH_HWDEC=0 . Ändern Sie dazu den Befehl Konfigurationsschritt auf:
$ cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_HWDEC=0 ..
Beachten Sie, dass auch bei der Erstellung von Hardware-Beschleunigungs-Video-Decodierung standardmäßig noch deaktiviert ist. Sie müssen es explizit in der Konfigurationsdatei aktivieren.
Obwohl es besser ist, die Systemimplementierung von OpenGL | ES 2 zu verwenden, ist es immer noch möglich, die Angle -GLES2 -Emulation zu nutzen, indem Sie mit der Befehlszeile der CMAKE zur Konfigurationszeit hinzufügen ( WITH_GLES2=0 -DWITH_GLES2=0 um genau zu sein). Beachten Sie, dass C ++ 11-fähiger Compiler erforderlich ist.
Die MIT -Lizenz. Siehe LICENSE für Volltext.
Verzeichnis 3rdparty/ enthält Quellcode von Dritten, die unter anderen Lizenzbedingungen verteilt werden können. Einzelheiten finden Sie in Quellcode.