summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/vl/vl_decoder.c4
-rw-r--r--src/gallium/auxiliary/vl/vl_decoder.h2
-rw-r--r--src/gallium/auxiliary/vl/vl_mpeg12_decoder.c3
-rw-r--r--src/gallium/auxiliary/vl/vl_mpeg12_decoder.h2
-rw-r--r--src/gallium/include/pipe/p_context.h2
-rw-r--r--src/gallium/include/pipe/p_video_decoder.h1
-rw-r--r--src/gallium/state_trackers/vdpau/decode.c4
-rw-r--r--src/gallium/state_trackers/xorg/xvmc/context.c2
8 files changed, 11 insertions, 9 deletions
diff --git a/src/gallium/auxiliary/vl/vl_decoder.c b/src/gallium/auxiliary/vl/vl_decoder.c
index 41e5f75300a..383e02d910c 100644
--- a/src/gallium/auxiliary/vl/vl_decoder.c
+++ b/src/gallium/auxiliary/vl/vl_decoder.c
@@ -62,7 +62,7 @@ vl_create_decoder(struct pipe_context *pipe,
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height)
+ unsigned width, unsigned height, unsigned max_references)
{
unsigned buffer_width, buffer_height;
bool pot_buffers;
@@ -82,7 +82,7 @@ vl_create_decoder(struct pipe_context *pipe,
switch (u_reduce_video_profile(profile)) {
case PIPE_VIDEO_CODEC_MPEG12:
- return vl_create_mpeg12_decoder(pipe, profile, entrypoint, chroma_format, buffer_width, buffer_height);
+ return vl_create_mpeg12_decoder(pipe, profile, entrypoint, chroma_format, buffer_width, buffer_height, max_references);
default:
return NULL;
}
diff --git a/src/gallium/auxiliary/vl/vl_decoder.h b/src/gallium/auxiliary/vl/vl_decoder.h
index 54dc42370f7..a9975169885 100644
--- a/src/gallium/auxiliary/vl/vl_decoder.h
+++ b/src/gallium/auxiliary/vl/vl_decoder.h
@@ -51,6 +51,6 @@ vl_create_decoder(struct pipe_context *pipe,
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height);
+ unsigned width, unsigned height, unsigned max_references);
#endif /* vl_decoder_h */
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
index 9ea84dc2cc9..f3706694fa7 100644
--- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
+++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
@@ -1035,7 +1035,7 @@ vl_create_mpeg12_decoder(struct pipe_context *context,
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height)
+ unsigned width, unsigned height, unsigned max_references)
{
const unsigned block_size_pixels = BLOCK_WIDTH * BLOCK_HEIGHT;
const struct format_config *format_config;
@@ -1054,6 +1054,7 @@ vl_create_mpeg12_decoder(struct pipe_context *context,
dec->base.chroma_format = chroma_format;
dec->base.width = width;
dec->base.height = height;
+ dec->base.max_references = max_references;
dec->base.destroy = vl_mpeg12_destroy;
dec->base.create_buffer = vl_mpeg12_create_buffer;
diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h
index 5f048f096ba..817c1ffd110 100644
--- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h
+++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h
@@ -111,6 +111,6 @@ vl_create_mpeg12_decoder(struct pipe_context *pipe,
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height);
+ unsigned width, unsigned height, unsigned max_references);
#endif /* vl_mpeg12_decoder_h */
diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h
index da3ee87515f..49c12ec64fb 100644
--- a/src/gallium/include/pipe/p_context.h
+++ b/src/gallium/include/pipe/p_context.h
@@ -406,7 +406,7 @@ struct pipe_context {
enum pipe_video_profile profile,
enum pipe_video_entrypoint entrypoint,
enum pipe_video_chroma_format chroma_format,
- unsigned width, unsigned height );
+ unsigned width, unsigned height, unsigned max_references );
/**
* Creates a video buffer as decoding target
diff --git a/src/gallium/include/pipe/p_video_decoder.h b/src/gallium/include/pipe/p_video_decoder.h
index 31e411c791e..40b7dcdb3cf 100644
--- a/src/gallium/include/pipe/p_video_decoder.h
+++ b/src/gallium/include/pipe/p_video_decoder.h
@@ -52,6 +52,7 @@ struct pipe_video_decoder
enum pipe_video_chroma_format chroma_format;
unsigned width;
unsigned height;
+ unsigned max_references;
/**
* destroy this video decoder
diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c
index 2bf782ef220..35011669cf2 100644
--- a/src/gallium/state_trackers/vdpau/decode.c
+++ b/src/gallium/state_trackers/vdpau/decode.c
@@ -69,14 +69,14 @@ vlVdpDecoderCreate(VdpDevice device,
vldecoder->device = dev;
- // TODO: Define max_references. Used mainly for H264
vldecoder->decoder = pipe->create_video_decoder
(
pipe, p_profile,
PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
PIPE_VIDEO_CHROMA_FORMAT_420,
- width, height
+ width, height, max_references
);
+
if (!vldecoder->decoder) {
ret = VDP_STATUS_ERROR;
goto error_decoder;
diff --git a/src/gallium/state_trackers/xorg/xvmc/context.c b/src/gallium/state_trackers/xorg/xvmc/context.c
index 172f16cfb63..848da408c04 100644
--- a/src/gallium/state_trackers/xorg/xvmc/context.c
+++ b/src/gallium/state_trackers/xorg/xvmc/context.c
@@ -250,7 +250,7 @@ Status XvMCCreateContext(Display *dpy, XvPortID port, int surface_type_id,
ProfileToPipe(mc_type),
(mc_type & XVMC_IDCT) ? PIPE_VIDEO_ENTRYPOINT_IDCT : PIPE_VIDEO_ENTRYPOINT_MC,
FormatToPipe(chroma_format),
- width, height
+ width, height, 2
);
if (!context_priv->decoder) {