mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 03:31:05 +00:00
va: basedec: Use va_get_surface_usage_hint() to get the usage hint
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5210>
This commit is contained in:
parent
bb350138af
commit
8399bc2521
2 changed files with 17 additions and 6 deletions
|
@ -44,6 +44,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gst/va/gstva.h>
|
#include <gst/va/gstva.h>
|
||||||
|
#include <gst/va/vasurfaceimage.h>
|
||||||
|
|
||||||
#include "gstvaav1dec.h"
|
#include "gstvaav1dec.h"
|
||||||
#include "gstvabasedec.h"
|
#include "gstvabasedec.h"
|
||||||
|
@ -255,6 +256,7 @@ _create_internal_pool (GstVaAV1Dec * self, gint width, gint height)
|
||||||
GstAllocator *allocator;
|
GstAllocator *allocator;
|
||||||
GstCaps *caps = NULL;
|
GstCaps *caps = NULL;
|
||||||
GstBufferPool *pool;
|
GstBufferPool *pool;
|
||||||
|
guint usage_hint;
|
||||||
GstAllocationParams params = { 0, };
|
GstAllocationParams params = { 0, };
|
||||||
|
|
||||||
gst_allocation_params_init (¶ms);
|
gst_allocation_params_init (¶ms);
|
||||||
|
@ -288,9 +290,11 @@ _create_internal_pool (GstVaAV1Dec * self, gint width, gint height)
|
||||||
surface_formats = gst_va_decoder_get_surface_formats (base->decoder);
|
surface_formats = gst_va_decoder_get_surface_formats (base->decoder);
|
||||||
allocator = gst_va_allocator_new (base->display, surface_formats);
|
allocator = gst_va_allocator_new (base->display, surface_formats);
|
||||||
|
|
||||||
|
usage_hint = va_get_surface_usage_hint (base->display,
|
||||||
|
VAEntrypointVLD, GST_PAD_SRC, FALSE);
|
||||||
|
|
||||||
pool = gst_va_pool_new_with_config (caps, GST_VIDEO_INFO_SIZE (&info),
|
pool = gst_va_pool_new_with_config (caps, GST_VIDEO_INFO_SIZE (&info),
|
||||||
1, 0, VA_SURFACE_ATTRIB_USAGE_HINT_DECODER, GST_VA_FEATURE_AUTO,
|
1, 0, usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||||
allocator, ¶ms);
|
|
||||||
|
|
||||||
gst_clear_caps (&caps);
|
gst_clear_caps (&caps);
|
||||||
gst_object_unref (allocator);
|
gst_object_unref (allocator);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <gst/va/gstva.h>
|
#include <gst/va/gstva.h>
|
||||||
#include <gst/va/gstvavideoformat.h>
|
#include <gst/va/gstvavideoformat.h>
|
||||||
|
#include <gst/va/vasurfaceimage.h>
|
||||||
|
|
||||||
#include "gstvacaps.h"
|
#include "gstvacaps.h"
|
||||||
#include "gstvapluginutils.h"
|
#include "gstvapluginutils.h"
|
||||||
|
@ -283,7 +284,7 @@ _decide_allocation_for_video_crop (GstVideoDecoder * decoder,
|
||||||
GstAllocationParams other_params, params;
|
GstAllocationParams other_params, params;
|
||||||
gboolean update_pool = FALSE, update_allocator = FALSE;
|
gboolean update_pool = FALSE, update_allocator = FALSE;
|
||||||
GstBufferPool *pool = NULL, *other_pool = NULL;
|
GstBufferPool *pool = NULL, *other_pool = NULL;
|
||||||
guint size = 0, min, max;
|
guint size = 0, min, max, usage_hint;
|
||||||
GstVaBaseDec *base = GST_VA_BASE_DEC (decoder);
|
GstVaBaseDec *base = GST_VA_BASE_DEC (decoder);
|
||||||
gboolean ret = TRUE;
|
gboolean ret = TRUE;
|
||||||
gboolean dont_use_other_pool = FALSE;
|
gboolean dont_use_other_pool = FALSE;
|
||||||
|
@ -405,8 +406,11 @@ _decide_allocation_for_video_crop (GstVideoDecoder * decoder,
|
||||||
if (_need_video_crop (base))
|
if (_need_video_crop (base))
|
||||||
gst_buffer_pool_config_set_va_alignment (config, &base->valign);
|
gst_buffer_pool_config_set_va_alignment (config, &base->valign);
|
||||||
|
|
||||||
|
usage_hint = va_get_surface_usage_hint (base->display,
|
||||||
|
VAEntrypointVLD, GST_PAD_SRC, gst_video_is_dma_drm_caps (caps));
|
||||||
|
|
||||||
gst_buffer_pool_config_set_va_allocation_params (config,
|
gst_buffer_pool_config_set_va_allocation_params (config,
|
||||||
VA_SURFACE_ATTRIB_USAGE_HINT_DECODER, GST_VA_FEATURE_AUTO);
|
usage_hint, GST_VA_FEATURE_AUTO);
|
||||||
|
|
||||||
if (!gst_buffer_pool_set_config (pool, config)) {
|
if (!gst_buffer_pool_set_config (pool, config)) {
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
|
@ -491,7 +495,7 @@ gst_va_base_dec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
|
||||||
GstCaps *caps = NULL;
|
GstCaps *caps = NULL;
|
||||||
GstVideoInfo info;
|
GstVideoInfo info;
|
||||||
GstVaBaseDec *base = GST_VA_BASE_DEC (decoder);
|
GstVaBaseDec *base = GST_VA_BASE_DEC (decoder);
|
||||||
guint size = 0, min, max;
|
guint size = 0, min, max, usage_hint;
|
||||||
gboolean update_pool = FALSE, update_allocator = FALSE;
|
gboolean update_pool = FALSE, update_allocator = FALSE;
|
||||||
gboolean has_videometa, has_video_crop_meta;
|
gboolean has_videometa, has_video_crop_meta;
|
||||||
gboolean dont_use_other_pool = FALSE;
|
gboolean dont_use_other_pool = FALSE;
|
||||||
|
@ -593,8 +597,11 @@ gst_va_base_dec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
|
||||||
if (base->need_valign)
|
if (base->need_valign)
|
||||||
gst_buffer_pool_config_set_va_alignment (config, &base->valign);
|
gst_buffer_pool_config_set_va_alignment (config, &base->valign);
|
||||||
|
|
||||||
|
usage_hint = va_get_surface_usage_hint (base->display,
|
||||||
|
VAEntrypointVLD, GST_PAD_SRC, gst_video_is_dma_drm_caps (caps));
|
||||||
|
|
||||||
gst_buffer_pool_config_set_va_allocation_params (config,
|
gst_buffer_pool_config_set_va_allocation_params (config,
|
||||||
VA_SURFACE_ATTRIB_USAGE_HINT_DECODER, GST_VA_FEATURE_AUTO);
|
usage_hint, GST_VA_FEATURE_AUTO);
|
||||||
|
|
||||||
if (!gst_buffer_pool_set_config (pool, config)) {
|
if (!gst_buffer_pool_set_config (pool, config)) {
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
|
|
Loading…
Reference in a new issue