Example #1
0
        public ERRORS Start(PlayerOnEventCb eventcb)
        {
            ERRORS ret;

            ret = dz_player_activate(libcPlayerHndl, new IntPtr(this.GetHashCode()));
            Console.WriteLine($"dz_player_activate result: {ret}");

            this.eventcb = delegate(PLAYER * libcPlayer, PLAYER_EVENT *libcPlayerEvent, IntPtr userdata)
            {
                Player      player      = (Player)refKeeper[userdata];
                PlayerEvent playerEvent = PlayerEvent.newFromLibcEvent(libcPlayerEvent);

                STREAMING_MODE streamingMode;
                int            idx;

                var result = dz_player_event_get_queuelist_context(libcPlayerEvent, &streamingMode, &idx);

                if (!result)
                {
                    streamingMode = STREAMING_MODE.DZ_STREAMING_MODE_ONDEMAND;
                    idx           = DZ_INDEX_IN_QUEUELIST_INVALID;
                }

                if (playerEvent.eventType == PLAYER_EVENT_TYPE.DZ_PLAYER_EVENT_QUEUELIST_TRACK_SELECTED)
                {
                    bool isPreview;
                    bool canPauseUnPause;
                    bool canSeek;
                    int  numberSkipAllowed;

                    isPreview = dz_player_event_track_selected_is_preview(libcPlayerEvent);
                    var ok = dz_player_event_track_selected_rights(libcPlayerEvent, &canPauseUnPause, &canSeek, &numberSkipAllowed);

                    var songIntPtr = dz_player_event_track_selected_dzapiinfo(libcPlayerEvent);
                    var nextIntPtr = dz_player_event_track_selected_next_track_dzapiinfo(libcPlayerEvent);

                    var currentSongStr = NativeMethods.StringFromNativeUtf8(songIntPtr);
                    var nextSongStr    = NativeMethods.StringFromNativeUtf8(nextIntPtr);

                    CurrentSong = JsonConvert.DeserializeObject <Song>(currentSongStr);

                    OnSongChanged(CurrentSong);
                    IsPlaying = true;
                }
                else if (playerEvent.eventType == PLAYER_EVENT_TYPE.DZ_PLAYER_EVENT_QUEUELIST_LOADED && CurrentStation.IndexOf("playlist", StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    Next();
                    Console.WriteLine("Next song - plalist");
                }
                eventcb.Invoke(player, playerEvent);
            };

            ret = dz_player_set_event_cb(libcPlayerHndl, this.eventcb);
            Console.WriteLine($"dz_player_set_event_cb result: {ret}");

            return(ret);
        }
Example #2
0
 static extern unsafe ERRORS dz_player_set_event_cb(PLAYER *lpcc, libcPlayerOnEventCb cb);
Example #3
0
 static extern unsafe ERRORS dz_player_cache_next(PLAYER *lpcc, libcPlayerOnEventCb cb, IntPtr userData, string trackUrl);
Example #4
0
 static extern unsafe ERRORS dz_player_play_audioads(PLAYER *lpcc, libcPlayerOnEventCb cb, IntPtr operation_userdata);
Example #5
0
 static extern unsafe ERRORS dz_player_load_radio(PLAYER *lpcc, libcPlayerOnEventCb cb, IntPtr userData, string radioType, string radioId);