diff options
Diffstat (limited to 'dom/media/platforms/EncoderConfig.cpp')
-rw-r--r-- | dom/media/platforms/EncoderConfig.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/dom/media/platforms/EncoderConfig.cpp b/dom/media/platforms/EncoderConfig.cpp index ed780b947c..2c32e4c2ff 100644 --- a/dom/media/platforms/EncoderConfig.cpp +++ b/dom/media/platforms/EncoderConfig.cpp @@ -7,6 +7,7 @@ #include "EncoderConfig.h" #include "MP4Decoder.h" #include "VPXDecoder.h" +#include "mozilla/dom/BindingUtils.h" namespace mozilla { @@ -24,4 +25,45 @@ CodecType EncoderConfig::CodecTypeForMime(const nsACString& aMimeType) { return CodecType::Unknown; } +const char* CodecTypeStrings[] = { + "BeginVideo", "H264", "VP8", "VP9", "EndVideo", "Opus", "Vorbis", + "Flac", "AAC", "PCM", "G722", "EndAudio", "Unknown"}; + +nsCString EncoderConfig::ToString() const { + nsCString rv; + rv.Append(CodecTypeStrings[UnderlyingValue(mCodec)]); + rv.AppendLiteral(mBitrateMode == BitrateMode::Constant ? " (CBR)" : " (VBR)"); + rv.AppendPrintf("%" PRIu32 "bps", mBitrate); + if (mUsage == Usage::Realtime) { + rv.AppendLiteral(", realtime"); + } else { + rv.AppendLiteral(", record"); + } + if (mCodec > CodecType::_BeginVideo_ && mCodec < CodecType::_EndVideo_) { + rv.AppendPrintf(" [%dx%d]", mSize.Width(), mSize.Height()); + if (mHardwarePreference == HardwarePreference::RequireHardware) { + rv.AppendLiteral(", hw required"); + } else if (mHardwarePreference == HardwarePreference::RequireSoftware) { + rv.AppendLiteral(", sw required"); + } else { + rv.AppendLiteral(", hw: no preference"); + } + rv.AppendPrintf(" format: %s", GetEnumString(mPixelFormat).get()); + rv.AppendPrintf(" format (source): %s", + GetEnumString(mSourcePixelFormat).get()); + if (mScalabilityMode == ScalabilityMode::L1T2) { + rv.AppendLiteral(" (L1T2)"); + } else if (mScalabilityMode == ScalabilityMode::L1T3) { + rv.AppendLiteral(" (L1T2)"); + } + rv.AppendPrintf(", fps: %" PRIu8, mFramerate); + rv.AppendPrintf(", kf interval: %zu", mKeyframeInterval); + } else { + rv.AppendPrintf(", ch: %" PRIu32 ", %" PRIu32 "Hz", mNumberOfChannels, + mSampleRate); + } + rv.AppendPrintf("(w/%s codec specific)", mCodecSpecific ? "" : "o"); + return rv; +}; + } // namespace mozilla |