bare-ffmpeg 1.0.0-17 → 1.0.0-18
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/README.md +36 -0
- package/binding.cc +58 -0
- package/lib/codec-parameters.d.ts +1 -0
- package/lib/codec-parameters.js +15 -1
- package/lib/rational.d.ts +6 -0
- package/lib/rational.js +14 -6
- package/package.json +1 -1
- package/prebuilds/android-arm/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-ia32/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-x64/bare-ffmpeg.bare +0 -0
package/README.md
CHANGED
|
@@ -339,6 +339,12 @@ Gets the sample rate for audio codecs.
|
|
|
339
339
|
|
|
340
340
|
**Returns**: `number`
|
|
341
341
|
|
|
342
|
+
##### `CodecParameters.extraData`
|
|
343
|
+
|
|
344
|
+
Out-of-band global headers that may be used by some codecs.
|
|
345
|
+
|
|
346
|
+
**Returns**: `Buffer`
|
|
347
|
+
|
|
342
348
|
#### Methods
|
|
343
349
|
|
|
344
350
|
##### `CodecParameters.fromContext(context)`
|
|
@@ -636,6 +642,36 @@ Gets the denominator.
|
|
|
636
642
|
|
|
637
643
|
**Returns**: `number`
|
|
638
644
|
|
|
645
|
+
##### `Rational.valid`
|
|
646
|
+
|
|
647
|
+
Returns if true if rational describes a non-zero & non-negative quantity.
|
|
648
|
+
|
|
649
|
+
**Returns**: `number`
|
|
650
|
+
|
|
651
|
+
##### `Rational.uninitialized`
|
|
652
|
+
|
|
653
|
+
Returns if true when is not set.
|
|
654
|
+
|
|
655
|
+
**Returns**: `number`
|
|
656
|
+
|
|
657
|
+
##### `Rational.toNumber()`
|
|
658
|
+
|
|
659
|
+
see `av_q2d()`
|
|
660
|
+
|
|
661
|
+
**Returns**: `number`
|
|
662
|
+
|
|
663
|
+
##### `static Rational.from(number)`
|
|
664
|
+
|
|
665
|
+
see `av_d2q()`
|
|
666
|
+
|
|
667
|
+
**Returns**: `Rational`
|
|
668
|
+
|
|
669
|
+
##### `Rational.rescaleQ(number, timebaseA, timebaseB)`
|
|
670
|
+
|
|
671
|
+
see `av_rescale_q()`
|
|
672
|
+
|
|
673
|
+
**Returns**: `number`
|
|
674
|
+
|
|
639
675
|
### `Stream`
|
|
640
676
|
|
|
641
677
|
The `Stream` API provides functionality to access media stream information and create decoders/encoders.
|
package/binding.cc
CHANGED
|
@@ -1338,6 +1338,62 @@ bare_ffmpeg_codec_parameters_get_framerate(
|
|
|
1338
1338
|
return result;
|
|
1339
1339
|
}
|
|
1340
1340
|
|
|
1341
|
+
static js_arraybuffer_t
|
|
1342
|
+
bare_ffmpeg_codec_parameters_get_extra_data(
|
|
1343
|
+
js_env_t *env,
|
|
1344
|
+
js_receiver_t,
|
|
1345
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1346
|
+
) {
|
|
1347
|
+
int err;
|
|
1348
|
+
|
|
1349
|
+
js_arraybuffer_t buffer;
|
|
1350
|
+
|
|
1351
|
+
assert(parameters->handle->extradata_size >= 0);
|
|
1352
|
+
|
|
1353
|
+
err = js_create_arraybuffer(
|
|
1354
|
+
env,
|
|
1355
|
+
parameters->handle->extradata,
|
|
1356
|
+
static_cast<size_t>(parameters->handle->extradata_size),
|
|
1357
|
+
buffer
|
|
1358
|
+
);
|
|
1359
|
+
assert(err == 0);
|
|
1360
|
+
|
|
1361
|
+
return buffer;
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
void
|
|
1365
|
+
bare_ffmpeg_codec_parameters_set_extra_data(
|
|
1366
|
+
js_env_t *env,
|
|
1367
|
+
js_receiver_t,
|
|
1368
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1369
|
+
js_arraybuffer_t buffer,
|
|
1370
|
+
uint32_t offset,
|
|
1371
|
+
uint32_t len
|
|
1372
|
+
) {
|
|
1373
|
+
int err;
|
|
1374
|
+
|
|
1375
|
+
std::span<uint8_t> view;
|
|
1376
|
+
|
|
1377
|
+
err = js_get_arraybuffer_info(env, buffer, view);
|
|
1378
|
+
assert(err == 0);
|
|
1379
|
+
|
|
1380
|
+
if (parameters->handle->extradata_size) {
|
|
1381
|
+
assert(parameters->handle->extradata_size > 0);
|
|
1382
|
+
assert(parameters->handle->extradata);
|
|
1383
|
+
|
|
1384
|
+
av_free(parameters->handle->extradata);
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
size_t min_size = len + AV_INPUT_BUFFER_PADDING_SIZE;
|
|
1388
|
+
|
|
1389
|
+
parameters->handle->extradata = reinterpret_cast<uint8_t *>(av_malloc(min_size));
|
|
1390
|
+
memset(¶meters->handle->extradata[len], 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
|
1391
|
+
|
|
1392
|
+
memcpy(parameters->handle->extradata, &view[offset], len);
|
|
1393
|
+
|
|
1394
|
+
parameters->handle->extradata_size = static_cast<int>(len);
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1341
1397
|
static js_arraybuffer_t
|
|
1342
1398
|
bare_ffmpeg_frame_init(js_env_t *env, js_receiver_t) {
|
|
1343
1399
|
int err;
|
|
@@ -2573,6 +2629,8 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2573
2629
|
V("getCodecParametersWidth", bare_ffmpeg_codec_parameters_get_width)
|
|
2574
2630
|
V("getCodecParametersHeight", bare_ffmpeg_codec_parameters_get_height)
|
|
2575
2631
|
V("getCodecParametersFramerate", bare_ffmpeg_codec_parameters_get_framerate)
|
|
2632
|
+
V("getCodecParametersExtraData", bare_ffmpeg_codec_parameters_get_extra_data)
|
|
2633
|
+
V("setCodecParametersExtraData", bare_ffmpeg_codec_parameters_set_extra_data)
|
|
2576
2634
|
|
|
2577
2635
|
V("initFrame", bare_ffmpeg_frame_init)
|
|
2578
2636
|
V("destroyFrame", bare_ffmpeg_frame_destroy)
|
package/lib/codec-parameters.js
CHANGED
|
@@ -60,6 +60,19 @@ module.exports = class FFmpegCodecParameters {
|
|
|
60
60
|
return binding.getCodecParametersHeight(this._handle)
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
get extraData() {
|
|
64
|
+
return Buffer.from(binding.getCodecParametersExtraData(this._handle))
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
set extraData(value) {
|
|
68
|
+
binding.setCodecParametersExtraData(
|
|
69
|
+
this._handle,
|
|
70
|
+
value.buffer,
|
|
71
|
+
value.byteOffset,
|
|
72
|
+
value.byteLength
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
63
76
|
fromContext(context) {
|
|
64
77
|
binding.codecParametersFromContext(this._handle, context._handle)
|
|
65
78
|
}
|
|
@@ -82,7 +95,8 @@ module.exports = class FFmpegCodecParameters {
|
|
|
82
95
|
sampleRate: this.sampleRate,
|
|
83
96
|
nbChannels: this.nbChannels,
|
|
84
97
|
channelLayout: this.channelLayout,
|
|
85
|
-
frameRate: this.frameRate
|
|
98
|
+
frameRate: this.frameRate,
|
|
99
|
+
extraData: this.extraData
|
|
86
100
|
}
|
|
87
101
|
}
|
|
88
102
|
}
|
package/lib/rational.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
declare class FFmpegRational {
|
|
2
2
|
numerator: number
|
|
3
3
|
denominator: number
|
|
4
|
+
valid: boolean
|
|
5
|
+
unintialized: boolean
|
|
4
6
|
|
|
5
7
|
constructor(numerator: number, denominator: number)
|
|
8
|
+
|
|
9
|
+
toNumber(): number
|
|
10
|
+
static from(number: number): Rational
|
|
11
|
+
static rescaleQ(n: Number, a: Rational, b: Rational)
|
|
6
12
|
}
|
|
7
13
|
|
|
8
14
|
export = FFmpegRational
|
package/lib/rational.js
CHANGED
|
@@ -7,21 +7,22 @@ module.exports = class FFmpegRational {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
get valid() {
|
|
10
|
-
// don't support negative denominators
|
|
11
|
-
|
|
12
|
-
if (this.denominator < 1) return false
|
|
10
|
+
// don't support negative denominators for now
|
|
11
|
+
if (this.denominator < 0) return false
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const n = this.toNumber()
|
|
14
|
+
|
|
15
|
+
if (Number.isNaN(n) || n === 0) return false
|
|
16
16
|
|
|
17
17
|
return true
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
get uninitialized() {
|
|
21
|
+
// common initial value for AVRational(0, 1)
|
|
21
22
|
return this.numerator === 0 && this.denominator === 1
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
toNumber() {
|
|
25
26
|
return this.numerator / this.denominator
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -29,4 +30,11 @@ module.exports = class FFmpegRational {
|
|
|
29
30
|
const view = new Int32Array(binding.rationalD2Q(num))
|
|
30
31
|
return new FFmpegRational(view[0], view[1])
|
|
31
32
|
}
|
|
33
|
+
|
|
34
|
+
static rescaleQ(n, src, dst) {
|
|
35
|
+
return (
|
|
36
|
+
(n * (src.numerator / src.denominator)) /
|
|
37
|
+
(dst.numerator / dst.denominator)
|
|
38
|
+
)
|
|
39
|
+
}
|
|
32
40
|
}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|