diff --git a/extractaudio/rtpp_loader.c b/extractaudio/rtpp_loader.c index 567fb4665..7f44d7c9a 100644 --- a/extractaudio/rtpp_loader.c +++ b/extractaudio/rtpp_loader.c @@ -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; @@ -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; diff --git a/src/rtpp_record_private.h b/src/rtpp_record_private.h index a1e0b71a3..9f53473fe 100644 --- a/src/rtpp_record_private.h +++ b/src/rtpp_record_private.h @@ -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 @@ -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; @@ -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; }; diff --git a/tests/Makefile.am b/tests/Makefile.am index 944eb4a1a..1eaac18fc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 7d0da10ed..abbf72c60 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -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 diff --git a/tests/call2_ulaw.a.rtp b/tests/call2_ulaw.a.rtp new file mode 100644 index 000000000..5ad75155c Binary files /dev/null and b/tests/call2_ulaw.a.rtp differ diff --git a/tests/call2_ulaw.o.rtp b/tests/call2_ulaw.o.rtp new file mode 100644 index 000000000..3346668dc Binary files /dev/null and b/tests/call2_ulaw.o.rtp differ diff --git a/tests/extractaudio/extractaudio.checksums b/tests/extractaudio/extractaudio.checksums index 0fcb057d9..4943eef43 100644 --- a/tests/extractaudio/extractaudio.checksums +++ b/tests/extractaudio/extractaudio.checksums @@ -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 diff --git a/tests/extractaudio1 b/tests/extractaudio1 index 7aac45d13..9cf7e22ef 100755 --- a/tests/extractaudio1 +++ b/tests/extractaudio1 @@ -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}