Pepper_47_C++_interfaces
audio.cc
Go to the documentation of this file.
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ppapi/cpp/audio.h"
6 
9 
10 namespace pp {
11 
12 namespace {
13 
14 template <> const char* interface_name<PPB_Audio_1_0>() {
15  return PPB_AUDIO_INTERFACE_1_0;
16 }
17 
18 template <> const char* interface_name<PPB_Audio_1_1>() {
19  return PPB_AUDIO_INTERFACE_1_1;
20 }
21 
22 } // namespace
23 
24 Audio::Audio(const InstanceHandle& instance,
25  const AudioConfig& config,
26  PPB_Audio_Callback callback,
27  void* user_data)
28  : config_(config),
29  use_1_0_interface_(false) {
30  if (has_interface<PPB_Audio_1_1>()) {
31  PassRefFromConstructor(get_interface<PPB_Audio_1_1>()->Create(
32  instance.pp_instance(), config.pp_resource(), callback, user_data));
33  }
34 }
35 
36 Audio::Audio(const InstanceHandle& instance,
37  const AudioConfig& config,
38  PPB_Audio_Callback_1_0 callback,
39  void* user_data)
40  : config_(config),
41  use_1_0_interface_(true) {
42  if (has_interface<PPB_Audio_1_0>()) {
43  PassRefFromConstructor(get_interface<PPB_Audio_1_0>()->Create(
44  instance.pp_instance(), config.pp_resource(), callback, user_data));
45  }
46 }
47 
49  if (has_interface<PPB_Audio_1_1>() && !use_1_0_interface_) {
50  return PP_ToBool(get_interface<PPB_Audio_1_1>()->StartPlayback(
51  pp_resource()));
52  }
53  if (has_interface<PPB_Audio_1_0>()) {
54  return PP_ToBool(get_interface<PPB_Audio_1_0>()->StartPlayback(
55  pp_resource()));
56  }
57  return false;
58 }
59 
61  if (has_interface<PPB_Audio_1_1>() && !use_1_0_interface_) {
62  return PP_ToBool(get_interface<PPB_Audio_1_1>()->StopPlayback(
63  pp_resource()));
64  }
65  if (has_interface<PPB_Audio_1_0>()) {
66  return PP_ToBool(get_interface<PPB_Audio_1_0>()->StopPlayback(
67  pp_resource()));
68  }
69  return false;
70 }
71 
72 } // namespace pp
void PassRefFromConstructor(PP_Resource resource)
Definition: resource.cc:50
bool StartPlayback()
Definition: audio.cc:48
PP_Resource pp_resource() const
Definition: resource.h:47
bool StopPlayback()
Definition: audio.cc:60
Audio()
An empty constructor for an Audio resource.
Definition: audio.h:28
PP_Instance pp_instance() const