Skip to content

Commit b8cd075

Browse files
committed
Removed libc completely, added tests for gxf and ported gxf to C
1 parent 8dd043f commit b8cd075

File tree

13 files changed

+2606
-613
lines changed

13 files changed

+2606
-613
lines changed

src/lib_ccx/ccx_gxf.c

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,32 @@
2929
#define log(fmt, ...) ccx_common_logging.log_ftn("GXF:%d: " fmt, __LINE__, ##__VA_ARGS__)
3030

3131
#undef CCX_GXF_ENABLE_AD_VBI
32+
33+
#ifndef DISABLE_RUST
34+
int ccxr_parse_packet_header(struct ccx_demuxer *ctx, struct GXFPktType *type, int *length);
35+
int ccxr_parse_material_sec(struct ccx_demuxer *demux, int len);
36+
int ccxr_parse_mpeg525_track_desc(struct ccx_demuxer *demux, int len);
37+
int ccxr_parse_ad_track_desc(struct ccx_demuxer *demux, int len);
38+
void ccxr_set_track_frame_rate(struct ccx_gxf_video_track *vid_track, int8_t val);
39+
int ccxr_parse_track_sec(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
40+
int ccxr_parse_ad_cdp(const unsigned char *cdp, size_t len, struct demuxer_data *data);
41+
int ccxr_parse_ad_pyld(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
42+
int ccxr_parse_ad_vbi(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
43+
int ccxr_parse_ad_field(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
44+
void ccxr_set_data_timebase(int32_t vid_format, struct demuxer_data *data);
45+
int ccxr_parse_mpeg_packet(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
46+
int ccxr_parse_ad_packet(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
47+
void ccxr_set_mpeg_frame_desc(struct ccx_gxf_video_track *vid_track, unsigned char mpeg_frame_desc_flag);
48+
int ccxr_parse_media(struct ccx_demuxer *demux, int len, struct demuxer_data *data);
49+
int ccxr_parse_flt(struct ccx_demuxer *ctx, int len);
50+
int ccxr_parse_umf(struct ccx_demuxer *ctx, int len);
51+
int ccxr_parse_map(struct ccx_demuxer *ctx, int len, struct demuxer_data *data);
52+
int ccxr_read_packet(struct ccx_demuxer *ctx, struct demuxer_data *data);
53+
int ccxr_gxf_probe(const unsigned char *buf, int len);
54+
#endif
55+
56+
57+
3258
typedef enum
3359
{
3460
PKT_MAP = 0xbc,
@@ -337,6 +363,9 @@ struct ccx_gxf
337363
*/
338364
static int parse_packet_header(struct ccx_demuxer *ctx, GXFPktType *type, int *length)
339365
{
366+
#ifndef DISABLE_RUST
367+
return ccxr_parse_packet_header(ctx, type, length);
368+
#else
340369
unsigned char pkt_header[16];
341370
int index = 0;
342371
long long result;
@@ -384,10 +413,14 @@ static int parse_packet_header(struct ccx_demuxer *ctx, GXFPktType *type, int *l
384413
index++;
385414

386415
return CCX_OK;
416+
#endif
387417
}
388418

389419
static int parse_material_sec(struct ccx_demuxer *demux, int len)
390420
{
421+
#ifndef DISABLE_RUST
422+
return ccxr_parse_material_sec(demux, len);
423+
#else
391424
struct ccx_gxf *ctx = demux->private_data;
392425
int result;
393426
int ret = CCX_OK;
@@ -452,10 +485,14 @@ static int parse_material_sec(struct ccx_demuxer *demux, int len)
452485
if (result != len)
453486
ret = CCX_EOF;
454487
return ret;
488+
#endif
455489
}
456490

457491
static void set_track_frame_rate(struct ccx_gxf_video_track *vid_track, int8_t val)
458492
{
493+
#ifndef DISABLE_RUST
494+
ccxr_set_track_frame_rate(vid_track, val);
495+
#else
459496
switch (val)
460497
{
461498
case 1:
@@ -498,9 +535,13 @@ static void set_track_frame_rate(struct ccx_gxf_video_track *vid_track, int8_t v
498535
/* Do nothing in case of no frame rate */
499536
break;
500537
}
538+
#endif
501539
}
502540
static int parse_mpeg525_track_desc(struct ccx_demuxer *demux, int len)
503541
{
542+
#ifndef DISABLE_RUST
543+
return ccxr_parse_mpeg525_track_desc(demux, len);
544+
#else
504545
struct ccx_gxf *ctx = demux->private_data;
505546
struct ccx_gxf_video_track *vid_track = ctx->vid_track;
506547
int result;
@@ -566,10 +607,14 @@ static int parse_mpeg525_track_desc(struct ccx_demuxer *demux, int len)
566607
if (result != len)
567608
ret = CCX_EOF;
568609
return ret;
610+
#endif
569611
}
570612

571613
static int parse_ad_track_desc(struct ccx_demuxer *demux, int len)
572614
{
615+
#ifndef DISABLE_RUST
616+
return ccxr_parse_ad_track_desc(demux, len);
617+
#else
573618
struct ccx_gxf *ctx = demux->private_data;
574619
struct ccx_gxf_ancillary_data_track *ad_track = ctx->ad_track;
575620
int result;
@@ -658,10 +703,14 @@ static int parse_ad_track_desc(struct ccx_demuxer *demux, int len)
658703
if (result != len)
659704
ret = CCX_EOF;
660705
return ret;
706+
#endif
661707
}
662708

663709
static int parse_track_sec(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
664710
{
711+
#ifndef DISABLE_RUST
712+
return ccxr_parse_track_sec(demux, len, data);
713+
#else
665714
int result;
666715
int ret = CCX_OK;
667716
struct ccx_gxf *ctx = demux->private_data;
@@ -762,6 +811,7 @@ static int parse_track_sec(struct ccx_demuxer *demux, int len, struct demuxer_da
762811
if (result != len)
763812
ret = CCX_EOF;
764813
return ret;
814+
#endif
765815
}
766816

767817
/**
@@ -781,7 +831,9 @@ static int parse_track_sec(struct ccx_demuxer *demux, int len, struct demuxer_da
781831

782832
int parse_ad_cdp(unsigned char *cdp, size_t len, struct demuxer_data *data)
783833
{
784-
834+
#ifndef DISABLE_RUST
835+
return ccxr_parse_ad_cdp(cdp, len, data);
836+
#else
785837
int ret = CCX_OK;
786838
uint16_t cdp_length;
787839
uint16_t cdp_framerate;
@@ -896,13 +948,17 @@ int parse_ad_cdp(unsigned char *cdp, size_t len, struct demuxer_data *data)
896948
}
897949

898950
return ret;
951+
#endif
899952
}
900953

901954
/**
902955
* parse ancillary data payload
903956
*/
904957
static int parse_ad_pyld(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
905958
{
959+
#ifndef DISABLE_RUST
960+
return ccxr_parse_ad_pyld(demux, len, data);
961+
#else
906962
int ret = CCX_OK;
907963
int result = 0;
908964
#ifndef CCX_GXF_ENABLE_AD_VBI
@@ -975,6 +1031,7 @@ static int parse_ad_pyld(struct ccx_demuxer *demux, int len, struct demuxer_data
9751031
ret = CCX_EOF;
9761032

9771033
return ret;
1034+
#endif
9781035
}
9791036

9801037
/**
@@ -987,6 +1044,9 @@ static int parse_ad_pyld(struct ccx_demuxer *demux, int len, struct demuxer_data
9871044
*/
9881045
static int parse_ad_vbi(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
9891046
{
1047+
#ifndef DISABLE_RUST
1048+
return ccxr_parse_ad_vbi(demux, len, data);
1049+
#else
9901050
int ret = CCX_OK;
9911051
int result = 0;
9921052

@@ -1000,10 +1060,14 @@ static int parse_ad_vbi(struct ccx_demuxer *demux, int len, struct demuxer_data
10001060
if (result != len)
10011061
ret = CCX_EOF;
10021062
return ret;
1063+
#endif
10031064
}
10041065

10051066
static int parse_ad_field(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
10061067
{
1068+
#ifndef DISABLE_RUST
1069+
return ccxr_parse_ad_field(demux, len, data);
1070+
#else
10071071
int ret = CCX_OK;
10081072
int result = 0;
10091073
char tag[5];
@@ -1131,6 +1195,7 @@ static int parse_ad_field(struct ccx_demuxer *demux, int len, struct demuxer_dat
11311195
if (result != len)
11321196
ret = CCX_EOF;
11331197
return ret;
1198+
#endif
11341199
}
11351200

11361201
/**
@@ -1166,6 +1231,9 @@ static int parse_ad_field(struct ccx_demuxer *demux, int len, struct demuxer_dat
11661231
*/
11671232
static void set_data_timebase(int32_t vid_format, struct demuxer_data *data)
11681233
{
1234+
#ifndef DISABLE_RUST
1235+
ccxr_set_data_timebase(vid_format, data);
1236+
#else
11691237
debug("LOG:Format Video %d\n", vid_format);
11701238

11711239
switch (vid_format)
@@ -1218,10 +1286,14 @@ static void set_data_timebase(int32_t vid_format, struct demuxer_data *data)
12181286
default:
12191287
break;
12201288
}
1289+
#endif
12211290
}
12221291

12231292
static int parse_mpeg_packet(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
12241293
{
1294+
#ifndef DISABLE_RUST
1295+
return ccxr_parse_mpeg_packet(demux, len, data);
1296+
#else
12251297
int ret = CCX_OK;
12261298
int result = 0;
12271299

@@ -1231,6 +1303,7 @@ static int parse_mpeg_packet(struct ccx_demuxer *demux, int len, struct demuxer_
12311303
if (result != len)
12321304
ret = CCX_EOF;
12331305
return ret;
1306+
#endif
12341307
}
12351308

12361309
/**
@@ -1239,6 +1312,9 @@ static int parse_mpeg_packet(struct ccx_demuxer *demux, int len, struct demuxer_
12391312
*/
12401313
static int parse_ad_packet(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
12411314
{
1315+
#ifndef DISABLE_RUST
1316+
return ccxr_parse_ad_packet(demux, len, data);
1317+
#else
12421318
int ret = CCX_OK;
12431319
int result = 0;
12441320
int i;
@@ -1334,6 +1410,7 @@ static int parse_ad_packet(struct ccx_demuxer *demux, int len, struct demuxer_da
13341410
if (result != len)
13351411
ret = CCX_EOF;
13361412
return ret;
1413+
#endif
13371414
}
13381415

13391416
/**
@@ -1357,11 +1434,18 @@ static int parse_ad_packet(struct ccx_demuxer *demux, int len, struct demuxer_da
13571434
*/
13581435
static void set_mpeg_frame_desc(struct ccx_gxf_video_track *vid_track, unsigned char mpeg_frame_desc_flag)
13591436
{
1437+
#ifndef DISABLE_RUST
1438+
ccxr_set_mpeg_frame_desc(vid_track, mpeg_frame_desc_flag);
1439+
#else
13601440
vid_track->p_code = mpeg_frame_desc_flag & 0x03;
13611441
vid_track->p_struct = (mpeg_frame_desc_flag >> 2) & 0x03;
1442+
#endif
13621443
}
13631444
static int parse_media(struct ccx_demuxer *demux, int len, struct demuxer_data *data)
13641445
{
1446+
#ifndef DISABLE_RUST
1447+
return ccxr_parse_media(demux, len, data);
1448+
#else
13651449
int ret = CCX_OK;
13661450
int result = 0;
13671451
GXFTrackType media_type;
@@ -1515,13 +1599,17 @@ static int parse_media(struct ccx_demuxer *demux, int len, struct demuxer_data *
15151599
if (result != len)
15161600
ret = CCX_EOF;
15171601
return ret;
1602+
#endif
15181603
}
15191604

15201605
/**
15211606
* Dummy function that ignore field locator table packet
15221607
*/
15231608
static int parse_flt(struct ccx_demuxer *ctx, int len)
15241609
{
1610+
#ifndef DISABLE_RUST
1611+
return ccxr_parse_flt(ctx, len);
1612+
#else
15251613
int ret = CCX_OK;
15261614
int result = 0;
15271615

@@ -1530,13 +1618,17 @@ static int parse_flt(struct ccx_demuxer *ctx, int len)
15301618
if (result != len)
15311619
ret = CCX_EOF;
15321620
return ret;
1621+
#endif
15331622
}
15341623

15351624
/**
15361625
* Dummy function that ignore unified material format packet
15371626
*/
15381627
static int parse_umf(struct ccx_demuxer *ctx, int len)
15391628
{
1629+
#ifndef DISABLE_RUST
1630+
return ccxr_parse_umf(ctx, len);
1631+
#else
15401632
int ret = CCX_OK;
15411633
int result = 0;
15421634

@@ -1545,6 +1637,7 @@ static int parse_umf(struct ccx_demuxer *ctx, int len)
15451637
if (result != len)
15461638
ret = CCX_EOF;
15471639
return ret;
1640+
#endif
15481641
}
15491642
/**
15501643
* Its this function duty to use len length buffer from demuxer
@@ -1559,6 +1652,9 @@ static int parse_umf(struct ccx_demuxer *ctx, int len)
15591652
*/
15601653
static int parse_map(struct ccx_demuxer *ctx, int len, struct demuxer_data *data)
15611654
{
1655+
#ifndef DISABLE_RUST
1656+
return ccxr_parse_map(ctx, len, data);
1657+
#else
15621658
int result = 0;
15631659
int material_sec_len = 0;
15641660
int track_sec_len = 0;
@@ -1589,6 +1685,7 @@ static int parse_map(struct ccx_demuxer *ctx, int len, struct demuxer_data *data
15891685
if (result != len)
15901686
ret = CCX_EOF;
15911687
return ret;
1688+
#endif
15921689
}
15931690

15941691
/**
@@ -1603,6 +1700,9 @@ static int parse_map(struct ccx_demuxer *ctx, int len, struct demuxer_data *data
16031700

16041701
static int read_packet(struct ccx_demuxer *ctx, struct demuxer_data *data)
16051702
{
1703+
#ifndef DISABLE_RUST
1704+
return ccxr_read_packet(ctx, data);
1705+
#else
16061706
int len = 0;
16071707
int result = 0;
16081708
int ret;
@@ -1639,6 +1739,7 @@ static int read_packet(struct ccx_demuxer *ctx, struct demuxer_data *data)
16391739
}
16401740

16411741
return ret;
1742+
#endif
16421743
}
16431744

16441745
/**
@@ -1653,13 +1754,17 @@ static int read_packet(struct ccx_demuxer *ctx, struct demuxer_data *data)
16531754
*/
16541755
int ccx_gxf_probe(unsigned char *buf, int len)
16551756
{
1757+
#ifndef DISABLE_RUST
1758+
return ccxr_gxf_probe(buf, len);
1759+
#else
16561760
static const uint8_t startcode[] = {0, 0, 0, 0, 1, 0xbc};
16571761
if (len < sizeof(startcode))
16581762
return CCX_FALSE;
16591763

16601764
if (!memcmp(buf, startcode, sizeof(startcode)))
16611765
return CCX_TRUE;
16621766
return CCX_FALSE;
1767+
#endif
16631768
}
16641769

16651770
int ccx_gxf_get_more_data(struct lib_ccx_ctx *ctx, struct demuxer_data **ppdata)

src/rust/Cargo.lock

Lines changed: 8 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)