bare-ffmpeg 1.0.0-17 → 1.0.0-19
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 +73 -0
- package/binding.cc +278 -0
- package/lib/codec-parameters.d.ts +7 -1
- package/lib/codec-parameters.js +55 -1
- package/lib/constants.d.ts +9 -0
- package/lib/constants.js +27 -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
|
@@ -315,6 +315,24 @@ const params = stream.codecParameters // Get from stream
|
|
|
315
315
|
|
|
316
316
|
#### Properties
|
|
317
317
|
|
|
318
|
+
##### `CodecParameters.codecType`
|
|
319
|
+
|
|
320
|
+
General type of the encoded data.
|
|
321
|
+
|
|
322
|
+
**Returns**: `number`
|
|
323
|
+
|
|
324
|
+
##### `CodecParameters.codecId`
|
|
325
|
+
|
|
326
|
+
Specific type of the encoded data (the codec used).
|
|
327
|
+
|
|
328
|
+
**Returns**: `number`
|
|
329
|
+
|
|
330
|
+
##### `CodecParameters.codecTag`
|
|
331
|
+
|
|
332
|
+
Additional information about the codec (corresponds to the AVI FOURCC).
|
|
333
|
+
|
|
334
|
+
**Returns**: `number`
|
|
335
|
+
|
|
318
336
|
##### `CodecParameters.bitRate`
|
|
319
337
|
|
|
320
338
|
Gets the bit rate.
|
|
@@ -339,6 +357,31 @@ Gets the sample rate for audio codecs.
|
|
|
339
357
|
|
|
340
358
|
**Returns**: `number`
|
|
341
359
|
|
|
360
|
+
##### `CodecParameters.extraData`
|
|
361
|
+
|
|
362
|
+
Out-of-band global headers that may be used by some codecs.
|
|
363
|
+
|
|
364
|
+
**Returns**: `Buffer`
|
|
365
|
+
|
|
366
|
+
##### `CodecParameters.codecProfile`
|
|
367
|
+
|
|
368
|
+
Codec-specific bitstream restrictions that the stream conforms to.
|
|
369
|
+
|
|
370
|
+
**Returns**: `number`
|
|
371
|
+
|
|
372
|
+
##### `CodecParameters.codecLevel`
|
|
373
|
+
|
|
374
|
+
Codec-specific bitstream restrictions that the stream conforms to.
|
|
375
|
+
|
|
376
|
+
**Returns**: `number`
|
|
377
|
+
|
|
378
|
+
##### `CodecParameters.codecFormat`
|
|
379
|
+
|
|
380
|
+
Video: the pixel format, the value corresponds to AVPixelFormat.
|
|
381
|
+
Audio: the sample format, the value corresponds to AVSampleFormat.
|
|
382
|
+
|
|
383
|
+
**Returns**: `number`
|
|
384
|
+
|
|
342
385
|
#### Methods
|
|
343
386
|
|
|
344
387
|
##### `CodecParameters.fromContext(context)`
|
|
@@ -636,6 +679,36 @@ Gets the denominator.
|
|
|
636
679
|
|
|
637
680
|
**Returns**: `number`
|
|
638
681
|
|
|
682
|
+
##### `Rational.valid`
|
|
683
|
+
|
|
684
|
+
Returns if true if rational describes a non-zero & non-negative quantity.
|
|
685
|
+
|
|
686
|
+
**Returns**: `number`
|
|
687
|
+
|
|
688
|
+
##### `Rational.uninitialized`
|
|
689
|
+
|
|
690
|
+
Returns if true when is not set.
|
|
691
|
+
|
|
692
|
+
**Returns**: `number`
|
|
693
|
+
|
|
694
|
+
##### `Rational.toNumber()`
|
|
695
|
+
|
|
696
|
+
see `av_q2d()`
|
|
697
|
+
|
|
698
|
+
**Returns**: `number`
|
|
699
|
+
|
|
700
|
+
##### `static Rational.from(number)`
|
|
701
|
+
|
|
702
|
+
see `av_d2q()`
|
|
703
|
+
|
|
704
|
+
**Returns**: `Rational`
|
|
705
|
+
|
|
706
|
+
##### `Rational.rescaleQ(number, timebaseA, timebaseB)`
|
|
707
|
+
|
|
708
|
+
see `av_rescale_q()`
|
|
709
|
+
|
|
710
|
+
**Returns**: `number`
|
|
711
|
+
|
|
639
712
|
### `Stream`
|
|
640
713
|
|
|
641
714
|
The `Stream` API provides functionality to access media stream information and create decoders/encoders.
|
package/binding.cc
CHANGED
|
@@ -1271,6 +1271,35 @@ bare_ffmpeg_codec_parameters_get_codec_type(
|
|
|
1271
1271
|
return parameters->handle->codec_type;
|
|
1272
1272
|
}
|
|
1273
1273
|
|
|
1274
|
+
static void
|
|
1275
|
+
bare_ffmpeg_codec_parameters_set_codec_type(
|
|
1276
|
+
js_env_t *env,
|
|
1277
|
+
js_receiver_t,
|
|
1278
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1279
|
+
int type
|
|
1280
|
+
) {
|
|
1281
|
+
parameters->handle->codec_type = static_cast<AVMediaType>(type);
|
|
1282
|
+
}
|
|
1283
|
+
|
|
1284
|
+
static uint32_t
|
|
1285
|
+
bare_ffmpeg_codec_parameters_get_codec_tag(
|
|
1286
|
+
js_env_t *env,
|
|
1287
|
+
js_receiver_t,
|
|
1288
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1289
|
+
) {
|
|
1290
|
+
return parameters->handle->codec_tag;
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
static void
|
|
1294
|
+
bare_ffmpeg_codec_parameters_set_codec_tag(
|
|
1295
|
+
js_env_t *env,
|
|
1296
|
+
js_receiver_t,
|
|
1297
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1298
|
+
uint32_t codec_tag
|
|
1299
|
+
) {
|
|
1300
|
+
parameters->handle->codec_tag = codec_tag;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1274
1303
|
static int32_t
|
|
1275
1304
|
bare_ffmpeg_codec_parameters_get_codec_id(
|
|
1276
1305
|
js_env_t *env,
|
|
@@ -1280,6 +1309,73 @@ bare_ffmpeg_codec_parameters_get_codec_id(
|
|
|
1280
1309
|
return parameters->handle->codec_id;
|
|
1281
1310
|
}
|
|
1282
1311
|
|
|
1312
|
+
static void
|
|
1313
|
+
bare_ffmpeg_codec_parameters_set_codec_id(
|
|
1314
|
+
js_env_t *env,
|
|
1315
|
+
js_receiver_t,
|
|
1316
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1317
|
+
uint32_t codec_id
|
|
1318
|
+
) {
|
|
1319
|
+
parameters->handle->codec_id = static_cast<AVCodecID>(codec_id);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
static int
|
|
1323
|
+
bare_ffmpeg_codec_parameters_get_codec_level(
|
|
1324
|
+
js_env_t *env,
|
|
1325
|
+
js_receiver_t,
|
|
1326
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1327
|
+
) {
|
|
1328
|
+
return parameters->handle->level;
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
static void
|
|
1332
|
+
bare_ffmpeg_codec_parameters_set_codec_level(
|
|
1333
|
+
js_env_t *env,
|
|
1334
|
+
js_receiver_t,
|
|
1335
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1336
|
+
int level
|
|
1337
|
+
) {
|
|
1338
|
+
parameters->handle->level = level;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
static int
|
|
1342
|
+
bare_ffmpeg_codec_parameters_get_codec_profile(
|
|
1343
|
+
js_env_t *env,
|
|
1344
|
+
js_receiver_t,
|
|
1345
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1346
|
+
) {
|
|
1347
|
+
return parameters->handle->profile;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
static void
|
|
1351
|
+
bare_ffmpeg_codec_parameters_set_codec_profile(
|
|
1352
|
+
js_env_t *env,
|
|
1353
|
+
js_receiver_t,
|
|
1354
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1355
|
+
int profile
|
|
1356
|
+
) {
|
|
1357
|
+
parameters->handle->profile = profile;
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
static int
|
|
1361
|
+
bare_ffmpeg_codec_parameters_get_codec_format(
|
|
1362
|
+
js_env_t *env,
|
|
1363
|
+
js_receiver_t,
|
|
1364
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1365
|
+
) {
|
|
1366
|
+
return parameters->handle->format;
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
static void
|
|
1370
|
+
bare_ffmpeg_codec_parameters_set_codec_format(
|
|
1371
|
+
js_env_t *env,
|
|
1372
|
+
js_receiver_t,
|
|
1373
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1374
|
+
int format
|
|
1375
|
+
) {
|
|
1376
|
+
parameters->handle->format = format;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1283
1379
|
static js_arraybuffer_t
|
|
1284
1380
|
bare_ffmpeg_codec_parameters_get_channel_layout(
|
|
1285
1381
|
js_env_t *env,
|
|
@@ -1338,6 +1434,62 @@ bare_ffmpeg_codec_parameters_get_framerate(
|
|
|
1338
1434
|
return result;
|
|
1339
1435
|
}
|
|
1340
1436
|
|
|
1437
|
+
static js_arraybuffer_t
|
|
1438
|
+
bare_ffmpeg_codec_parameters_get_extra_data(
|
|
1439
|
+
js_env_t *env,
|
|
1440
|
+
js_receiver_t,
|
|
1441
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
|
|
1442
|
+
) {
|
|
1443
|
+
int err;
|
|
1444
|
+
|
|
1445
|
+
js_arraybuffer_t buffer;
|
|
1446
|
+
|
|
1447
|
+
assert(parameters->handle->extradata_size >= 0);
|
|
1448
|
+
|
|
1449
|
+
err = js_create_arraybuffer(
|
|
1450
|
+
env,
|
|
1451
|
+
parameters->handle->extradata,
|
|
1452
|
+
static_cast<size_t>(parameters->handle->extradata_size),
|
|
1453
|
+
buffer
|
|
1454
|
+
);
|
|
1455
|
+
assert(err == 0);
|
|
1456
|
+
|
|
1457
|
+
return buffer;
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
void
|
|
1461
|
+
bare_ffmpeg_codec_parameters_set_extra_data(
|
|
1462
|
+
js_env_t *env,
|
|
1463
|
+
js_receiver_t,
|
|
1464
|
+
js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
|
|
1465
|
+
js_arraybuffer_t buffer,
|
|
1466
|
+
uint32_t offset,
|
|
1467
|
+
uint32_t len
|
|
1468
|
+
) {
|
|
1469
|
+
int err;
|
|
1470
|
+
|
|
1471
|
+
std::span<uint8_t> view;
|
|
1472
|
+
|
|
1473
|
+
err = js_get_arraybuffer_info(env, buffer, view);
|
|
1474
|
+
assert(err == 0);
|
|
1475
|
+
|
|
1476
|
+
if (parameters->handle->extradata_size) {
|
|
1477
|
+
assert(parameters->handle->extradata_size > 0);
|
|
1478
|
+
assert(parameters->handle->extradata);
|
|
1479
|
+
|
|
1480
|
+
av_free(parameters->handle->extradata);
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
size_t min_size = len + AV_INPUT_BUFFER_PADDING_SIZE;
|
|
1484
|
+
|
|
1485
|
+
parameters->handle->extradata = reinterpret_cast<uint8_t *>(av_malloc(min_size));
|
|
1486
|
+
memset(¶meters->handle->extradata[len], 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
|
1487
|
+
|
|
1488
|
+
memcpy(parameters->handle->extradata, &view[offset], len);
|
|
1489
|
+
|
|
1490
|
+
parameters->handle->extradata_size = static_cast<int>(len);
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1341
1493
|
static js_arraybuffer_t
|
|
1342
1494
|
bare_ffmpeg_frame_init(js_env_t *env, js_receiver_t) {
|
|
1343
1495
|
int err;
|
|
@@ -2568,11 +2720,23 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2568
2720
|
V("getCodecParametersSampleRate", bare_ffmpeg_codec_parameters_get_sample_rate)
|
|
2569
2721
|
V("getCodecParametersNbChannels", bare_ffmpeg_codec_parameters_get_nb_channels)
|
|
2570
2722
|
V("getCodecParametersCodecType", bare_ffmpeg_codec_parameters_get_codec_type)
|
|
2723
|
+
V("setCodecParametersCodecType", bare_ffmpeg_codec_parameters_set_codec_type)
|
|
2724
|
+
V("getCodecParametersCodecTag", bare_ffmpeg_codec_parameters_get_codec_tag)
|
|
2725
|
+
V("setCodecParametersCodecTag", bare_ffmpeg_codec_parameters_set_codec_tag)
|
|
2571
2726
|
V("getCodecParametersCodecId", bare_ffmpeg_codec_parameters_get_codec_id)
|
|
2727
|
+
V("setCodecParametersCodecId", bare_ffmpeg_codec_parameters_set_codec_id)
|
|
2728
|
+
V("getCodecParametersCodecLevel", bare_ffmpeg_codec_parameters_get_codec_level)
|
|
2729
|
+
V("setCodecParametersCodecLevel", bare_ffmpeg_codec_parameters_set_codec_level)
|
|
2730
|
+
V("getCodecParametersCodecProfile", bare_ffmpeg_codec_parameters_get_codec_profile)
|
|
2731
|
+
V("setCodecParametersCodecProfile", bare_ffmpeg_codec_parameters_set_codec_profile)
|
|
2732
|
+
V("getCodecParametersCodecFormat", bare_ffmpeg_codec_parameters_get_codec_format)
|
|
2733
|
+
V("setCodecParametersCodecFormat", bare_ffmpeg_codec_parameters_set_codec_format)
|
|
2572
2734
|
V("getCodecParametersChannelLayout", bare_ffmpeg_codec_parameters_get_channel_layout)
|
|
2573
2735
|
V("getCodecParametersWidth", bare_ffmpeg_codec_parameters_get_width)
|
|
2574
2736
|
V("getCodecParametersHeight", bare_ffmpeg_codec_parameters_get_height)
|
|
2575
2737
|
V("getCodecParametersFramerate", bare_ffmpeg_codec_parameters_get_framerate)
|
|
2738
|
+
V("getCodecParametersExtraData", bare_ffmpeg_codec_parameters_get_extra_data)
|
|
2739
|
+
V("setCodecParametersExtraData", bare_ffmpeg_codec_parameters_set_extra_data)
|
|
2576
2740
|
|
|
2577
2741
|
V("initFrame", bare_ffmpeg_frame_init)
|
|
2578
2742
|
V("destroyFrame", bare_ffmpeg_frame_destroy)
|
|
@@ -2770,6 +2934,120 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2770
2934
|
V(AVFMT_NEEDNUMBER)
|
|
2771
2935
|
V(AVFMT_NOTIMESTAMPS)
|
|
2772
2936
|
|
|
2937
|
+
// Profile
|
|
2938
|
+
V(AV_PROFILE_UNKNOWN)
|
|
2939
|
+
V(AV_PROFILE_RESERVED)
|
|
2940
|
+
V(AV_PROFILE_AAC_MAIN)
|
|
2941
|
+
V(AV_PROFILE_AAC_LOW)
|
|
2942
|
+
V(AV_PROFILE_AAC_SSR)
|
|
2943
|
+
V(AV_PROFILE_AAC_LTP)
|
|
2944
|
+
V(AV_PROFILE_AAC_HE)
|
|
2945
|
+
V(AV_PROFILE_AAC_HE_V2)
|
|
2946
|
+
V(AV_PROFILE_AAC_LD)
|
|
2947
|
+
V(AV_PROFILE_AAC_ELD)
|
|
2948
|
+
V(AV_PROFILE_AAC_USAC)
|
|
2949
|
+
V(AV_PROFILE_MPEG2_AAC_LOW)
|
|
2950
|
+
V(AV_PROFILE_MPEG2_AAC_HE)
|
|
2951
|
+
V(AV_PROFILE_DNXHD)
|
|
2952
|
+
V(AV_PROFILE_DNXHR_LB)
|
|
2953
|
+
V(AV_PROFILE_DNXHR_SQ)
|
|
2954
|
+
V(AV_PROFILE_DNXHR_HQ)
|
|
2955
|
+
V(AV_PROFILE_DNXHR_HQX)
|
|
2956
|
+
V(AV_PROFILE_DNXHR_444)
|
|
2957
|
+
V(AV_PROFILE_DTS)
|
|
2958
|
+
V(AV_PROFILE_DTS_ES)
|
|
2959
|
+
V(AV_PROFILE_DTS_96_24)
|
|
2960
|
+
V(AV_PROFILE_DTS_HD_HRA)
|
|
2961
|
+
V(AV_PROFILE_DTS_HD_MA)
|
|
2962
|
+
V(AV_PROFILE_DTS_EXPRESS)
|
|
2963
|
+
V(AV_PROFILE_DTS_HD_MA_X)
|
|
2964
|
+
V(AV_PROFILE_DTS_HD_MA_X_IMAX)
|
|
2965
|
+
V(AV_PROFILE_EAC3_DDP_ATMOS)
|
|
2966
|
+
V(AV_PROFILE_TRUEHD_ATMOS)
|
|
2967
|
+
V(AV_PROFILE_MPEG2_422)
|
|
2968
|
+
V(AV_PROFILE_MPEG2_HIGH)
|
|
2969
|
+
V(AV_PROFILE_MPEG2_SS)
|
|
2970
|
+
V(AV_PROFILE_MPEG2_SNR_SCALABLE)
|
|
2971
|
+
V(AV_PROFILE_MPEG2_MAIN)
|
|
2972
|
+
V(AV_PROFILE_MPEG2_SIMPLE)
|
|
2973
|
+
V(AV_PROFILE_H264_CONSTRAINED)
|
|
2974
|
+
V(AV_PROFILE_H264_INTRA)
|
|
2975
|
+
V(AV_PROFILE_H264_BASELINE)
|
|
2976
|
+
V(AV_PROFILE_H264_CONSTRAINED_BASELINE)
|
|
2977
|
+
V(AV_PROFILE_H264_MAIN)
|
|
2978
|
+
V(AV_PROFILE_H264_EXTENDED)
|
|
2979
|
+
V(AV_PROFILE_H264_HIGH)
|
|
2980
|
+
V(AV_PROFILE_H264_HIGH_10)
|
|
2981
|
+
V(AV_PROFILE_H264_HIGH_10_INTRA)
|
|
2982
|
+
V(AV_PROFILE_H264_MULTIVIEW_HIGH)
|
|
2983
|
+
V(AV_PROFILE_H264_HIGH_422)
|
|
2984
|
+
V(AV_PROFILE_H264_HIGH_422_INTRA)
|
|
2985
|
+
V(AV_PROFILE_H264_STEREO_HIGH)
|
|
2986
|
+
V(AV_PROFILE_H264_HIGH_444)
|
|
2987
|
+
V(AV_PROFILE_H264_HIGH_444_PREDICTIVE)
|
|
2988
|
+
V(AV_PROFILE_H264_HIGH_444_INTRA)
|
|
2989
|
+
V(AV_PROFILE_H264_CAVLC_444)
|
|
2990
|
+
V(AV_PROFILE_VC1_SIMPLE)
|
|
2991
|
+
V(AV_PROFILE_VC1_MAIN)
|
|
2992
|
+
V(AV_PROFILE_VC1_COMPLEX)
|
|
2993
|
+
V(AV_PROFILE_VC1_ADVANCED)
|
|
2994
|
+
V(AV_PROFILE_MPEG4_SIMPLE)
|
|
2995
|
+
V(AV_PROFILE_MPEG4_SIMPLE_SCALABLE)
|
|
2996
|
+
V(AV_PROFILE_MPEG4_CORE)
|
|
2997
|
+
V(AV_PROFILE_MPEG4_MAIN)
|
|
2998
|
+
V(AV_PROFILE_MPEG4_N_BIT)
|
|
2999
|
+
V(AV_PROFILE_MPEG4_SCALABLE_TEXTURE)
|
|
3000
|
+
V(AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION)
|
|
3001
|
+
V(AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE)
|
|
3002
|
+
V(AV_PROFILE_MPEG4_HYBRID)
|
|
3003
|
+
V(AV_PROFILE_MPEG4_ADVANCED_REAL_TIME)
|
|
3004
|
+
V(AV_PROFILE_MPEG4_CORE_SCALABLE)
|
|
3005
|
+
V(AV_PROFILE_MPEG4_ADVANCED_CODING)
|
|
3006
|
+
V(AV_PROFILE_MPEG4_ADVANCED_CORE)
|
|
3007
|
+
V(AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE)
|
|
3008
|
+
V(AV_PROFILE_MPEG4_SIMPLE_STUDIO)
|
|
3009
|
+
V(AV_PROFILE_MPEG4_ADVANCED_SIMPLE)
|
|
3010
|
+
V(AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0)
|
|
3011
|
+
V(AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1)
|
|
3012
|
+
V(AV_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION)
|
|
3013
|
+
V(AV_PROFILE_JPEG2000_DCINEMA_2K)
|
|
3014
|
+
V(AV_PROFILE_JPEG2000_DCINEMA_4K)
|
|
3015
|
+
V(AV_PROFILE_VP9_0)
|
|
3016
|
+
V(AV_PROFILE_VP9_1)
|
|
3017
|
+
V(AV_PROFILE_VP9_2)
|
|
3018
|
+
V(AV_PROFILE_VP9_3)
|
|
3019
|
+
V(AV_PROFILE_HEVC_MAIN)
|
|
3020
|
+
V(AV_PROFILE_HEVC_MAIN_10)
|
|
3021
|
+
V(AV_PROFILE_HEVC_MAIN_STILL_PICTURE)
|
|
3022
|
+
V(AV_PROFILE_HEVC_REXT)
|
|
3023
|
+
V(AV_PROFILE_HEVC_MULTIVIEW_MAIN)
|
|
3024
|
+
V(AV_PROFILE_HEVC_SCC)
|
|
3025
|
+
V(AV_PROFILE_VVC_MAIN_10)
|
|
3026
|
+
V(AV_PROFILE_VVC_MAIN_10_444)
|
|
3027
|
+
V(AV_PROFILE_AV1_MAIN)
|
|
3028
|
+
V(AV_PROFILE_AV1_HIGH)
|
|
3029
|
+
V(AV_PROFILE_AV1_PROFESSIONAL)
|
|
3030
|
+
V(AV_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT)
|
|
3031
|
+
V(AV_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT)
|
|
3032
|
+
V(AV_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT)
|
|
3033
|
+
V(AV_PROFILE_MJPEG_HUFFMAN_LOSSLESS)
|
|
3034
|
+
V(AV_PROFILE_MJPEG_JPEG_LS)
|
|
3035
|
+
V(AV_PROFILE_SBC_MSBC)
|
|
3036
|
+
V(AV_PROFILE_PRORES_PROXY)
|
|
3037
|
+
V(AV_PROFILE_PRORES_LT)
|
|
3038
|
+
V(AV_PROFILE_PRORES_STANDARD)
|
|
3039
|
+
V(AV_PROFILE_PRORES_HQ)
|
|
3040
|
+
V(AV_PROFILE_PRORES_4444)
|
|
3041
|
+
V(AV_PROFILE_PRORES_XQ)
|
|
3042
|
+
V(AV_PROFILE_ARIB_PROFILE_A)
|
|
3043
|
+
V(AV_PROFILE_ARIB_PROFILE_C)
|
|
3044
|
+
V(AV_PROFILE_KLVA_SYNC)
|
|
3045
|
+
V(AV_PROFILE_KLVA_ASYNC)
|
|
3046
|
+
V(AV_PROFILE_EVC_BASELINE)
|
|
3047
|
+
V(AV_PROFILE_EVC_MAIN)
|
|
3048
|
+
|
|
3049
|
+
// Levels
|
|
3050
|
+
V(AV_LEVEL_UNKNOWN)
|
|
2773
3051
|
#undef V
|
|
2774
3052
|
|
|
2775
3053
|
return exports;
|
|
@@ -8,8 +8,14 @@ declare class FFmpegCodecParameters {
|
|
|
8
8
|
readonly format: number
|
|
9
9
|
readonly sampleRate: number
|
|
10
10
|
readonly nbChannels: number
|
|
11
|
-
|
|
11
|
+
codecType: number
|
|
12
|
+
codecTag: number
|
|
13
|
+
codecId: number
|
|
14
|
+
codecProfile: number
|
|
15
|
+
codecLevel: number
|
|
16
|
+
codecFormat: number
|
|
12
17
|
readonly channelLayout: FFmpegChannelLayout
|
|
18
|
+
extraData: Buffer
|
|
13
19
|
|
|
14
20
|
constructor(handle: ArrayBuffer)
|
|
15
21
|
|
package/lib/codec-parameters.js
CHANGED
|
@@ -42,10 +42,50 @@ module.exports = class FFmpegCodecParameters {
|
|
|
42
42
|
return binding.getCodecParametersCodecType(this._handle)
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
set codecType(type) {
|
|
46
|
+
return binding.setCodecParametersCodecType(this._handle, type)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
get codecTag() {
|
|
50
|
+
return binding.getCodecParametersCodecTag(this._handle)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
set codecTag(tag) {
|
|
54
|
+
return binding.setCodecParametersCodecTag(this._handle, tag)
|
|
55
|
+
}
|
|
56
|
+
|
|
45
57
|
get codecId() {
|
|
46
58
|
return binding.getCodecParametersCodecId(this._handle)
|
|
47
59
|
}
|
|
48
60
|
|
|
61
|
+
set codecId(id) {
|
|
62
|
+
return binding.setCodecParametersCodecId(this._handle, id)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get codecLevel() {
|
|
66
|
+
return binding.getCodecParametersCodecLevel(this._handle)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
set codecLevel(level) {
|
|
70
|
+
return binding.setCodecParametersCodecLevel(this._handle, level)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
get codecProfile() {
|
|
74
|
+
return binding.getCodecParametersCodecProfile(this._handle)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
set codecProfile(profile) {
|
|
78
|
+
return binding.setCodecParametersCodecProfile(this._handle, profile)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get codecFormat() {
|
|
82
|
+
return binding.getCodecParametersCodecFormat(this._handle)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
set codecFormat(format) {
|
|
86
|
+
return binding.setCodecParametersCodecFormat(this._handle, format)
|
|
87
|
+
}
|
|
88
|
+
|
|
49
89
|
get channelLayout() {
|
|
50
90
|
return new ChannelLayout(
|
|
51
91
|
binding.getCodecParametersChannelLayout(this._handle)
|
|
@@ -60,6 +100,19 @@ module.exports = class FFmpegCodecParameters {
|
|
|
60
100
|
return binding.getCodecParametersHeight(this._handle)
|
|
61
101
|
}
|
|
62
102
|
|
|
103
|
+
get extraData() {
|
|
104
|
+
return Buffer.from(binding.getCodecParametersExtraData(this._handle))
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
set extraData(value) {
|
|
108
|
+
binding.setCodecParametersExtraData(
|
|
109
|
+
this._handle,
|
|
110
|
+
value.buffer,
|
|
111
|
+
value.byteOffset,
|
|
112
|
+
value.byteLength
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
|
|
63
116
|
fromContext(context) {
|
|
64
117
|
binding.codecParametersFromContext(this._handle, context._handle)
|
|
65
118
|
}
|
|
@@ -82,7 +135,8 @@ module.exports = class FFmpegCodecParameters {
|
|
|
82
135
|
sampleRate: this.sampleRate,
|
|
83
136
|
nbChannels: this.nbChannels,
|
|
84
137
|
channelLayout: this.channelLayout,
|
|
85
|
-
frameRate: this.frameRate
|
|
138
|
+
frameRate: this.frameRate,
|
|
139
|
+
extraData: this.extraData
|
|
86
140
|
}
|
|
87
141
|
}
|
|
88
142
|
}
|
package/lib/constants.d.ts
CHANGED
package/lib/constants.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
const binding = require('../binding')
|
|
2
2
|
const errors = require('./errors')
|
|
3
3
|
|
|
4
|
+
// Helpers
|
|
5
|
+
function makeTag(a, b, c, d) {
|
|
6
|
+
return (
|
|
7
|
+
a.charCodeAt(0) |
|
|
8
|
+
(b.charCodeAt(0) << 8) |
|
|
9
|
+
(c.charCodeAt(0) << 16) |
|
|
10
|
+
(d.charCodeAt(0) << 24)
|
|
11
|
+
)
|
|
12
|
+
}
|
|
13
|
+
|
|
4
14
|
module.exports = exports = {
|
|
5
15
|
codecs: {
|
|
6
16
|
MJPEG: binding.AV_CODEC_ID_MJPEG,
|
|
@@ -11,6 +21,23 @@ module.exports = exports = {
|
|
|
11
21
|
FLAC: binding.AV_CODEC_ID_FLAC,
|
|
12
22
|
MP3: binding.AV_CODEC_ID_MP3
|
|
13
23
|
},
|
|
24
|
+
tags: {
|
|
25
|
+
// Source Ref:
|
|
26
|
+
// https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/riff.c#L36
|
|
27
|
+
// https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/riff.c#L530
|
|
28
|
+
MJPEG: makeTag('M', 'J', 'P', 'G'),
|
|
29
|
+
H264: makeTag('H', '2', '6', '4'),
|
|
30
|
+
AV1: makeTag('A', 'V', '0', '1'),
|
|
31
|
+
AAC: 0x00ff,
|
|
32
|
+
FLAC: 0xf1ac,
|
|
33
|
+
MP3: 0x0055
|
|
34
|
+
},
|
|
35
|
+
profiles: {
|
|
36
|
+
H264_MAIN: binding.AV_PROFILE_H264_MAIN
|
|
37
|
+
},
|
|
38
|
+
levels: {
|
|
39
|
+
UNKNOWN: binding.AV_LEVEL_UNKNOWN
|
|
40
|
+
},
|
|
14
41
|
pixelFormats: {
|
|
15
42
|
RGBA: binding.AV_PIX_FMT_RGBA,
|
|
16
43
|
RGB24: binding.AV_PIX_FMT_RGB24,
|
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
|