Подключение VLC к проекту C#

Здравствуйте.
Уже просто истерика берет… что этому проигрывателю нужно то.

Взял стандартный пример вот отсюда. Все отлично работает.
В 86 и 64 режиме.

Далее по примеру древней библиотеки LibVLC.net пытаюсь подключить колбэки.

        private static readonly MediaPlayer.LibVLCVideoFormatCb m_VideoFormatCallback = Video_Format;
        private static readonly MediaPlayer.LibVLCVideoLockCb m_VideoLockCallback = Video_Lock;
        private static readonly MediaPlayer.LibVLCVideoUnlockCb m_VideoUnlockCallback = Video_Unlock;
        private static readonly MediaPlayer.LibVLCVideoDisplayCb m_VideoDisplayCallback = Video_Display;
        private static readonly MediaPlayer.LibVLCVideoCleanupCb m_VideoCleanupCallback = Video_Cleanup;

вот так прицепляю:

            _libVLC = new LibVLC();
            _mediaPlayer = new MediaPlayer(_libVLC);

            _mediaPlayer.SetVideoCallbacks(m_VideoLockCallback, m_VideoUnlockCallback, m_VideoDisplayCallback);
            _mediaPlayer.SetVideoFormatCallbacks(m_VideoFormatCallback, m_VideoCleanupCallback);

первый стоп попадает вот в этой функции:

 private static uint Video_Format(ref IntPtr opaque, IntPtr chroma, ref uint width, ref uint height, ref uint pitches, ref uint lines)
        {
            Debug.WriteLine("Video_Format", "MediaPlayer");

            VideoBuffer video_buffer;
            if (m_VideoBuffers.TryGetValue(opaque, out video_buffer))
                m_VideoBuffers.TryRemove(opaque, out video_buffer);
            video_buffer = new VideoBuffer(width, height);
            m_VideoBuffers.TryAdd(opaque, video_buffer);

            // https://www.videolan.org/developers/vlc/doc/doxygen/html/fourcc__list_8h_source.html
            ToFourCC("RV32", chroma);            
            width = video_buffer.Width;
            height = video_buffer.Height;
            pitches = video_buffer.Stride;
            lines = video_buffer.Height;
            return 1;
        }

При попытке проиграть файл получаю
image

или вот это в режиме 86
image

В сети я почитал у всех почему то работает. Что я упустил то??

Думается что в opaque надо чтото передать, но что?? В прошлой либе ничего не передавалось.

Такое нашел:

To initialize the library and deploy libvlc itself we use VlcDeployment class. It is important to have VLC packages at the same directory as your application exe. For MacOS it should be libvlc-1.1.9-macosx.zip and for Windows livlc-1.1.9-win32.zip. These packages distributed together with sources and located under ‘3rd-party/libvlc’ directory.

Источник: Libvlc.Net project / Quick-start manual

Так тут по её примеру, а не она сама. Тут видимо libvlcsharp.
И раз

то с нахождением VLC библиотек видимо всё ок.

Это наверно просто указатель на плеер, который тут передается

и в стандартном колбеке используется так

Может быть документация чем-то поможет? https://github.com/videolan/libvlcsharp/blob/609235b25c516961bb3e51a2a565f05d5e6c22c6/src/LibVLCSharp/Shared/MediaPlayer.cs#L1975

UPD: а, точнее в 1813 строке тут видимо вызывается пользовательский колбек и туда передается _videoUserData, куда можно положить что-то свое и потом использовать в других колбеках.

И похоже версию nuget правильную нужно выбрать…

хз что там с колбеком … мне все таки кажется что какой то баг.
у меня opaque приходит 0. Пытался ему туда пихать NativeHandle плеера но это не влияет на результат.
Там по советам сделал инициализацию с параметрами логирования

_libVLC = new LibVLC("--verbose=2", "--no-audio"); 

но это вообще никак не дает понять где ошибка. Стандартный лог … потом бах и IllegalInstruction
В общем рылся ночью по форумам и где на каком то иностранном ресурсе нашел вроде бы такую же проблему. Ее также никто не решил в корне но предложили в лоб задать требуемый формат.
И это сработало. Костыльно конечно … но работает.

              // вместо этого
             //_mediaPlayer.SetVideoFormatCallbacks(m_VideoFormatCallback, m_VideoCleanupCallback);
              // делаем так
            _mediaPlayer.SetVideoFormat("RGB2", Video_buffer.Width, Video_buffer.Height, Video_buffer.Stride);

но где то в либе баг все таки присутствует.

Я в студии нашел этиу либу и прикрепил к проекту WPF . вроде все само должно под текущие параметры сконфигурироваться.

Так я ж говорю, это вроде просто можно использовать для любых своих данных, чтобы делиться ими между своими колбеками.
Само оно с ним ничего не делает.

см. Ctrl+F _videoUserData в MediaPlayer