bare-ffmpeg 1.0.0-16 → 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 +68 -0
- package/lib/codec-parameters.d.ts +1 -0
- package/lib/codec-parameters.js +15 -1
- package/lib/frame.d.ts +5 -0
- package/lib/frame.js +4 -0
- 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;
|
|
@@ -1354,6 +1410,15 @@ bare_ffmpeg_frame_init(js_env_t *env, js_receiver_t) {
|
|
|
1354
1410
|
return handle;
|
|
1355
1411
|
}
|
|
1356
1412
|
|
|
1413
|
+
static void
|
|
1414
|
+
bare_ffmpeg_frame_unref(
|
|
1415
|
+
js_env_t *env,
|
|
1416
|
+
js_receiver_t,
|
|
1417
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_frame_t, 1> frame
|
|
1418
|
+
) {
|
|
1419
|
+
av_frame_unref(frame->handle);
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1357
1422
|
static void
|
|
1358
1423
|
bare_ffmpeg_frame_destroy(
|
|
1359
1424
|
js_env_t *env,
|
|
@@ -2564,9 +2629,12 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2564
2629
|
V("getCodecParametersWidth", bare_ffmpeg_codec_parameters_get_width)
|
|
2565
2630
|
V("getCodecParametersHeight", bare_ffmpeg_codec_parameters_get_height)
|
|
2566
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)
|
|
2567
2634
|
|
|
2568
2635
|
V("initFrame", bare_ffmpeg_frame_init)
|
|
2569
2636
|
V("destroyFrame", bare_ffmpeg_frame_destroy)
|
|
2637
|
+
V("unrefFrame", bare_ffmpeg_frame_unref)
|
|
2570
2638
|
V("getFrameWidth", bare_ffmpeg_frame_get_width)
|
|
2571
2639
|
V("setFrameWidth", bare_ffmpeg_frame_set_width)
|
|
2572
2640
|
V("getFrameHeight", bare_ffmpeg_frame_get_height)
|
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/frame.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import FFmpegChannelLayout from './channel-layout'
|
|
2
|
+
import FFmpegRational from './rational'
|
|
2
3
|
|
|
3
4
|
declare class FFmpegFrame {
|
|
4
5
|
readonly pictType: number
|
|
@@ -11,10 +12,14 @@ declare class FFmpegFrame {
|
|
|
11
12
|
pixelFormat: number
|
|
12
13
|
format: number
|
|
13
14
|
nbSamples: number
|
|
15
|
+
pts: number
|
|
16
|
+
packetDTS: number
|
|
17
|
+
timeBase: FFmpegRational
|
|
14
18
|
|
|
15
19
|
constructor()
|
|
16
20
|
|
|
17
21
|
alloc(): void
|
|
22
|
+
unref(): void
|
|
18
23
|
|
|
19
24
|
destroy(): void
|
|
20
25
|
[Symbol.dispose](): void
|
package/lib/frame.js
CHANGED
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
|