2023-02-02 20:45:40 +04:00
|
|
|
## `v0.4.5` (2023-02-02)
|
2023-01-31 09:39:10 +04:00
|
|
|
|
2023-01-31 10:25:19 +04:00
|
|
|
* minimum Rust version is now 1.64.
|
2023-02-02 20:45:40 +04:00
|
|
|
* upgrade to `rtsp-types` 0.0.5, which ignores trailing whitespace in RTSP
|
|
|
|
headers. This fixes errors when communicating with some Longse cameras
|
|
|
|
([#77](https://github.com/scottlamb/retina/pull/77)).
|
2023-01-31 09:39:10 +04:00
|
|
|
* remove obsolete workaround for GW security GW security GW4089IP's bad out-of-band parameters.
|
|
|
|
Instead, we treat them as unparseable and ignore them as described in the
|
|
|
|
`v0.4.2` notes below.
|
|
|
|
|
2022-12-26 18:21:01 +04:00
|
|
|
## `v0.4.4` (2022-12-26)
|
2022-10-20 19:13:05 +04:00
|
|
|
|
|
|
|
* improve interop with Ubiquiti cameras by ignoring `fmtp` attributes in
|
|
|
|
SDP which have nothing (no required SP, no data) after the payload type.
|
2022-12-26 18:21:01 +04:00
|
|
|
* fix parsing of RTP packets with extensions, which broke with `v0.4.0`
|
|
|
|
(2e34bf92).
|
2022-10-20 19:13:05 +04:00
|
|
|
|
2022-09-29 08:38:46 +04:00
|
|
|
## `v0.4.3` (2022-09-28)
|
|
|
|
|
|
|
|
* upgrade version of `h264-reader` crate. Compatibility note: Retina may now
|
|
|
|
be stricter about parsing H.264 parameters (SPS/PPS). In practice, with some
|
|
|
|
cameras this means unparseable "out-of-line" parameters (specified in the
|
|
|
|
SDP) will be ignored in favor of parseable "in-line" parameters (specified
|
|
|
|
within the RTP data stream).
|
|
|
|
|
2022-09-28 19:54:35 +04:00
|
|
|
## `v0.4.2` (2022-09-28)
|
|
|
|
|
|
|
|
* ignore unparseable SDP media, improving compatibility with TP-Link cameras,
|
|
|
|
as described in [scottlamb/moonfire-nvr#238](https://github.com/scottlamb/moonfire-nvr/issues/238).
|
|
|
|
|
2022-08-09 18:40:46 +04:00
|
|
|
## `v0.4.1` (2022-08-09)
|
2022-08-07 21:58:03 +04:00
|
|
|
|
|
|
|
* Send keepalives at every half-session-timeout rather than a fixed 30-second
|
2022-08-08 09:02:26 +04:00
|
|
|
interval. This allows persistent connections to servers that have timeouts
|
|
|
|
shorter than 30 seconds.
|
|
|
|
* Use `OPTIONS` for initial keepalive, and only switch to `SET_PARAMETER` if
|
|
|
|
the server advertises its support. This allows persistent connections to
|
|
|
|
`rtsp-simple-server` v0.19.3, which does not support the latter method and
|
|
|
|
drops the connection on receiving unsupported methods.
|
2022-08-07 21:58:03 +04:00
|
|
|
|
2022-05-18 03:48:34 +04:00
|
|
|
## `v0.4.0` (2022-05-17)
|
2022-04-16 08:45:26 +04:00
|
|
|
|
|
|
|
* BREAKING: remove deprecated `retina::client::Session<Playing>::teardown` and
|
2022-04-16 08:49:32 +04:00
|
|
|
`retina::client::Demuxed::teardown`; made private some items already
|
|
|
|
`#[doc(hidden)]`.
|
2022-04-16 08:54:45 +04:00
|
|
|
* BREAKING: `retina::client::Session<Described>::setup` takes a new
|
|
|
|
`SetupOptions` argument for future expansion.
|
2022-04-27 01:47:23 +04:00
|
|
|
* BREAKING: the transport to use is configured per-stream as part of
|
|
|
|
`retina::SetupOptions` (rather than the prior `retina::SessionOptions`) and
|
|
|
|
takes per-transport options for future expansion.
|
|
|
|
* BREAKING: `retina::StreamContext` has been split out of
|
|
|
|
`retina::PacketContext`. Both must be printed to provide the same
|
|
|
|
information as before. This change reduces how much data needs to be copied
|
|
|
|
with each packet.
|
2022-04-27 01:53:33 +04:00
|
|
|
* BREAKING: `PacketItem` and `CodecItem` are now `#[non_exhaustive]` for
|
|
|
|
future expansion.
|
2022-04-29 02:00:36 +04:00
|
|
|
* BREAKING: `retina::client::rtp::Packet` is now
|
|
|
|
`retina::rtp::ReceivedPacket`, and field access has been removed in favor
|
|
|
|
of accessors.
|
2022-05-11 02:52:01 +04:00
|
|
|
* BREAKING: `retina::client::PacketItem::RtpPacket` has been renamed to
|
|
|
|
`retina::client::PacketItem::Rtp`.
|
|
|
|
* BREAKING: `retina::client::PacketItem::SenderReport` has been replaced with
|
|
|
|
`retina::client::PacketItem::Rtcp`, to expose full RTCP compound packets.
|
|
|
|
Likewise `retina::codec::CodecItem`.
|
2022-05-11 22:28:40 +04:00
|
|
|
* BREAKING: `retina::codec::Parameters` is now `retina::codec::ParametersRef`,
|
|
|
|
which references parameters stored within the `Stream` to reduce copying.
|
2022-05-11 03:53:19 +04:00
|
|
|
* minimum Rust version is now 1.59.
|
2022-04-16 08:45:26 +04:00
|
|
|
|
2022-05-09 23:56:03 +04:00
|
|
|
## `v0.3.10` (2022-05-09)
|
|
|
|
|
|
|
|
* ignore unparseable `rtptime` values in the `PLAY` response's `RTP-Info` header.
|
|
|
|
This improves compatibility with the OMNY M5S2A 2812 camera, as described in
|
|
|
|
[scottlamb/moonfire-nvr#224](https://github.com/scottlamb/moonfire-nvr/issues/224).
|
|
|
|
|
2022-04-13 01:18:27 +04:00
|
|
|
## `v0.3.9` (2022-04-12)
|
2022-04-09 02:37:28 +04:00
|
|
|
|
|
|
|
* camera interop: eliminate `bad clockrate in rtpmap` errors with cameras that
|
|
|
|
(incorrectly) add trailing spaces to this SDP parameter, as described at
|
|
|
|
[scottlamb/moonfire-nvr#213](https://github.com/scottlamb/moonfire-nvr/issues/213#issue-1190760423).
|
|
|
|
* camera interop: allow ignoring RTSP interleaved data messages on unassigned
|
|
|
|
channels, also described at [scottlamb-moonfire-nvr#213](https://github.com/scottlamb/moonfire-nvr/issues/213#issuecomment-1089411093).
|
2022-04-13 01:18:27 +04:00
|
|
|
* camera interop: when using TCP, default to attempting a `TEARDOWN` before
|
|
|
|
closing the connection, to improve behavior with cameras that have the
|
|
|
|
live555 stale session bug but do not advertise it.
|
2022-04-13 00:22:44 +04:00
|
|
|
* clarify `Session`'s expectations for tokio runtimes.
|
2022-04-13 01:14:58 +04:00
|
|
|
* additional diagnostics/logging on certain camera failures.
|
2022-04-09 02:37:28 +04:00
|
|
|
|
2022-03-08 22:37:49 +04:00
|
|
|
## `v0.3.8` (2022-03-08)
|
2022-01-31 23:58:42 +04:00
|
|
|
|
|
|
|
* fix depacketization of fragmented AAC frames
|
2022-03-08 22:05:25 +04:00
|
|
|
* [#52](https://github.com/scottlamb/retina/issues/52): allow compatibility
|
|
|
|
with cameras that incorrectly omit the SDP origin line.
|
2022-03-08 22:29:38 +04:00
|
|
|
* fix panic if RTSP server precedes a data message with a CRLF.
|
2022-03-08 22:37:49 +04:00
|
|
|
* expose SDP framerate via `retina::client::Stream::framerate`.
|
2022-01-31 23:58:42 +04:00
|
|
|
|
2022-01-28 21:17:22 +04:00
|
|
|
## `v0.3.7` (2022-01-28)
|
|
|
|
|
|
|
|
* [#50](https://github.com/scottlamb/retina/pull/50): fix a panic on certain
|
|
|
|
invalid H.264 `sprop-parameter-sets`
|
|
|
|
* documentation improvements
|
|
|
|
|
2021-12-30 10:06:21 +04:00
|
|
|
## `v0.3.6` (2021-12-29)
|
2021-12-30 09:58:29 +04:00
|
|
|
|
|
|
|
* correctly expire stale session entries that track live555 stale file
|
|
|
|
descriptor sessions.
|
|
|
|
See [moonfire-nvr#184](https://github.com/scottlamb/moonfire-nvr/issues/184).
|
2021-12-30 10:06:21 +04:00
|
|
|
* ignore (rather than error on) spurious RTP data packets between the `PLAY`
|
|
|
|
request and response. These are sent by some versions of
|
2022-01-26 13:13:52 +04:00
|
|
|
[v4l2rtspserver](https://github.com/mpromonet/v4l2rtspserver).
|
2021-12-30 09:58:29 +04:00
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.3.5` (2021-11-30)
|
2021-11-30 21:34:13 +04:00
|
|
|
|
|
|
|
* [#42](https://github.com/scottlamb/retina/issues/42): support servers that
|
|
|
|
don't send out-of-band H.264 parameters or send invalid parameters; wait for
|
|
|
|
in-band parameters in this case. The in-band parameters must be valid.
|
2021-11-30 23:35:53 +04:00
|
|
|
* documentation improvements.
|
2021-11-30 21:34:13 +04:00
|
|
|
|
2021-10-27 08:32:27 +04:00
|
|
|
## `v0.3.4` (2021-10-26)
|
|
|
|
|
|
|
|
* use `rtsp-types` 0.0.3, and thus `nom` 7.0.
|
|
|
|
|
2021-10-21 00:38:49 +04:00
|
|
|
## `v0.3.3` (2021-10-20)
|
|
|
|
|
|
|
|
* [#25](https://github.com/scottlamb/retina/issues/25): better HTTP
|
|
|
|
authentication support via the new [`http-auth`
|
|
|
|
crate](https://crates.io/crates/http-auth). Before, `retina` would only
|
|
|
|
authenticate properly if the first requested challenge was `Digest`. Now, it
|
|
|
|
will pick out a `Digest` or `Basic` challenge from a list.
|
|
|
|
|
2021-09-29 16:48:36 +04:00
|
|
|
## `v0.3.2` (2021-09-29)
|
2021-09-29 16:30:58 +04:00
|
|
|
|
|
|
|
* better `TEARDOWN` handling, which often avoids the need to wait for session
|
|
|
|
expiration ([(#34](https://github.com/scottlamb/retina/issues/34)).
|
|
|
|
|
2021-09-10 09:01:58 +04:00
|
|
|
## `v0.3.1` (2021-09-09)
|
2021-09-01 00:27:13 +04:00
|
|
|
|
|
|
|
* warn when connecting via TCP to a known-broken live555 server version.
|
2021-09-10 09:01:58 +04:00
|
|
|
* improve Geovision compatibility by skipping its strange RTP packets with
|
|
|
|
payload type 50.
|
2021-09-08 05:22:59 +04:00
|
|
|
* UDP fixes.
|
2021-09-06 23:13:26 +04:00
|
|
|
* improve compatibility with cameras with non-compliant SDP, including
|
|
|
|
Anpviz ([#26](https://github.com/scottlamb/retina/issues/26) and
|
|
|
|
Geovision ([#33])(https://github.com/scottlamb/retina/issues/33)).
|
2021-09-10 04:34:49 +04:00
|
|
|
* new mechanism to more reliably send `TEARDOWN` requests.
|
2021-09-01 00:27:13 +04:00
|
|
|
|
2021-08-31 17:59:47 +04:00
|
|
|
## `v0.3.0` (2021-08-31)
|
2021-08-23 21:18:27 +04:00
|
|
|
|
2021-08-31 17:48:23 +04:00
|
|
|
* BREAKING CHANGE: [#30](https://github.com/scottlamb/retina/issues/30):
|
|
|
|
experimental UDP support. Several `RtspMessageContext` fields have been
|
|
|
|
replaced with `PacketContext`.
|
|
|
|
* BREAKING CHANGE: remove `retina::client::SessionOptions::ignore_spurious_data`. This
|
|
|
|
was an attempted workaround for old live555 servers
|
|
|
|
([#17](https://github.com/scottlamb/retina/issues/17)) that was ineffective.
|
2021-08-23 21:18:27 +04:00
|
|
|
* [#22](https://github.com/scottlamb/retina/issues/22): fix handling of
|
|
|
|
44.1 kHz AAC audio.
|
|
|
|
|
2021-08-21 03:48:22 +04:00
|
|
|
## `v0.2.0` (2021-08-20)
|
2021-08-19 23:56:54 +04:00
|
|
|
|
|
|
|
* BREAKING CHANGE: `retina::client::Session::describe` now takes a new
|
|
|
|
`options: SessionOptions`. The `creds` has moved into the `options`, along
|
|
|
|
with some new options.
|
|
|
|
* BREAKING CHANGE: renamed `PlayPolicy` to `PlayOptions` for consistency.
|
|
|
|
* Added options to work around bugs found in Reolink cameras.
|
2021-08-20 03:19:18 +04:00
|
|
|
* [#9](https://github.com/scottlamb/retina/issues/9). Improve compatibility
|
|
|
|
with how some cameras handle the `control` and `RTP-Info` urls. This
|
|
|
|
adopts a URL joining behavior which isn't RFC-compliant but seems to
|
|
|
|
be more compatible in practice.
|
2021-08-19 23:56:54 +04:00
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.1.0` (2021-08-13)
|
2021-07-12 06:45:52 +04:00
|
|
|
|
|
|
|
* use `SET_PARAMETERS` rather than `GET_PARAMETERS` for keepalives.
|
|
|
|
The latter doesn't work with GW Security GW4089IP cameras.
|
2021-08-13 22:22:34 +04:00
|
|
|
* removed `rtcp` dependency. Fixes
|
|
|
|
[#8](https://github.com/scottlamb/retina/issues/8). Avoids picking up
|
|
|
|
various transitive dependencies needed by later versions of the `rtcp`
|
|
|
|
crate, including `tokio`. (`retina`'s own `tokio` dependency will likely
|
|
|
|
become optional in a future version.)
|
2021-07-12 06:45:52 +04:00
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.0.5` (2021-07-08)
|
2021-06-28 21:28:48 +04:00
|
|
|
|
2021-07-09 01:45:18 +04:00
|
|
|
* BREAKING CHANGE: New opaque error type with more uniform, richer error
|
|
|
|
messages. No more `failure` dependency.
|
|
|
|
* BREAKING CHANGE: `retina::client::Stream::parameters` now returns parameters
|
|
|
|
by value. This allows shrinking depacketizer types.
|
|
|
|
* BREAKING CHANGE: `retina::codec::VideoFrame::new_parameters` is now boxed.
|
|
|
|
This allows shrinking `VideoFrame` and `CodecItem` by 80 bytes each (on
|
|
|
|
64-bit platforms). The box is only rarely populated.
|
2021-07-09 02:17:37 +04:00
|
|
|
* in `client mp4` example, handle an initial video parameter change correctly.
|
2021-07-08 21:52:39 +04:00
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.0.4` (2021-06-28)
|
2021-06-29 02:29:52 +04:00
|
|
|
|
|
|
|
* bugfix: Retina stopped receiving packets after receiving a keepalive response.
|
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.0.3` (2021-06-28)
|
2021-06-29 01:13:18 +04:00
|
|
|
|
2021-06-29 00:36:02 +04:00
|
|
|
* BREAKING CHANGE: `Session<Playing>` now directly implements `Stream` instead of
|
|
|
|
through `pkts()`.
|
2021-06-28 21:28:48 +04:00
|
|
|
* Performance improvements.
|
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.0.2` (2021-06-25)
|
2021-06-26 03:47:30 +04:00
|
|
|
|
2021-06-29 00:36:02 +04:00
|
|
|
* BREAKING CHANGE: Video frames are now provided as a single, contiguous `Bytes`, and
|
2021-06-26 03:47:30 +04:00
|
|
|
H.264 depacketization is more efficient ([#4](https://github.com/scottlamb/retina/issues/4)).
|
|
|
|
|
2021-12-01 00:37:03 +04:00
|
|
|
## `v0.0.1` (2021-06-09)
|
2021-06-26 03:47:30 +04:00
|
|
|
|
2021-07-12 06:45:52 +04:00
|
|
|
Initial release.
|