| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -120,15 +120,19 @@ void ff_h264_direct_ref_list_init(H264Context * const h){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    cur->mbaff= FRAME_MBAFF; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(cur->pict_type != FF_B_TYPE || h->direct_spatial_mv_pred) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    h->col_fieldoff= 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(s->picture_structure == PICT_FRAME){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int cur_poc = s->current_picture_ptr->poc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        int *col_poc = h->ref_list[1]->field_poc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ref1sidx=sidx= (FFABS(col_poc[0] - cur_poc) >= FFABS(col_poc[1] - cur_poc)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        h->col_parity= (FFABS(col_poc[0] - cur_poc) >= FFABS(col_poc[1] - cur_poc)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ref1sidx=sidx= h->col_parity; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }else if(!(s->picture_structure & h->ref_list[1][0].reference) && !h->ref_list[1][0].mbaff){ // FL -> FL & differ parity | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        h->col_fieldoff= s->mb_stride*(2*(h->ref_list[1][0].reference) - 3); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(cur->pict_type != FF_B_TYPE || h->direct_spatial_mv_pred) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for(list=0; list<2; list++){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        fill_colmap(h, h->map_col_to_list0, list, sidx, ref1sidx, 0); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(FRAME_MBAFF) | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -155,14 +159,10 @@ void ff_h264_pred_direct_motion(H264Context * const h, int *mb_type){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(IS_INTERLACED(h->ref_list[1][0].mb_type[mb_xy])){ // AFL/AFR/FR/FL -> AFL/FL | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(!IS_INTERLACED(*mb_type)){                    //     AFR/FR    -> AFL/FL | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int cur_poc = s->current_picture_ptr->poc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int *col_poc = h->ref_list[1]->field_poc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int col_parity = FFABS(col_poc[0] - cur_poc) >= FFABS(col_poc[1] - cur_poc); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            mb_xy= s->mb_x + ((s->mb_y&~1) + col_parity)*s->mb_stride; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            mb_xy= s->mb_x + ((s->mb_y&~1) + h->col_parity)*s->mb_stride; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            b8_stride = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }else if(!(s->picture_structure & h->ref_list[1][0].reference) && !h->ref_list[1][0].mbaff){// FL -> FL & differ parity | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int fieldoff= 2*(h->ref_list[1][0].reference)-3; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            mb_xy += s->mb_stride*fieldoff; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }else{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            mb_xy += h->col_fieldoff; // non zero for FL -> FL & differ parity | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        goto single_col; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }else{                                               // AFL/AFR/FR/FL -> AFR/FR | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |