msdk: Avoid build failures on Windows until d3d allocator is implemented

https://bugzilla.gnome.org/show_bug.cgi?id=790752
This commit is contained in:
Hyunjun Ko 2018-02-13 13:54:03 -09:00 committed by Sreerenj Balachandran
parent 72c6cd5545
commit 76a82feae7
4 changed files with 102 additions and 3 deletions

View file

@ -46,6 +46,12 @@ struct _GstMsdkMemoryID {
#ifndef _WIN32 #ifndef _WIN32
VASurfaceID *surface; VASurfaceID *surface;
VAImage image; VAImage image;
#else
/* TODO: This is just to avoid compile errors on Windows.
* Implement handling Windows-specific video-memory.
*/
gint pitch;
guint offset;
#endif #endif
}; };

View file

@ -0,0 +1,80 @@
/* GStreamer Intel MSDK plugin
* Copyright (c) 2018, Intel Corporation
* Copyright (c) 2018, Igalia S.L.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGDECE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "gstmsdkallocator.h"
mfxStatus
gst_msdk_frame_alloc (mfxHDL pthis, mfxFrameAllocRequest * req,
mfxFrameAllocResponse * resp)
{
return MFX_ERR_NONE;
}
mfxStatus
gst_msdk_frame_free (mfxHDL pthis, mfxFrameAllocResponse * resp)
{
return MFX_ERR_NONE;
}
mfxStatus
gst_msdk_frame_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData * data)
{
return MFX_ERR_NONE;
}
mfxStatus
gst_msdk_frame_unlock (mfxHDL pthis, mfxMemId mid, mfxFrameData * ptr)
{
return MFX_ERR_NONE;
}
mfxStatus
gst_msdk_frame_get_hdl (mfxHDL pthis, mfxMemId mid, mfxHDL * hdl)
{
return MFX_ERR_NONE;
}
void
gst_msdk_set_frame_allocator (GstMsdkContext * context)
{
mfxFrameAllocator gst_msdk_frame_allocator = {
.pthis = context,
.Alloc = gst_msdk_frame_alloc,
.Lock = gst_msdk_frame_lock,
.Unlock = gst_msdk_frame_unlock,
.GetHDL = gst_msdk_frame_get_hdl,
.Free = gst_msdk_frame_free,
};
MFXVideoCORE_SetFrameAllocator (gst_msdk_context_get_session (context),
&gst_msdk_frame_allocator);
}

View file

@ -117,6 +117,8 @@ gst_video_meta_map_msdk_memory (GstVideoMeta * meta, guint plane,
GstMsdkVideoMemory *mem = GstMsdkVideoMemory *mem =
GST_MSDK_VIDEO_MEMORY_CAST (gst_buffer_peek_memory (meta->buffer, 0)); GST_MSDK_VIDEO_MEMORY_CAST (gst_buffer_peek_memory (meta->buffer, 0));
GstMsdkMemoryID *mem_id; GstMsdkMemoryID *mem_id;
guint offset = 0;
gint pitch = 0;
g_return_val_if_fail (mem, FALSE); g_return_val_if_fail (mem, FALSE);
@ -146,8 +148,19 @@ gst_video_meta_map_msdk_memory (GstVideoMeta * meta, guint plane,
mem->mapped++; mem->mapped++;
mem_id = mem->surface->Data.MemId; mem_id = mem->surface->Data.MemId;
*data = mem->surface->Data.Y + mem_id->image.offsets[plane]; #ifndef _WIN32
*stride = mem_id->image.pitches[plane]; offset = mem_id->image.offsets[plane];
pitch = mem_id->image.pitches[plane];
#else
/* TODO: This is just to avoid compile errors on Windows.
* Implement handling Windows-specific video-memory.
*/
offset = mem_id->offset;
pitch = mem_id->pitch;
#endif
*data = mem->surface->Data.Y + offset;
*stride = pitch;
info->flags = flags; info->flags = flags;
ret = (*data != NULL); ret = (*data != NULL);

View file

@ -21,7 +21,7 @@ msdk_sources = [
] ]
if host_machine.system() == 'windows' if host_machine.system() == 'windows'
msdk_sources += 'msdk_d3d.c' msdk_sources += ['msdk_d3d.c', 'gstmsdkallocator_d3d.c' ]
else else
msdk_sources += ['msdk_libva.c', 'gstmsdkallocator_libva.c'] msdk_sources += ['msdk_libva.c', 'gstmsdkallocator_libva.c']
endif endif