Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/HOL/HOLCF/IOA/   (Isabelle Prover Version 2025-1©)  Datei vom 16.11.2025 mit Größe 3 kB image not shown  

Quelle  MediaInfo.cpp   Sprache: unbekannt

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "MediaInfo.h"

#include "MediaData.h"

namespace mozilla {

const char* TrackTypeToStr(TrackInfo::TrackType aTrack) {
  switch (aTrack) {
    case TrackInfo::kUndefinedTrack:
      return "Undefined";
    case TrackInfo::kAudioTrack:
      return "Audio";
    case TrackInfo::kVideoTrack:
      return "Video";
    case TrackInfo::kTextTrack:
      return "Text";
    default:
      return "Unknown";
  }
}

bool TrackInfo::IsEqualTo(const TrackInfo& rhs) const {
  return (
      mId == rhs.mId && mKind == rhs.mKind && mLabel == rhs.mLabel &&
      mLanguage == rhs.mLanguage && mEnabled == rhs.mEnabled &&
      mTrackId == rhs.mTrackId && mMimeType == rhs.mMimeType &&
      mDuration == rhs.mDuration && mMediaTime == rhs.mMediaTime &&
      mCrypto.mCryptoScheme == rhs.mCrypto.mCryptoScheme &&
      mCrypto.mIVSize == rhs.mCrypto.mIVSize &&
      mCrypto.mKeyId == rhs.mCrypto.mKeyId &&
      mCrypto.mCryptByteBlock == rhs.mCrypto.mCryptByteBlock &&
      mCrypto.mSkipByteBlock == rhs.mCrypto.mSkipByteBlock &&
      mCrypto.mConstantIV == rhs.mCrypto.mConstantIV && mTags == rhs.mTags &&
      mIsRenderedExternally == rhs.mIsRenderedExternally && mType == rhs.mType);
}

nsCString TrackInfo::ToString() const {
  nsAutoCString rv;
  rv.AppendPrintf(
      "(TrackInfo: id:%s kind:%s label:%s language:%s enabled:%s trackid: %d "
      "mimetype:%s duration:%s media time:%s crypto:%s rendered externaly: %s "
      "type:%s)",
      NS_ConvertUTF16toUTF8(mId).get(), NS_ConvertUTF16toUTF8(mKind).get(),
      NS_ConvertUTF16toUTF8(mLabel).get(),
      NS_ConvertUTF16toUTF8(mLanguage).get(), mEnabled ? "true" : "false",
      mTrackId, mMimeType.get(), mDuration.ToString().get(),
      mMediaTime.ToString().get(), EnumValueToString(mCrypto.mCryptoScheme),
      mIsRenderedExternally ? "true" : "false", TrackTypeToStr(mType));
  if (!mTags.IsEmpty()) {
    rv.AppendPrintf("\n");
    for (const auto& tag : mTags) {
      rv.AppendPrintf("%s:%s", tag.mKey.get(), tag.mValue.get());
    }
  }
  return std::move(rv);
}

bool VideoInfo::operator==(const VideoInfo& rhs) const {
  return (TrackInfo::IsEqualTo(rhs) && mDisplay == rhs.mDisplay &&
          mStereoMode == rhs.mStereoMode && mImage == rhs.mImage &&
          *mCodecSpecificConfig == *rhs.mCodecSpecificConfig &&
          *mExtraData == *rhs.mExtraData && mRotation == rhs.mRotation &&
          mColorDepth == rhs.mColorDepth && mImageRect == rhs.mImageRect &&
          mAlphaPresent == rhs.mAlphaPresent);
}

nsCString VideoInfo::ToString() const {
  std::array YUVColorSpaceStrings = {"BT601""BT709""BT2020""Identity",
                                     "Default"};

  std::array ColorDepthStrings = {
      "COLOR_8",
      "COLOR_10",
      "COLOR_12",
      "COLOR_16",
  };

  std::array TransferFunctionStrings = {
      "BT709",
      "SRGB",
      "PQ",
      "HLG",
  };

  std::array ColorRangeStrings = {
      "LIMITED",
      "FULL",
  };

  // From gfx::ColorSpace2
  std::array ColorPrimariesStrings = {
      "Display",     // 0 (Display / UNKNOWN)
      "SRGB",        // 1
      "DISPLAY_P3",  // 2
      "BT601_525",   // 3
      "BT709",       // 4 (also BT601_625)
      "BT2020",      // 5
  };

  nsAutoCString rv;
  rv.Append(TrackInfo::ToString());
  rv.AppendLiteral(" VideoInfo: ");
  rv.AppendPrintf("display size: %dx%d", mDisplay.Width(), mDisplay.Height());
  rv.AppendPrintf(", stereo mode: %d", static_cast<int>(mStereoMode));
  rv.AppendPrintf(", image size: %dx%d", mImage.Width(), mImage.Height());
  if (mCodecSpecificConfig) {
    rv.AppendPrintf(", codec specific config: %zu bytes",
                    mCodecSpecificConfig->Length());
  }
  if (mExtraData) {
    rv.AppendPrintf(", extra data: %zu bytes", mExtraData->Length());
  }
  rv.AppendPrintf(", rotation: %d", static_cast<int>(mRotation));
  rv.AppendPrintf(", colors: %s",
                  ColorDepthStrings[static_cast<int>(mColorDepth)]);
  if (mColorSpace) {
    rv.AppendPrintf(
        ", YUV colorspace: %s",
        YUVColorSpaceStrings[static_cast<int>(mColorSpace.value())]);
  }
  if (mColorPrimaries) {
    rv.AppendPrintf(
        ", color primaries: %s",
        ColorPrimariesStrings[static_cast<int>(mColorPrimaries.value())]);
  }
  if (mTransferFunction) {
    rv.AppendPrintf(
        ", transfer function %s",
        TransferFunctionStrings[static_cast<int>(mTransferFunction.value())]);
  }
  rv.AppendPrintf(", color range: %s",
                  ColorRangeStrings[static_cast<int>(mColorRange)]);
  if (mHDRMetadata) {
    if (const auto& s = mHDRMetadata->mSmpte2086) {
      rv.AppendPrintf(
          ", smpte2086 R(%.4f,%.4f) G(%.4f,%.4f)"
          " B(%.4f,%.4f) WP(%.4f,%.4f) lum(%.4f,%.4f)",
          s->displayPrimaryRed.x, s->displayPrimaryRed.y,
          s->displayPrimaryGreen.x, s->displayPrimaryGreen.y,
          s->displayPrimaryBlue.x, s->displayPrimaryBlue.y, s->whitePoint.x,
          s->whitePoint.y, s->maxLuminance, s->minLuminance);
    }
    if (const auto& cll = mHDRMetadata->mContentLightLevel) {
      rv.AppendPrintf(", MaxCLL=%u MaxFALL=%u", cll->maxContentLightLevel,
                      cll->maxFrameAverageLightLevel);
    }
  }
  if (mImageRect) {
    rv.AppendPrintf(", image rect: %dx%d", mImageRect->Width(),
                    mImageRect->Height());
  }
  rv.AppendPrintf(", alpha present: %s", mAlphaPresent ? "true" : "false");
  if (mFrameRate) {
    rv.AppendPrintf(", frame rate: %dHz", mFrameRate.value());
  }
  return std::move(rv);
}

bool AudioInfo::operator==(const AudioInfo& rhs) const {
  return (TrackInfo::IsEqualTo(rhs) && mRate == rhs.mRate &&
          mChannels == rhs.mChannels && mChannelMap == rhs.mChannelMap &&
          mBitDepth == rhs.mBitDepth && mProfile == rhs.mProfile &&
          mExtendedProfile == rhs.mExtendedProfile &&
          mCodecSpecificConfig == rhs.mCodecSpecificConfig);
}

nsCString AudioInfo::ToString() const {
  nsAutoCString rv;
  rv.Append(TrackInfo::ToString());
  rv.AppendPrintf(
      " AudioInfo: %s, %" PRIu32 "Hz, %" PRIu32 "ch (%s) %" PRIu32
      "-bits, profile: %" PRIu8 ", extended profile: %" PRIu8 ", %s extradata",
      mMimeType.get(), mRate, mChannels,
      AudioConfig::ChannelLayout::ChannelMapToString(mChannelMap).get(),
      mBitDepth, mProfile, mExtendedProfile,
      mCodecSpecificConfig.is<NoCodecSpecificData>() ? "no" : "with");
  return std::move(rv);
}

}  // namespace mozilla

Messung V0.5 in Prozent
C=91 H=98 G=94

[zur Elbe Produktseite wechseln0.11QuellennavigatorsAnalyse erneut starten2026-08-25]