VEBOX: track the frame sequence
authorXiang, Haihao <haihao.xiang@intel.com>
Thu, 13 Jun 2013 12:31:11 +0000 (20:31 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 21 Jun 2013 04:19:18 +0000 (12:19 +0800)
Preparation work for advanced DI

Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
src/gen75_vpp_vebox.c
src/gen75_vpp_vebox.h

index 7cb568a..13ce2c1 100644 (file)
@@ -524,7 +524,7 @@ void hsw_veb_state_command(VADriverContextP ctx, struct intel_vebox_context *pro
     unsigned int is_dn_enabled   = (proc_ctx->filters_mask & 0x01)? 1: 0;
     unsigned int is_di_enabled   = (proc_ctx->filters_mask & 0x02)? 1: 0;
     unsigned int is_iecp_enabled = (proc_ctx->filters_mask & 0xff00)?1:0;
-    unsigned int is_first_frame  = !!(proc_ctx->is_first_frame &&
+    unsigned int is_first_frame  = !!((proc_ctx->frame_order == -1) &&
                                       (is_di_enabled ||
                                        is_dn_enabled));
     
@@ -1102,7 +1102,7 @@ VAStatus gen75_vebox_process_picture(VADriverContextP ctx,
     hsw_veb_pre_format_convert(ctx, proc_ctx);
     hsw_veb_surface_reference(ctx, proc_ctx);
 
-    if(proc_ctx->is_first_frame){
+    if (proc_ctx->frame_order == -1) {
         hsw_veb_resource_prepare(ctx, proc_ctx);
     }
 
@@ -1121,8 +1121,7 @@ VAStatus gen75_vebox_process_picture(VADriverContextP ctx,
     hsw_veb_surface_unreference(ctx, proc_ctx);
 
  
-    if(proc_ctx->is_first_frame)
-       proc_ctx->is_first_frame = 0; 
+    proc_ctx->frame_order = (proc_ctx->frame_order + 1) % 2;
      
     return VA_STATUS_SUCCESS;
 
@@ -1203,7 +1202,7 @@ struct intel_vebox_context * gen75_vebox_context_init(VADriverContextP ctx)
     }
   
     proc_context->filters_mask          = 0;
-    proc_context->is_first_frame        = 1;
+    proc_context->frame_order           = -1; /* the first frame */
     proc_context->surface_output_object = NULL;
     proc_context->surface_input_object  = NULL;
     proc_context->surface_input_vebox   = VA_INVALID_ID;
index 668f4c8..e7c252a 100644 (file)
@@ -126,7 +126,7 @@ struct intel_vebox_context
     VEBBuffer vertex_state_table;
 
     unsigned int  filters_mask;
-    unsigned char is_first_frame;
+    int frame_order;
 
     VAProcPipelineParameterBuffer * pipeline_param;
     void * filter_dn;