Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

extractaudio: Add support for DLT_RAW pcap format. #58

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion extractaudio/rtpp_loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ rtpp_load(const char *path)
return NULL;
}
pcap_hdr = (pcap_hdr_t *)rval->ibuf;
if (pcap_hdr->network != DLT_EN10MB && pcap_hdr->network != DLT_NULL) {
if (pcap_hdr->network != DLT_EN10MB && pcap_hdr->network != DLT_RAW && pcap_hdr->network != DLT_NULL) {
warnx("unsupported data-link type in the PCAP: %d", pcap_hdr->network);
rval->destroy(rval);
return NULL;
Expand Down Expand Up @@ -248,6 +248,11 @@ load_pcap(struct rtpp_loader *loader, struct channels *channels,
memcpy(&pcap, cp, pcap_size);
pcaprec_hdr = &(pcap.null.pcaprec_hdr);
udpip = &(pcap.null.udpip);
} else if (network == DLT_RAW) {
pcap_size = sizeof(struct pkt_hdr_pcap_raw);
memcpy(&pcap, cp, pcap_size);
pcaprec_hdr = &(pcap.raw.pcaprec_hdr);
udpip = &(pcap.raw.udpip);
} else {
if (pcp->en10t.ether.type != ETHERTYPE_INET) {
rtp_len = sizeof(pcaprec_hdr_t) + pcp->en10t.pcaprec_hdr.incl_len;
Expand Down
11 changes: 11 additions & 0 deletions src/rtpp_record_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@

#define DLT_NULL 0
#define DLT_EN10MB 1
#define DLT_RAW 101
#define PCAP_MAGIC 0xa1b2c3d4
#define PCAP_VER_MAJR 2
#define PCAP_VER_MINR 4
Expand Down Expand Up @@ -94,6 +95,14 @@ struct pkt_hdr_pcap_null_v6 {
uint32_t family;
struct udpip6 udpip6;
} __attribute__((__packed__));
struct pkt_hdr_pcap_raw {
pcaprec_hdr_t pcaprec_hdr;
struct udpip udpip;
} __attribute__((__packed__));
struct pkt_hdr_pcap_raw_v6 {
pcaprec_hdr_t pcaprec_hdr;
struct udpip6 udpip6;
} __attribute__((__packed__));
struct pkt_hdr_pcap_en10t {
pcaprec_hdr_t pcaprec_hdr;
struct layer2_hdr ether;
Expand All @@ -108,6 +117,8 @@ struct pkt_hdr_pcap_en10t_v6 {
union pkt_hdr_pcap {
struct pkt_hdr_pcap_null null;
struct pkt_hdr_pcap_null_v6 null_v6;
struct pkt_hdr_pcap_raw raw;
struct pkt_hdr_pcap_raw_v6 raw_v6;
struct pkt_hdr_pcap_en10t en10t;
struct pkt_hdr_pcap_en10t_v6 en10t_v6;
};
Expand Down
7 changes: 5 additions & 2 deletions tests/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ command_parser_CLEANFILES = command_parser.rout 238uwedguw.rtcp 238uwedguw.rtp \
extractaudio_EXTRA_DIST = extractaudio call1_alaw.a.rtp call1_alaw.o.rtp call1_g722.a.rtp \
call1_g722.o.rtp call1_g729.a.rtp call1_g729.o.rtp call1_ulaw.a.rtp \
call1_ulaw.o.rtp call1_gsm.a.rtp call1_gsm.o.rtp call_g722_srtp.a.rtp \
call_g722_srtp.o.rtp extractaudio1
call_g722_srtp.o.rtp extractaudio1 \
call2_ulaw.a.rtp call2_ulaw.o.rtp
extractaudio_CLEANFILES = call1_*.mono.*.wav call1_*.stereo.*.wav \
call1_*.mono.*.raw call1_*.mono.*.w64 call1_*.stereo.*.w64
call1_*.mono.*.raw call1_*.mono.*.w64 call1_*.stereo.*.w64 \
call2_*.mono.*.wav call2_*.stereo.*.wav call2_*.mono.*.raw \
call2_*.mono.*.w64 call2_*.stereo.*.w64
playback1_EXTRA_DIST = playback1 playback1.output playback1.checksums \
playback1.type1.input playback1.type2.input
playback1_CLEANFILES = playback1.0.a.rtp playback1.18.a.rtp playback1.3.a.rtp \
Expand Down
7 changes: 5 additions & 2 deletions tests/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -463,10 +463,13 @@ command_parser_CLEANFILES = command_parser.rout 238uwedguw.rtcp 238uwedguw.rtp \
extractaudio_EXTRA_DIST = extractaudio call1_alaw.a.rtp call1_alaw.o.rtp call1_g722.a.rtp \
call1_g722.o.rtp call1_g729.a.rtp call1_g729.o.rtp call1_ulaw.a.rtp \
call1_ulaw.o.rtp call1_gsm.a.rtp call1_gsm.o.rtp call_g722_srtp.a.rtp \
call_g722_srtp.o.rtp extractaudio1
call_g722_srtp.o.rtp extractaudio1 \
call2_ulaw.a.rtp call2_ulaw.o.rtp

extractaudio_CLEANFILES = call1_*.mono.*.wav call1_*.stereo.*.wav \
call1_*.mono.*.raw call1_*.mono.*.w64 call1_*.stereo.*.w64
call1_*.mono.*.raw call1_*.mono.*.w64 call1_*.stereo.*.w64 \
call2_*.mono.*.wav call2_*.stereo.*.wav call2_*.mono.*.raw \
call2_*.mono.*.w64 call2_*.stereo.*.w64

playback1_EXTRA_DIST = playback1 playback1.output playback1.checksums \
playback1.type1.input playback1.type2.input
Expand Down
Binary file added tests/call2_ulaw.a.rtp
Binary file not shown.
Binary file added tests/call2_ulaw.o.rtp
Binary file not shown.
53 changes: 53 additions & 0 deletions tests/extractaudio/extractaudio.checksums
Original file line number Diff line number Diff line change
Expand Up @@ -316,3 +316,56 @@ SHA256 (call1_g722_srtp.stereo.pcm_u8.w64) = 8b3315362594df416d33ba5469cc2fb301d
SHA256 (call1_g722_srtp.stereo.pcm_u8.wav) = 46691ed05963562609902e71c7f68d1bc786f58f5bb49a3d01bcbaec646c84d7
SHA256 (call1_g722_srtp.stereo.ulaw.w64) = 869a8a609c31745f573329198788f0da0fff5adf75d4b9b9f51ba2391dd23aa7
SHA256 (call1_g722_srtp.stereo.ulaw.wav) = 9ba707b80b0a4dfb1414ec5b1a72a02be382d1e2aadce70db32891ae71040afa
SHA256 (call2_ulaw.mono.alaw.raw) = fc38077743a115a22ec31395964cae721840d9c5c526f055927142f2c0c5e4d1
SHA256 (call2_ulaw.mono.alaw.w64) = 604f0b33dd21197fd373576183d78b6734b96637cf8d706838361db0fc79a0ce
SHA256 (call2_ulaw.mono.alaw.wav) = 645ecc80043c11849373cf7d48885eaff778352cc01b4faf11295a67816749bf
SHA256 (call2_ulaw.mono.double.raw) = c407bc3f601e302a19654a7bbd77485084eb64d83d49e6211beb8f7d05a21467
SHA256 (call2_ulaw.mono.double.w64) = 524165c7c7df46bd6d5c54c5b3ba872c01eda60ef6ba45bc6f2303b59d94c861
SHA256 (call2_ulaw.mono.dwvw_12.raw) = a9bcab7229bd57bce01c3569b1fcde077ea849ddb0a02575ad0c174288c113a6
SHA256 (call2_ulaw.mono.dwvw_16.raw) = 50aa6c7ba2017034ceb78a90abb1b30e98516f8a04f49735b6d2646456779b00
SHA256 (call2_ulaw.mono.dwvw_24.raw) = 52a4dcbf763e6732179e437c8010175d3226417fa7fd23dc477c22a92b8b5d3e
SHA256 (call2_ulaw.mono.float.raw) = 61c87442956bd668cd4c384f5791c011833660f2665ef7dc36669c363dbc9f93
SHA256 (call2_ulaw.mono.float.w64) = 10d91777961271fbc81c6a17564bc1a87b6e8472b5e32ae3aebae45369778d46
SHA256 (call2_ulaw.mono.g721_32.wav) = 303d770b62ad0741e47b9cc362695f37837b2d055a0243ed115a02d3a322b2ac
SHA256 (call2_ulaw.mono.gsm610.raw) = 457bfa9c5813ba170037d570632494e782eecd6fb9e64b345c34083dd43b7aa9
SHA256 (call2_ulaw.mono.gsm610.w64) = 32add8f78345e3f9122f69d3f60cc8d69a6f168e3c7cffcdafffe66c07cee96b
SHA256 (call2_ulaw.mono.gsm610.wav) = 351fab01d9d25399b2263b27d2eb48f1cab094c0355d45b5b46cb2412590fa35
SHA256 (call2_ulaw.mono.ima_adpcm.w64) = 7cbb56420a2f270f5f23556c8381cf1a6c10289903ea798163ee08904e44adf6
SHA256 (call2_ulaw.mono.ima_adpcm.wav) = 03615a6fb7f910375686f3cd9825c2f7b3967b90b19d15e0e8c852ab0904d177
SHA256 (call2_ulaw.mono.ms_adpcm.w64) = 9c9b06bdbcfb740d51abc155f879ff07c3900c582bfb865c0f090d10b1d996d8
SHA256 (call2_ulaw.mono.ms_adpcm.wav) = a69a76dbe5e6ddcce47169f0784b9bbfaa60f460a4f2e4318bc775708e0cd8a1
SHA256 (call2_ulaw.mono.pcm_16.raw) = e3dabacf4669d56a92dfe7e7b862aa2251f3496b4bd17efed562b7371ede22f6
SHA256 (call2_ulaw.mono.pcm_16.w64) = e7426ba1638976c044864b2b9db3dbdf6be95640f7679182b1c000827aea5d00
SHA256 (call2_ulaw.mono.pcm_16.wav) = a1a2006635e89a9df697a44dda44b5135ee3cab6f604cfebf62389838a3b102b
SHA256 (call2_ulaw.mono.pcm_24.raw) = 1a4cf9443950535978937d2830e87248f796c0c4ae878a75caa499feb99f449d
SHA256 (call2_ulaw.mono.pcm_24.w64) = 0a14bfe8e9b2a8e43577fe9b5b4975817d6046c5b7d4195a95d62c3cf4ef8161
SHA256 (call2_ulaw.mono.pcm_24.wav) = 4347b0efec6bb56662cfe7b8eee1b81b9b70577120e0e3adf60a4fe497e578b3
SHA256 (call2_ulaw.mono.pcm_32.raw) = 300973fb772a2bb7423538d42723bdcf244ce09a04b2cde9ec9d17c9cfdf97a1
SHA256 (call2_ulaw.mono.pcm_32.w64) = d10109d8a48f7ef42cdb67eec30c594441e63645be1fc716b966505321df4bf4
SHA256 (call2_ulaw.mono.pcm_32.wav) = bccddd5c73ac75ceacd1633f50868e4ec774cca74dcc898fe89048940e93a095
SHA256 (call2_ulaw.mono.pcm_s8.raw) = 01ddfb7cabf635c44ea32bcd3c36c9650f778dc2cce26754c5a8eaa2e78a421f
SHA256 (call2_ulaw.mono.pcm_u8.raw) = 9b7ce9a64f00c2f1770ada675dd816fcad79429728ce549c373d5f00e4b3244d
SHA256 (call2_ulaw.mono.pcm_u8.w64) = 3b63acfededd25e4de84f16f4f281c9459bc2e6ed4b655e4ca0659f1c2c3d7b3
SHA256 (call2_ulaw.mono.pcm_u8.wav) = 6bedd502edd06b144dcd8d54947ff641381abc9ded54ecfb51e4081b5fade556
SHA256 (call2_ulaw.mono.ulaw.raw) = 1c34f0de460865c438179e769ce84add8d1dc9982e32943430814bd7f9057224
SHA256 (call2_ulaw.mono.ulaw.w64) = 629bb2c8dfc6fc94f2d708f8b1604ee5b12338dec3bd2448d6d39ed8715d3c43
SHA256 (call2_ulaw.mono.ulaw.wav) = 02fb849a88ae463a39698fc92d38c59b176865a9105e005f1964167a5254c515
SHA256 (call2_ulaw.mono.vox_adpcm.raw) = 599b8026c63ed50862be46cea8f32702fe864b9016f564640ca0d8312dc110f4
SHA256 (call2_ulaw.stereo.alaw.w64) = 2f5738d3864919aa7e68af904acbc973d3787e77722368e2b0bcdf7c2401903e
SHA256 (call2_ulaw.stereo.alaw.wav) = 566393b78598b5e278d093ba5390a14b71bf11f7113b0d415249ccf3fa376ea2
SHA256 (call2_ulaw.stereo.double.w64) = 82de56781f58e91198eb9f20f66d5dd29899d2eb92abe6467fd533c9d94493cd
SHA256 (call2_ulaw.stereo.float.w64) = 7f48232cfcd78bfa4233822e7da4bf881ece3f81910219ac79b5bc3e441859e0
SHA256 (call2_ulaw.stereo.ima_adpcm.w64) = 73d13daa4c7a868ffabf27277ffdcc7ae8e71eb8effb32a225ad27058ac196bb
SHA256 (call2_ulaw.stereo.ima_adpcm.wav) = 134c562a1f06beca1d79a9fbfcf37d6f84fd6c9a64fec4b5291dc53dc34078f1
SHA256 (call2_ulaw.stereo.ms_adpcm.w64) = bd57f30b1fd80bacf6fb4477599e5116ade7e3eb251774ff1475bba9f35c3f85
SHA256 (call2_ulaw.stereo.ms_adpcm.wav) = 27afd9410799e2ad9558b974c24fb3a5806aa9fcffa998091601be76a4f3f2a9
SHA256 (call2_ulaw.stereo.pcm_16.w64) = 523072a67f0f39ef0b5a083c9ea4956c334e897304a2579f7f94d483b9d1740d
SHA256 (call2_ulaw.stereo.pcm_16.wav) = 6eacc030f3dc7f99c181346180295e95f359b0dde67b5d88f559c7c3f4f979ca
SHA256 (call2_ulaw.stereo.pcm_24.w64) = df8420324c245e01810b15e0e64dd1f7d9e2112e458e8c90dcdcf83249a302f7
SHA256 (call2_ulaw.stereo.pcm_24.wav) = ab9f97b6572dda0cfc2d6b45c4af33168d47be0c9a8e3180db01b9a19c796403
SHA256 (call2_ulaw.stereo.pcm_32.w64) = b6df681835eb5c34324c12bf49ab816c8be4c11415b3b7c31848fe5efa164288
SHA256 (call2_ulaw.stereo.pcm_32.wav) = e8bed28097aef87fd58107a42b6843f3e1363f8cafb929bd783882934e756dbd
SHA256 (call2_ulaw.stereo.pcm_u8.w64) = 8b3ff146c9132f19168eddc98a64972e03784f1caf213e56e8342f2a1f8048b4
SHA256 (call2_ulaw.stereo.pcm_u8.wav) = 89e64a4fc9042e3bcb72114f4f65a05dda84746ceef6e9153543d94a5e03d21e
SHA256 (call2_ulaw.stereo.ulaw.w64) = 1fb23c4fc2a2fc6e4370e03e8c1bf7967ca395036b21daa50c538993b6b9dda1
SHA256 (call2_ulaw.stereo.ulaw.wav) = 1e3369c1daeca85c638f087a6ca64dd03f0b8d276cfd428c6bc16549b95f7c55
2 changes: 1 addition & 1 deletion tests/extractaudio1
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ OFMTS_mono="wav raw w64"
OFMTS_stereo="wav w64"

ofiles=""
extractaudio_RFILES="call1_alaw call1_ulaw call1_g722 call1_g729 call1_gsm \
extractaudio_RFILES="call2_ulaw call1_alaw call1_ulaw call1_g722 call1_g729 call1_gsm \
call1_g722_srtp"

for tkind in ${TKINDS}
Expand Down