qsv: Fix mfxFrameAllocator::Lock for encoder
authorSeungha Yang <seungha@centricular.com>
Fri, 25 Mar 2022 12:13:22 +0000 (21:13 +0900)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 29 Mar 2022 15:52:58 +0000 (15:52 +0000)
Only read map is possible for encoder input system memory

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2039>

subprojects/gst-plugins-bad/sys/qsv/gstqsvallocator.cpp

index aa41702..fb32027 100644 (file)
@@ -391,7 +391,7 @@ gst_qsv_allocator_lock (mfxHDL pthis, mfxMemId mid, mfxFrameData * ptr)
 
   if (frame->map_count == 0) {
     gst_video_frame_map (&frame->frame, &frame->info, frame->buffer,
-        (GstMapFlags) GST_MAP_READWRITE);
+        frame->map_flags);
   }
 
   frame->map_count++;
@@ -653,6 +653,8 @@ gst_qsv_allocator_acquire_frame (GstQsvAllocator * allocator,
           "Unknown read/write access for video memory");
       return nullptr;
     }
+  } else if ((mem_type & GST_QSV_ENCODER_IN_MEMORY) != 0) {
+    map_flags = GST_MAP_READ;
   } else {
     map_flags = GST_MAP_READWRITE;
   }