From 4d4e5bb3dc511247763dae10ec789947b71c0b10 Mon Sep 17 00:00:00 2001
From: philippegorley <philippe.gorley@savoirfairelinux.com>
Date: Fri, 6 Jul 2018 16:49:40 -0400
Subject: [PATCH] recorder: log input streams

Overloads << operator to more easily stringify a MediaStream.

Change-Id: I701b85fb7b98a43d336f4cb9a3fe1ab419e04827
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
---
 src/media/media_recorder.cpp | 16 ++++------------
 src/media/media_stream.h     | 18 ++++++++++++++++++
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/src/media/media_recorder.cpp b/src/media/media_recorder.cpp
index 34c8eada2e..472555f895 100644
--- a/src/media/media_recorder.cpp
+++ b/src/media/media_recorder.cpp
@@ -200,6 +200,8 @@ MediaRecorder::addStream(bool isVideo, bool fromPeer, MediaStream ms)
         ms.name = (fromPeer ? "a:1" : "a:2");
         ++nbReceivedAudioStreams_;
     }
+    // print index instead of count
+    RING_DBG() << "Recorder input #" << (nbReceivedAudioStreams_ + nbReceivedVideoStreams_ - 1) << ": " << ms;
     streams_[isVideo][fromPeer] = ms;
 
     // wait until all streams are ready before writing to the file
@@ -365,12 +367,7 @@ MediaRecorder::setupVideoOutput()
     if (encoderStream.format < 0)
         return encoderStream;
 
-    RING_DBG() << "Video recorder '"
-        << (encoderStream.name.empty() ? "(null)" : encoderStream.name)
-        << "' properties: "
-        << av_get_pix_fmt_name(static_cast<AVPixelFormat>(encoderStream.format)) << ", "
-        << encoderStream.width << "x" << encoderStream.height << ", "
-        << encoderStream.frameRate << " fps";
+    RING_DBG() << "Recorder output: " << encoderStream;
     return encoderStream;
 }
 
@@ -437,12 +434,7 @@ MediaRecorder::setupAudioOutput()
     if (encoderStream.format < 0)
         return encoderStream;
 
-    RING_DBG() << "Audio recorder '"
-        << (encoderStream.name.empty() ? "(null)" : encoderStream.name)
-        << "' properties: "
-        << av_get_sample_fmt_name(static_cast<AVSampleFormat>(encoderStream.format)) << ", "
-        << encoderStream.sampleRate << " Hz, "
-        << encoderStream.nbChannels << " channels";
+    RING_DBG() << "Recorder output: " << encoderStream;
     return encoderStream;
 }
 
diff --git a/src/media/media_stream.h b/src/media/media_stream.h
index 5e9fffb402..1475d8882b 100644
--- a/src/media/media_stream.h
+++ b/src/media/media_stream.h
@@ -96,4 +96,22 @@ struct MediaStream {
     }
 };
 
+inline std::ostream& operator<<(std::ostream& os, const MediaStream& ms)
+{
+    if (ms.isVideo) {
+        os << (ms.name.empty() ? "(null)" : ms.name) << ": "
+            << av_get_pix_fmt_name(static_cast<AVPixelFormat>(ms.format)) << " video, "
+            << ms.width << "x" << ms.height << ", "
+            << ms.frameRate << " fps (" << ms.timeBase << ")";
+    } else {
+        os << (ms.name.empty() ? "(null)" : ms.name) << ": "
+            << av_get_sample_fmt_name(static_cast<AVSampleFormat>(ms.format)) << " audio, "
+            << ms.nbChannels << " channel(s), "
+            << ms.sampleRate << " Hz (" << ms.timeBase << ")";
+    }
+    if (ms.firstTimestamp > 0)
+        os << ", start: " << ms.firstTimestamp;
+    return os;
+}
+
 }; // namespace ring
-- 
GitLab