Как обернуть параметр библиотеки C? (Создание оболочки x264 .Net) - PullRequest
1 голос
/ 11 июля 2010

так что в dll у нас есть x264_param_t структура \ объект и функция для его настройки x264_param_apply_profile. в C мы используем такой код , чтобы установить его

x264_param_t param;
x264_param_default_preset(&param, "veryfast", "zerolatency");
param.i_threads = 1;
param.i_width = width;
param.i_height = height;
param.i_fps_num = fps;
param.i_fps_den = 1;
// Intra refres:
param.i_keyint_max = fps;
param.b_intra_refresh = 1;
//Rate control:
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;
//For streaming:
param.b_repeat_headers = 1;
param.b_annexb = 1;
x264_param_apply_profile(&param, "baseline");

Я хочу создать обертку для такой .. вещи. поэтому у меня есть libx264.dll и Visual Studio 2010 Pro.

Как мне создать для него оболочку .Net C #?

Я новичок в P \ Invoke, поэтому я не получаю много ...

что я хочу достичь, так это покадрово-уровень работы с x264 ... Сейчас мне нужны только части кодирования ... И весь необходимый пример кода для этого в C находится в Как можно серия изображений в H264 с использованием API x264 C? . Поэтому мне нужно написать обертку только для вещей, упомянутых там ... Поэтому я спрашиваю - как создать обертку для параметра и функции, которая устанавливает параметр thap. И я хотел бы посмотреть, как вызвать эту оболочку из C #. Так что, если бы вы могли предоставить какой-либо код в поддержку, я был бы рад увидеть его.

Ответы [ 2 ]

2 голосов
/ 11 июля 2010

Вместо того, чтобы попробовать это (и миллионы других кодов) самостоятельно, могу ли я предложить вам попробовать превосходный MeGUI ?Он разработан на C # и поддерживает весь X264, готов для использования в вашем C # или другом .NET-проекте.Никаких оберток не нужно, они уже сделали это для вас.

Хотя вызов функции библиотеки C с использованием C # будет не очень сложным, если вы хотите сделать все самостоятельно, я бы хотелПредлагаю вам взглянуть на http://pinvoke.net,, который дает вам множество примеров, как сделать это самостоятельно.

0 голосов
/ 06 декабря 2016

Удивительно, но за все эти годы, кажется, никто не создал и не поделился даже самой простой оболочкой .NET для libx264.Поэтому я недавно построил один, который я называю "x264net", и поместил его на github, здесь: https://github.com/bp2008/x264net

Оболочка в настоящее время очень упрощена, что делает ее хорошим примером того, как получить доступ к библиотекам Си.NET языки.Я не использовал P / Invoke, потому что мне трудно работать с ним.Вместо этого я использовал язык «C ++ / CLI» для создания уровня взаимодействия.C ++ / CLI - это язык, основанный на C ++, который может обращаться к собственным библиотекам C / C ++, но сам по себе доступен с помощью кода .NET.Таким образом, он устраняет разрыв между управляемым и нативным кодом так же, как это делает P / Invoke.

...