michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include michael@0: #include "AndroidBridge.h" michael@0: #include "ANPBase.h" michael@0: #include "nsIPluginInstanceOwner.h" michael@0: #include "nsPluginInstanceOwner.h" michael@0: #include "nsNPAPIPluginInstance.h" michael@0: #include "gfxRect.h" michael@0: michael@0: #define LOG(args...) __android_log_print(ANDROID_LOG_INFO, "GeckoPlugins" , ## args) michael@0: #define ASSIGN(obj, name) (obj)->name = anp_video_##name michael@0: michael@0: using namespace mozilla; michael@0: michael@0: typedef nsNPAPIPluginInstance::VideoInfo VideoInfo; michael@0: michael@0: static ANPNativeWindow anp_video_acquireNativeWindow(NPP instance) { michael@0: nsNPAPIPluginInstance* pinst = static_cast(instance->ndata); michael@0: michael@0: return pinst->AcquireVideoWindow(); michael@0: } michael@0: michael@0: static void anp_video_setWindowDimensions(NPP instance, const ANPNativeWindow window, michael@0: const ANPRectF* dimensions) { michael@0: nsNPAPIPluginInstance* pinst = static_cast(instance->ndata); michael@0: michael@0: gfxRect rect(dimensions->left, dimensions->top, michael@0: dimensions->right - dimensions->left, michael@0: dimensions->bottom - dimensions->top); michael@0: michael@0: pinst->SetVideoDimensions(window, rect); michael@0: pinst->RedrawPlugin(); michael@0: } michael@0: michael@0: static void anp_video_releaseNativeWindow(NPP instance, ANPNativeWindow window) { michael@0: nsNPAPIPluginInstance* pinst = static_cast(instance->ndata); michael@0: pinst->ReleaseVideoWindow(window); michael@0: pinst->RedrawPlugin(); michael@0: } michael@0: michael@0: static void anp_video_setFramerateCallback(NPP instance, const ANPNativeWindow window, ANPVideoFrameCallbackProc callback) { michael@0: // Bug 722682 michael@0: NOT_IMPLEMENTED(); michael@0: } michael@0: michael@0: /////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: void InitVideoInterfaceV0(ANPVideoInterfaceV0* i) { michael@0: ASSIGN(i, acquireNativeWindow); michael@0: ASSIGN(i, setWindowDimensions); michael@0: ASSIGN(i, releaseNativeWindow); michael@0: } michael@0: michael@0: void InitVideoInterfaceV1(ANPVideoInterfaceV1* i) { michael@0: ASSIGN(i, acquireNativeWindow); michael@0: ASSIGN(i, setWindowDimensions); michael@0: ASSIGN(i, releaseNativeWindow); michael@0: ASSIGN(i, setFramerateCallback); michael@0: }