retina/CHANGELOG.md
Scott Lamb 3b9c6b8719 bump minimum Rust version to 1.56
The last commit needs at least 1.53 for its use of array's IntoIterator
impl. We might as well bump up to 1.56 and take advantage of the 2021
edition.
2022-04-28 22:19:20 -07:00

6.8 KiB

next

  • BREAKING: remove deprecated retina::client::Session<Playing>::teardown and retina::client::Demuxed::teardown; made private some items already #[doc(hidden)].
  • BREAKING: retina::client::Session<Described>::setup takes a new SetupOptions argument for future expansion.
  • 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.
  • BREAKING: PacketItem and CodecItem are now #[non_exhaustive] for future expansion.
  • BREAKING: retina::client::rtp::Packet is now retina::rtp::ReceivedPacket, and field access has been removed in favor of accessors.
  • minimum Rust version is now 1.56.

v0.3.9 (2022-04-12)

  • 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.
  • camera interop: allow ignoring RTSP interleaved data messages on unassigned channels, also described at scottlamb-moonfire-nvr#213.
  • 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.
  • clarify Session's expectations for tokio runtimes.
  • additional diagnostics/logging on certain camera failures.

v0.3.8 (2022-03-08)

  • fix depacketization of fragmented AAC frames
  • #52: allow compatibility with cameras that incorrectly omit the SDP origin line.
  • fix panic if RTSP server precedes a data message with a CRLF.
  • expose SDP framerate via retina::client::Stream::framerate.

v0.3.7 (2022-01-28)

  • #50: fix a panic on certain invalid H.264 sprop-parameter-sets
  • documentation improvements

v0.3.6 (2021-12-29)

  • correctly expire stale session entries that track live555 stale file descriptor sessions. See moonfire-nvr#184.
  • ignore (rather than error on) spurious RTP data packets between the PLAY request and response. These are sent by some versions of v4l2rtspserver.

v0.3.5 (2021-11-30)

  • #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.
  • documentation improvements.

v0.3.4 (2021-10-26)

  • use rtsp-types 0.0.3, and thus nom 7.0.

v0.3.3 (2021-10-20)

  • #25: better HTTP authentication support via the new http-auth crate. 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.

v0.3.2 (2021-09-29)

  • better TEARDOWN handling, which often avoids the need to wait for session expiration ((#34).

v0.3.1 (2021-09-09)

  • warn when connecting via TCP to a known-broken live555 server version.
  • improve Geovision compatibility by skipping its strange RTP packets with payload type 50.
  • UDP fixes.
  • improve compatibility with cameras with non-compliant SDP, including Anpviz (#26 and Geovision ([#33])(https://github.com/scottlamb/retina/issues/33)).
  • new mechanism to more reliably send TEARDOWN requests.

v0.3.0 (2021-08-31)

  • BREAKING CHANGE: #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) that was ineffective.
  • #22: fix handling of 44.1 kHz AAC audio.

v0.2.0 (2021-08-20)

  • 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.
  • #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.

v0.1.0 (2021-08-13)

  • use SET_PARAMETERS rather than GET_PARAMETERS for keepalives. The latter doesn't work with GW Security GW4089IP cameras.
  • removed rtcp dependency. Fixes #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.)

v0.0.5 (2021-07-08)

  • 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.
  • in client mp4 example, handle an initial video parameter change correctly.

v0.0.4 (2021-06-28)

  • bugfix: Retina stopped receiving packets after receiving a keepalive response.

v0.0.3 (2021-06-28)

  • BREAKING CHANGE: Session<Playing> now directly implements Stream instead of through pkts().
  • Performance improvements.

v0.0.2 (2021-06-25)

  • BREAKING CHANGE: Video frames are now provided as a single, contiguous Bytes, and H.264 depacketization is more efficient (#4).

v0.0.1 (2021-06-09)

Initial release.