Changeset 194787 in webkit


Ignore:
Timestamp:
Jan 8, 2016 1:42:25 PM (8 years ago)
Author:
peavo@outlook.com
Message:

[WinCairo] Support more video formats.
https://bugs.webkit.org/show_bug.cgi?id=152890

Reviewed by Alex Christensen.

Use MediaFoundation api to detect all supported video/audio formats.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::getSupportedTypes):
(WebCore::MediaPlayerPrivateMediaFoundation::supportsType):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r194781 r194787  
     12016-01-08  Per Arne Vollan  <peavo@outlook.com>
     2
     3        [WinCairo] Support more video formats.
     4        https://bugs.webkit.org/show_bug.cgi?id=152890
     5
     6        Reviewed by Alex Christensen.
     7
     8        Use MediaFoundation api to detect all supported video/audio formats.
     9
     10        * platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:
     11        (WebCore::MediaPlayerPrivateMediaFoundation::getSupportedTypes):
     12        (WebCore::MediaPlayerPrivateMediaFoundation::supportsType):
     13
    1142016-01-08  Brady Eidson  <beidson@apple.com>
    215
  • trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp

    r194535 r194787  
    4242
    4343#include <wtf/MainThread.h>
     44#include <wtf/NeverDestroyed.h>
    4445
    4546SOFT_LINK_LIBRARY(Mf);
     
    5253SOFT_LINK_OPTIONAL(Mf, MFCreateVideoRendererActivate, HRESULT, STDAPICALLTYPE, (HWND, IMFActivate**));
    5354SOFT_LINK_OPTIONAL(Mf, MFCreateSampleGrabberSinkActivate, HRESULT, STDAPICALLTYPE, (IMFMediaType*, IMFSampleGrabberSinkCallback*, IMFActivate**));
     55SOFT_LINK_OPTIONAL(Mf, MFGetSupportedMimeTypes, HRESULT, STDAPICALLTYPE, (PROPVARIANT*));
    5456
    5557SOFT_LINK_LIBRARY(Mfplat);
     
    119121}
    120122
     123static const HashSet<String>& mimeTypeCache()
     124{
     125    static NeverDestroyed<HashSet<String>> cachedTypes;
     126
     127    if (cachedTypes.get().size() > 0)
     128        return cachedTypes;
     129
     130    cachedTypes.get().add(String("video/mp4"));
     131
     132    if (!MFGetSupportedMimeTypesPtr())
     133        return cachedTypes;
     134
     135    PROPVARIANT propVarMimeTypeArray;
     136    PropVariantInit(&propVarMimeTypeArray);
     137
     138    HRESULT hr = MFGetSupportedMimeTypesPtr()(&propVarMimeTypeArray);
     139
     140    if (SUCCEEDED(hr)) {
     141        CALPWSTR mimeTypeArray = propVarMimeTypeArray.calpwstr;
     142        for (unsigned i = 0; i < mimeTypeArray.cElems; i++)
     143            cachedTypes.get().add(mimeTypeArray.pElems[i]);
     144    }
     145
     146    PropVariantClear(&propVarMimeTypeArray);
     147
     148    return cachedTypes;
     149}
     150
    121151void MediaPlayerPrivateMediaFoundation::getSupportedTypes(HashSet<String>& types)
    122152{
    123     types.add(String("video/mp4"));
     153    types = mimeTypeCache();
    124154}
    125155
     
    129159        return MediaPlayer::IsNotSupported;
    130160
    131     if (parameters.type == "video/mp4")
     161    if (mimeTypeCache().contains(parameters.type))
    132162        return MediaPlayer::IsSupported;
    133163
Note: See TracChangeset for help on using the changeset viewer.