15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// From ppb_media_stream_audio_track.idl modified Thu Feb 6 15:43:37 2014. 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_errors.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/ppb_media_stream_audio_track.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/shared_impl/tracked_callback.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/enter.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppapi_thunk_export.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/thunk/ppb_media_stream_audio_track_api.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ppapi { 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace thunk { 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PP_Bool IsMediaStreamAudioTrack(PP_Resource resource) { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::IsMediaStreamAudioTrack()"; 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(resource, false); 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return PP_FromBool(enter.succeeded()); 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t Configure(PP_Resource audio_track, 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const int32_t attrib_list[], 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_CompletionCallback callback) { 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::Configure()"; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) callback, 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) true); 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.retval(); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.SetResult(enter.object()->Configure(attrib_list, 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) enter.callback())); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t GetAttrib(PP_Resource audio_track, 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MediaStreamAudioTrack_Attrib attrib, 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t* value) { 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::GetAttrib()"; 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, true); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.retval(); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.object()->GetAttrib(attrib, value); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PP_Var GetId(PP_Resource audio_track) { 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::GetId()"; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, true); 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return PP_MakeUndefined(); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.object()->GetId(); 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PP_Bool HasEnded(PP_Resource audio_track) { 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::HasEnded()"; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, true); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return PP_TRUE; 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.object()->HasEnded(); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t GetBuffer(PP_Resource audio_track, 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Resource* buffer, 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) struct PP_CompletionCallback callback) { 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::GetBuffer()"; 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) callback, 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) true); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.retval(); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.SetResult(enter.object()->GetBuffer(buffer, enter.callback())); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int32_t RecycleBuffer(PP_Resource audio_track, PP_Resource buffer) { 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::RecycleBuffer()"; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, true); 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.retval(); 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return enter.object()->RecycleBuffer(buffer); 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void Close(PP_Resource audio_track) { 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) VLOG(4) << "PPB_MediaStreamAudioTrack::Close()"; 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EnterResource<PPB_MediaStreamAudioTrack_API> enter(audio_track, true); 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (enter.failed()) 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) enter.object()->Close(); 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const PPB_MediaStreamAudioTrack_0_1 g_ppb_mediastreamaudiotrack_thunk_0_1 = { 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &IsMediaStreamAudioTrack, 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Configure, 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetAttrib, 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetId, 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &HasEnded, 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &GetBuffer, 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &RecycleBuffer, 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &Close 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PPAPI_THUNK_EXPORT const PPB_MediaStreamAudioTrack_0_1* 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetPPB_MediaStreamAudioTrack_0_1_Thunk() { 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return &g_ppb_mediastreamaudiotrack_thunk_0_1; 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace thunk 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ppapi 113