57 format.setFramerate(sendRate);
76 size_t write(uint8_t c)
override {
return write(&c, 1); }
79 size_t write(
const uint8_t *data,
size_t len)
override {
83 if (n > len - pos) n = len - pos;
104 int len =
buffer.available() < maxBytes ?
buffer.available() : maxBytes;
106 return buffer.readArray((uint8_t *)dest, len);
130 bool pusi =
packet[1] & 0x40;
133 int free =
buffer.availableForWrite();
138 if (pid == 0 && free >=
capacity / 2) {
140 LOGI(
"RTSPMediaSourceMTS: resuming video at the next keyframe");
142 }
else if (is_video && pusi && free <
capacity / 4) {
144 LOGW(
"RTSPMediaSourceMTS: network too slow - dropping video");
154 LOGW(
"RTSPMediaSourceMTS: buffer full, %u packets dropped",
165 int afc = (
packet[3] >> 4) & 3;
166 if (!(afc & 1))
return false;
167 int pos = (afc & 2) ? 5 +
packet[4] : 4;
170 (
packet[pos + 3] & 0xF0) == 0xE0;