8.2 KiB
8.2 KiB
v0.4.2
(2022-09-28)
- ignore unparseable SDP media, improving compatibility with TP-Link cameras, as described in scottlamb/moonfire-nvr#238.
v0.4.1
(2022-08-09)
- Send keepalives at every half-session-timeout rather than a fixed 30-second interval. This allows persistent connections to servers that have timeouts shorter than 30 seconds.
- Use
OPTIONS
for initial keepalive, and only switch toSET_PARAMETER
if the server advertises its support. This allows persistent connections tortsp-simple-server
v0.19.3, which does not support the latter method and drops the connection on receiving unsupported methods.
v0.4.0
(2022-05-17)
- 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. - BREAKING:
retina::client::PacketItem::RtpPacket
has been renamed toretina::client::PacketItem::Rtp
. - BREAKING:
retina::client::PacketItem::SenderReport
has been replaced withretina::client::PacketItem::Rtcp
, to expose full RTCP compound packets. Likewiseretina::codec::CodecItem
. - BREAKING:
retina::codec::Parameters
is nowretina::codec::ParametersRef
, which references parameters stored within theStream
to reduce copying. - minimum Rust version is now 1.59.
v0.3.10
(2022-05-09)
- ignore unparseable
rtptime
values in thePLAY
response'sRTP-Info
header. This improves compatibility with the OMNY M5S2A 2812 camera, as described in scottlamb/moonfire-nvr#224.
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.