Skip to content

Commit

Permalink
Cherry-pick 261881@main (b2ec065). https://bugs.webkit.org/show_bug.c…
Browse files Browse the repository at this point in the history
…gi?id=254150

    [GStreamer][WebRTC] Dedicated log categories for incoming/outgoing media sources
    https://bugs.webkit.org/show_bug.cgi?id=254150

    Reviewed by Xabier Rodriguez-Calvar.

    This allows for improved GStreamer logs filtering.

    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingAudioSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingSourceGStreamer.cpp:
    (WebCore::RealtimeIncomingSourceGStreamer::RealtimeIncomingSourceGStreamer):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeIncomingVideoSourceGStreamer.cpp:
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingAudioSourceGStreamer::RealtimeOutgoingAudioSourceGStreamer):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::RealtimeOutgoingMediaSourceGStreamer):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::start):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::setSinkPad):
    * Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingVideoSourceGStreamer::RealtimeOutgoingVideoSourceGStreamer):

    Canonical link: https://commits.webkit.org/261881@main
  • Loading branch information
philn authored and aperezdc committed Apr 14, 2023
1 parent c464add commit 955e7df
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 13 deletions.
Expand Up @@ -25,14 +25,18 @@
#include "GStreamerAudioData.h"
#include "GStreamerAudioStreamDescription.h"

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_incoming_audio_debug);
#define GST_CAT_DEFAULT webkit_webrtc_incoming_audio_debug

namespace WebCore {

RealtimeIncomingAudioSourceGStreamer::RealtimeIncomingAudioSourceGStreamer(AtomString&& audioTrackId)
: RealtimeIncomingSourceGStreamer(CaptureDevice { WTFMove(audioTrackId), CaptureDevice::DeviceType::Microphone, emptyString() })
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_incoming_audio_debug, "webkitwebrtcincomingaudio", 0, "WebKit WebRTC incoming audio");
});
static Atomic<uint64_t> sourceCounter = 0;
gst_element_set_name(bin(), makeString("incoming-audio-source-", sourceCounter.exchangeAdd(1)).ascii().data());
GST_DEBUG_OBJECT(bin(), "New incoming audio source created");
Expand Down
Expand Up @@ -26,14 +26,18 @@
#include <gst/app/gstappsink.h>
#include <wtf/text/WTFString.h>

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_incoming_media_debug);
#define GST_CAT_DEFAULT webkit_webrtc_incoming_media_debug

namespace WebCore {

RealtimeIncomingSourceGStreamer::RealtimeIncomingSourceGStreamer(const CaptureDevice& device)
: RealtimeMediaSource(device)
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_incoming_media_debug, "webkitwebrtcincomingmedia", 0, "WebKit WebRTC incoming media");
});
m_bin = gst_bin_new(nullptr);
m_valve = gst_element_factory_make("valve", nullptr);
m_tee = gst_element_factory_make("tee", nullptr);
Expand Down
Expand Up @@ -27,14 +27,18 @@
#include "VideoFrameGStreamer.h"
#include "VideoFrameMetadataGStreamer.h"

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_incoming_video_debug);
#define GST_CAT_DEFAULT webkit_webrtc_incoming_video_debug

namespace WebCore {

RealtimeIncomingVideoSourceGStreamer::RealtimeIncomingVideoSourceGStreamer(AtomString&& videoTrackId)
: RealtimeIncomingSourceGStreamer(CaptureDevice { WTFMove(videoTrackId), CaptureDevice::DeviceType::Camera, emptyString() })
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_incoming_video_debug, "webkitwebrtcincomingvideo", 0, "WebKit WebRTC incoming video");
});
static Atomic<uint64_t> sourceCounter = 0;
gst_element_set_name(bin(), makeString("incoming-video-source-", sourceCounter.exchangeAdd(1)).ascii().data());
GST_DEBUG_OBJECT(bin(), "New incoming video source created");
Expand Down
Expand Up @@ -28,14 +28,18 @@

#include <wtf/text/StringToIntegerConversion.h>

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_outgoing_audio_debug);
#define GST_CAT_DEFAULT webkit_webrtc_outgoing_audio_debug

namespace WebCore {

RealtimeOutgoingAudioSourceGStreamer::RealtimeOutgoingAudioSourceGStreamer(const String& mediaStreamId, MediaStreamTrack& track)
: RealtimeOutgoingMediaSourceGStreamer(mediaStreamId, track)
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_outgoing_audio_debug, "webkitwebrtcoutgoingaudio", 0, "WebKit WebRTC outgoing audio");
});
static Atomic<uint64_t> sourceCounter = 0;
gst_element_set_name(m_bin.get(), makeString("outgoing-audio-source-", sourceCounter.exchangeAdd(1)).ascii().data());
m_audioconvert = makeGStreamerElement("audioconvert", nullptr);
Expand Down
Expand Up @@ -31,15 +31,20 @@
#include <gst/webrtc/webrtc.h>
#undef GST_USE_UNSTABLE_API

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_outgoing_media_debug);
#define GST_CAT_DEFAULT webkit_webrtc_outgoing_media_debug

namespace WebCore {

RealtimeOutgoingMediaSourceGStreamer::RealtimeOutgoingMediaSourceGStreamer(const String& mediaStreamId, MediaStreamTrack& track)
: m_mediaStreamId(mediaStreamId)
, m_trackId(track.id())
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_outgoing_media_debug, "webkitwebrtcoutgoingmedia", 0, "WebKit WebRTC outgoing media");
});

m_bin = gst_bin_new(nullptr);

m_inputSelector = gst_element_factory_make("input-selector", nullptr);
Expand Down Expand Up @@ -109,8 +114,10 @@ void RealtimeOutgoingMediaSourceGStreamer::setSource(Ref<MediaStreamTrackPrivate

void RealtimeOutgoingMediaSourceGStreamer::start()
{
if (!m_isStopped)
if (!m_isStopped) {
GST_DEBUG_OBJECT(m_bin.get(), "Source already started");
return;
}

GST_DEBUG_OBJECT(m_bin.get(), "Starting outgoing source");
m_source.value()->addObserver(*this);
Expand All @@ -119,6 +126,7 @@ void RealtimeOutgoingMediaSourceGStreamer::start()
if (m_transceiver) {
auto selectorSrcPad = adoptGRef(gst_element_get_static_pad(m_inputSelector.get(), "src"));
if (!gst_pad_is_linked(selectorSrcPad.get())) {
GST_DEBUG_OBJECT(m_bin.get(), "Codec preferences haven't changed before startup, ensuring source is linked");
GRefPtr<GstCaps> codecPreferences;
g_object_get(m_transceiver.get(), "codec-preferences", &codecPreferences.outPtr(), nullptr);
callOnMainThreadAndWait([&] {
Expand Down Expand Up @@ -213,6 +221,7 @@ void RealtimeOutgoingMediaSourceGStreamer::link()

void RealtimeOutgoingMediaSourceGStreamer::setSinkPad(GRefPtr<GstPad>&& pad)
{
GST_DEBUG_OBJECT(m_bin.get(), "Associating with webrtcbin pad %" GST_PTR_FORMAT, pad.get());
m_webrtcSinkPad = WTFMove(pad);

if (m_transceiver)
Expand Down
Expand Up @@ -28,8 +28,8 @@

#include <wtf/glib/WTFGType.h>

GST_DEBUG_CATEGORY_EXTERN(webkit_webrtc_endpoint_debug);
#define GST_CAT_DEFAULT webkit_webrtc_endpoint_debug
GST_DEBUG_CATEGORY(webkit_webrtc_outgoing_video_debug);
#define GST_CAT_DEFAULT webkit_webrtc_outgoing_video_debug

namespace WebCore {

Expand All @@ -42,6 +42,10 @@ WEBKIT_DEFINE_ASYNC_DATA_STRUCT(RealtimeOutgoingVideoSourceHolder)
RealtimeOutgoingVideoSourceGStreamer::RealtimeOutgoingVideoSourceGStreamer(const String& mediaStreamId, MediaStreamTrack& track)
: RealtimeOutgoingMediaSourceGStreamer(mediaStreamId, track)
{
static std::once_flag debugRegisteredFlag;
std::call_once(debugRegisteredFlag, [] {
GST_DEBUG_CATEGORY_INIT(webkit_webrtc_outgoing_video_debug, "webkitwebrtcoutgoingvideo", 0, "WebKit WebRTC outgoing video");
});
registerWebKitGStreamerElements();

static Atomic<uint64_t> sourceCounter = 0;
Expand Down

0 comments on commit 955e7df

Please sign in to comment.