Fix mpegts reader for tapo client

This commit is contained in:
Alexey Khit
2023-08-17 07:13:41 +03:00
parent dd066ba040
commit 42f6441512
2 changed files with 14 additions and 24 deletions
-15
View File
@@ -295,18 +295,3 @@ func (r *Reader) left() byte {
func (r *Reader) setSize(size byte) {
r.end = r.pos + size
}
// Deprecated:
func (r *Reader) SetBuffer(b []byte) {
}
// Deprecated:
func (r *Reader) GetPacket() *rtp.Packet {
panic("")
}
// Deprecated:
func (r *Reader) AppendBuffer(sniff []byte) {
}
+14 -9
View File
@@ -8,14 +8,16 @@ import (
"encoding/json"
"errors"
"fmt"
"github.com/AlexxIT/go2rtc/pkg/core"
"github.com/AlexxIT/go2rtc/pkg/mpegts"
"github.com/AlexxIT/go2rtc/pkg/tcp"
"io"
"mime/multipart"
"net"
"net/http"
"net/url"
"strconv"
"github.com/AlexxIT/go2rtc/pkg/core"
"github.com/AlexxIT/go2rtc/pkg/mpegts"
"github.com/AlexxIT/go2rtc/pkg/tcp"
)
type Client struct {
@@ -143,11 +145,11 @@ func (c *Client) SetupStream() (err error) {
// Handle - first run will be in probe state
func (c *Client) Handle() error {
mpReader := multipart.NewReader(c.conn1, "--device-stream-boundary--")
tsReader := mpegts.NewReader()
multipartRd := multipart.NewReader(c.conn1, "--device-stream-boundary--")
mpegtsRd := mpegts.NewReader()
for {
p, err := mpReader.NextRawPart()
p, err := multipartRd.NextRawPart()
if err != nil {
return err
}
@@ -176,13 +178,16 @@ func (c *Client) Handle() error {
}
body = c.decrypt(body)
tsReader.SetBuffer(body)
bytesRd := bytes.NewReader(body)
for {
pkt := tsReader.GetPacket()
if pkt == nil {
pkt, err2 := mpegtsRd.ReadPacket(bytesRd)
if pkt == nil || err2 == io.EOF {
break
}
if err2 != nil {
return err2
}
for _, receiver := range c.receivers {
if receiver.ID == pkt.PayloadType {