1 // Copyright 2014 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.
5 #include "ppapi/cpp/media_stream_audio_track.h"
7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/c/ppb_media_stream_audio_track.h"
9 #include "ppapi/cpp/audio_frame.h"
10 #include "ppapi/cpp/completion_callback.h"
11 #include "ppapi/cpp/module_impl.h"
12 #include "ppapi/cpp/var.h"
18 template <> const char* interface_name
<PPB_MediaStreamAudioTrack_0_1
>() {
19 return PPB_MEDIASTREAMAUDIOTRACK_INTERFACE_0_1
;
24 MediaStreamAudioTrack::MediaStreamAudioTrack() {
27 MediaStreamAudioTrack::MediaStreamAudioTrack(
28 const MediaStreamAudioTrack
& other
) : Resource(other
) {
31 MediaStreamAudioTrack::MediaStreamAudioTrack(const Resource
& resource
)
32 : Resource(resource
) {
33 PP_DCHECK(IsMediaStreamAudioTrack(resource
));
36 MediaStreamAudioTrack::MediaStreamAudioTrack(PassRef
, PP_Resource resource
)
37 : Resource(PASS_REF
, resource
) {
40 MediaStreamAudioTrack::~MediaStreamAudioTrack() {
43 int32_t MediaStreamAudioTrack::Configure(uint32_t samples_per_frame
,
44 uint32_t frame_buffer_size
) {
45 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
46 return get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->Configure(
47 pp_resource(), samples_per_frame
, frame_buffer_size
);
49 return PP_ERROR_NOINTERFACE
;
52 std::string
MediaStreamAudioTrack::GetId() const {
53 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
54 pp::Var
id(PASS_REF
, get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->GetId(
62 bool MediaStreamAudioTrack::HasEnded() const {
63 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
64 return PP_ToBool(get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->HasEnded(
70 int32_t MediaStreamAudioTrack::GetFrame(
71 const CompletionCallbackWithOutput
<AudioFrame
>& cc
) {
72 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
73 return get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->GetFrame(
74 pp_resource(), cc
.output(), cc
.pp_completion_callback());
76 return cc
.MayForce(PP_ERROR_NOINTERFACE
);
79 int32_t MediaStreamAudioTrack::RecycleFrame(const AudioFrame
& frame
) {
80 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
81 return get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->RecycleFrame(
82 pp_resource(), frame
.pp_resource());
84 return PP_ERROR_NOINTERFACE
;
87 void MediaStreamAudioTrack::Close() {
88 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>())
89 get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->Close(pp_resource());
93 bool MediaStreamAudioTrack::IsMediaStreamAudioTrack(const Resource
& resource
) {
94 if (has_interface
<PPB_MediaStreamAudioTrack_0_1
>()) {
95 return PP_ToBool(get_interface
<PPB_MediaStreamAudioTrack_0_1
>()->
96 IsMediaStreamAudioTrack(resource
.pp_resource()));