[g3dvl] move dummy quantification into xvmc state tracker
authorChristian König <deathsimple@vodafone.de>
Tue, 7 Jun 2011 19:13:59 +0000 (21:13 +0200)
committerChristian König <deathsimple@vodafone.de>
Tue, 7 Jun 2011 19:13:59 +0000 (21:13 +0200)
src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
src/gallium/include/pipe/p_video_context.h
src/gallium/state_trackers/xorg/xvmc/surface.c

index 238785f..eacb49e 100644 (file)
@@ -312,28 +312,16 @@ vl_mpeg12_buffer_begin_frame(struct pipe_video_decode_buffer *buffer)
 
       vl_mpg12_bs_set_buffers(&buf->bs, ycbcr_stream, buf->texels, mv_stream);
    } else {
-      static const uint8_t dummy_quant[64] = {
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
-         0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
-      };
 
-      for (i = 0; i < VL_MAX_PLANES; ++i) {
+      for (i = 0; i < VL_MAX_PLANES; ++i)
          vl_zscan_set_layout(&buf->zscan[i], dec->zscan_linear);
-         vl_zscan_upload_quant(&buf->zscan[i], dummy_quant, dummy_quant);
-      }
    }
 }
 
 static void
 vl_mpeg12_buffer_set_quant_matrix(struct pipe_video_decode_buffer *buffer,
-                                  uint8_t intra_matrix[64],
-                                  uint8_t non_intra_matrix[64])
+                                  const uint8_t intra_matrix[64],
+                                  const uint8_t non_intra_matrix[64])
 {
    struct vl_mpeg12_buffer *buf = (struct vl_mpeg12_buffer*)buffer;
    unsigned i;
index bea5067..2a30099 100644 (file)
@@ -183,8 +183,8 @@ struct pipe_video_decode_buffer
     * set the quantification matrixes
     */
    void (*set_quant_matrix)(struct pipe_video_decode_buffer *decbuf,
-                            uint8_t intra_matrix[64],
-                            uint8_t non_intra_matrix[64]);
+                            const uint8_t intra_matrix[64],
+                            const uint8_t non_intra_matrix[64]);
 
    /**
     * get the pointer where to put the ycbcr blocks of a component
index 4d6c58e..3db17d1 100644 (file)
@@ -291,6 +291,17 @@ unmap_and_flush_surface(XvMCSurfacePrivate *surface)
 PUBLIC
 Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surface)
 {
+   static const uint8_t dummy_quant[64] = {
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
+      0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
+   };
+
    XvMCContextPrivate *context_priv;
    struct pipe_video_context *vpipe;
    XvMCSurfacePrivate *surface_priv;
@@ -312,6 +323,8 @@ Status XvMCCreateSurface(Display *dpy, XvMCContext *context, XvMCSurface *surfac
       return BadAlloc;
 
    surface_priv->decode_buffer = context_priv->decoder->create_buffer(context_priv->decoder);
+   surface_priv->decode_buffer->set_quant_matrix(surface_priv->decode_buffer, dummy_quant, dummy_quant);
+
    surface_priv->mv_stride = surface_priv->decode_buffer->get_mv_stream_stride(surface_priv->decode_buffer);
    surface_priv->video_buffer = vpipe->create_buffer(vpipe, PIPE_FORMAT_NV12,
                                                      context_priv->decoder->chroma_format,