@scrypted/libav 1.0.122 → 1.0.124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,6 +23,7 @@
23
23
  "sstream": "c",
24
24
  "queue": "cpp",
25
25
  "stack": "cpp",
26
- "scale_eval.h": "c"
26
+ "scale_eval.h": "c",
27
+ "filters.h": "c"
27
28
  }
28
29
  }
package/lib/index.d.ts CHANGED
@@ -51,6 +51,7 @@ export interface AVCodecContext extends AVTimeBase {
51
51
  */
52
52
  readonly pixelFormat: string;
53
53
  readonly hardwarePixelFormat: string;
54
+ readonly vendorInfo: Record<string, any>;
54
55
  [Symbol.dispose](): void;
55
56
  destroy(): void;
56
57
  sendPacket(packet: AVPacket): Promise<boolean>;
@@ -72,7 +73,7 @@ export interface AVFormatContext {
72
73
  readonly streams: AVStream[];
73
74
  [Symbol.dispose](): void;
74
75
  open(input: string): void;
75
- createDecoder(streamIndex: number, hardwareDevice?: string, decoder?: string): AVCodecContext;
76
+ createDecoder(streamIndex: number, hardwareDevice?: string, decoder?: string, deviceName?: string): AVCodecContext;
76
77
  readFrame(): Promise<AVPacket>;
77
78
  receiveFrame(streamIndex: number, codecContext: AVCodecContext): Promise<AVFrame>;
78
79
  create(format: string, callback: (buffer: Buffer) => void): void;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,kCAEC;AAED,8BAEC;AAGD,0BAwBC;AAED,sCA2BC;AAgGD,sCAEC;AAED,sDAEC;AAED,wCAcC;AAED,sCAOC;AAED,oCAeC;AA4BD,wBA2BC;AAED,4BAqBC;AA5SD,8DAAqC;AACrC,mCAA8B;AAC9B,uDAAyC;AACzC,4CAAoB;AACpB,gDAAwB;AACxB,6BAAgC;AAChC,mEAA0C;AAG1C,IAAI,KAAU,CAAC;AACf,IAAI,CAAC;IACD,KAAK,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AACD,OAAO,CAAC,EAAE,CAAC;AACX,CAAC;AAED,SAAgB,WAAW;IACvB,OAAO,CAAC,CAAC,KAAK,CAAC;AACnB,CAAC;AAED,SAAgB,SAAS,CAAC,SAAiB,EAAE,KAAkB,OAAO;IAClE,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,UAAqC,CAAC;AACnC,KAAK,UAAU,OAAO,CAAC,WAAoB,EAAE,KAAkB,OAAO;IACzE,IAAI,KAAK;QACL,OAAO;IAEX,IAAI,UAAU;QACV,OAAO,UAAU,CAAC;IAEtB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACtE,IAAI,CAAC;QACD,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO;IACX,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;IACX,CAAC;IAED,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;QACrB,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;QACjC,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,EAAE;SACC,OAAO,CAAC,GAAG,EAAE;QACV,UAAU,GAAG,SAAS,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEP,OAAO,UAAU,CAAC;AACtB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,WAAoB;IACpD,MAAM,GAAG,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC;QACD,MAAM,YAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACtD,YAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,YAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,wBAAK,CAAC,GAAG,CAAC,SAAS,EAAE;QAC3B,MAAM,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAA,aAAI,EAAC,CAAC,EAAE,UAAU,CAAsB,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAA,OAAI,EAAC;QACzB,GAAG,EAAE,WAAW;KACnB,CAAC,CAAC,CAAC;IACJ,MAAM,IAAA,aAAI,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,MAAM,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;AACzE,CAAC;AAgGD,SAAgB,aAAa,CAAC,KAAiG;IAC3H,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,qBAAqB;IACjC,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;AACvC,CAAC;AAED,SAAgB,cAAc,CAAC,OAY9B;IACG,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,aAAa,CACzB,KAAa,EACb,MAAc,EACd,WAAmB,EACnB,SAAS,GAAG,IAAI;IAEhB,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACxD,CAAC,qBAAU,CAAC,mBAAmB,EAAE,IAAI,qBAAU,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAA;IAEvE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,sBAAW,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;IAE5D,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,WAAW,GAAG,GAAG,UAAU,KAAK,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;IAErG,MAAM,GAAG,GAAG,2DAA2D,OAAO,IAAI,WAAW,EAAE,CAAC;IAEhG,OAAO,GAAG,CAAC;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,aAAsB,EAAE,OAAe;;;QAC7D,MAAM,OAAO,kCAAG,aAAa,CAAC,aAAa,CAAC;YACxC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE;gBACN,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,EAAE;aAClB;YACD,IAAI,EAAE;gBACF,OAAO;gBACP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;aAChB;SACJ,CAAC,QAAA,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI;YACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAExC,MAAM,eAAe,kCAAG,MAAM,OAAO,CAAC,aAAa,EAAE,QAAA,CAAC;QACtD,IAAI,CAAC,eAAe;YAChB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAEvD,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC;;;;;;;;;CACpC;AAEM,KAAK,UAAU,MAAM,CAAC,KAAc,EAAE,OAAe;;;QACxD,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU;YAChC,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,YAAY,GAAG,uBAAuB,CAAC;QAC3C,IAAI,KAAK,CAAC,kBAAkB;YACxB,YAAY,GAAG,qBAAqB,KAAK,CAAC,cAAc,IAAI,YAAY,EAAE,CAAC;QAE/E,MAAM,MAAM,kCAAG,cAAc,CAAC;YAC1B,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACJ;oBACI,KAAK;oBACL,QAAQ,EAAE;wBACN,WAAW,EAAE,CAAC;wBACd,WAAW,EAAE,EAAE;qBAClB;iBACJ;aACJ;SACJ,CAAC,QAAA,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,aAAa,kCAAG,MAAM,CAAC,QAAQ,EAAE,QAAA,CAAC;QACxC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QACtB,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QAEtB,OAAO,MAAM,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;;;;;;;;;CACnD;AAEM,KAAK,UAAU,QAAQ,CAAC,KAAc;;;QACzC,IAAI,CAAC,KAAK,CAAC,kBAAkB;YACzB,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE5B,MAAM,YAAY,GAAG,qBAAqB,KAAK,CAAC,cAAc,EAAE,CAAC;QACjE,MAAM,MAAM,kCAAG,cAAc,CAAC;YAC1B,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACJ;oBACI,KAAK;oBACL,QAAQ,EAAE;wBACN,WAAW,EAAE,CAAC;wBACd,WAAW,EAAE,EAAE;qBAClB;iBACJ;aACJ;SACJ,CAAC,QAAA,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,aAAa,kCAAG,MAAM,CAAC,QAAQ,EAAE,QAAA,CAAC;QACxC,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;;;;;;;;;CACnC;AAEY,QAAA,OAAO,GAAW,sBAAW,CAAC,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrypted/libav",
3
- "version": "1.0.122",
3
+ "version": "1.0.124",
4
4
  "dependencies": {
5
5
  "detect-libc": "^2.0.3",
6
6
  "follow-redirects": "^1.15.9",
@@ -9,6 +9,11 @@ extern "C"
9
9
  #include <libavfilter/buffersrc.h>
10
10
  #include <libavfilter/avfilter.h>
11
11
  #include <libavutil/opt.h>
12
+
13
+ #ifdef __linux__
14
+ #include <libavutil/hwcontext_vaapi.h>
15
+ extern const char *vaQueryVendorString(void *dpy);
16
+ #endif
12
17
  }
13
18
 
14
19
  #include <thread>
@@ -60,6 +65,8 @@ Napi::Object AVCodecContextObject::Init(Napi::Env env, Napi::Object exports)
60
65
 
61
66
  AVCodecContextObject::InstanceAccessor("timeBaseDen", &AVCodecContextObject::GetTimeBaseDen, nullptr),
62
67
 
68
+ AVCodecContextObject::InstanceAccessor("vendorInfo", &AVCodecContextObject::GetVendorInfo, nullptr),
69
+
63
70
  InstanceMethod(Napi::Symbol::WellKnown(env, "dispose"), &AVCodecContextObject::Destroy),
64
71
 
65
72
  InstanceMethod("destroy", &AVCodecContextObject::Destroy),
@@ -477,3 +484,51 @@ Napi::Value AVCodecContextObject::GetTimeBaseDen(const Napi::CallbackInfo &info)
477
484
 
478
485
  return Napi::Number::New(env, codecContext->time_base.den);
479
486
  }
487
+
488
+ Napi::Value AVCodecContextObject::GetVendorInfo(const Napi::CallbackInfo &info)
489
+ {
490
+ Napi::Env env = info.Env();
491
+
492
+ // compiler check for linux x64 to query vaapi
493
+ #ifndef __x86_64__
494
+ return env.Undefined();
495
+ #endif
496
+ #ifndef __linux__
497
+ return env.Undefined();
498
+ #else
499
+
500
+ if (!codecContext)
501
+ {
502
+ return env.Undefined();
503
+ }
504
+
505
+ const char *name = av_get_pix_fmt_name(hw_pix_fmt);
506
+ if (strcmp(name, "vaapi"))
507
+ {
508
+ return env.Undefined();
509
+ }
510
+
511
+ if (!codecContext->hw_device_ctx || !codecContext->hw_device_ctx->data)
512
+ {
513
+ return env.Undefined();
514
+ }
515
+ AVHWDeviceContext *hw_device_ctx = (AVHWDeviceContext*)codecContext->hw_device_ctx->data;
516
+
517
+ AVVAAPIDeviceContext *vaapi_device_ctx = (AVVAAPIDeviceContext *)hw_device_ctx->hwctx;
518
+ if (!vaapi_device_ctx)
519
+ {
520
+ return env.Undefined();
521
+ }
522
+
523
+ void *display = vaapi_device_ctx->display;
524
+ const char *driver = vaQueryVendorString(display);
525
+ if (!driver)
526
+ {
527
+ return env.Undefined();
528
+ }
529
+
530
+ Napi::Object obj = Napi::Object::New(env);
531
+ obj.Set("driver", Napi::String::New(env, driver));
532
+ return obj;
533
+ #endif
534
+ }
@@ -37,6 +37,7 @@ private:
37
37
  Napi::Value GetHardwareDevice(const Napi::CallbackInfo &info);
38
38
  Napi::Value GetPixelFormat(const Napi::CallbackInfo &info);
39
39
  Napi::Value GetHardwarePixelFormat(const Napi::CallbackInfo &info);
40
+ Napi::Value GetVendorInfo(const Napi::CallbackInfo &info);
40
41
  Napi::Value ReceiveFrame(const Napi::CallbackInfo &info);
41
42
  Napi::Value ReceivePacket(const Napi::CallbackInfo &info);
42
43
  Napi::Value SendPacket(const Napi::CallbackInfo &info);
@@ -418,7 +418,7 @@ Napi::Value AVFormatContextObject::CreateDecoder(const Napi::CallbackInfo &info)
418
418
 
419
419
  Napi::Env env = info.Env();
420
420
 
421
- AVStream* stream = fmt_ctx_->streams[streamIndex];
421
+ AVStream *stream = fmt_ctx_->streams[streamIndex];
422
422
  AVCodecID codec_id = stream->codecpar->codec_id;
423
423
  const struct AVCodec *codec = avcodec_find_decoder(codec_id);
424
424
  Napi::Object codecContextReturn = AVCodecContextObject::NewInstance(env);
@@ -426,6 +426,7 @@ Napi::Value AVFormatContextObject::CreateDecoder(const Napi::CallbackInfo &info)
426
426
  codecContextObject->hw_device_value = AV_HWDEVICE_TYPE_NONE;
427
427
  AVBufferRef *hw_device_ctx = nullptr;
428
428
  int ret;
429
+ std::string deviceName;
429
430
 
430
431
  // args are hardwareDeviceName (optional) hardwareDeviceDecoder (optional)
431
432
  if (info.Length() > 1)
@@ -444,20 +445,38 @@ Napi::Value AVFormatContextObject::CreateDecoder(const Napi::CallbackInfo &info)
444
445
  return env.Undefined();
445
446
  }
446
447
 
447
- // qsv path
448
+ // hwaccel decoder name (ie, hevc_qsv, which needs to be manually specified for some reason)
448
449
  if (info.Length() > 2)
449
450
  {
450
- if (!info[2].IsString())
451
+ if (!info[2].IsUndefined() && !info[2].IsNull())
451
452
  {
452
- Napi::Error::New(env, "Unexpected type in place of decoder string").ThrowAsJavaScriptException();
453
- return env.Undefined();
453
+ if (!info[2].IsString())
454
+ {
455
+ Napi::Error::New(env, "Unexpected type in place of decoder string").ThrowAsJavaScriptException();
456
+ return env.Undefined();
457
+ }
458
+
459
+ codec = avcodec_find_decoder_by_name(info[2].As<Napi::String>().Utf8Value().c_str());
460
+ if (!codec)
461
+ {
462
+ Napi::Error::New(env, "Decoder not found").ThrowAsJavaScriptException();
463
+ return env.Undefined();
464
+ }
454
465
  }
466
+ }
455
467
 
456
- codec = avcodec_find_decoder_by_name(info[2].As<Napi::String>().Utf8Value().c_str());
457
- if (!codec)
468
+ // specific device name (ie, /dev/dri/renderD128)
469
+ if (info.Length() > 3)
470
+ {
471
+ if (!info[3].IsUndefined() && !info[3].IsNull())
458
472
  {
459
- Napi::Error::New(env, "Decoder not found").ThrowAsJavaScriptException();
460
- return env.Undefined();
473
+ if (!info[3].IsString())
474
+ {
475
+ Napi::Error::New(env, "Unexpected type in place of device string").ThrowAsJavaScriptException();
476
+ return env.Undefined();
477
+ }
478
+
479
+ deviceName = info[3].As<Napi::String>().Utf8Value();
461
480
  }
462
481
  }
463
482
 
@@ -480,7 +499,7 @@ Napi::Value AVFormatContextObject::CreateDecoder(const Napi::CallbackInfo &info)
480
499
  }
481
500
 
482
501
  if ((ret = av_hwdevice_ctx_create(&hw_device_ctx, codecContextObject->hw_device_value,
483
- NULL, NULL, 0)) < 0)
502
+ deviceName.length() ? deviceName.c_str() : nullptr, NULL, 0)) < 0)
484
503
  {
485
504
  // throw
486
505
  Napi::Error::New(env, AVErrorString(ret)).ThrowAsJavaScriptException();
package/src/index.ts CHANGED
@@ -133,6 +133,7 @@ export interface AVCodecContext extends AVTimeBase {
133
133
  */
134
134
  readonly pixelFormat: string;
135
135
  readonly hardwarePixelFormat: string;
136
+ readonly vendorInfo: Record<string, any>;
136
137
 
137
138
  [Symbol.dispose](): void;
138
139
  destroy(): void;
@@ -159,7 +160,7 @@ export interface AVFormatContext {
159
160
 
160
161
  [Symbol.dispose](): void;
161
162
  open(input: string): void;
162
- createDecoder(streamIndex: number, hardwareDevice?: string, decoder?: string): AVCodecContext;
163
+ createDecoder(streamIndex: number, hardwareDevice?: string, decoder?: string, deviceName?: string): AVCodecContext;
163
164
  readFrame(): Promise<AVPacket>;
164
165
  receiveFrame(streamIndex: number, codecContext: AVCodecContext): Promise<AVFrame>;
165
166
  create(format: string, callback: (buffer: Buffer) => void): void;