@@ -252,6 +252,59 @@ napi_value licenses(napi_env env, napi_callback_info info) {
252252 return result;
253253}
254254
255+ napi_value logging (napi_env env, napi_callback_info info) {
256+ napi_status status;
257+ napi_value result;
258+ int logLevel;
259+ char * logLevelStr;
260+ size_t strLen;
261+
262+ napi_value args[1 ];
263+ size_t argc = 1 ;
264+ status = napi_get_cb_info (env, info, &argc, args, nullptr , nullptr );
265+ CHECK_STATUS;
266+
267+ if (argc == 0 ) {
268+ logLevel = av_log_get_level ();
269+ status = napi_create_string_utf8 (env,
270+ (char *) beam_lookup_name (beam_logging_level->forward , logLevel),
271+ NAPI_AUTO_LENGTH, &result);
272+ CHECK_STATUS;
273+ } else {
274+ if (argc != 1 ) {
275+ status = napi_throw_error (env, nullptr , " Wrong number of arguments to set log level." );
276+ return nullptr ;
277+ }
278+
279+ napi_value params = args[0 ];
280+ napi_valuetype t;
281+ status = napi_typeof (env, params, &t);
282+ CHECK_STATUS;
283+ if (t != napi_string) {
284+ status = napi_throw_type_error (env, nullptr , " Logging level parameter must be a string." );
285+ return nullptr ;
286+ }
287+
288+ status = napi_get_value_string_utf8 (env, args[0 ], nullptr , 0 , &strLen);
289+ CHECK_STATUS;
290+ logLevelStr = (char *) malloc (sizeof (char ) * (strLen + 1 ));
291+ CHECK_STATUS;
292+ status = napi_get_value_string_utf8 (env, args[0 ], logLevelStr, strLen + 1 , &strLen);
293+ CHECK_STATUS;
294+
295+ logLevel = beam_lookup_enum (beam_logging_level->inverse , logLevelStr);
296+ if (logLevel == BEAM_ENUM_UNKNOWN) {
297+ NAPI_THROW_ERROR (" Logging level string unrecognised" );
298+ }
299+ av_log_set_level (logLevel);
300+
301+ status = napi_get_undefined (env, &result);
302+ CHECK_STATUS;
303+ }
304+
305+ return result;
306+ }
307+
255308napi_status fromAVCodec (napi_env env, const AVCodec* codec, napi_value *result) {
256309 napi_status status;
257310 napi_value array, element, subel, value, props, nullval;
@@ -890,11 +943,12 @@ napi_value Init(napi_env env, napi_value exports) {
890943 DECLARE_NAPI_METHOD (" versionStrings" , versionStrings),
891944 DECLARE_NAPI_METHOD (" configurations" , configurations),
892945 DECLARE_NAPI_METHOD (" licenses" , licenses),
946+ DECLARE_NAPI_METHOD (" logging" , logging),
893947 DECLARE_NAPI_METHOD (" governor" , governor),
894948 DECLARE_NAPI_METHOD (" format" , makeFormat),
895949 DECLARE_NAPI_METHOD (" decoder" , decoder),
896- DECLARE_NAPI_METHOD (" filterer" , filterer),
897- DECLARE_NAPI_METHOD (" encoder" , encoder), // 10
950+ DECLARE_NAPI_METHOD (" filterer" , filterer), // 10
951+ DECLARE_NAPI_METHOD (" encoder" , encoder),
898952 DECLARE_NAPI_METHOD (" codecs" , codecs),
899953 DECLARE_NAPI_METHOD (" decoders" , decoders),
900954 DECLARE_NAPI_METHOD (" encoders" , encoders),
@@ -903,8 +957,8 @@ napi_value Init(napi_env env, napi_value exports) {
903957 DECLARE_NAPI_METHOD (" pix_fmts" , pix_fmts),
904958 DECLARE_NAPI_METHOD (" sample_fmts" , sampleFormats),
905959 DECLARE_NAPI_METHOD (" protocols" , protocols),
906- DECLARE_NAPI_METHOD (" filters" , filters),
907- DECLARE_NAPI_METHOD (" bsfs" , bsfs), // 20
960+ DECLARE_NAPI_METHOD (" filters" , filters), // 20
961+ DECLARE_NAPI_METHOD (" bsfs" , bsfs),
908962 DECLARE_NAPI_METHOD (" packet" , makePacket),
909963 DECLARE_NAPI_METHOD (" frame" , makeFrame),
910964 DECLARE_NAPI_METHOD (" codecParameters" , makeCodecParameters),
@@ -916,7 +970,7 @@ napi_value Init(napi_env env, napi_value exports) {
916970 { " AV_NOPTS_VALUE" , nullptr , nullptr , nullptr , nullptr ,
917971 noopts, napi_enumerable, nullptr }
918972 };
919- status = napi_define_properties (env, exports, 28 , desc);
973+ status = napi_define_properties (env, exports, 29 , desc);
920974 CHECK_STATUS;
921975
922976 avdevice_register_all ();
0 commit comments