@scrypted/libav 1.0.122 → 1.0.123
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.
- package/.vscode/settings.json +2 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/codeccontext.cpp +55 -0
- package/src/codeccontext.h +1 -0
- package/src/formatcontext.cpp +29 -10
- package/src/index.ts +2 -1
package/.vscode/settings.json
CHANGED
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,kCAEC;AAED,8BAEC;AAGD,0BAwBC;AAED,sCA2BC;
|
|
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
package/src/codeccontext.cpp
CHANGED
|
@@ -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
|
+
}
|
package/src/codeccontext.h
CHANGED
|
@@ -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);
|
package/src/formatcontext.cpp
CHANGED
|
@@ -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*
|
|
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
|
-
//
|
|
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].
|
|
451
|
+
if (!info[2].IsUndefined() && !info[2].IsNull())
|
|
451
452
|
{
|
|
452
|
-
|
|
453
|
-
|
|
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
|
-
|
|
457
|
-
|
|
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
|
-
|
|
460
|
-
|
|
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
|
-
|
|
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;
|