Skip to content

Commit a324844

Browse files
committed
okay this needs fixing
1 parent 135550f commit a324844

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
lines changed

discord/opus.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -653,23 +653,30 @@ def _make_fakepacket(self) -> FakePacket:
653653

654654
def _process_packet(self, packet: Packet) -> VoiceData:
655655
from discord.object import Object
656+
from discord.voice import VoiceData
656657

657-
pcm = None
658+
assert self.sink.client
658659

659-
if not self.sink.is_opus():
660-
packet, pcm = self._decode_packet(packet)
660+
pcm = None
661661

662662
member = self._get_cached_member()
663663

664664
if member is None:
665-
self._cached_id = self.sink.client._connection._get_id_from_ssrc(self.ssrc)
665+
self._cached_id = self.sink.client._ssrc_to_id.get(self.ssrc)
666666
member = self._get_cached_member()
667+
else:
668+
self._cached_id = member.id
667669

668670
# yet still none, use Object
669671
if member is None and self._cached_id:
670672
member = Object(id=self._cached_id)
671673

672-
data = VoiceData(packet, member, pcm=pcm)
674+
if not self.sink.is_opus():
675+
_log.debug("Decoding packet %s (type %s)", packet, type(packet))
676+
packet, pcm = self._decode_packet(packet)
677+
678+
679+
data = VoiceData(packet, member, pcm=pcm) # type: ignore
673680
self._last_seq = packet.sequence
674681
self._last_ts = packet.timestamp
675682
return data

discord/sinks/core.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,14 @@
7373

7474

7575
class SinkMeta(type):
76-
def __new__(cls, *args, **kwargs):
76+
__sink_listeners__: list[tuple[str, str]]
77+
78+
def __new__(cls, name, bases, attr, **kwargs):
7779
listeners = {}
7880

79-
for base in reversed(cls.__mro__):
81+
inst = super().__new__(cls, name, bases, attr, **kwargs)
82+
83+
for base in reversed(inst.__mro__):
8084
for elem, value in base.__dict__.items():
8185
if elem in listeners:
8286
del listeners[elem]
@@ -95,8 +99,8 @@ def __new__(cls, *args, **kwargs):
9599
for listener_name in listener.__sink_listener_names__:
96100
listeners_list.append((listener_name, listener.__name__))
97101

98-
cls.__sink_listeners__ = listeners_list
99-
return super().__new__(cls, *args, **kwargs)
102+
inst.__sink_listeners__ = listeners_list
103+
return inst
100104

101105

102106
class SinkBase(metaclass=SinkMeta):

discord/voice/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@ def stop(self) -> None:
585585
for cb, _ in self._player_future._callbacks:
586586
self._player_future.remove_done_callback(cb)
587587
self._player_future.set_result(None)
588-
if self._reader:
588+
if self._reader is not MISSING:
589589
self._reader.stop()
590590
self._reader = MISSING
591591

@@ -733,7 +733,7 @@ def stop_recording(self) -> None:
733733
RecordingException
734734
You are not recording.
735735
"""
736-
if self._reader:
736+
if self._reader is not MISSING:
737737
self._reader.stop()
738738
self._reader = MISSING
739739
else:

discord/voice/packets/rtp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ def __init__(self, data: bytes) -> None:
204204

205205
self.version: int = head >> 6
206206
self.padding: bool = bool(head & 0b00100000)
207+
setattr(self, "report_count", head & 0b00011111)
207208

208209
def __repr__(self) -> str:
209210
return f"<{self.__class__.__name__} version={self.version} padding={self.padding} length={self.length}>"

0 commit comments

Comments
 (0)