/// <summary>
 /// Called when the stream identified by |audio_stream_id| has started.
 /// |audio_stream_id| will uniquely identify the stream across all future
 /// CefAudioHandler callbacks. OnAudioSteamStopped will always be called after
 /// OnAudioStreamStarted; both methods may be called multiple times for the
 /// same stream. |channels| is the number of channels, |channel_layout| is the
 /// layout of the channels and |sample_rate| is the stream sample rate.
 /// |frames_per_buffer| is the maximum number of frames that will occur in the
 /// PCM packet passed to OnAudioStreamPacket.
 /// </summary>
 protected abstract void OnAudioStreamStarted(CefBrowser browser, int audioStreamId, int channels, CefChannelLayout channelLayout, int sampleRate, int framesPerBuffer);
        private void on_audio_stream_started(cef_audio_handler_t *self, cef_browser_t *browser, int audio_stream_id, int channels, CefChannelLayout channel_layout, int sample_rate, int frames_per_buffer)
        {
            CheckSelf(self);

            var mBrowser = CefBrowser.FromNative(browser);

            OnAudioStreamStarted(mBrowser, audio_stream_id, channels, channel_layout, sample_rate, frames_per_buffer);
        }