#ifndef CHROMECAST_MEDIA_AUDIO_AUDIO_LOG_H_
#define CHROMECAST_MEDIA_AUDIO_AUDIO_LOG_H_
#include <ostream>
#include "base/logging.h"
namespace logging {
#define AUDIO_LOG_STREAM(severity) \
COMPACT_GOOGLE_LOG_EX_##severity(AudioLogMessage).stream()
#define AUDIO_LOG(severity) \
LAZY_STREAM(AUDIO_LOG_STREAM(severity), LOG_IS_ON(severity))
#define AUDIO_LOG_IF(severity, condition) \
LAZY_STREAM(AUDIO_LOG_STREAM(severity), LOG_IS_ON(severity) && (condition))
class AudioLogMessage {
public:
class BufferManager;
static BufferManager* GetBufferManager();
AudioLogMessage(const char* file, int line, LogSeverity severity);
~AudioLogMessage();
AudioLogMessage(const AudioLogMessage&) = delete;
AudioLogMessage& operator=(const AudioLogMessage&) = delete;
std::ostream& stream() { return stream_; }
void Cancel();
private:
class StreamBuf;
StreamBuf* buffer_;
std::ostream stream_;
};
void InitializeAudioLog();
void InitializeShlibAudioLog(AudioLogMessage::BufferManager* manager);
}
#endif