views:

81

answers:

1

so in dll we have x264_param_t structure\object and a function for its setting up x264_param_apply_profile. in C we use such code to set it up

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");

I want to create wrapper for such.. thing. so I have libx264.dll and visual studio 2010 pro.

How can I create .Net C# wrapper for it?

I am a beginner in P\Invoke stuff so I do not get a lot of it...

what I want to achive is is frame by frame level of working with x264... By now I need only encoding parts... And all needed sample code for doing it in C is in http://stackoverflow.com/questions/2940671/how-to-encode-series-of-images-into-h264-using-x264-api-c-c/2940700#2940700 . So I need to write a wrapper only for stuff mentioned there... So I am asking - how to create a wrapper on Parameter and on Function that sets up thap param. And I would love to see how to call that wrapper back from c#. So if you could provide any code in support I'd be glad to see it.

+2  A: 

Instead of trying this (and the zillions other codes) yourself, may I suggest you try the excellent MeGUI? It is developed in C# and supports all of X264, ready to be used in your C# or other .NET project. No wrappers needed, they did that all for you already.

While it won't be terribly hard to call a C library function using C#, if you do wish to do it all yourself, I'd like to suggest you have a look at http://pinvoke.net, which gives you numerous examples how to do this yourself.

Abel
Sorry - I see no wrapper for libx264 dll or even for x264 exe there. could you please provide a link to such file in there repository?
Blender
MeGUI doesn't call on libx264.dll directly as far as I know. It calls on the executables directly.
Maister
yep - and what I need is frame by frame level of working with x264... I need only encoding parts... And all needed sample code for doing it in C is in http://stackoverflow.com/questions/2940671/how-to-encode-series-of-images-into-h264-using-x264-api-c-c/2940700#2940700 So I need to write a wrapper only for stuff mentioned there... So I am asking - how to create a wrapper on Parameter and on Function that sets up thap param. And I would love to see how to call that wrapper back from c#. So if you could provide any code in support I'd be glad to see it.
Blender