3b9c6b8719
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.
6.8 KiB
6.8 KiB
next
- BREAKING: remove deprecated
retina::client::Session<Playing>::teardown
andretina::client::Demuxed::teardown
; made private some items already#[doc(hidden)]
. - BREAKING:
retina::client::Session<Described>::setup
takes a newSetupOptions
argument for future expansion. - BREAKING: the transport to use is configured per-stream as part of
retina::SetupOptions
(rather than the priorretina::SessionOptions
) and takes per-transport options for future expansion. - BREAKING:
retina::StreamContext
has been split out ofretina::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
andCodecItem
are now#[non_exhaustive]
for future expansion. - BREAKING:
retina::client::rtp::Packet
is nowretina::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 thusnom
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 wasDigest
. Now, it will pick out aDigest
orBasic
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 withPacketContext
. - 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 newoptions: SessionOptions
. Thecreds
has moved into theoptions
, along with some new options. - BREAKING CHANGE: renamed
PlayPolicy
toPlayOptions
for consistency. - Added options to work around bugs found in Reolink cameras.
- #9. Improve compatibility
with how some cameras handle the
control
andRTP-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 thanGET_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 thertcp
crate, includingtokio
. (retina
's owntokio
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 shrinkingVideoFrame
andCodecItem
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 implementsStream
instead of throughpkts()
. - 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.