summaryrefslogtreecommitdiffstats
path: root/webkit/glue/plugins/npapi_extension_thunk.cc
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-12 21:30:25 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-01-12 21:30:25 +0000
commit321ad87b01c1e040f3f121044f8c255ca5548b30 (patch)
tree50a7575b7ee9d0ec0498395a6557af7b74e6ecfd /webkit/glue/plugins/npapi_extension_thunk.cc
parentdb2ff4b4607eb2a54b30ea9c4b8248e7a1cebfe5 (diff)
downloadchromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.zip
chromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.tar.gz
chromium_src-321ad87b01c1e040f3f121044f8c255ca5548b30.tar.bz2
Working rudimentary audio in Pepper.
BUG=28292 TEST=none Patch by neb@chromium.org Original review: http://codereview.chromium.org/524006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@36043 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/plugins/npapi_extension_thunk.cc')
-rw-r--r--webkit/glue/plugins/npapi_extension_thunk.cc85
1 files changed, 85 insertions, 0 deletions
diff --git a/webkit/glue/plugins/npapi_extension_thunk.cc b/webkit/glue/plugins/npapi_extension_thunk.cc
index eee6c80..5700ef5 100644
--- a/webkit/glue/plugins/npapi_extension_thunk.cc
+++ b/webkit/glue/plugins/npapi_extension_thunk.cc
@@ -251,6 +251,80 @@ static NPError Device3DMapBuffer(NPP id,
return NPERR_GENERIC_ERROR;
}
+// Audio device API ------------------------------------------------------------
+
+static NPError DeviceAudioQueryCapability(NPP id, int32 capability,
+ int32* value) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ if (plugin) {
+ plugin->webplugin()->delegate()->DeviceAudioQueryCapability(capability,
+ value);
+ return NPERR_NO_ERROR;
+ } else {
+ return NPERR_GENERIC_ERROR;
+ }
+}
+
+static NPError DeviceAudioQueryConfig(NPP id,
+ const NPDeviceConfig* request,
+ NPDeviceConfig* obtain) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ if (plugin) {
+ return plugin->webplugin()->delegate()->DeviceAudioQueryConfig(
+ static_cast<const NPDeviceContextAudioConfig*>(request),
+ static_cast<NPDeviceContextAudioConfig*>(obtain));
+ }
+ return NPERR_GENERIC_ERROR;
+}
+
+static NPError DeviceAudioInitializeContext(NPP id,
+ const NPDeviceConfig* config,
+ NPDeviceContext* context) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ if (plugin) {
+ return plugin->webplugin()->delegate()->DeviceAudioInitializeContext(
+ static_cast<const NPDeviceContextAudioConfig*>(config),
+ static_cast<NPDeviceContextAudio*>(context));
+ }
+ return NPERR_GENERIC_ERROR;
+}
+
+static NPError DeviceAudioSetStateContext(NPP id,
+ NPDeviceContext* context,
+ int32 state,
+ int32 value) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ if (plugin) {
+ return plugin->webplugin()->delegate()->DeviceAudioSetStateContext(
+ static_cast<NPDeviceContextAudio*>(context), state, value);
+ }
+ return NPERR_GENERIC_ERROR;
+}
+
+static NPError DeviceAudioGetStateContext(NPP id,
+ NPDeviceContext* context,
+ int32 state,
+ int32* value) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ return plugin->webplugin()->delegate()->DeviceAudioGetStateContext(
+ static_cast<NPDeviceContextAudio*>(context), state, value);
+}
+
+static NPError DeviceAudioFlushContext(NPP id,
+ NPDeviceContext* context,
+ NPDeviceFlushContextCallbackPtr callback,
+ void* user_data) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ return plugin->webplugin()->delegate()->DeviceAudioFlushContext(
+ id, static_cast<NPDeviceContextAudio*>(context), callback, user_data);
+}
+
+static NPError DeviceAudioDestroyContext(NPP id,
+ NPDeviceContext* context) {
+ scoped_refptr<NPAPI::PluginInstance> plugin = FindInstance(id);
+ return plugin->webplugin()->delegate()->DeviceAudioDestroyContext(
+ static_cast<NPDeviceContextAudio*>(context));
+}
// -----------------------------------------------------------------------------
static NPDevice* AcquireDevice(NPP id, NPDeviceID device_id) {
@@ -278,12 +352,23 @@ static NPDevice* AcquireDevice(NPP id, NPDeviceID device_id) {
Device3DDestroyBuffer,
Device3DMapBuffer,
};
+ static NPDevice device_audio = {
+ DeviceAudioQueryCapability,
+ DeviceAudioQueryConfig,
+ DeviceAudioInitializeContext,
+ DeviceAudioSetStateContext,
+ DeviceAudioGetStateContext,
+ DeviceAudioFlushContext,
+ DeviceAudioDestroyContext,
+ };
switch (device_id) {
case NPPepper2DDevice:
return const_cast<NPDevice*>(&device_2d);
case NPPepper3DDevice:
return const_cast<NPDevice*>(&device_3d);
+ case NPPepperAudioDevice:
+ return const_cast<NPDevice*>(&device_audio);
default:
return NULL;
}