Recherche avancée

Médias (0)

Mot : - Tags -/navigation

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (26)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (4823)

  • Has anyone used Azure vm's for gpu-accelerated video enc/decoding with FFmpeg/libav ?

    4 mai 2017, par user3776020

    I am trying to use NVIDIA hardware acceleration with FFmpeg/libav on a Microsoft Azure GPU vm (any of the new N-series). I am able to get it working with a comparable AWS vm, but am not having luck with Azure.

    I have a different question posted here detailing the specific problem I’m running into (Trouble with hardware-assisted encoding/decoding via FFmpeg on Azure GPU vm’s (ubuntu 16.04)), but have since realized that the better question to ask is if anyone has been able to achieve it, full-stop.

    If so, would you please share the details of your environment (type of vm, os version, installation commands, etc). Thanks !

  • Support building C++ files with MSVC

    13 avril 2017, par Aaron Levinson
    Support building C++ files with MSVC
    

    Made appropriate changes to be able to successfully
    build C++ files using a Visual C++ build on Windows.

    Based on an earlier patch by Kyle Schwarz.

    Comments :

    — compat/w32pthreads.h : Made appropriate changes to w32pthreads.h to
    get it to build when it is being included in a C++ file and built
    with Visual C++. This is mostly a copy of Kyle Schwarz's patch as
    described above.

    — configure :
    a) Now calling set_ccvars CXX to cause the various CXX_ variables to
    be setup properly. For example, with MSVC (Microsoft Visual C++),
    this causes CXX_O to be set to -Fo$@ instead of using the default
    value. The default value does not work with Visual C++. This
    change will also have the impact of correcting CXX_O (and possibly
    CXX_C) for other compilers, although this is really only relevant
    for the Intel compiler, in addition to MSVC.
    b) Now using cl for the C++ compiler for the MSVC toolchain. This is
    currently only relevant for building the
    Blackmagic/Decklink-related files under avdevice.

    Signed-off-by : Hendrik Leppkes <h.leppkes@gmail.com>

    • [DH] compat/w32pthreads.h
    • [DH] configure
  • NV12 textures not working in DirectX 11.1

    28 mars 2017, par André Vitor

    I’m trying to render NV12 textures from frames decoded with ffmpeg 2.8.11 using DirectX 11.1 but when I do render them the texture is broken and the color is always off.

    Result is : http://imgur.com/a/YIVQk

    Code below is how I get the frame decoded by ffmpeg that is in YUV420P format and then I convert(not sure) to NV12 format by interleaving the U and V planes.

    static uint8_t *pixelsPtr_ = nullptr;

    UINT rowPitch = ((width + 1) >> 1) * 2;
    UINT imageSize = (rowPitch * height) + ((rowPitch * height + 1) >> 1);

    if (!pixelsPtr_)
    {
       pixelsPtr_ = new uint8_t[imageSize];
    }

    int j, position = 0;

    uint32_t pitchY = avFrame.linesize[0];
    uint32_t pitchU = avFrame.linesize[1];
    uint32_t pitchV = avFrame.linesize[2];

    uint8_t *avY = avFrame.data[0];
    uint8_t *avU = avFrame.data[1];
    uint8_t *avV = avFrame.data[2];

    ::SecureZeroMemory(pixelsPtr_, imageSize);

    for (j = 0; j &lt; height; j++)
    {              
       ::CopyMemory(pixelsPtr_ + position, avY, (width));
       position += (width);
       avY += pitchY;
    }

    for (j = 0; j &lt; height >> 1; j++)
    {
       ::CopyMemory(pixelsPtr_ + position, avU, (width >> 1));
       position += (width >> 1);
       avU += pitchU;

       ::CopyMemory(pixelsPtr_ + position, avV, (width >> 1));
       position += (width >> 1);
       avV += pitchV;
    }

    This is how I’m creating the Texture2D with the data I just got.

    // Create texture
    D3D11_TEXTURE2D_DESC desc;
    desc.Width = width;
    desc.Height = height;
    desc.MipLevels = 1;
    desc.ArraySize = 1;
    desc.Format = DXGI_FORMAT_NV12;
    desc.SampleDesc.Count = 1;
    desc.SampleDesc.Quality = 0;
    desc.Usage = D3D11_USAGE_DEFAULT;
    desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
    desc.CPUAccessFlags = 0;
    desc.MiscFlags = 0;

    D3D11_SUBRESOURCE_DATA initData;
    initData.pSysMem = pixelsPtr_;
    initData.SysMemPitch = rowPitch;

    ID3D11Texture2D* tex = nullptr;
    hr = d3dDevice->CreateTexture2D(&amp;desc, &amp;initData, &amp;tex);
    if (SUCCEEDED(hr) &amp;&amp; tex != 0)
    {
       D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc;
       memset(&amp;SRVDesc, 0, sizeof(SRVDesc));
       SRVDesc.Format = DXGI_FORMAT_R8_UNORM;
       SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
       SRVDesc.Texture2D.MipLevels = 1;

       hr = d3dDevice->CreateShaderResourceView(tex, &amp;SRVDesc, &amp;textureViewYUV[0]);
       if (FAILED(hr))
       {
           tex->Release();
           return hr;
       }

       SRVDesc.Format = DXGI_FORMAT_R8G8_UNORM;

       hr = d3dDevice->CreateShaderResourceView(tex, &amp;SRVDesc, &amp;textureViewYUV[1]);
       if (FAILED(hr))
       {
           tex->Release();
           return hr;
       }

       tex->Release();
    }

    Then I pass both Shader Resource View to Pixel Shader

    graphics->Context()->PSSetShaderResources(0, 2, textureViewYUV);

    This is the pixel shader :

    struct PixelShaderInput
    {
       float4 pos         : SV_POSITION;
       float4 Color       : COLOR;
       float2 texCoord    : TEXCOORD;
    };

    static const float3x3 YUVtoRGBCoeffMatrix =
    {
       1.164383f,  1.164383f, 1.164383f,
       0.000000f, -0.391762f, 2.017232f,
       1.596027f, -0.812968f, 0.000000f
    };

    Texture2D<float>  luminanceChannel;
    Texture2D<float2> chrominanceChannel;

    SamplerState linearfilter
    {
       Filter = MIN_MAG_MIP_LINEAR;
    };

    float3 ConvertYUVtoRGB(float3 yuv)
    {
       // Derived from https://msdn.microsoft.com/en-us/library/windows/desktop/dd206750(v=vs.85).aspx
       // Section: Converting 8-bit YUV to RGB888

       // These values are calculated from (16 / 255) and (128 / 255)
       yuv -= float3(0.062745f, 0.501960f, 0.501960f);
       yuv = mul(yuv, YUVtoRGBCoeffMatrix);

       return saturate(yuv);
    }

    float4 main(PixelShaderInput input) : SV_TARGET
    {
       float y = luminanceChannel.Sample(linearfilter, input.texCoord);
       float2 uv = chrominanceChannel.Sample(linearfilter, input.texCoord);

       float3 YUV = float3(y, uv.x, uv.y);
       float4 YUV4 = float4(YUV.x, YUV.y, YUV.z, 1);

       float3 RGB = ConvertYUVtoRGB(YUV);
       float4 RGB4 = float4(RGB.x, RGB.y, RGB.z, 1);

       return RGB4;
    }
    </float2></float>

    Can someone help me ? What I’m doing wrong ?

    EDIT #1

    int skipLineArea = 0;
    int uvCount = (height >> 1) * (width >> 1);

    for (j = 0, k = 0; j &lt; uvCount; j++, k++)
    {
       if (skipLineArea == (width >> 1))
       {
           k += pitchU - (width >> 1);
           skipLineArea = 0;
       }

       pixelsPtr_[position++] = avU[k];
       pixelsPtr_[position++] = avV[k];
       skipLineArea++;
    }

    EDIT #2

    Updating the texture instead of creating new ones

    D3D11_MAPPED_SUBRESOURCE mappedResource;
    d3dContext->Map(tex, 0, D3D11_MAP_WRITE_DISCARD, 0, &amp;mappedResource);

    uint8_t* mappedData = reinterpret_cast(mappedResource.pData);

    for (UINT i = 0; i &lt; height * 1.5; ++i)
    {
       memcpy(mappedData, frameData, rowPitch);
       mappedData += mappedResource.RowPitch;
       frameData += rowPitch;
    }

    d3dContext->Unmap(tex, 0);