g3dvl: Add max_references parameter to vl_create_decoder()
authorEmeric Grange <emeric.grange@gmail.com>
Mon, 12 Sep 2011 21:39:27 +0000 (23:39 +0200)
committerChristian König <deathsimple@vodafone.de>
Wed, 14 Sep 2011 13:49:15 +0000 (15:49 +0200)
Signed-off-by: Emeric Grange <emeric.grange@gmail.com>
src/gallium/auxiliary/vl/vl_decoder.c
src/gallium/auxiliary/vl/vl_decoder.h
src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
src/gallium/auxiliary/vl/vl_mpeg12_decoder.h
src/gallium/include/pipe/p_context.h
src/gallium/include/pipe/p_video_decoder.h
src/gallium/state_trackers/vdpau/decode.c
src/gallium/state_trackers/xorg/xvmc/context.c

index 41e5f75300af4af88a01d453230e590e70faceda..383e02d910c40d8f878564ab3e4073ce434b4b76 100644 (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;
    }
index 54dc42370f76fbb540e6e3a598fce4ecfd7cba1a..a9975169885e2853309709808cff479f5ebe5f0d 100644 (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 */
index 9ea84dc2cc9da83ec05818d17f354ce93572dcab..f3706694fa7b2a969dbd2d769e7e9fddf1b195d3 100644 (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;
index 5f048f096bad72712964a9c0a83409c46b2f46f1..817c1ffd110d3b45cf3a4b87ba9899ffceece3b8 100644 (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 */
index da3ee87515f7ab288aa84873636933aed575431b..49c12ec64fb0656a6ea5d5f45bec4d44f8f45f43 100644 (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
index 31e411c791ed7aebfff7442de90ac387053e142b..40b7dcdb3cf4d87882e38eafc82c0d3457f02b33 100644 (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
index 2bf782ef2207c10bbf578803b36f04404005f5f6..35011669cf221469249572d25e7ab5280f76b62a 100644 (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;
index 172f16cfb6375d639cb70f3711b251a72a337e93..848da408c049d2c2acffaba3a2e66031b24e9be0 100644 (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) {