Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Указанный исполняемый файл не является действительным приложением для этой операционной системы http://www.cyberforum.ru/csharp-net/thread1134149.html
//СКАЧИВАНИЕ BEGIN System.Net.WebClient webClient = new System.Net.WebClient(); Uri uri = new...
Сегментация изображения C#
Всем привет! Как мне разделить изображения (*.tiff) космофото на много сегментов например сегмент 20 пикселей и обработать каждый FFT (но ето уже другая тема)? Спасибо!
Приостановить выполнение одного приложения до окончания выполнения любого другого C#
Добрый вечер! Подскажите, что лучше использовать, чтобы приостановить выполнение одного приложения, до окончания выполнения любого другого? Можно с сылочками и примерами. Конкретная задача:...
C# TCP сервер, который принимает ссылки с браузера Создаю TCP сервер, который принимает ссылки с браузера. Если я загружаю по одной ссылке тогда он всё принимает, но когда открываю браузер (там закреплены 10-20 вкладок) сервер печатает пустые... http://www.cyberforum.ru/csharp-net/thread1133849.html
C# Hyper-v: назначить ВМ сетевой адаптер http://www.cyberforum.ru/csharp-net/thread1133822.html
Здравствуйте. У меня сложилась такая ситуация: Есть скрипт vbs для бэкапа ВМ: HyperV Backup Tool v0.7.3 (http://sysadmins.ru/topic247352.html). Я его обрабатываю в C#, для большей...
C# Проблемы с конструкцией async\await при использовании WPF или Windows Forms
Добрый день! Написал библиотечку, использующую, в том числе конструкции async-await. Всё работает, при компиляции в виде консольного приложения, выполняется на ура. Подключил библиотечку к...
C# Асинхронный сервер на UDP-сокетах
Хай. Я как-то писал асинх. сервер с использованием TCP-протокола и все получилось очень круто, потому что там есть понятие соединения, и когда очередной клиент подключается к серверу, то мы получаем...
C# Научить нейросеть переводить двоичные числа в десятиричные В общем. Задание :научить нейросеть переводить двоичные числа в десятиричные. С чего начинать вообще без понятия, как вообще устроить нейросеть? Подскажите, если знаете. Заранее спасибо. http://www.cyberforum.ru/csharp-net/thread1133412.html
C# Принятие ссылок и передача их серверу http://www.cyberforum.ru/csharp-net/thread1133321.html
Нужно создать socks5 клиент принимает данные потом их передаёт. Сервер их принимает и выводит все ссылки которые ему поступили. Когда одиночно открываешь ссылки в браузере клиент нормально их...
C# Открытие запароленного архива Имеется архив под паролем(пароль мне известен). Как можно его открыть программно? Т.е. как я понимаю нужно какие то параметры при открытии файла передавать вот только как? http://www.cyberforum.ru/csharp-net/thread1133304.html
Eliador
16 / 16 / 4
Регистрация: 18.05.2011
Сообщений: 83
03.04.2014, 08:29  [ТС] 0

Рендеринг видео потока используя OpenTK и LibVLC

03.04.2014, 08:29. Просмотров 3370. Ответов 5
Метки (Все метки)

Ответ

Разобрался еще кое в чем, как оказалось я не совсем правельно понял суть Lock колбэка. Lock вызывается не после того как очередной кадр был вычитан из потока, а перед этим, тобиш в параметре planes не содержится вычитанного кадра, а необходимо в него положить адрес буфера, куда будет вычитан очередной кадр.

Делал двумя способами:

1. В лоб, использовал маршализацию
перед воспроизведение выделяем память в неуправляемой куче
C#
1
pMem = Marshal.AllocHGlobal( Width*Height*4 );
pMem - глобыльный IntPtr
а в Lock ссылаюсь на этот буфер
C#
1
planes  = pMem;
при нажатии на стоп или при закрытии приложения память освобождаем
C#
1
Marshal.FreeHGlobal( pMem );
2. Используя структуру GCHandle для получения доступа к неуправляемой памяти. Этот способ я позаимствовал в библиотеке LibVLC.NET
Создаю объект VideoBuffer:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    public class VideoBuffer
    {
 
       public VideoBuffer(uint width, uint height)
        {
            Width = width;
            Height = height;
            PixelFormat = pixelFormat;
            Stride = Width * 4;
            Lines = Height;
            FrameBuffer = new byte[Stride * Lines];
        }
 
        private GCHandle m_GCHandle = default(GCHandle);
 
        internal IntPtr Lock()
        {
            return (m_GCHandle = GCHandle.Alloc(FrameBuffer, GCHandleType.Pinned)).AddrOfPinnedObject();
        }
 
        internal void Unlock()
        {
            m_GCHandle.Free();
        }
 
        public readonly uint Width;
        public readonly uint Height;
        public readonly uint Stride;
        public readonly uint Lines;
        public readonly byte[] FrameBuffer;
    }
перед воспроизведение создаю этот буфер
C#
1
Pixels = new LibVLC.VideoBuffer(1280, 720);
Pixels - глобальный VideoBuffer
а в Lock ссылаюсь на этот буфер
C#
1
planes = Pixels.Lock();
Но всеравно крашится с той же ошибкой, но теперь у меня хоть есть какая-то уверенность, что крашится он из-за кривого обращения к памяти.
Я не очень силен в неуправляемом коде в C# что я делю не так? Или я опять не правельно понял логику перенаправления видео потока в память с помощью libVLC?

Вернуться к обсуждению:
Рендеринг видео потока используя OpenTK и LibVLC
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2014, 08:29

3д моделирование и рендеринг одно и тоже?Что такое рендеринг?
3д моделирование и рендеринг одно и тоже?Что такое рендеринг?

В сервисе видео-наблюдения на малине с передачей видео-потока на веб страничку добавить картинку
Всем доброго дня! Может не совсем по теме, но у меня похоже такая же проблема..... Строю сервис...

LibVLC
Кто нибудь работал с последней версией этой библиотеки? Набросайте пожалуйста примитивный...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru