bare-ffmpeg 1.0.0-2 → 1.0.0-4
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/binding.c +117 -17
- package/lib/dictionary.js +0 -10
- package/lib/format-context.js +7 -6
- package/lib/frame.js +20 -12
- package/lib/input-format.js +0 -3
- package/lib/packet.js +0 -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/binding.c
CHANGED
|
@@ -167,10 +167,12 @@ bare_ffmpeg_output_format_init(js_env_t *env, js_callback_info_t *info) {
|
|
|
167
167
|
if (format == NULL) {
|
|
168
168
|
err = js_throw_errorf(env, NULL, "No output format found for name '%s'", name);
|
|
169
169
|
assert(err == 0);
|
|
170
|
+
|
|
170
171
|
free(name);
|
|
171
172
|
|
|
172
173
|
return NULL;
|
|
173
174
|
}
|
|
175
|
+
|
|
174
176
|
free(name);
|
|
175
177
|
|
|
176
178
|
js_value_t *handle;
|
|
@@ -211,10 +213,12 @@ bare_ffmpeg_input_format_init(js_env_t *env, js_callback_info_t *info) {
|
|
|
211
213
|
if (format == NULL) {
|
|
212
214
|
err = js_throw_errorf(env, NULL, "No input format found for name '%s'", name);
|
|
213
215
|
assert(err == 0);
|
|
216
|
+
|
|
214
217
|
free(name);
|
|
215
218
|
|
|
216
219
|
return NULL;
|
|
217
220
|
}
|
|
221
|
+
|
|
218
222
|
free(name);
|
|
219
223
|
|
|
220
224
|
js_value_t *handle;
|
|
@@ -302,6 +306,7 @@ bare_ffmpeg_format_context_open_input_with_format(js_env_t *env, js_callback_inf
|
|
|
302
306
|
assert(err == 0);
|
|
303
307
|
|
|
304
308
|
context->handle = avformat_alloc_context();
|
|
309
|
+
|
|
305
310
|
context->handle->opaque = (void *) context;
|
|
306
311
|
|
|
307
312
|
bare_ffmpeg_dictionary_t *options;
|
|
@@ -319,6 +324,7 @@ bare_ffmpeg_format_context_open_input_with_format(js_env_t *env, js_callback_inf
|
|
|
319
324
|
assert(err == 0);
|
|
320
325
|
|
|
321
326
|
err = avformat_open_input(&context->handle, (char *) url, format->handle, &options->handle);
|
|
327
|
+
|
|
322
328
|
free(url);
|
|
323
329
|
|
|
324
330
|
if (err < 0) {
|
|
@@ -485,13 +491,12 @@ bare_ffmpeg_format_context_get_best_stream_index(js_env_t *env, js_callback_info
|
|
|
485
491
|
err = js_get_value_int32(env, argv[1], &type);
|
|
486
492
|
assert(err == 0);
|
|
487
493
|
|
|
488
|
-
int
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
}
|
|
494
|
+
int i = av_find_best_stream(context->handle, type, -1, -1, NULL, 0);
|
|
495
|
+
|
|
496
|
+
if (i < 0) i = -1;
|
|
492
497
|
|
|
493
498
|
js_value_t *result;
|
|
494
|
-
err = js_create_int32(env,
|
|
499
|
+
err = js_create_int32(env, i, &result);
|
|
495
500
|
assert(err == 0);
|
|
496
501
|
|
|
497
502
|
return result;
|
|
@@ -752,6 +757,7 @@ bare_ffmpeg_codec_context_open(js_env_t *env, js_callback_info_t *info) {
|
|
|
752
757
|
|
|
753
758
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
754
759
|
assert(err == 0);
|
|
760
|
+
|
|
755
761
|
assert(argc == 1);
|
|
756
762
|
|
|
757
763
|
bare_ffmpeg_codec_context_t *context;
|
|
@@ -777,6 +783,7 @@ bare_ffmpeg_codec_context_open_with_options(js_env_t *env, js_callback_info_t *i
|
|
|
777
783
|
|
|
778
784
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
779
785
|
assert(err == 0);
|
|
786
|
+
|
|
780
787
|
assert(argc == 2);
|
|
781
788
|
|
|
782
789
|
bare_ffmpeg_codec_context_t *context;
|
|
@@ -788,6 +795,7 @@ bare_ffmpeg_codec_context_open_with_options(js_env_t *env, js_callback_info_t *i
|
|
|
788
795
|
assert(err == 0);
|
|
789
796
|
|
|
790
797
|
err = avcodec_open2(context->handle, context->handle->codec, &options->handle);
|
|
798
|
+
|
|
791
799
|
if (err < 0) {
|
|
792
800
|
err = js_throw_error(env, NULL, av_err2str(err));
|
|
793
801
|
assert(err == 0);
|
|
@@ -1033,6 +1041,7 @@ bare_ffmpeg_codec_context_receive_packet(js_env_t *env, js_callback_info_t *info
|
|
|
1033
1041
|
|
|
1034
1042
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1035
1043
|
assert(err == 0);
|
|
1044
|
+
|
|
1036
1045
|
assert(argc == 2);
|
|
1037
1046
|
|
|
1038
1047
|
bare_ffmpeg_codec_context_t *context;
|
|
@@ -1068,6 +1077,7 @@ bare_ffmpeg_codec_context_send_frame(js_env_t *env, js_callback_info_t *info) {
|
|
|
1068
1077
|
|
|
1069
1078
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1070
1079
|
assert(err == 0);
|
|
1080
|
+
|
|
1071
1081
|
assert(argc == 2);
|
|
1072
1082
|
|
|
1073
1083
|
bare_ffmpeg_codec_context_t *context;
|
|
@@ -1084,6 +1094,7 @@ bare_ffmpeg_codec_context_send_frame(js_env_t *env, js_callback_info_t *info) {
|
|
|
1084
1094
|
js_value_t *result;
|
|
1085
1095
|
err = js_get_boolean(env, false, &result);
|
|
1086
1096
|
assert(err == 0);
|
|
1097
|
+
|
|
1087
1098
|
return result;
|
|
1088
1099
|
}
|
|
1089
1100
|
|
|
@@ -1162,8 +1173,6 @@ bare_ffmpeg_codec_parameters_from_context(js_env_t *env, js_callback_info_t *inf
|
|
|
1162
1173
|
if (err < 0) {
|
|
1163
1174
|
err = js_throw_error(env, NULL, av_err2str(err));
|
|
1164
1175
|
assert(err == 0);
|
|
1165
|
-
|
|
1166
|
-
return NULL;
|
|
1167
1176
|
}
|
|
1168
1177
|
|
|
1169
1178
|
return NULL;
|
|
@@ -1194,8 +1203,6 @@ bare_ffmpeg_codec_parameters_to_context(js_env_t *env, js_callback_info_t *info)
|
|
|
1194
1203
|
if (err < 0) {
|
|
1195
1204
|
err = js_throw_error(env, NULL, av_err2str(err));
|
|
1196
1205
|
assert(err == 0);
|
|
1197
|
-
|
|
1198
|
-
return NULL;
|
|
1199
1206
|
}
|
|
1200
1207
|
|
|
1201
1208
|
return NULL;
|
|
@@ -1332,7 +1339,7 @@ bare_ffmpeg_frame_destroy(js_env_t *env, js_callback_info_t *info) {
|
|
|
1332
1339
|
}
|
|
1333
1340
|
|
|
1334
1341
|
static js_value_t *
|
|
1335
|
-
|
|
1342
|
+
bare_ffmpeg_frame_get_audio_channel(js_env_t *env, js_callback_info_t *info) {
|
|
1336
1343
|
int err;
|
|
1337
1344
|
|
|
1338
1345
|
size_t argc = 2;
|
|
@@ -1366,6 +1373,51 @@ bare_ffmpeg_frame_get_channel(js_env_t *env, js_callback_info_t *info) {
|
|
|
1366
1373
|
return result;
|
|
1367
1374
|
}
|
|
1368
1375
|
|
|
1376
|
+
static js_value_t *
|
|
1377
|
+
bare_ffmpeg_frame_get_image_data(js_env_t *env, js_callback_info_t *info) {
|
|
1378
|
+
int err;
|
|
1379
|
+
|
|
1380
|
+
size_t argc = 1;
|
|
1381
|
+
js_value_t *argv[1];
|
|
1382
|
+
|
|
1383
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1384
|
+
assert(err == 0);
|
|
1385
|
+
|
|
1386
|
+
assert(argc == 1);
|
|
1387
|
+
|
|
1388
|
+
bare_ffmpeg_frame_t *frame;
|
|
1389
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &frame, NULL);
|
|
1390
|
+
assert(err == 0);
|
|
1391
|
+
|
|
1392
|
+
int size = av_image_get_buffer_size(
|
|
1393
|
+
frame->handle->format,
|
|
1394
|
+
frame->handle->width,
|
|
1395
|
+
frame->handle->height,
|
|
1396
|
+
1
|
|
1397
|
+
);
|
|
1398
|
+
assert(size > 0);
|
|
1399
|
+
|
|
1400
|
+
js_value_t *result;
|
|
1401
|
+
|
|
1402
|
+
uint8_t *buffer;
|
|
1403
|
+
err = js_create_arraybuffer(env, size, (void **) &buffer, &result);
|
|
1404
|
+
assert(err == 0);
|
|
1405
|
+
|
|
1406
|
+
err = av_image_copy_to_buffer(
|
|
1407
|
+
buffer,
|
|
1408
|
+
size,
|
|
1409
|
+
(const uint8_t *const *) frame->handle->data,
|
|
1410
|
+
frame->handle->linesize,
|
|
1411
|
+
frame->handle->format,
|
|
1412
|
+
frame->handle->width,
|
|
1413
|
+
frame->handle->height,
|
|
1414
|
+
1
|
|
1415
|
+
);
|
|
1416
|
+
assert(err >= 0);
|
|
1417
|
+
|
|
1418
|
+
return result;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1369
1421
|
static js_value_t *
|
|
1370
1422
|
bare_ffmpeg_frame_get_width(js_env_t *env, js_callback_info_t *info) {
|
|
1371
1423
|
int err;
|
|
@@ -1375,6 +1427,7 @@ bare_ffmpeg_frame_get_width(js_env_t *env, js_callback_info_t *info) {
|
|
|
1375
1427
|
|
|
1376
1428
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1377
1429
|
assert(err == 0);
|
|
1430
|
+
|
|
1378
1431
|
assert(argc == 1);
|
|
1379
1432
|
|
|
1380
1433
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1397,6 +1450,7 @@ bare_ffmpeg_frame_set_width(js_env_t *env, js_callback_info_t *info) {
|
|
|
1397
1450
|
|
|
1398
1451
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1399
1452
|
assert(err == 0);
|
|
1453
|
+
|
|
1400
1454
|
assert(argc == 2);
|
|
1401
1455
|
|
|
1402
1456
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1421,6 +1475,7 @@ bare_ffmpeg_frame_get_height(js_env_t *env, js_callback_info_t *info) {
|
|
|
1421
1475
|
|
|
1422
1476
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1423
1477
|
assert(err == 0);
|
|
1478
|
+
|
|
1424
1479
|
assert(argc == 1);
|
|
1425
1480
|
|
|
1426
1481
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1443,6 +1498,7 @@ bare_ffmpeg_frame_set_height(js_env_t *env, js_callback_info_t *info) {
|
|
|
1443
1498
|
|
|
1444
1499
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1445
1500
|
assert(err == 0);
|
|
1501
|
+
|
|
1446
1502
|
assert(argc == 2);
|
|
1447
1503
|
|
|
1448
1504
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1467,6 +1523,7 @@ bare_ffmpeg_frame_get_pixel_format(js_env_t *env, js_callback_info_t *info) {
|
|
|
1467
1523
|
|
|
1468
1524
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1469
1525
|
assert(err == 0);
|
|
1526
|
+
|
|
1470
1527
|
assert(argc == 1);
|
|
1471
1528
|
|
|
1472
1529
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1489,6 +1546,7 @@ bare_ffmpeg_frame_set_pixel_format(js_env_t *env, js_callback_info_t *info) {
|
|
|
1489
1546
|
|
|
1490
1547
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1491
1548
|
assert(err == 0);
|
|
1549
|
+
|
|
1492
1550
|
assert(argc == 2);
|
|
1493
1551
|
|
|
1494
1552
|
bare_ffmpeg_frame_t *frame;
|
|
@@ -1504,6 +1562,37 @@ bare_ffmpeg_frame_set_pixel_format(js_env_t *env, js_callback_info_t *info) {
|
|
|
1504
1562
|
return NULL;
|
|
1505
1563
|
}
|
|
1506
1564
|
|
|
1565
|
+
static js_value_t *
|
|
1566
|
+
bare_ffmpeg_frame_get_linesize(js_env_t *env, js_callback_info_t *info) {
|
|
1567
|
+
int err;
|
|
1568
|
+
|
|
1569
|
+
size_t argc = 2;
|
|
1570
|
+
js_value_t *argv[2];
|
|
1571
|
+
|
|
1572
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1573
|
+
assert(err == 0);
|
|
1574
|
+
|
|
1575
|
+
assert(argc == 2);
|
|
1576
|
+
|
|
1577
|
+
bare_ffmpeg_frame_t *frame;
|
|
1578
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &frame, NULL);
|
|
1579
|
+
assert(err == 0);
|
|
1580
|
+
|
|
1581
|
+
uint32_t channel;
|
|
1582
|
+
err = js_get_value_uint32(env, argv[1], &channel);
|
|
1583
|
+
assert(err == 0);
|
|
1584
|
+
|
|
1585
|
+
assert(channel < AV_NUM_DATA_POINTERS);
|
|
1586
|
+
|
|
1587
|
+
int32_t linesize = frame->handle->linesize[channel];
|
|
1588
|
+
|
|
1589
|
+
js_value_t *result;
|
|
1590
|
+
err = js_create_int32(env, linesize, &result);
|
|
1591
|
+
assert(err == 0);
|
|
1592
|
+
|
|
1593
|
+
return result;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1507
1596
|
static js_value_t *
|
|
1508
1597
|
bare_ffmpeg_frame_alloc(js_env_t *env, js_callback_info_t *info) {
|
|
1509
1598
|
int err;
|
|
@@ -1513,23 +1602,22 @@ bare_ffmpeg_frame_alloc(js_env_t *env, js_callback_info_t *info) {
|
|
|
1513
1602
|
|
|
1514
1603
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1515
1604
|
assert(err == 0);
|
|
1605
|
+
|
|
1516
1606
|
assert(argc == 2);
|
|
1517
1607
|
|
|
1518
1608
|
bare_ffmpeg_frame_t *frame;
|
|
1519
1609
|
err = js_get_arraybuffer_info(env, argv[0], (void **) &frame, NULL);
|
|
1520
1610
|
assert(err == 0);
|
|
1521
|
-
assert(frame->handle != NULL);
|
|
1522
1611
|
|
|
1523
1612
|
int align;
|
|
1524
1613
|
err = js_get_value_int32(env, argv[1], &align);
|
|
1525
1614
|
assert(err == 0);
|
|
1526
|
-
assert(frame->handle != NULL);
|
|
1527
1615
|
|
|
1528
1616
|
err = av_frame_get_buffer(frame->handle, align);
|
|
1617
|
+
|
|
1529
1618
|
if (err < 0) {
|
|
1530
1619
|
err = js_throw_error(env, NULL, av_err2str(err));
|
|
1531
1620
|
assert(err == 0);
|
|
1532
|
-
return NULL;
|
|
1533
1621
|
}
|
|
1534
1622
|
|
|
1535
1623
|
return NULL;
|
|
@@ -1636,6 +1724,7 @@ bare_ffmpeg_packet_init_from_buffer(js_env_t *env, js_callback_info_t *info) {
|
|
|
1636
1724
|
|
|
1637
1725
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1638
1726
|
assert(err == 0);
|
|
1727
|
+
|
|
1639
1728
|
assert(argc == 3);
|
|
1640
1729
|
|
|
1641
1730
|
uint8_t *data;
|
|
@@ -1659,6 +1748,7 @@ bare_ffmpeg_packet_init_from_buffer(js_env_t *env, js_callback_info_t *info) {
|
|
|
1659
1748
|
memcpy(pkt->data, &data[offset], len);
|
|
1660
1749
|
|
|
1661
1750
|
js_value_t *handle;
|
|
1751
|
+
|
|
1662
1752
|
bare_ffmpeg_packet_t *packet;
|
|
1663
1753
|
err = js_create_arraybuffer(env, sizeof(bare_ffmpeg_packet_t), (void **) &packet, &handle);
|
|
1664
1754
|
assert(err == 0);
|
|
@@ -1749,14 +1839,15 @@ bare_ffmpeg_packet_get_data(js_env_t *env, js_callback_info_t *info) {
|
|
|
1749
1839
|
err = js_get_arraybuffer_info(env, argv[0], (void **) &packet, NULL);
|
|
1750
1840
|
assert(err == 0);
|
|
1751
1841
|
|
|
1752
|
-
js_value_t *
|
|
1842
|
+
js_value_t *handle;
|
|
1843
|
+
|
|
1753
1844
|
uint8_t *data;
|
|
1754
|
-
err = js_create_arraybuffer(env, packet->handle->size, (void **) &data, &
|
|
1845
|
+
err = js_create_arraybuffer(env, packet->handle->size, (void **) &data, &handle);
|
|
1755
1846
|
assert(err == 0);
|
|
1756
1847
|
|
|
1757
1848
|
memcpy(data, packet->handle->data, packet->handle->size);
|
|
1758
1849
|
|
|
1759
|
-
return
|
|
1850
|
+
return handle;
|
|
1760
1851
|
}
|
|
1761
1852
|
|
|
1762
1853
|
static js_value_t *
|
|
@@ -1910,6 +2001,7 @@ bare_ffmpeg_dictionary_destroy(js_env_t *env, js_callback_info_t *info) {
|
|
|
1910
2001
|
|
|
1911
2002
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1912
2003
|
assert(err == 0);
|
|
2004
|
+
|
|
1913
2005
|
assert(argc == 1);
|
|
1914
2006
|
|
|
1915
2007
|
bare_ffmpeg_dictionary_t *dict;
|
|
@@ -1930,6 +2022,7 @@ bare_ffmpeg_dictionary_set_entry(js_env_t *env, js_callback_info_t *info) {
|
|
|
1930
2022
|
|
|
1931
2023
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1932
2024
|
assert(err == 0);
|
|
2025
|
+
|
|
1933
2026
|
assert(argc == 3);
|
|
1934
2027
|
|
|
1935
2028
|
bare_ffmpeg_dictionary_t *dict;
|
|
@@ -1957,6 +2050,7 @@ bare_ffmpeg_dictionary_set_entry(js_env_t *env, js_callback_info_t *info) {
|
|
|
1957
2050
|
|
|
1958
2051
|
err = av_dict_set(&dict->handle, (const char *) key, (const char *) value, 0);
|
|
1959
2052
|
assert(err == 0);
|
|
2053
|
+
|
|
1960
2054
|
free(key);
|
|
1961
2055
|
free(value);
|
|
1962
2056
|
|
|
@@ -1972,6 +2066,7 @@ bare_ffmpeg_dictionary_get_entry(js_env_t *env, js_callback_info_t *info) {
|
|
|
1972
2066
|
|
|
1973
2067
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
1974
2068
|
assert(err == 0);
|
|
2069
|
+
|
|
1975
2070
|
assert(argc == 2);
|
|
1976
2071
|
|
|
1977
2072
|
bare_ffmpeg_dictionary_t *dict;
|
|
@@ -1989,12 +2084,14 @@ bare_ffmpeg_dictionary_get_entry(js_env_t *env, js_callback_info_t *info) {
|
|
|
1989
2084
|
assert(err == 0);
|
|
1990
2085
|
|
|
1991
2086
|
AVDictionaryEntry *entry = av_dict_get(dict->handle, (const char *) key, NULL, 0);
|
|
2087
|
+
|
|
1992
2088
|
free(key);
|
|
1993
2089
|
|
|
1994
2090
|
if (entry == NULL) {
|
|
1995
2091
|
js_value_t *result;
|
|
1996
2092
|
err = js_get_null(env, &result);
|
|
1997
2093
|
assert(err == 0);
|
|
2094
|
+
|
|
1998
2095
|
return result;
|
|
1999
2096
|
}
|
|
2000
2097
|
|
|
@@ -2068,13 +2165,15 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2068
2165
|
|
|
2069
2166
|
V("initFrame", bare_ffmpeg_frame_init)
|
|
2070
2167
|
V("destroyFrame", bare_ffmpeg_frame_destroy)
|
|
2071
|
-
V("
|
|
2168
|
+
V("getFrameAudioChannel", bare_ffmpeg_frame_get_audio_channel)
|
|
2169
|
+
V("getFrameImageData", bare_ffmpeg_frame_get_image_data)
|
|
2072
2170
|
V("getFrameWidth", bare_ffmpeg_frame_get_width)
|
|
2073
2171
|
V("setFrameWidth", bare_ffmpeg_frame_set_width)
|
|
2074
2172
|
V("getFrameHeight", bare_ffmpeg_frame_get_height)
|
|
2075
2173
|
V("setFrameHeight", bare_ffmpeg_frame_set_height)
|
|
2076
2174
|
V("getFramePixelFormat", bare_ffmpeg_frame_get_pixel_format)
|
|
2077
2175
|
V("setFramePixelFormat", bare_ffmpeg_frame_set_pixel_format)
|
|
2176
|
+
V("getFrameLineSize", bare_ffmpeg_frame_get_linesize)
|
|
2078
2177
|
V("allocFrame", bare_ffmpeg_frame_alloc)
|
|
2079
2178
|
|
|
2080
2179
|
V("initImage", bare_ffmpeg_image_init)
|
|
@@ -2110,6 +2209,7 @@ bare_ffmpeg_exports(js_env_t *env, js_value_t *exports) {
|
|
|
2110
2209
|
V(AV_CODEC_ID_H264)
|
|
2111
2210
|
|
|
2112
2211
|
V(AV_PIX_FMT_RGBA)
|
|
2212
|
+
V(AV_PIX_FMT_RGB24)
|
|
2113
2213
|
V(AV_PIX_FMT_YUVJ420P)
|
|
2114
2214
|
V(AV_PIX_FMT_YUV420P)
|
|
2115
2215
|
|
package/lib/dictionary.js
CHANGED
|
@@ -14,20 +14,10 @@ module.exports = class FFmpegDictionary extends ReferenceCounted {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
get(key) {
|
|
17
|
-
if (typeof key !== 'string' || key.length < 1) {
|
|
18
|
-
throw new TypeError(`Key should be a non empty string`)
|
|
19
|
-
}
|
|
20
17
|
return binding.getDictionaryEntry(this._handle, key)
|
|
21
18
|
}
|
|
22
19
|
|
|
23
20
|
set(key, value) {
|
|
24
|
-
if (typeof key !== 'string' || key.length < 1) {
|
|
25
|
-
throw new TypeError(`Key should be a non empty string`)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (typeof value !== 'string' || value.length < 1) {
|
|
29
|
-
throw new TypeError(`Value should be a non empty string`)
|
|
30
|
-
}
|
|
31
21
|
binding.setDictionaryEntry(this._handle, key, value)
|
|
32
22
|
}
|
|
33
23
|
}
|
package/lib/format-context.js
CHANGED
|
@@ -4,6 +4,7 @@ const ReferenceCounted = require('./reference-counted')
|
|
|
4
4
|
const OutputFormat = require('./output-format')
|
|
5
5
|
const IOContext = require('./io-context')
|
|
6
6
|
const InputFormat = require('./input-format')
|
|
7
|
+
const Dictionary = require('./dictionary')
|
|
7
8
|
|
|
8
9
|
class FFmpegFormatContext extends ReferenceCounted {
|
|
9
10
|
constructor(io) {
|
|
@@ -42,12 +43,6 @@ class FFmpegFormatContext extends ReferenceCounted {
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
getBestStream(type) {
|
|
45
|
-
if (typeof type !== 'number') {
|
|
46
|
-
throw new TypeError(
|
|
47
|
-
`Type parameter should be of type number but got: ${typeof type}`
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
46
|
if (this._streams.length == 0) {
|
|
52
47
|
return null
|
|
53
48
|
}
|
|
@@ -86,14 +81,20 @@ exports.InputFormatContext = class FFmpegInputFormatContext extends (
|
|
|
86
81
|
constructor(io, options, url = defaultURL) {
|
|
87
82
|
if (io instanceof IOContext) {
|
|
88
83
|
super(io)
|
|
84
|
+
|
|
89
85
|
this._handle = binding.openInputFormatContextWithIO(io._handle)
|
|
90
86
|
} else if (io instanceof InputFormat) {
|
|
91
87
|
super()
|
|
88
|
+
|
|
89
|
+
options = options || new Dictionary()
|
|
90
|
+
|
|
92
91
|
this._handle = binding.openInputFormatContextWithFormat(
|
|
93
92
|
io._handle,
|
|
94
93
|
options._handle,
|
|
95
94
|
url
|
|
96
95
|
)
|
|
96
|
+
|
|
97
|
+
options.destroy()
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
for (const handle of binding.getFormatContextStreams(this._handle)) {
|
package/lib/frame.js
CHANGED
|
@@ -13,36 +13,44 @@ module.exports = class FFmpegFrame extends ReferenceCounted {
|
|
|
13
13
|
this._handle = null
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
throw new RangeError(`Channel index must be between 0 and 7`)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return Buffer.from(binding.getFrameChannel(this._handle, i))
|
|
16
|
+
get width() {
|
|
17
|
+
return binding.getFrameWidth(this._handle)
|
|
22
18
|
}
|
|
23
19
|
|
|
24
20
|
set width(value) {
|
|
25
21
|
binding.setFrameWidth(this._handle, value)
|
|
26
22
|
}
|
|
27
23
|
|
|
28
|
-
get
|
|
29
|
-
return binding.
|
|
24
|
+
get height() {
|
|
25
|
+
return binding.getFrameHeight(this._handle)
|
|
30
26
|
}
|
|
31
27
|
|
|
32
28
|
set height(value) {
|
|
33
29
|
binding.setFrameHeight(this._handle, value)
|
|
34
30
|
}
|
|
35
31
|
|
|
36
|
-
get
|
|
37
|
-
return binding.
|
|
32
|
+
get pixelFormat() {
|
|
33
|
+
return binding.getFramePixelFormat(this._handle)
|
|
38
34
|
}
|
|
39
35
|
|
|
40
36
|
set pixelFormat(value) {
|
|
41
37
|
binding.setFramePixelFormat(this._handle, value)
|
|
42
38
|
}
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
audioChannel(i) {
|
|
41
|
+
if (i < 0 || i > 7) {
|
|
42
|
+
throw new RangeError(`Channel index must be between 0 and 7`)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return Buffer.from(binding.getFrameAudioChannel(this._handle, i))
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
imageData() {
|
|
49
|
+
return Buffer.from(binding.getFrameImageData(this._handle))
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
lineSize(channel) {
|
|
53
|
+
return binding.getFrameLineSize(this._handle, channel)
|
|
46
54
|
}
|
|
47
55
|
|
|
48
56
|
alloc() {
|
package/lib/input-format.js
CHANGED
|
@@ -16,9 +16,6 @@ switch (Bare.platform) {
|
|
|
16
16
|
|
|
17
17
|
module.exports = class FFmpegInputFormat {
|
|
18
18
|
constructor(name = defaultName) {
|
|
19
|
-
if (typeof name !== 'string' || name.length < 1) {
|
|
20
|
-
throw new TypeError('Input format name should be a non empty string')
|
|
21
|
-
}
|
|
22
19
|
this._handle = binding.initInputFormat(name)
|
|
23
20
|
}
|
|
24
21
|
}
|
package/lib/packet.js
CHANGED
|
@@ -6,12 +6,6 @@ module.exports = class FFmpegPacket extends ReferenceCounted {
|
|
|
6
6
|
super()
|
|
7
7
|
|
|
8
8
|
if (buffer) {
|
|
9
|
-
if (!Buffer.isBuffer(buffer)) {
|
|
10
|
-
throw TypeError(
|
|
11
|
-
`Buffer parameter should be of type Buffer but got: ${typeof buffer}`
|
|
12
|
-
)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
9
|
this._handle = binding.initPacketFromBuffer(
|
|
16
10
|
buffer.buffer,
|
|
17
11
|
buffer.byteOffset,
|
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
|