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) 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Defines the <code>PPB_MediaStreamAudioTrack</code> interface. Used for 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * receiving audio samples from a MediaStream audio track in the browser. 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)[generate_thunk] 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)label Chrome { 14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch [channel=dev] M34 = 0.1, 15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch M35 = 0.1 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * This enumeration contains audio track attributes which are used by 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>Configure()</code>. 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)enum PP_MediaStreamAudioTrack_Attrib { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Attribute list terminator. 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE = 0, 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The maximum number of buffers to hold audio samples. 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Note: this is only used as advisory; the browser may allocate more or fewer 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * based on available resources. How many buffers depends on usage - 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * request at least 2 to make sure latency doesn't cause lost samples. If 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * the plugin expects to hold on to more than one buffer at a time (e.g. to do 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * multi-buffer processing), it should request that many more. 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS = 1, 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The sample rate of audio data in buffers. The attribute value is a 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_AudioBuffer_SampleRate</code>. 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_RATE = 2, 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The sample size of audio data in buffers in bytes. The attribute value is a 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_AudioBuffer_SampleSize</code>. 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_SAMPLE_SIZE = 3, 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The number of channels in audio buffers. 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Supported values: 1, 2 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_CHANNELS = 4, 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The duration of an audio buffer in milliseconds. 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Valid range: 10 to 10000 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION = 5 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 65effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch[version=0.1] 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)interface PPB_MediaStreamAudioTrack { 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Determines if a resource is a MediaStream audio track resource. 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] resource The <code>PP_Resource</code> to test. 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource is a Mediastream audio track resource or <code>PP_FALSE</code> 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * otherwise. 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Bool IsMediaStreamAudioTrack([in] PP_Resource resource); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Configures underlying buffers for incoming audio samples. 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * If the application doesn't want to drop samples, then the 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS</code> should be 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * chosen such that inter-buffer processing time variability won't overrun all 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * the input buffers. If all buffers are filled, then samples will be 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * dropped. The application can detect this by examining the timestamp on 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * returned buffers. If <code>Configure()</code> is not called, default 8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * settings will be used. Calls to Configure while the plugin holds 8746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * buffers will fail. 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Example usage from plugin code: 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @code 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * int32_t attribs[] = { 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_BUFFERS, 4, 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_DURATION, 10, 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE}; 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * track_if->Configure(track, attribs, callback); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @endcode 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource. 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] attrib_list A list of attribute name-value pairs in which each 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * attribute is immediately followed by the corresponding desired value. 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * The list is terminated by 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_MEDIASTREAMAUDIOTRACK_ATTRIB_NONE</code>. 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * completion of <code>Configure()</code>. 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return An int32_t containing a result code from <code>pp_errors.h</code>. 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t Configure([in] PP_Resource audio_track, 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] int32_t[] attrib_list, 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_CompletionCallback callback); 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets attribute value for a given attribute name. 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource. 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] attrib A <code>PP_MediaStreamAudioTrack_Attrib</code> for 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * querying. 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[out] value A int32_t for storing the attribute value on success. 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Otherwise, the value will not be changed. 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return An int32_t containing a result code from <code>pp_errors.h</code>. 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t GetAttrib([in] PP_Resource audio_track, 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_MediaStreamAudioTrack_Attrib attrib, 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [out] int32_t value); 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Returns the track ID of the underlying MediaStream audio track. 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track The <code>PP_Resource</code> to check. 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return A <code>PP_Var</code> containing the MediaStream track ID as 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * a string. 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Var GetId([in] PP_Resource audio_track); 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Checks whether the underlying MediaStream track has ended. 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Calls to GetBuffer while the track has ended are safe to make and will 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * complete, but will fail. 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track The <code>PP_Resource</code> to check. 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * MediaStream track has ended or <code>PP_FALSE</code> otherwise. 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [on_failure=PP_TRUE] 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Bool HasEnded([in] PP_Resource audio_track); 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Gets the next audio buffer from the MediaStream track. 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * If internal processing is slower than the incoming buffer rate, new buffers 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * will be dropped from the incoming stream. Once all buffers are full, 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * audio samples will be dropped until <code>RecycleBuffer()</code> is called 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * to free a slot for another buffer. 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * If there are no audio data in the input buffer, 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>PP_OK_COMPLETIONPENDING</code> will be returned immediately and the 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * <code>callback</code> will be called, when a new buffer of audio samples 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * is received or an error happens. 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource. 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[out] buffer A <code>PP_Resource</code> corresponding to 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * an AudioBuffer resource. 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * completion of GetBuffer(). 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return An int32_t containing a result code from <code>pp_errors.h</code>. 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t GetBuffer([in] PP_Resource audio_track, 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [out] PP_Resource buffer, 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_CompletionCallback callback); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Recycles a buffer returned by <code>GetBuffer()</code>, so the track can 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * reuse the buffer. And the buffer will become invalid. The caller should 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * release all references it holds to <code>buffer</code> and not use it 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * anymore. 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track A <code>PP_Resource</code> corresponding to an audio 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * resource. 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] buffer A <code>PP_Resource</code> corresponding to 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * an AudioBuffer resource returned by <code>GetBuffer()</code>. 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return An int32_t containing a result code from <code>pp_errors.h</code>. 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int32_t RecycleBuffer([in] PP_Resource audio_track, 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) [in] PP_Resource buffer); 1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Closes the MediaStream audio track and disconnects it from the audio 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * source. After calling <code>Close()</code>, no new buffers will be 1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * received. 1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] audio_track A <code>PP_Resource</code> corresponding to a 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * MediaStream audio track resource. 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Close([in] PP_Resource audio_track); 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 202