[g3dvl] no need for seperate intermediate buffers any more
[mesa.git] / src / gallium / auxiliary / vl / vl_mpeg12_decoder.h
index 6a6fabdb18825cf9fc9e005ffb75e3c286dc1d02..4fc19ff9524f8b52e344be964e106d9db5a36623 100644 (file)
@@ -30,6 +30,8 @@
 
 #include <pipe/p_video_context.h>
 
+#include "vl_mpeg12_bitstream.h"
+#include "vl_zscan.h"
 #include "vl_idct.h"
 #include "vl_mc.h"
 
@@ -44,19 +46,29 @@ struct vl_mpeg12_decoder
    struct pipe_video_decoder base;
    struct pipe_context *pipe;
 
-   const unsigned (*empty_block_mask)[3][2][2];
-   unsigned nr_of_idct_render_targets;
+   unsigned chroma_width, chroma_height;
 
-   enum pipe_format idct_source_format;
-   enum pipe_format idct_intermediate_format;
-   enum pipe_format mc_source_format;
+   unsigned blocks_per_line;
+   unsigned max_blocks;
+
+   enum pipe_format zscan_source_format;
 
    struct pipe_vertex_buffer quads;
    struct pipe_vertex_buffer pos;
 
-   void *ves_eb[VL_MAX_PLANES];
+   void *ves_ycbcr;
    void *ves_mv;
 
+   void *sampler_ycbcr;
+
+   struct pipe_sampler_view *zscan_linear;
+   struct pipe_sampler_view *zscan_normal;
+   struct pipe_sampler_view *zscan_alternate;
+
+   struct pipe_video_buffer *idct_source;
+   struct pipe_video_buffer *mc_source;
+
+   struct vl_zscan zscan_y, zscan_c;
    struct vl_idct idct_y, idct_c;
    struct vl_mc mc_y, mc_c;
 
@@ -69,10 +81,10 @@ struct vl_mpeg12_buffer
 
    struct vl_vertex_buffer vertex_stream;
 
-   struct pipe_video_buffer *idct_source;
-   struct pipe_video_buffer *idct_intermediate;
-   struct pipe_video_buffer *mc_source;
+   struct pipe_video_buffer *zscan_source;
 
+   struct vl_mpg12_bs bs;
+   struct vl_zscan_buffer zscan[VL_MAX_PLANES];
    struct vl_idct_buffer idct[VL_MAX_PLANES];
    struct vl_mc_buffer mc[VL_MAX_PLANES];