g3dvl: Add max_references parameter to vl_create_decoder()

Signed-off-by: Emeric Grange <emeric.grange@gmail.com>
This commit is contained in:
Emeric Grange 2011-09-12 23:39:27 +02:00 committed by Christian König
parent 42fddacaba
commit 82e8bf36d8
8 changed files with 11 additions and 9 deletions

View File

@ -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;
}

View File

@ -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 */

View File

@ -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;

View File

@ -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 */

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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) {