كيفية التفاف معلمة مكتبة ج?(إنشاء س 264. صافي المجمع)
سؤال
حتى في دلل لدينا x264_param_t
هيكل \ كائن وظيفة لإعداد لها x264_param_apply_profile
.في ج نستخدم هذا الرمز لإعداده
x264_param_t param;
x264_param_default_preset(¶m, "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(¶m, "baseline");
أريد إنشاء المجمع لمثل هذا..شيء.لذلك لدي ليبكس 264.دلل وفيسوال ستوديو 2010 برو.
صافي ج # المجمع لذلك?
أنا مبتدئ في ف \ استدعاء الاشياء لذلك أنا لا تحصل على الكثير من ذلك...
ما أريد تحقيقه هو الإطار حسب مستوى إطار العمل مع س 264...الآن أنا بحاجة فقط ترميز أجزاء...وجميع التعليمات البرمجية عينة اللازمة للقيام بذلك في ج في كيف واحد ترميز سلسلة من الصور إلى ح264 باستخدام اكس264 ج أبي? .لذلك أنا بحاجة إلى كتابة المجمع فقط للأشياء المذكورة هناك...لذلك أنا أسأل-كيفية إنشاء المجمع على المعلمة وعلى وظيفة أن يضع ثاب بارام.وأود أن أرى كيفية استدعاء هذا المجمع مرة أخرى من ج#.حتى إذا كنت يمكن أن توفر أي رمز في دعم سأكون سعيدا لرؤيتها.
المحلول
بدلا من محاولة هذا (و زيليونات رموز أخرى) نفسك ، قد أقترح عليك محاولة ممتاز ميجوي?تم تطويره في ج # ويدعم كل من س 264 ، وعلى استعداد لاستخدامها في ج# أو مشروع صافي آخر.لا حاجة إلى أغلفة ، لقد فعلوا كل ذلك من أجلك بالفعل.
في حين أنه لن يكون من الصعب بشكل رهيب لاستدعاء وظيفة مكتبة ج باستخدام ج# ، إذا كنت ترغب في أن تفعل كل شيء بنفسك ، أود أن أقترح عليك إلقاء نظرة على http://pinvoke.net, ، والتي تمنحك العديد من الأمثلة حول كيفية القيام بذلك بنفسك.
نصائح أخرى
والمثير للدهشة، في كل هذه السنوات ، يبدو أن لا أحد قد بنيت وتقاسمت حتى أبسط المجمع نيت ل ليبكس 264.لذلك أنا بنيت مؤخرا واحد الذي أسميه "س 264 نت" ووضعه على جيثب ، هنا: https://github.com/bp2008/x264net
المجمع هو التبسيط جدا في هذا الوقت ، مما يجعلها مثالا جيدا على كيفية الوصول إلى مكتبات ج من لغات صافي.لم أكن استخدام ص / استدعاء ، لأنني أجد صعوبة في العمل مع.بدلا من ذلك ، استخدمت لغة تسمى "ج/ / كلي" لإنشاء طبقة التشغيل البيني.ج/ / كلي هي لغة تقوم على ج which التي يمكن الوصول إلى الأصلي ج / ج libraries المكتبات ، في حين أن نفسها يمكن الوصول إليها من قبل التعليمات البرمجية.لذلك يسد الفجوة بين التعليمات البرمجية المدارة والأصلية مثل الكثير من ف/استدعاء يفعل.