Commit Graph

128 Commits

Author SHA1 Message Date
Scott Lamb
31646b6ae9 clippy 2022-01-31 14:07:03 -08:00
Scott Lamb
602718eabb comment and warning cleanup 2022-01-31 13:54:13 -08:00
Scott Lamb
cc78d3b8a6 test and fix AAC fragment loss handling
Fixes #48
2022-01-31 13:51:31 -08:00
Scott Lamb
b26d8a93a7 test+fix AAC depacketization happy path
Formerly interior fragments wouldn't get appended to the buffer, so
depacketization would inevitably fail.

This is progress toward #48.
2022-01-31 11:59:41 -08:00
Scott Lamb
1a00b5e92a properly request unicast with udp
https://github.com/scottlamb/moonfire-nvr/issues/192#issuecomment-1025396306

RFC 2326 section 12.39 says if this is omitted, it defaults to
multicast. Retina doesn't support multicast, so explicitly say unicast.
This was already done correctly for TCP but not for UDP.
2022-01-30 21:33:03 -08:00
Scott Lamb
499d658352 mp4 example: allow in-band h264 params
Fixes #43
2022-01-30 21:18:47 -08:00
Scott Lamb
e4be827a63 prep v0.3.7 2022-01-28 09:17:22 -08:00
Scott Lamb
7ce611358d clarify what a video frame is 2022-01-28 09:15:27 -08:00
Greg V
dc0d307382 H.264: do not panic when parsing sprop-parameter-sets
This .unwrap() call would panic on e.g. an empty string, which
it would get from 'fmtp:96 ' (empty parameters).

This is for example produced by v4l2-rtspserver when it
fails to extract SPS/PPS from the first (?) packet:
d0da079177/src/H264_V4l2DeviceSource.cpp (L52)
2022-01-26 14:25:23 -08:00
Scott Lamb
663ff74104 changelog: fix link formatting 2022-01-26 01:13:52 -08:00
Scott Lamb
c0595a67f5 improve timestamp docs, take 2
In take 1, I put some of the most important information on private
fields, so it wouldn't show up on public docs. Let's fix that now.
2022-01-26 01:04:00 -08:00
Scott Lamb
e0ec40db96 improve timestamp docs 2022-01-26 00:17:55 -08:00
Scott Lamb
ddb73ea3c6 update overall crate status 2022-01-25 23:42:59 -08:00
Scott Lamb
8a8bb3d50e clarify H.264 frame format 2022-01-25 23:39:27 -08:00
Scott Lamb
1145ed053e remove claim that other IO modes aren't too hard
Since writing that text, I've made some design decisions that complicate
this:

* dropping a Session uses tokio::runtime::Handle::spawn
* keepalives are tracked with a tokio::time::Sleep
* I support UDP (so multiple sockets per session), which means the
  blocking API would have to use extra threads or async IO behind the
  scenes.

I might make decisions that complicate it further, e.g. having a tokio
task for each socket rather than polling them all in Session::poll_next.

It's of course still *possible* to support async-std and/or a blocking
API if there's demand. It'd require more duplicate logic/APIs now, so
I'm not excited about the possibility.
2022-01-25 16:20:38 -08:00
Scott Lamb
d50e7481ee clearer docs for Stream::parameters
I'm not sure I'm satisfied with the current behavior after Demuxed's
poll_next returns Pending, but better to document it than not.
2022-01-25 15:50:04 -08:00
Scott Lamb
8ab5808054
Merge pull request #49 from flussonic/dev
Add verbose output to stream info and info cmd to example client
2022-01-12 08:22:46 -08:00
Yegor Bayev
b47ab977c4 remove fmt_option 2022-01-12 10:50:53 +03:00
Yegor Bayev
101a842dec switch debug info from Display to Debug for Stream and UdpSockets structs 2022-01-11 17:23:19 +03:00
Yegor Bayev
d29f1251f7 fix output typo "RTP payload time" -> "type" 2022-01-10 20:27:15 +03:00
Yegor Bayev
b1987ec963 cargo check fix 2022-01-10 20:06:05 +03:00
Yegor Bayev
dc615dbc57 update README with basic auth feature support 2022-01-10 18:45:28 +03:00
Yegor Bayev
091ee0f18e add info cmd to example client, README update 2022-01-10 18:44:35 +03:00
Yegor Bayev
82be42af87 add verbose output to Stream struct in client module 2022-01-10 18:44:18 +03:00
Scott Lamb
e551337c91 prep v0.3.6 2021-12-29 22:06:21 -08:00
Scott Lamb
7b1d87aa5e add missing file for recent tests 2021-12-29 22:06:08 -08:00
Scott Lamb
c72ee2f9dc add more logging around session expiration 2021-12-29 22:02:53 -08:00
Scott Lamb
cf08d1faa6 expire live555 stale file descriptor sessions 2021-12-29 21:58:29 -08:00
Scott Lamb
3187be6c41 test teardown & normal session expiration 2021-12-29 21:24:17 -08:00
Scott Lamb
9a519c8e25 make SessionGroup::await_stale_sessions Send 2021-12-29 20:32:27 -08:00
Scott Lamb
bcc885474b test #46 behavior for completeness 2021-12-29 14:57:00 -08:00
Scott Lamb
0178e7fbc2
Merge pull request #46 from unrelentingtech/interleaved
Allow interleaved data on RTP as well
2021-12-29 10:11:08 -08:00
Greg V
74b30d5f71 Allow interleaved data on RTP as well
This is necessary for at least some versions of
https://github.com/mpromonet/v4l2rtspserver
2021-12-29 20:25:57 +03:00
Scott Lamb
9c85a2dd80 prepare v0.3.5 2021-11-30 12:38:34 -08:00
Scott Lamb
e1f09771e1 cargo update 2021-11-30 11:41:39 -08:00
Scott Lamb
4b9a726a84 documentation improvements 2021-11-30 11:35:53 -08:00
Scott Lamb
a63497eb09 remove obsolete TODO 2021-11-30 09:40:53 -08:00
Scott Lamb
01c8780a4d H.264: don't require valid out-of-band params
It's allowed for a server to send only in-band parameters, although I
haven't encountered this yet. The VStarcam cameras sometimes send
invalid out-of-band parameters; treat that as if it sent nothing.

Fixes #42
2021-11-30 09:39:32 -08:00
Scott Lamb
cd841b9f80 better error when no streams are selected
Fixes #41
2021-11-29 09:51:27 -08:00
Scott Lamb
330ee843b5 Cargo.lock: http-auth 0.1.3 -> 0.1.4 2021-11-21 21:04:23 -08:00
Scott Lamb
35575b7551 prep v0.3.4 2021-10-26 21:32:54 -07:00
Scott Lamb
990293faf1 cargo update
This doesn't matter for users of the library, just CI and folks
building retina and its examples.
2021-10-26 21:31:29 -07:00
Scott Lamb
80a342e50a use rtsp-types 0.0.3 2021-10-26 21:30:25 -07:00
Scott Lamb
969afbf96c v0.3.3, fix #25: better HTTP auth support 2021-10-20 14:43:36 -07:00
Scott Lamb
3a3f01118e prepare v0.3.2 2021-09-29 05:48:36 -07:00
Scott Lamb
82169bcef9 mention TEARDOWN improvements in changelog
Fixes #34
2021-09-29 05:30:58 -07:00
Scott Lamb
824f0d257c include TEARDOWN status in debug msgs 2021-09-29 05:28:20 -07:00
Scott Lamb
86b5f449e9 API for waiting out stale sessions 2021-09-28 21:49:12 -07:00
Scott Lamb
49612617a0 treat TEARDOWN 500 response as OK (sigh)
for #34

Details in the new code comment, but this avoids an unnecessary wait
for session expiration with (at least some) Hikvision cameras.
2021-09-28 16:57:55 -07:00
Scott Lamb
6ee24e1c0e minor tweaks to TEARDOWN logging
*   log everything from the retina::client::teardown module so the
    log level can be tweaked separately.
*   log when the session is expired.
2021-09-27 16:03:26 -07:00