move empty block mask into mpeg12 context
authorChristian König <deathsimple@vodafone.de>
Thu, 17 Mar 2011 19:13:51 +0000 (20:13 +0100)
committerChristian König <deathsimple@vodafone.de>
Fri, 18 Mar 2011 23:06:46 +0000 (00:06 +0100)
src/gallium/auxiliary/vl/vl_mpeg12_context.c
src/gallium/auxiliary/vl/vl_mpeg12_context.h
src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.c
src/gallium/auxiliary/vl/vl_mpeg12_mc_renderer.h

index 947db1c22be977406a94c0b07b9ecbcec744a781..fb0418c5a47fadd966b0ddb5cd7a5972e79a7dc0 100644 (file)
 
 #define NUM_BUFFERS 2
 
+static const unsigned const_empty_block_mask_420[3][2][2] = {
+        { { 0x20, 0x10 },  { 0x08, 0x04 } },
+        { { 0x02, 0x02 },  { 0x02, 0x02 } },
+        { { 0x01, 0x01 },  { 0x01, 0x01 } }
+};
+
 static void
 flush_buffer(struct vl_mpeg12_context *ctx)
 {
@@ -161,7 +167,7 @@ upload_buffer(struct vl_mpeg12_context *ctx,
 
    for (y = 0; y < 2; ++y) {
       for (x = 0; x < 2; ++x, ++tb) {
-         if (mb->cbp & (*ctx->mc_renderer.empty_block_mask)[0][y][x]) {
+         if (mb->cbp & (*ctx->empty_block_mask)[0][y][x]) {
             vl_idct_add_block(&buffer->idct_y, mb->mbx * 2 + x, mb->mby * 2 + y, blocks);
             blocks += BLOCK_WIDTH * BLOCK_HEIGHT;
          }
@@ -172,7 +178,7 @@ upload_buffer(struct vl_mpeg12_context *ctx,
    assert(ctx->base.chroma_format == PIPE_VIDEO_CHROMA_FORMAT_420);
 
    for (tb = 1; tb < 3; ++tb) {
-      if (mb->cbp & (*ctx->mc_renderer.empty_block_mask)[tb][0][0]) {
+      if (mb->cbp & (*ctx->empty_block_mask)[tb][0][0]) {
          if(tb == 1)
             vl_idct_add_block(&buffer->idct_cb, mb->mbx, mb->mby, blocks);
          else
@@ -289,7 +295,7 @@ vl_mpeg12_decode_macroblocks(struct pipe_video_context *vpipe,
 
    for ( i = 0; i < num_macroblocks; ++i ) {
       vl_vb_add_block(&ctx->cur_buffer->vertex_stream, &mpeg12_macroblocks[i],
-                      ctx->mc_renderer.empty_block_mask);
+                      ctx->empty_block_mask);
       upload_buffer(ctx, ctx->cur_buffer, &mpeg12_macroblocks[i]);
    }
 
@@ -664,6 +670,10 @@ vl_create_mpeg12_context(struct pipe_context *pipe,
       return NULL;
    }
 
+   /* TODO: Implement 422, 444 */
+   assert(chroma_format == PIPE_VIDEO_CHROMA_FORMAT_420);
+   ctx->empty_block_mask = &const_empty_block_mask_420;
+
    if (!(idct_matrix = vl_idct_upload_matrix(ctx->pipe)))
       return false;
 
index 6ad734c9fda19b5bb03aa5644fce0e5b016bd8c3..6c964fbe92acb1da9dae0b6ca264da3340548bb7 100644 (file)
@@ -41,6 +41,7 @@ struct vl_mpeg12_context
    struct pipe_video_context base;
    struct pipe_context *pipe;
    struct pipe_surface *decode_target;
+   const unsigned (*empty_block_mask)[3][2][2];
 
    struct pipe_vertex_buffer quads;
    unsigned vertex_buffer_size;
index df3373ebd88344b09d5e23fd334cdb28f952251d..0e5a21c18b6a20221dc5b3c0c51cdfd776014628 100644 (file)
@@ -56,12 +56,6 @@ enum VS_OUTPUT
    VS_O_MV3
 };
 
-static const unsigned const_empty_block_mask_420[3][2][2] = {
-        { { 0x20, 0x10 },  { 0x08, 0x04 } },
-        { { 0x02, 0x02 },  { 0x02, 0x02 } },
-        { { 0x01, 0x01 },  { 0x01, 0x01 } }
-};
-
 static void *
 create_vert_shader(struct vl_mpeg12_mc_renderer *r)
 {
@@ -537,10 +531,6 @@ vl_mpeg12_mc_renderer_init(struct vl_mpeg12_mc_renderer *renderer,
    renderer->buffer_height = buffer_height;
    renderer->chroma_format = chroma_format;
 
-   /* TODO: Implement 422, 444 */
-   assert(chroma_format == PIPE_VIDEO_CHROMA_FORMAT_420);
-   renderer->empty_block_mask = &const_empty_block_mask_420;
-
    renderer->texview_map = util_new_keymap(sizeof(struct pipe_surface*), -1,
                                            texview_map_delete);
    if (!renderer->texview_map)
index 805fec530b0fa82cdaff5715f61c1c7cb09aac90..b761961b2193bab30a201bfed5de221197606ba4 100644 (file)
@@ -43,7 +43,6 @@ struct vl_mpeg12_mc_renderer
    unsigned buffer_width;
    unsigned buffer_height;
    enum pipe_video_chroma_format chroma_format;
-   const unsigned (*empty_block_mask)[3][2][2];
 
    struct pipe_viewport_state viewport;
    struct pipe_framebuffer_state fb_state;