bare-ffmpeg 1.0.0-19 → 1.0.0-20

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.
Files changed (41) hide show
  1. package/README.md +24 -6
  2. package/binding.cc +129 -35
  3. package/lib/codec-parameters.js +71 -29
  4. package/lib/codec.js +3 -1
  5. package/lib/stream.js +1 -1
  6. package/package.json +2 -15
  7. package/prebuilds/android-arm/bare-ffmpeg.bare +0 -0
  8. package/prebuilds/android-arm64/bare-ffmpeg.bare +0 -0
  9. package/prebuilds/android-ia32/bare-ffmpeg.bare +0 -0
  10. package/prebuilds/android-x64/bare-ffmpeg.bare +0 -0
  11. package/prebuilds/darwin-arm64/bare-ffmpeg.bare +0 -0
  12. package/prebuilds/darwin-x64/bare-ffmpeg.bare +0 -0
  13. package/prebuilds/ios-arm64/bare-ffmpeg.bare +0 -0
  14. package/prebuilds/ios-arm64-simulator/bare-ffmpeg.bare +0 -0
  15. package/prebuilds/ios-x64-simulator/bare-ffmpeg.bare +0 -0
  16. package/prebuilds/linux-arm64/bare-ffmpeg.bare +0 -0
  17. package/prebuilds/linux-x64/bare-ffmpeg.bare +0 -0
  18. package/prebuilds/win32-arm64/bare-ffmpeg.bare +0 -0
  19. package/prebuilds/win32-x64/bare-ffmpeg.bare +0 -0
  20. package/index.d.ts +0 -46
  21. package/lib/audio-fifo.d.ts +0 -20
  22. package/lib/channel-layout.d.ts +0 -9
  23. package/lib/codec-context.d.ts +0 -34
  24. package/lib/codec-parameters.d.ts +0 -26
  25. package/lib/codec.d.ts +0 -20
  26. package/lib/constants.d.ts +0 -83
  27. package/lib/decoder.d.ts +0 -7
  28. package/lib/dictionary.d.ts +0 -11
  29. package/lib/encoder.d.ts +0 -7
  30. package/lib/format-context.d.ts +0 -43
  31. package/lib/frame.d.ts +0 -28
  32. package/lib/image.d.ts +0 -30
  33. package/lib/input-format.d.ts +0 -5
  34. package/lib/io-context.d.ts +0 -10
  35. package/lib/output-format.d.ts +0 -5
  36. package/lib/packet.d.ts +0 -16
  37. package/lib/rational.d.ts +0 -14
  38. package/lib/resampler.d.ts +0 -26
  39. package/lib/samples.d.ts +0 -16
  40. package/lib/scaler.d.ts +0 -26
  41. package/lib/stream.d.ts +0 -18
package/README.md CHANGED
@@ -315,19 +315,19 @@ const params = stream.codecParameters // Get from stream
315
315
 
316
316
  #### Properties
317
317
 
318
- ##### `CodecParameters.codecType`
318
+ ##### `CodecParameters.type`
319
319
 
320
320
  General type of the encoded data.
321
321
 
322
322
  **Returns**: `number`
323
323
 
324
- ##### `CodecParameters.codecId`
324
+ ##### `CodecParameters.id`
325
325
 
326
326
  Specific type of the encoded data (the codec used).
327
327
 
328
328
  **Returns**: `number`
329
329
 
330
- ##### `CodecParameters.codecTag`
330
+ ##### `CodecParameters.tag`
331
331
 
332
332
  Additional information about the codec (corresponds to the AVI FOURCC).
333
333
 
@@ -357,31 +357,49 @@ Gets the sample rate for audio codecs.
357
357
 
358
358
  **Returns**: `number`
359
359
 
360
+ ##### `CodecParameters.frameRate`
361
+
362
+ Gets the frame rate for video codecs.
363
+
364
+ **Returns**: `Rational`
365
+
360
366
  ##### `CodecParameters.extraData`
361
367
 
362
368
  Out-of-band global headers that may be used by some codecs.
363
369
 
364
370
  **Returns**: `Buffer`
365
371
 
366
- ##### `CodecParameters.codecProfile`
372
+ ##### `CodecParameters.profile`
367
373
 
368
374
  Codec-specific bitstream restrictions that the stream conforms to.
369
375
 
370
376
  **Returns**: `number`
371
377
 
372
- ##### `CodecParameters.codecLevel`
378
+ ##### `CodecParameters.level`
373
379
 
374
380
  Codec-specific bitstream restrictions that the stream conforms to.
375
381
 
376
382
  **Returns**: `number`
377
383
 
378
- ##### `CodecParameters.codecFormat`
384
+ ##### `CodecParameters.format`
379
385
 
380
386
  Video: the pixel format, the value corresponds to AVPixelFormat.
381
387
  Audio: the sample format, the value corresponds to AVSampleFormat.
382
388
 
383
389
  **Returns**: `number`
384
390
 
391
+ ##### `CodecParameters.nbChannels`
392
+
393
+ Number of channels in the layout.
394
+
395
+ **Returns**: `number`
396
+
397
+ ##### `CodecParameters.channelLayout`
398
+
399
+ Gets or sets the channel layout, see `ffmpeg.constants.channelLayouts`
400
+
401
+ **Returns**: `ChannelLayout`
402
+
385
403
  #### Methods
386
404
 
387
405
  ##### `CodecParameters.fromContext(context)`
package/binding.cc CHANGED
@@ -1217,7 +1217,17 @@ bare_ffmpeg_codec_parameters_get_bit_rate(
1217
1217
  return parameters->handle->bit_rate;
1218
1218
  }
1219
1219
 
1220
- static int64_t
1220
+ static void
1221
+ bare_ffmpeg_codec_parameters_set_bit_rate(
1222
+ js_env_t *env,
1223
+ js_receiver_t,
1224
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1225
+ int64_t bit_rate
1226
+ ) {
1227
+ parameters->handle->bit_rate = bit_rate;
1228
+ }
1229
+
1230
+ static int
1221
1231
  bare_ffmpeg_codec_parameters_get_bits_per_coded_sample(
1222
1232
  js_env_t *env,
1223
1233
  js_receiver_t,
@@ -1226,7 +1236,17 @@ bare_ffmpeg_codec_parameters_get_bits_per_coded_sample(
1226
1236
  return parameters->handle->bits_per_coded_sample;
1227
1237
  }
1228
1238
 
1229
- static int64_t
1239
+ static void
1240
+ bare_ffmpeg_codec_parameters_set_bits_per_coded_sample(
1241
+ js_env_t *env,
1242
+ js_receiver_t,
1243
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1244
+ int bits
1245
+ ) {
1246
+ parameters->handle->bits_per_coded_sample = bits;
1247
+ }
1248
+
1249
+ static int
1230
1250
  bare_ffmpeg_codec_parameters_get_bits_per_raw_sample(
1231
1251
  js_env_t *env,
1232
1252
  js_receiver_t,
@@ -1235,16 +1255,17 @@ bare_ffmpeg_codec_parameters_get_bits_per_raw_sample(
1235
1255
  return parameters->handle->bits_per_raw_sample;
1236
1256
  }
1237
1257
 
1238
- static int
1239
- bare_ffmpeg_codec_parameters_get_format(
1258
+ static void
1259
+ bare_ffmpeg_codec_parameters_set_bits_per_raw_sample(
1240
1260
  js_env_t *env,
1241
1261
  js_receiver_t,
1242
- js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
1262
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1263
+ int bits
1243
1264
  ) {
1244
- return parameters->handle->format;
1265
+ parameters->handle->bits_per_raw_sample = bits;
1245
1266
  }
1246
1267
 
1247
- static int64_t
1268
+ static int
1248
1269
  bare_ffmpeg_codec_parameters_get_sample_rate(
1249
1270
  js_env_t *env,
1250
1271
  js_receiver_t,
@@ -1253,7 +1274,17 @@ bare_ffmpeg_codec_parameters_get_sample_rate(
1253
1274
  return parameters->handle->sample_rate;
1254
1275
  }
1255
1276
 
1256
- static int64_t
1277
+ static void
1278
+ bare_ffmpeg_codec_parameters_set_sample_rate(
1279
+ js_env_t *env,
1280
+ js_receiver_t,
1281
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1282
+ int rate
1283
+ ) {
1284
+ parameters->handle->sample_rate = rate;
1285
+ }
1286
+
1287
+ static int
1257
1288
  bare_ffmpeg_codec_parameters_get_nb_channels(
1258
1289
  js_env_t *env,
1259
1290
  js_receiver_t,
@@ -1262,8 +1293,18 @@ bare_ffmpeg_codec_parameters_get_nb_channels(
1262
1293
  return parameters->handle->ch_layout.nb_channels;
1263
1294
  }
1264
1295
 
1296
+ static void
1297
+ bare_ffmpeg_codec_parameters_set_nb_channels(
1298
+ js_env_t *env,
1299
+ js_receiver_t,
1300
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1301
+ int nb_channels
1302
+ ) {
1303
+ parameters->handle->ch_layout.nb_channels = nb_channels;
1304
+ }
1305
+
1265
1306
  static int64_t
1266
- bare_ffmpeg_codec_parameters_get_codec_type(
1307
+ bare_ffmpeg_codec_parameters_get_type(
1267
1308
  js_env_t *env,
1268
1309
  js_receiver_t,
1269
1310
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1272,7 +1313,7 @@ bare_ffmpeg_codec_parameters_get_codec_type(
1272
1313
  }
1273
1314
 
1274
1315
  static void
1275
- bare_ffmpeg_codec_parameters_set_codec_type(
1316
+ bare_ffmpeg_codec_parameters_set_type(
1276
1317
  js_env_t *env,
1277
1318
  js_receiver_t,
1278
1319
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1282,7 +1323,7 @@ bare_ffmpeg_codec_parameters_set_codec_type(
1282
1323
  }
1283
1324
 
1284
1325
  static uint32_t
1285
- bare_ffmpeg_codec_parameters_get_codec_tag(
1326
+ bare_ffmpeg_codec_parameters_get_tag(
1286
1327
  js_env_t *env,
1287
1328
  js_receiver_t,
1288
1329
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1291,7 +1332,7 @@ bare_ffmpeg_codec_parameters_get_codec_tag(
1291
1332
  }
1292
1333
 
1293
1334
  static void
1294
- bare_ffmpeg_codec_parameters_set_codec_tag(
1335
+ bare_ffmpeg_codec_parameters_set_tag(
1295
1336
  js_env_t *env,
1296
1337
  js_receiver_t,
1297
1338
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1301,7 +1342,7 @@ bare_ffmpeg_codec_parameters_set_codec_tag(
1301
1342
  }
1302
1343
 
1303
1344
  static int32_t
1304
- bare_ffmpeg_codec_parameters_get_codec_id(
1345
+ bare_ffmpeg_codec_parameters_get_id(
1305
1346
  js_env_t *env,
1306
1347
  js_receiver_t,
1307
1348
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1310,7 +1351,7 @@ bare_ffmpeg_codec_parameters_get_codec_id(
1310
1351
  }
1311
1352
 
1312
1353
  static void
1313
- bare_ffmpeg_codec_parameters_set_codec_id(
1354
+ bare_ffmpeg_codec_parameters_set_id(
1314
1355
  js_env_t *env,
1315
1356
  js_receiver_t,
1316
1357
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1320,7 +1361,7 @@ bare_ffmpeg_codec_parameters_set_codec_id(
1320
1361
  }
1321
1362
 
1322
1363
  static int
1323
- bare_ffmpeg_codec_parameters_get_codec_level(
1364
+ bare_ffmpeg_codec_parameters_get_level(
1324
1365
  js_env_t *env,
1325
1366
  js_receiver_t,
1326
1367
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1329,7 +1370,7 @@ bare_ffmpeg_codec_parameters_get_codec_level(
1329
1370
  }
1330
1371
 
1331
1372
  static void
1332
- bare_ffmpeg_codec_parameters_set_codec_level(
1373
+ bare_ffmpeg_codec_parameters_set_level(
1333
1374
  js_env_t *env,
1334
1375
  js_receiver_t,
1335
1376
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1339,7 +1380,7 @@ bare_ffmpeg_codec_parameters_set_codec_level(
1339
1380
  }
1340
1381
 
1341
1382
  static int
1342
- bare_ffmpeg_codec_parameters_get_codec_profile(
1383
+ bare_ffmpeg_codec_parameters_get_profile(
1343
1384
  js_env_t *env,
1344
1385
  js_receiver_t,
1345
1386
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1348,7 +1389,7 @@ bare_ffmpeg_codec_parameters_get_codec_profile(
1348
1389
  }
1349
1390
 
1350
1391
  static void
1351
- bare_ffmpeg_codec_parameters_set_codec_profile(
1392
+ bare_ffmpeg_codec_parameters_set_profile(
1352
1393
  js_env_t *env,
1353
1394
  js_receiver_t,
1354
1395
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1358,7 +1399,7 @@ bare_ffmpeg_codec_parameters_set_codec_profile(
1358
1399
  }
1359
1400
 
1360
1401
  static int
1361
- bare_ffmpeg_codec_parameters_get_codec_format(
1402
+ bare_ffmpeg_codec_parameters_get_format(
1362
1403
  js_env_t *env,
1363
1404
  js_receiver_t,
1364
1405
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters
@@ -1367,7 +1408,7 @@ bare_ffmpeg_codec_parameters_get_codec_format(
1367
1408
  }
1368
1409
 
1369
1410
  static void
1370
- bare_ffmpeg_codec_parameters_set_codec_format(
1411
+ bare_ffmpeg_codec_parameters_set_format(
1371
1412
  js_env_t *env,
1372
1413
  js_receiver_t,
1373
1414
  js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
@@ -1396,7 +1437,20 @@ bare_ffmpeg_codec_parameters_get_channel_layout(
1396
1437
  return result;
1397
1438
  }
1398
1439
 
1399
- static int32_t
1440
+ static void
1441
+ bare_ffmpeg_codec_parameters_set_channel_layout(
1442
+ js_env_t *env,
1443
+ js_receiver_t,
1444
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1445
+ js_arraybuffer_span_of_t<bare_ffmpeg_channel_layout_t, 1> layout
1446
+ ) {
1447
+ int err;
1448
+
1449
+ err = av_channel_layout_copy(&parameters->handle->ch_layout, &layout->handle);
1450
+ assert(err == 0);
1451
+ }
1452
+
1453
+ static int
1400
1454
  bare_ffmpeg_codec_parameters_get_width(
1401
1455
  js_env_t *env,
1402
1456
  js_receiver_t,
@@ -1405,6 +1459,16 @@ bare_ffmpeg_codec_parameters_get_width(
1405
1459
  return parameters->handle->width;
1406
1460
  }
1407
1461
 
1462
+ static void
1463
+ bare_ffmpeg_codec_parameters_set_width(
1464
+ js_env_t *env,
1465
+ js_receiver_t,
1466
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1467
+ int width
1468
+ ) {
1469
+ parameters->handle->width = width;
1470
+ }
1471
+
1408
1472
  static int32_t
1409
1473
  bare_ffmpeg_codec_parameters_get_height(
1410
1474
  js_env_t *env,
@@ -1414,6 +1478,16 @@ bare_ffmpeg_codec_parameters_get_height(
1414
1478
  return parameters->handle->height;
1415
1479
  }
1416
1480
 
1481
+ static void
1482
+ bare_ffmpeg_codec_parameters_set_height(
1483
+ js_env_t *env,
1484
+ js_receiver_t,
1485
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1486
+ int height
1487
+ ) {
1488
+ parameters->handle->height = height;
1489
+ }
1490
+
1417
1491
  static js_arraybuffer_t
1418
1492
  bare_ffmpeg_codec_parameters_get_framerate(
1419
1493
  js_env_t *env,
@@ -1434,6 +1508,18 @@ bare_ffmpeg_codec_parameters_get_framerate(
1434
1508
  return result;
1435
1509
  }
1436
1510
 
1511
+ static void
1512
+ bare_ffmpeg_codec_parameters_set_framerate(
1513
+ js_env_t *env,
1514
+ js_receiver_t,
1515
+ js_arraybuffer_span_of_t<bare_ffmpeg_codec_parameters_t, 1> parameters,
1516
+ int numerator,
1517
+ int denominator
1518
+ ) {
1519
+ parameters->handle->framerate.num = numerator;
1520
+ parameters->handle->framerate.den = denominator;
1521
+ }
1522
+
1437
1523
  static js_arraybuffer_t
1438
1524
  bare_ffmpeg_codec_parameters_get_extra_data(
1439
1525
  js_env_t *env,
@@ -2714,27 +2800,35 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
2714
2800
  V("codecParametersFromContext", bare_ffmpeg_codec_parameters_from_context)
2715
2801
  V("codecParametersToContext", bare_ffmpeg_codec_parameters_to_context)
2716
2802
  V("getCodecParametersBitRate", bare_ffmpeg_codec_parameters_get_bit_rate)
2803
+ V("setCodecParametersBitRate", bare_ffmpeg_codec_parameters_set_bit_rate)
2717
2804
  V("getCodecParametersBitsPerCodedSample", bare_ffmpeg_codec_parameters_get_bits_per_coded_sample)
2805
+ V("setCodecParametersBitsPerCodedSample", bare_ffmpeg_codec_parameters_set_bits_per_coded_sample)
2718
2806
  V("getCodecParametersBitsPerRawSample", bare_ffmpeg_codec_parameters_get_bits_per_raw_sample)
2719
- V("getCodecParametersFormat", bare_ffmpeg_codec_parameters_get_format)
2807
+ V("setCodecParametersBitsPerRawSample", bare_ffmpeg_codec_parameters_set_bits_per_raw_sample)
2720
2808
  V("getCodecParametersSampleRate", bare_ffmpeg_codec_parameters_get_sample_rate)
2809
+ V("setCodecParametersSampleRate", bare_ffmpeg_codec_parameters_set_sample_rate)
2810
+ V("getCodecParametersFramerate", bare_ffmpeg_codec_parameters_get_framerate)
2811
+ V("setCodecParametersFramerate", bare_ffmpeg_codec_parameters_set_framerate)
2721
2812
  V("getCodecParametersNbChannels", bare_ffmpeg_codec_parameters_get_nb_channels)
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)
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)
2813
+ V("setCodecParametersNbChannels", bare_ffmpeg_codec_parameters_set_nb_channels)
2814
+ V("getCodecParametersType", bare_ffmpeg_codec_parameters_get_type)
2815
+ V("setCodecParametersType", bare_ffmpeg_codec_parameters_set_type)
2816
+ V("getCodecParametersTag", bare_ffmpeg_codec_parameters_get_tag)
2817
+ V("setCodecParametersTag", bare_ffmpeg_codec_parameters_set_tag)
2818
+ V("getCodecParametersId", bare_ffmpeg_codec_parameters_get_id)
2819
+ V("setCodecParametersId", bare_ffmpeg_codec_parameters_set_id)
2820
+ V("getCodecParametersLevel", bare_ffmpeg_codec_parameters_get_level)
2821
+ V("setCodecParametersLevel", bare_ffmpeg_codec_parameters_set_level)
2822
+ V("getCodecParametersProfile", bare_ffmpeg_codec_parameters_get_profile)
2823
+ V("setCodecParametersProfile", bare_ffmpeg_codec_parameters_set_profile)
2824
+ V("getCodecParametersFormat", bare_ffmpeg_codec_parameters_get_format)
2825
+ V("setCodecParametersFormat", bare_ffmpeg_codec_parameters_set_format)
2734
2826
  V("getCodecParametersChannelLayout", bare_ffmpeg_codec_parameters_get_channel_layout)
2827
+ V("setCodecParametersChannelLayout", bare_ffmpeg_codec_parameters_set_channel_layout)
2735
2828
  V("getCodecParametersWidth", bare_ffmpeg_codec_parameters_get_width)
2829
+ V("setCodecParametersWidth", bare_ffmpeg_codec_parameters_set_width)
2736
2830
  V("getCodecParametersHeight", bare_ffmpeg_codec_parameters_get_height)
2737
- V("getCodecParametersFramerate", bare_ffmpeg_codec_parameters_get_framerate)
2831
+ V("setCodecParametersHeight", bare_ffmpeg_codec_parameters_set_height)
2738
2832
  V("getCodecParametersExtraData", bare_ffmpeg_codec_parameters_get_extra_data)
2739
2833
  V("setCodecParametersExtraData", bare_ffmpeg_codec_parameters_set_extra_data)
2740
2834
 
@@ -11,22 +11,34 @@ module.exports = class FFmpegCodecParameters {
11
11
  return binding.getCodecParametersBitRate(this._handle)
12
12
  }
13
13
 
14
+ set bitRate(rate) {
15
+ binding.setCodecParametersBitRate(this._handle, rate)
16
+ }
17
+
14
18
  get bitsPerCodedSample() {
15
19
  return binding.getCodecParametersBitsPerCodedSample(this._handle)
16
20
  }
17
21
 
22
+ set bitsPerCodedSample(bits) {
23
+ binding.setCodecParametersBitsPerCodedSample(this._handle, bits)
24
+ }
25
+
18
26
  get bitsPerRawSample() {
19
27
  return binding.getCodecParametersBitsPerRawSample(this._handle)
20
28
  }
21
29
 
22
- get format() {
23
- return binding.getCodecParametersFormat(this._handle)
30
+ set bitsPerRawSample(bits) {
31
+ binding.setCodecParametersBitsPerRawSample(this._handle, bits)
24
32
  }
25
33
 
26
34
  get sampleRate() {
27
35
  return binding.getCodecParametersSampleRate(this._handle)
28
36
  }
29
37
 
38
+ set sampleRate(rate) {
39
+ binding.setCodecParametersSampleRate(this._handle, rate)
40
+ }
41
+
30
42
  get frameRate() {
31
43
  const view = new Int32Array(
32
44
  binding.getCodecParametersFramerate(this._handle)
@@ -34,56 +46,68 @@ module.exports = class FFmpegCodecParameters {
34
46
  return new Rational(view[0], view[1])
35
47
  }
36
48
 
49
+ set frameRate(rate) {
50
+ binding.setCodecParametersFramerate(
51
+ this._handle,
52
+ rate.numerator,
53
+ rate.denominator
54
+ )
55
+ }
56
+
37
57
  get nbChannels() {
38
58
  return binding.getCodecParametersNbChannels(this._handle)
39
59
  }
40
60
 
41
- get codecType() {
42
- return binding.getCodecParametersCodecType(this._handle)
61
+ set nbChannels(numberOfChannels) {
62
+ binding.setCodecParametersNbChannels(this._handle, numberOfChannels)
63
+ }
64
+
65
+ get type() {
66
+ return binding.getCodecParametersType(this._handle)
43
67
  }
44
68
 
45
- set codecType(type) {
46
- return binding.setCodecParametersCodecType(this._handle, type)
69
+ set type(type) {
70
+ binding.setCodecParametersType(this._handle, type)
47
71
  }
48
72
 
49
- get codecTag() {
50
- return binding.getCodecParametersCodecTag(this._handle)
73
+ get tag() {
74
+ return binding.getCodecParametersTag(this._handle)
51
75
  }
52
76
 
53
- set codecTag(tag) {
54
- return binding.setCodecParametersCodecTag(this._handle, tag)
77
+ set tag(tag) {
78
+ binding.setCodecParametersTag(this._handle, tag)
55
79
  }
56
80
 
57
- get codecId() {
58
- return binding.getCodecParametersCodecId(this._handle)
81
+ get id() {
82
+ return binding.getCodecParametersId(this._handle)
59
83
  }
60
84
 
61
- set codecId(id) {
62
- return binding.setCodecParametersCodecId(this._handle, id)
85
+ set id(id) {
86
+ binding.setCodecParametersId(this._handle, id)
63
87
  }
64
88
 
65
- get codecLevel() {
66
- return binding.getCodecParametersCodecLevel(this._handle)
89
+ get level() {
90
+ return binding.getCodecParametersLevel(this._handle)
67
91
  }
68
92
 
69
- set codecLevel(level) {
70
- return binding.setCodecParametersCodecLevel(this._handle, level)
93
+ set level(level) {
94
+ binding.setCodecParametersLevel(this._handle, level)
71
95
  }
72
96
 
73
- get codecProfile() {
74
- return binding.getCodecParametersCodecProfile(this._handle)
97
+ get profile() {
98
+ return binding.getCodecParametersProfile(this._handle)
75
99
  }
76
100
 
77
- set codecProfile(profile) {
78
- return binding.setCodecParametersCodecProfile(this._handle, profile)
101
+ set profile(profile) {
102
+ binding.setCodecParametersProfile(this._handle, profile)
79
103
  }
80
104
 
81
- get codecFormat() {
82
- return binding.getCodecParametersCodecFormat(this._handle)
105
+ get format() {
106
+ return binding.getCodecParametersFormat(this._handle)
83
107
  }
84
108
 
85
- set codecFormat(format) {
86
- return binding.setCodecParametersCodecFormat(this._handle, format)
109
+ set format(format) {
110
+ binding.setCodecParametersFormat(this._handle, format)
87
111
  }
88
112
 
89
113
  get channelLayout() {
@@ -92,14 +116,29 @@ module.exports = class FFmpegCodecParameters {
92
116
  )
93
117
  }
94
118
 
119
+ set channelLayout(value) {
120
+ binding.setCodecParametersChannelLayout(
121
+ this._handle,
122
+ ChannelLayout.from(value)._handle
123
+ )
124
+ }
125
+
95
126
  get width() {
96
127
  return binding.getCodecParametersWidth(this._handle)
97
128
  }
98
129
 
130
+ set width(value) {
131
+ binding.setCodecParametersWidth(this._handle, value)
132
+ }
133
+
99
134
  get height() {
100
135
  return binding.getCodecParametersHeight(this._handle)
101
136
  }
102
137
 
138
+ set height(value) {
139
+ binding.setCodecParametersHeight(this._handle, value)
140
+ }
141
+
103
142
  get extraData() {
104
143
  return Buffer.from(binding.getCodecParametersExtraData(this._handle))
105
144
  }
@@ -121,17 +160,20 @@ module.exports = class FFmpegCodecParameters {
121
160
  binding.codecParametersToContext(context._handle, this._handle)
122
161
  }
123
162
 
163
+ // TODO: add other props
124
164
  [Symbol.for('bare.inspect')]() {
125
165
  return {
126
166
  __proto__: { constructor: FFmpegCodecParameters },
127
- codecType: this.codecType,
128
- codecId: this.codecId,
167
+ type: this.type,
168
+ id: this.id,
169
+ format: this.format,
170
+ profile: this.profile,
171
+ level: this.level,
129
172
  width: this.width,
130
173
  height: this.height,
131
174
  bitRate: this.bitRate,
132
175
  bitsPerCodedSample: this.bitsPerCodedSample,
133
176
  bitsPerRawSample: this.bitsPerRawSample,
134
- format: this.format,
135
177
  sampleRate: this.sampleRate,
136
178
  nbChannels: this.nbChannels,
137
179
  channelLayout: this.channelLayout,
package/lib/codec.js CHANGED
@@ -27,7 +27,9 @@ module.exports = class FFmpegCodec {
27
27
  }
28
28
 
29
29
  get name() {
30
- return binding.getCodecNameByID(this._id)
30
+ if (Number.isInteger(this._id)) {
31
+ return binding.getCodecNameByID(this._id)
32
+ }
31
33
  }
32
34
 
33
35
  [Symbol.for('bare.inspect')]() {
package/lib/stream.js CHANGED
@@ -26,7 +26,7 @@ module.exports = class FFmpegStream {
26
26
  }
27
27
 
28
28
  get codec() {
29
- return Codec.for(this.codecParameters.codecId)
29
+ return Codec.for(this.codecParameters.id)
30
30
  }
31
31
 
32
32
  get codecParameters() {
package/package.json CHANGED
@@ -1,17 +1,13 @@
1
1
  {
2
2
  "name": "bare-ffmpeg",
3
- "version": "1.0.0-19",
3
+ "version": "1.0.0-20",
4
4
  "description": "Low-level FFmpeg bindings for Bare",
5
5
  "exports": {
6
- ".": {
7
- "types": "./index.d.ts",
8
- "default": "./index.js"
9
- },
6
+ ".": "./index.js",
10
7
  "./package": "./package.json"
11
8
  },
12
9
  "files": [
13
10
  "index.js",
14
- "index.d.ts",
15
11
  "binding.cc",
16
12
  "binding.js",
17
13
  "CMakeLists.txt",
@@ -35,20 +31,11 @@
35
31
  },
36
32
  "homepage": "https://github.com/holepunchto/bare-ffmpeg#readme",
37
33
  "devDependencies": {
38
- "bare-buffer": "^3.2.0",
39
34
  "brittle": "^3.4.0",
40
35
  "cmake-bare": "^1.1.2",
41
36
  "cmake-harden": "^1.0.2",
42
37
  "cmake-ports": "^1.5.0",
43
38
  "prettier": "^3.3.3",
44
39
  "prettier-config-standard": "^7.0.0"
45
- },
46
- "peerDependencies": {
47
- "bare-buffer": "*"
48
- },
49
- "peerDependenciesMeta": {
50
- "bare-buffer": {
51
- "optional": true
52
- }
53
40
  }
54
41
  }
package/index.d.ts DELETED
@@ -1,46 +0,0 @@
1
- import FFmpegAudioFIFO from './lib/audio-fifo'
2
- import FFmpegChannelLayout from './lib/channel-layout'
3
- import FFmpegCodec from './lib/codec'
4
- import FFmpegCodecContext from './lib/codec-context'
5
- import FFmpegCodecParameters from './lib/codec-parameters'
6
- import FFmpegDecoder from './lib/decoder'
7
- import FFmpegDictionary from './lib/dictionary'
8
- import FFmpegEncoder from './lib/encoder'
9
- import { InputFormatContext, OutputFormatContext } from './lib/format-context'
10
- import FFmpegFrame from './lib/frame'
11
- import FFmpegIOContext from './lib/io-context'
12
- import FFmpegImage from './lib/image'
13
- import FFmpegInputFormat from './lib/input-format'
14
- import FFmpegOutputFormat from './lib/output-format'
15
- import FFmpegPacket from './lib/packet'
16
- import FFmpegRational from './lib/rational'
17
- import FFmpegResampler from './lib/resampler'
18
- import FFmpegSamples from './lib/samples'
19
- import FFmpegScaler from './lib/scaler'
20
- import FFmpegStream from './lib/stream'
21
- import constants from './lib/constants'
22
-
23
- export {
24
- FFmpegAudioFIFO as AudioFIFO,
25
- FFmpegChannelLayout as ChannelLayout,
26
- FFmpegCodec as Codec,
27
- FFmpegCodecContext as CodecContext,
28
- FFmpegCodecParameters as CodecParameters,
29
- FFmpegDecoder as Decoder,
30
- FFmpegDictionary as Dictionary,
31
- FFmpegEncoder as Encoder,
32
- FFmpegFrame as Frame,
33
- FFmpegIOContext as IOContext,
34
- FFmpegImage as Image,
35
- FFmpegInputFormat as InputFormat,
36
- FFmpegOutputFormat as OutputFormat,
37
- FFmpegPacket as Packet,
38
- FFmpegRational as Rational,
39
- FFmpegResampler as Resampler,
40
- FFmpegSamples as Samples,
41
- FFmpegScaler as Scaler,
42
- FFmpegStream as Stream,
43
- InputFormatContext,
44
- OutputFormatContext,
45
- constants
46
- }
@@ -1,20 +0,0 @@
1
- import FFmpegFrame from './frame'
2
-
3
- declare class FFmpegAudioFIFO {
4
- readonly size: number
5
- readonly space: number
6
-
7
- constructor(sampleFormat: number, channels: number, nbSamples: number)
8
-
9
- write(frame: FFmpegFrame): number
10
- read(frame: FFmpegFrame, nbSamples: number): number
11
- peek(frame: FFmpegFrame, nbSamples: number): number
12
- drain(nbSamples: number): number
13
-
14
- reset(): void
15
-
16
- destroy(): void
17
- [Symbol.dispose](): void
18
- }
19
-
20
- export = FFmpegAudioFIFO
@@ -1,9 +0,0 @@
1
- declare class FFmpegChannelLayout {
2
- readonly nbChannels: number
3
-
4
- constructor(handle: ArrayBuffer)
5
-
6
- static from(value: FFmpegChannelLayout | string | number): FFmpegChannelLayout
7
- }
8
-
9
- export = FFmpegChannelLayout
@@ -1,34 +0,0 @@
1
- import FFmpegChannelLayout from './channel-layout'
2
- import FFmpegDictionary from './dictionary'
3
- import FFmpegEncoder from './encoder'
4
- import FFmpegFrame from './frame'
5
- import FFmpegPacket from './packet'
6
- import FFmpegRational from './rational'
7
-
8
- declare class FFmpegCodecContext {
9
- pixelFormat: number
10
- width: number
11
- height: number
12
- sampleFormat: number
13
- sampleRate: number
14
- timeBase: FFmpegRational
15
- gopSize: number
16
-
17
- get channelLayout(): FFmpegChannelLayout
18
- set channelLayout(value: FFmpegChannelLayout | string | number)
19
-
20
- constructor(codec: FFmpegEncoder)
21
-
22
- open(options?: FFmpegDictionary): this
23
-
24
- sendPacket(packet: FFmpegPacket): boolean
25
- receivePacket(packet: FFmpegPacket): boolean
26
-
27
- sendFrame(frame: FFmpegFrame): boolean
28
- receiveFrame(frame: FFmpegFrame): boolean
29
-
30
- destroy(): void
31
- [Symbol.dispose](): void
32
- }
33
-
34
- export = FFmpegCodecContext
@@ -1,26 +0,0 @@
1
- import FFmpegChannelLayout from './channel-layout'
2
- import FFmpegCodecContext from './codec-context'
3
-
4
- declare class FFmpegCodecParameters {
5
- readonly bitRate: number
6
- readonly bitsPerCodedSample: number
7
- readonly bitsPerRawSample: number
8
- readonly format: number
9
- readonly sampleRate: number
10
- readonly nbChannels: number
11
- codecType: number
12
- codecTag: number
13
- codecId: number
14
- codecProfile: number
15
- codecLevel: number
16
- codecFormat: number
17
- readonly channelLayout: FFmpegChannelLayout
18
- extraData: Buffer
19
-
20
- constructor(handle: ArrayBuffer)
21
-
22
- fromContext(context: FFmpegCodecContext): void
23
- toContext(context: FFmpegCodecContext): void
24
- }
25
-
26
- export = FFmpegCodecParameters
package/lib/codec.d.ts DELETED
@@ -1,20 +0,0 @@
1
- import FFmpegDecoder from './decoder'
2
- import FFmpegEncoder from './encoder'
3
-
4
- declare class FFmpegCodec {
5
- readonly id: number
6
- readonly decoder: FFmpegDecoder
7
- readonly encoder: FFmpegEncoder
8
-
9
- constructor(id: number)
10
-
11
- static for(id: number): FFmpegCodec
12
-
13
- static MJPEG: FFmpegCodec
14
- static H264: FFmpegCodec
15
- static AAC: FFmpegCodec
16
- static OPUS: FFmpegCodec
17
- static AV1: FFmpegCodec
18
- }
19
-
20
- export = FFmpegCodec
@@ -1,83 +0,0 @@
1
- declare const constants: {
2
- codecs: {
3
- MJPEG: number
4
- H264: number
5
- AAC: number
6
- OPUS: number
7
- AV1: number
8
- }
9
- tags: {
10
- H264: number
11
- }
12
- profiles: {
13
- H264_MAIN: number
14
- }
15
- levels: {
16
- UNKNOWN: number
17
- }
18
- pixelFormats: {
19
- RGBA: number
20
- RGB24: number
21
- YUVJ420P: number
22
- UYVY422: number
23
- YUV420P: number
24
- }
25
- mediaTypes: {
26
- UNKNOWN: number
27
- VIDEO: number
28
- AUDIO: number
29
- DATA: number
30
- SUBTITLE: number
31
- ATTACHEMENT: number
32
- NB: number
33
- }
34
- sampleFormats: {
35
- NONE: number
36
- U8: number
37
- S16: number
38
- S32: number
39
- S64: number
40
- FLT: number
41
- DBL: number
42
- U8P: number
43
- S16P: number
44
- S32P: number
45
- S64P: number
46
- FLTP: number
47
- DBLP: number
48
- NB: number
49
- }
50
- channelLayouts: {
51
- MONO: number
52
- STEREO: number
53
- QUAD: number
54
- SURROUND: number
55
- 2_1: number
56
- 5_0: number
57
- 5_1: number
58
- 7_1: number
59
- // Aliases
60
- 2.1: number
61
- '5.0': number
62
- 5.1: number
63
- 7.1: number
64
- }
65
- pictureTypes: {
66
- NONE: number
67
- I: number
68
- P: number
69
- B: number
70
- S: number
71
- SI: number
72
- SP: number
73
- BI: number
74
- }
75
- }
76
-
77
- export function toPixelFormat(format: string | number): number
78
-
79
- export function toSampleFormat(format: string | number): number
80
-
81
- export function toChannelLayout(layout: string | number): number
82
-
83
- export default constants
package/lib/decoder.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import FFmpegCodec from './codec'
2
-
3
- declare class FFmpegDecoder {
4
- constructor(codec: FFmpegCodec)
5
- }
6
-
7
- export = FFmpegDecoder
@@ -1,11 +0,0 @@
1
- declare class FFmpegDictionary {
2
- constructor()
3
-
4
- get(key: string): string
5
- set(key: string, value: string): void
6
-
7
- destroy(): void
8
- [Symbol.dispose](): void
9
- }
10
-
11
- export = FFmpegDictionary
package/lib/encoder.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import FFmpegCodec from './codec'
2
-
3
- declare class FFmpegEncoder {
4
- constructor(codec: FFmpegCodec)
5
- }
6
-
7
- export = FFmpegEncoder
@@ -1,43 +0,0 @@
1
- import FFmpegIOContext from './io-context'
2
- import FFmpegStream from './stream'
3
- import FFmpegPacket from './packet'
4
- import FFmpegCodec from './codec'
5
- import FFmpegOutputFormat from './output-format'
6
- import FFmpegInputFormat from './input-format'
7
- import FFmpegDictionary from './dictionary'
8
-
9
- declare class FFmpegFormatContext {
10
- readonly io: FFmpegIOContext
11
- readonly streams: FFmpegStream[]
12
-
13
- constructor(io: FFmpegIOContext)
14
-
15
- readFrame(packet: FFmpegPacket): boolean
16
-
17
- getBestStreamIndex(type: number): number
18
- getStream(index: number): FFmpegStream
19
- getBestStream(type: number): FFmpegStream | null
20
-
21
- destroy(): void
22
- [Symbol.dispose](): void
23
- }
24
-
25
- declare class FFmpegInputFormatContext extends FFmpegFormatContext {
26
- constructor(io: FFmpegIOContext)
27
- constructor(input: FFmpegInputFormat, option?: FFmpegDictionary, url?: string)
28
-
29
- destroy(): void
30
- }
31
-
32
- declare class FFmpegOutputFormatContext extends FFmpegFormatContext {
33
- constructor(format: FFmpegOutputFormat | string, io: FFmpegIOContext)
34
-
35
- createStream(codec: FFmpegCodec): FFmpegStream
36
-
37
- destroy(): void
38
- }
39
-
40
- export {
41
- FFmpegInputFormatContext as InputFormatContext,
42
- FFmpegOutputFormatContext as OutputFormatContext
43
- }
package/lib/frame.d.ts DELETED
@@ -1,28 +0,0 @@
1
- import FFmpegChannelLayout from './channel-layout'
2
- import FFmpegRational from './rational'
3
-
4
- declare class FFmpegFrame {
5
- readonly pictType: number
6
-
7
- get channelLayout(): FFmpegChannelLayout
8
- set channelLayout(value: FFmpegChannelLayout | string | number)
9
-
10
- width: number
11
- height: number
12
- pixelFormat: number
13
- format: number
14
- nbSamples: number
15
- pts: number
16
- packetDTS: number
17
- timeBase: FFmpegRational
18
-
19
- constructor()
20
-
21
- alloc(): void
22
- unref(): void
23
-
24
- destroy(): void
25
- [Symbol.dispose](): void
26
- }
27
-
28
- export = FFmpegFrame
package/lib/image.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import Buffer from 'bare-buffer'
2
- import FFmpegFrame from './frame'
3
-
4
- declare class FFmpegImage {
5
- readonly pixelFormat: number
6
- readonly width: number
7
- readonly height: number
8
- readonly align: number
9
- readonly data: Buffer
10
-
11
- constructor(
12
- pixelFormat: string | number,
13
- width: number,
14
- height: number,
15
- align?: number
16
- )
17
-
18
- fill(frame: FFmpegFrame): void
19
- read(frame: FFmpegFrame): void
20
-
21
- lineSize(plane?: number): number
22
-
23
- static lineSize(
24
- pixelFormat: string | number,
25
- width: number,
26
- plane?: number
27
- ): number
28
- }
29
-
30
- export = FFmpegImage
@@ -1,5 +0,0 @@
1
- declare class FFmpegInputFormat {
2
- constructor(name?: string)
3
- }
4
-
5
- export = FFmpegInputFormat
@@ -1,10 +0,0 @@
1
- import Buffer from 'bare-buffer'
2
-
3
- declare class FFmpegIOContext {
4
- constructor(buffer?: Buffer)
5
-
6
- destroy(): void
7
- [Symbol.dispose](): void
8
- }
9
-
10
- export = FFmpegIOContext
@@ -1,5 +0,0 @@
1
- declare class FFmpegOutputFormat {
2
- constructor(name: string)
3
- }
4
-
5
- export = FFmpegOutputFormat
package/lib/packet.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import Buffer from 'bare-buffer'
2
-
3
- declare class FFmpegPacket {
4
- readonly streamIndex: number
5
- readonly data: Buffer
6
- readonly isKeyframe: boolean
7
-
8
- constructor(buffer?: Buffer)
9
-
10
- unref(): void
11
-
12
- destroy(): void
13
- [Symbol.dispose](): void
14
- }
15
-
16
- export = FFmpegPacket
package/lib/rational.d.ts DELETED
@@ -1,14 +0,0 @@
1
- declare class FFmpegRational {
2
- numerator: number
3
- denominator: number
4
- valid: boolean
5
- unintialized: boolean
6
-
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)
12
- }
13
-
14
- export = FFmpegRational
@@ -1,26 +0,0 @@
1
- import FFmpegChannelLayout from './channel-layout'
2
- import FFmpegFrame from './frame'
3
-
4
- declare class FFmpegResampler {
5
- readonly inputSampleRate: number
6
- readonly outputSampleRate: number
7
- readonly delay: number
8
-
9
- constructor(
10
- inputSampleRate: number,
11
- inputChannelLayout: FFmpegChannelLayout | string | number,
12
- inputFormat: number,
13
- outputSampleRate: number,
14
- outputChannelLayout: FFmpegChannelLayout | string | number,
15
- outputFormat: number
16
- )
17
-
18
- convert(inputFrame: FFmpegFrame, outputFrame: FFmpegFrame): number
19
-
20
- flush(outputFrame: FFmpegFrame): number
21
-
22
- destroy(): void
23
- [Symbol.dispose](): void
24
- }
25
-
26
- export = FFmpegResampler
package/lib/samples.d.ts DELETED
@@ -1,16 +0,0 @@
1
- import Buffer from 'bare-buffer'
2
- import FFmpegFrame from './frame'
3
-
4
- declare class FFmpegSamples {
5
- readonly sampleFormat: string | number
6
- readonly nbChannels: number
7
- readonly nbSamples: number
8
- readonly align: number
9
- readonly data: Buffer
10
-
11
- constructor(sampleFormat: string | number, nbSamples: number, align?: number)
12
-
13
- fill(frame: FFmpegFrame): void
14
- }
15
-
16
- export = FFmpegSamples
package/lib/scaler.d.ts DELETED
@@ -1,26 +0,0 @@
1
- import FFmpegFrame from './frame'
2
-
3
- declare class FFmpegScaler {
4
- constructor(
5
- sourcePixelFormat: string | number,
6
- sourceWidth: number,
7
- sourceHeight: number,
8
- targetPixelFormat: string | number,
9
- targetWidth: number,
10
- targetHeight: number
11
- )
12
-
13
- scale(
14
- source: FFmpegFrame,
15
- y: number,
16
- height: number,
17
- target: FFmpegFrame
18
- ): boolean
19
- scale(source: FFmpegFrame, y: number, target: FFmpegFrame): boolean
20
- scale(source: FFmpegFrame, target: FFmpegFrame): boolean
21
-
22
- destroy(): void
23
- [Symbol.dispose](): void
24
- }
25
-
26
- export = FFmpegScaler
package/lib/stream.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import FFmpegCodec from './codec'
2
- import FFmpegCodecContext from './codec-context'
3
- import FFmpegCodecParameters from './codec-parameters'
4
-
5
- declare class FFmpegStream {
6
- readonly codec: FFmpegCodec
7
- readonly codecParameters: FFmpegCodecParameters
8
-
9
- constructor(handle: ArrayBuffer)
10
-
11
- decoder(): FFmpegCodecContext
12
- encoder(): FFmpegCodecContext
13
-
14
- destroy(): void
15
- [Symbol.dispose](): void
16
- }
17
-
18
- export = FFmpegStream