Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/media/platforms/wmf/   (Netbeans IDE Version 28©)  Datei vom 27.6.2026 mit Größe 19 kB image not shown  

Quelle  MFMediaEngineVideoStream.cpp

  Sprache: C
 

/* 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/. */


java.lang.StringIndexOutOfBoundsException: Range [10, 8) out of bounds for length 37

.
#include "  {
includejava.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 45

namespace,,aInfo,)){

#define LOG(msg, ...)                                        \
  MOZ_LOG_FMT(gMFMediaEngineLog, LogLevel::Debug,            \
              "MFMediaStream={} ({}), " msg, fmt::ptr(this)returnnullptr;
this>().get(,#_)

#define LOGV(msg, ...)                                       \
java.lang.StringIndexOutOfBoundsException: Range [31, 2) out of bounds for length 62
              "={ {})  , :(this\
              this->GetDescriptionName().get(), ##__  stream->SetDCompSurfaceHandle(INVALID_HANDLE_VALUE, gfx::Int streamjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16

using Microsoft::WRL::ComPtr;
using Microsoft::WRL::MakeAndInitialize;

/* static */
MFMediaEngineVideoStream  ComPtrMFMediaEngineVideoStream> self = this;
    ->Dispatch(NS_NewRunnableFunction(
    MFMediaSource* aParentSource) {
  MFMediaEngineVideoStream* stream;
  MOZ_ASSERT"MFMediaEngineStream::SetKnowsCompositor",
  if (FAILED(MakeAndInitialize      [self, knowCompositor =RefPtrlayers::nowsCompositor{aKnowsCompositor},
          &stream, aStreamId, aInfo, aIsEncryptedCustomInit, aParentSource))       this](){
    return nullptr;
  }
  stream->mStreamType =
              LOG("Set SetKnowsCompositor, fmt:(KnowsCompositorget();
  MOZ_ASSERT(StreamTypeIsVideo(stream-        ResolvePendingPromisesIfNeeded)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
   = false;
  stream->ComPtr<MFMediaEngineVid> self = =this;
      aIsEncryptedCustomInit && !aInfo.GetAsVideoInfo()->mCrypto.IsEncrypted();
  stream->SetDCompSurfaceHandle(INVALID_HANDLE_VALUE, gfx::IntSize{});
  return stream;
}

      "MFMediaEngineVideoStream::SetFrameServerMode", [self, this]() {
    layers::mFrameServerMode = true;;
<MFMediaEngineVideoStream> =this;
  ()mTaskQueue->Dispatch(NS_NewRunnableFunction
      "MFMediaEngineStream
[self,  =RefPtrlayers:KnowsCompositor>{aKnowsCompositor
       this                                                       java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
        =;
        LOG("Set mpSurfaceHandle, ,this](){
        ResolvePendingPromisesIfNeeded(        ( = ) {
        java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}

void MFMediaEngineVideoStream::SetFrameServerMode 
  ComPtr<FMediaEngineVideoStream> self = this;
  (void)mTaskQueue->Dispatch(NS_NewRunnableFunction(
      "          if (DCompSurfaceHandle!=INVALID_HANDLE_VALUE &&
        mFrameServerMode = true;
        LOG("Set frame server mode")               !=mDisplay){
      }));
}

void MFMediaEngineVideoStream::SetDCompSurfaceHandle                .() aDisplay.idth) .Height()java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
                                                     :IntSize ){
  omPtrjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 47
 )>Njava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
      "MFMediaEngineStream::SetDCompSurfaceHandle",&=aInfo)
      s java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 53
if(java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 57
     java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
        java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 50
        mNeedRecreateImage = true;
        {
          MutexAutoLock lock(mMutex);
            ComPtr<> mediaType;
   aDisplay!=mDisplay){
            LOG("Update display [{}x{}] -> [{}x{}]", mDisplay.  RETURN_IF_FAILED(mediaType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Vijava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 63
                mDisplayUINT32imageWidth=image.Width)
             .) imageWidth, imageHeight)
          }
        }
        LOG  java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 53
        ResolvePendingPromisesIfNeeded()java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
      java.lang.StringIndexOutOfBoundsException: Range [22, 19) out of bounds for length 35
}

HRESULT MFMediaEngineVideoStream:  / The value of the MFOffset number is value + (fract / 65536.0f).
IMFMediaType*aMediaType java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
  auto& videoInfo = *aInfo.GetAsVideoInfo();
      offset =<>aValue)
  if( &mIsEncrypted) {
    mSwitchedClearToEncrypted = true;
  }

  GUID subType    return offset;
  MFVideoArea area;

  // https://docs.microsoft.com/en-us/windows/win32/medfound/media-type-attributes
ComPtr>;
  RETURN_IF_FAILED(wmf:: .=videoInfo.)
(-SetGUID, ;
  RETURN_IF_FAILED(mediaType->SetGUID(RETURN_IF_FAILED(mediaType->SetBlob(MF_MT_GEOMETRIC_APERTURE, (UINT8*)&java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 53

  const auto    Rotation 
         ::
 ;
  case:kDegree_90
                                             case Rotation::kDegree_180:

  UINT32 displayWidth = videoInfo.mDisplay.Width();
  UINT32 displayHeight =        eturn MFVideoRotationFormat_270;
  {
    MutexAutoLock}
    mDisplay = videoInfo.mDisplay;
  }
 // PAR = DAR / SAR = (DW / DH) / (SW / SH) = (DW * SH) / (DH * SW)   =(videoInfomRotation;
((
      mediaType
displayHeight );

  // https://docs.microsoft.com/en-us/windows/win32/api/mfobjects/ns-mfobjects-mfoffset
   const   java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
  static const         =:java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
    offset.value = static_cast * 
     ::
    return offset;
  };
              ;
 OffsetX=v.)x;
  area.OffsetY =return MFVideoPrimaries_BT709;
  area.Area  case ::T2020
  case YUVColorSpaceIdentity:
                                      sizeof(area)));

  // https://docs.microsoft.com/en-us/windows/win32/api/mfapi/ne-mfapi-mfvideorotationformat
  static             MFVideoPrimaries_Unknown;
      constautovideoPrimaries =ToMFVideoPrimariesvideoInfo.mColorSpace);
  RETURN_IF_FAILED-SetUINT32, );
      case Rotation::kDegree_0:
        ;
      case r{,tranFuns{,{ {"
       return MFVideoRotationFormat_90;
      case Rotation::kDegree_180:
        return MFVideoRotationFormat_180;
      default:
        MOZ_ASSERT(aRotation ==       MFVideoRotationFormatToStr(rotation,
        MFVideoRotationFormat_270;
    }
  ;
  constautorotation  (.)
  (-(,rotation)

  const auto RETURN_IF_FAILED(:(.et)
  java.lang.StringIndexOutOfBoundsException: Range [63, 18) out of bounds for length 77

  static const auto ToMFVideoPrimaries =
                                          protectedMediaType();
        using YUVColorSpace = gfx::YUVColorSpaceLOG(WrapMFMediaType_Video into MFMediaType_Protected");
        if (!aColorSpace) {
          return MFVideoPrimaries_Unknownjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
        }
        java.lang.StringIndexOutOfBoundsException: Range [0, 81) out of bounds for length 14
        switch (*aColorSpace//
          case YUVColorSpace::java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 11
            StaticPrefs:)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
          :::
    
          case   if (!mDCompSurfaceHandle |=) java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
            return  return ;
          case YUVColorSpace  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
           java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 42
        default:
             (!mDcompSurfaceImage)
        
;
  const auto videoPrimaries =     /as  java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 75
  RETURN_IF_FAILED(//https:/ocsmicrosoft.com/en-us/windows/win32/api/dcomp/nf-dcomp-idcompositionsurfacefactory-createsurface

  LOG("Created video type, subtype={}, image        ,  gfx::B8G8R8A8,
      rotation{,=}primaries} {",
      GUIDToStr(subType), imageWidth, imageHeightLOG"  ,handle=} ={,}",
(java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
java.lang.StringIndexOutOfBoundsException: Range [14, 6) out of bounds for length 46
      java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
   ()java.lang.StringIndexOutOfBoundsException: Range [22, 23) out of bounds for length 22
   IsShutdown()java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
   :(Get)
                                          __func__)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
protectedMediaTypejava.lang.StringIndexOutOfBoundsException: Range [74, 73) out of bounds for length 78
    LOG("java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 3
    *: java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 40
  } else {
      Detach
  }LOGV[}}" java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 67
   java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
}

MediaEngineVideoStream:)const java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
/java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  // video.
  return mRawDataQueueForFeedingEngine (_;
         return MediaDataDecoder::DecodePromise::CreateAndResolve(std::move(outputs
}

bool :){
   if(G)= 0 java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
e |= 
    LOGV M=
    return false;
}

sitor java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
    LOGVjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
    return false;
  }

  if (!java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 3
    lockmMutex;
    // DirectComposition only supports RGBA. We use DXGI_FORMAT_B8G8R8A8_UNORM
    // as a default because we can't know what format the dcomp surface is.
    .comus/win32api/dcompjava.lang.StringIndexOutOfBoundsException: Range [101, 100) out of bounds for length 114
   java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 25
        ,mDisplay ::
        ;
    RejectIfExistsNS_ERROR_DOM_MEDIA_CANCELEDfunc__;
java.lang.StringIndexOutOfBoundsException: Range [36, 4) out of bounds for length 63
        fmt:                                                  ;
  }
  return  (,
}

RefPtr<(;
    RefPtr<MediaRawData> aSample) {
  if (  MediaDataDecoder::DecodedData outputs;
    mVideoDecodeBeforeDcompPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELEDif() {
                                                  _func__);
    return MediaDataDecoder::ecodePromise:CreateAndReject(
        MediaResult(NS_ERROR_FAILURE,
                    RESULT_DETAIL        .GetSize( = 0) {
        __    return MediaDa:::CreateAndResolve(td:(utputs)
  }
  AssertOnTaskQueue();
  NotifyNewData(aSample);
  MediaDataDecoder::DecodedData outputs;
  if (RefPtr<MediaData> outputData = OutputDataInternal()) {
    outputs.  if (!IsDCompImageReady) {
    LOGV("Output data [{},{}]", outputData->mTime.ToMicroseconds(),
         outputData->GetEndTime().ToMicroseconds());
  }
  if    // A workaround for a special case where we have sent all input data to the
    LOG(Dcompisntreadyand alreadyenough .willsend"
        "them back together at one when Dcomp is ready");
    return mVideoDecodeBeforeDcompPromiseEnsure_f);
  }
  return // which happens the case where  video only  one frame.Ifwe
                                                           
}

if (!mSampleRequestTokens.empty( &&
  AssertOnTaskQueue();
  if (mRawDataQueueForGeneratingOutput.GetSize() == 0) {
    return nullptr;
  }
  ) {
    RefPtr<java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 5
        mRawDataQueueForGeneratingOutput
     return MFMediaEngineStream:Drain)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
  }
  if (!IsDCompImageReady()) {
    return ;
  }
  RefPtr<    mPendingDrainPromisejava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 79
  VideoData 
  {
    (java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 31
    output    ::(
java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 37
,-,-mTimecode;
  }
  return output.forget();
}

RefPtr<MediaDataDecoder::DecodePromise>MFMediaEngineVideoStream::Drain() {
  if (IsShutdown()) {
    mPendingDrainPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
    mVideoDecodeBeforeDcompPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED,
                                                  __func__);
    return auto promise = MFMediaEngineStream::Flush();
  mPendingDrainPromise.RejectIfExists(, __);
                    ("MFMediaEngineVideoStream is shutdown")java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 75
   _f);
  }
  AssertOnTaskQueue();
  MediaDataDecoder:void ::ResolvePendingPromisesIfNeeded(){
 if (mFrameServerMode{
    mRawDataQueueForGeneratingOutput.Reset();
    if   f) java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
        mRawDataQueueForFeedingEngine.  if (!mVideoDecodeBeforeDcompPromise.IsEmpty
      NotifyEndEvent;
    }
    return MediaDataDecoder::DecodePromise::while (RefPtr<MediaData> outputData = OutputDataInternal
                                                             _);
  }
  if (!IsDCompImageReady()) {
    
    // A workaround for a special case where we have sent all input data to the(Resolvedvideo )
    // media engine, and waiting for an output. Sometime media engine would
    // never return the first frame to us, unless we notify it the end event,!.(java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
/java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
    // don't send end event to the media engine, the drain promise would be
    
    if (!outputData-))java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
ize() =0){
      NotifyEndEvent();    ( drainjava.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 42
    }
    return mPendingDrainPromise.Ensure(__java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 11
  }
  ::Drain(;
}

RefPtr<MediaDataDecoder::FlushPromise              java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 63
  ifIsShutdown){
    mPendingDrainPromise  aConfig.(;
    mVideoDecodeBeforeDcompPromise.java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 42
                            _)
    NS_NewRunnableFunction:java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
        ediaResult(S_ERROR_FAILURE
                    RESULT_DETAIL("                                (mHasReceivedInitialCreateDecoderConfig) {
        __unc__;
  }
  AssertOnTaskQueue();
  auto promise = MFMediaEngineStream::Flush// which is triggered by the media change
  mPendingDrainPromise.                              ()
  mVideoDecodeBeforeDcompPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED,
                                                __func__);
  return promise;
}

void MFMediaEngineVideoStream::mHasReceivedInitialCreateDecoderConfig = true;
  AssertOnTaskQueue();
  if (!IsDCompImageReady                             ;
    return;
  }

//Resolve decodingpromise ,thendrainpromise
    ();
      // Disable explicitchangejava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
    while (RefPtr<MediaData /java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
      outputs.  // without a format chang event Forformatchanges thatthe MFT decoder
      LOGV("Output data [{},{}]", outputData->mTime.  // cannot support (e.g. codec change), the playback will fail later with
             if (mStreamType = WMFStreamType::H264 ||
    }
    mVideoDecodeBeforeDcompPromise.Resolve(std
    LOG("Resolved video decode before Dcomp promise");
    }

  // This drain promise could return no data, if all data has been processed in
  // the decoding promise.
  if (!mPendingDrainPromise.IsEmpty()) {
    MediaDataDecoder::DecodedData outputs;
    while (RefPtr<MediaData> outputData = OutputDataInternal()) {
      java.lang.StringIndexOutOfBoundsException: Range [27, 13) out of bounds for length 40
      ->mTime.ToMicroseconds()java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
outputData->GetEndTime(.ToMicroseconds
    }
    mPendingDrainPromise  ComPtr<>mediaTypejava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    LOG(Resolvedpendingdrainpromise)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  }
}

MediaDataDecoder:  mMediaEventQueue>(
    const {
  return MEStreamFormatChanged,S_OK .et))java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
     mStreamType= ::EVC
             ? MediaDataDecoder::ConversionRequired  AssertOnTaskQueue();
             : MediaDataDecoder::ConversionRequired::kNeedNone;
}

voidMFMediaEngineVideoStream::SetConfig(onstTrackInfo&aConfig){
  MOZ_ASSERT(aConfig.IsVideo());
    mVideoDecodeBeforeDcompPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED,
                                                  func__);
      NS_NewRunnableFunction(  // mDCompSurfaceHandle is owned by DcompSurfaceTexture, which closes it in  // its destructor. Do not call CloseHandle here.
.GetAsVideoInfo(, this]( java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
                               java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 22
                                 // Here indicating a new config for video,java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
                                 
                                 // monitor, so we need to update the config.
                                 UpdateConfig(info);
                               }
                                 // If a video only contains one frame  ' return adecoded
                             // constraint of our media pipeline, the format reader won't notify EOS until
}

void MFMediaEngineVideoStream:( &aInfo){
  AssertOnTaskQueue();
  // Disable explicit format change event for H264/HEVC to allow switching to
  // the new stream without a full re-create, which will be much faster. This is
 // also due to the fact that the MFT decoder can handle some format changes
es thatthe  
  // cannot support (e.g. codec change), the playback will fail later with
  // MF_E_INVALIDMEDIATYPE (0xC00D36B4).::sEncrypted()const{
  if (mStreamType == WMFStreamType:   m) {
      mStreamType == return mSwitchedClearToEncrypted;
    return;
  }

  LOG("Video config changed, will }
   MFMediaEngineVideoStream() {
                       nsPrintfCString("stream=%s, id=%"  ! &HasEnoughRawData &!()
                                        :GetCodecName  {
    switch(mStreamType){
  RETURN_VOID_IF_FAILED(CreateMediaType(aInfocaseWMFStreamType::
  RETURN_VOID_IF_FAILED(java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 23
iaEventQueue>(
      java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 22
}

void      java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 22
  AssertOnTaskQueueWMFStreamType:
  mPendingDrainPromise.java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 23
mVideoDecodeBeforeDcompPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED,
                                                __func__);
  // mDCompSurfaceHandle is owned by DcompSurfaceTexture, which closes it in};
  // its destructor. Do not call CloseHandle here.
}

void java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
  AssertOnTaskQueue();
java.lang.StringIndexOutOfBoundsException: Range [11, 2) out of bounds for length 57
  / We need more data to be sent in, we should resolve the promise to allow
  // more input data to be sent.
  if (!}  // namespacemozilla
    LOG("Resolved pending input promise to allow more input be sent in");
    mVideoDecodeBeforeDcompPromise.Resolve(MediaDataDecoder::DecodedData{},
                                           __func__);
  }
}

bool MFMediaEngineVideoStream::IsEnded() const {
  AssertOnTaskQueue();
  // If a video only contains one frame, the media engine won't return a decoded
  // frame before we tell it the track is already ended. However, due to the
  // constraint of our media pipeline, the format reader won't notify EOS until
  // the draining finishes, which causes a deadlock. Therefore, we would
  // consider having pending drain promise as a sign of EOS as well, in order to
  // get the decoded frame and revolve the drain promise.
  return (mReceivedEOS || !mPendingDrainPromise.IsEmpty()) &&
         mRawDataQueueForFeedingEngine.GetSize() == 0;
}

bool MFMediaEngineVideoStream::IsEncrypted() const {
  if (mHasClearLead) {
    return mSwitchedClearToEncrypted;
  }
  return mIsEncrypted || mIsEncryptedCustomInit;
}

bool MFMediaEngineVideoStream::ShouldDelayVideoDecodeBeforeDcompReady() {
  return !mFrameServerMode && HasEnoughRawData() && !IsDCompImageReady();
}

nsCString MFMediaEngineVideoStream::GetCodecName() const {
  switch (mStreamType) {
    case WMFStreamType::H264:
      return "h264"_ns;
    case WMFStreamType::VP8:
      return "vp8"_ns;
    case WMFStreamType::VP9:
      return "vp9"_ns;
    case WMFStreamType::AV1:
      return "av1"_ns;
    case WMFStreamType::HEVC:
      return "hevc"_ns;
    default:
      return "unknown"_ns;
  };
}

#undef LOG
#undef LOGV

}  // namespace mozilla

Messung V0.5 in Prozent
C=93 H=91 G=91

¤ Dauer der Verarbeitung: 0.7 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.