| 
																	
																	
																		
																	
																	
																 | 
																@@ -568,12 +568,8 @@ static void rv34_pred_mv(RV34DecContext *r, int block_type, int subblock_no, int | 
															
														
														
													
														
															
																 | 
																 | 
																 */ | 
																 | 
																 | 
																 */ | 
															
														
														
													
														
															
																 | 
																 | 
																static int calc_add_mv(RV34DecContext *r, int dir, int val) | 
																 | 
																 | 
																static int calc_add_mv(RV34DecContext *r, int dir, int val) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    int refdist = GET_PTS_DIFF(r->next_pts, r->last_pts); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    int dist = dir ? -GET_PTS_DIFF(r->next_pts, r->cur_pts) : GET_PTS_DIFF(r->cur_pts, r->last_pts); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    int mul; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int mul = dir ? -r->weight2 : r->weight1; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if(!refdist) return 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    mul = (dist << 14) / refdist; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    return (val * mul + 0x2000) >> 14; | 
																 | 
																 | 
																    return (val * mul + 0x2000) >> 14; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -1273,6 +1269,17 @@ static int rv34_decode_slice(RV34DecContext *r, int end, const uint8_t* buf, int | 
															
														
														
													
														
															
																 | 
																 | 
																        if(s->pict_type != AV_PICTURE_TYPE_B){ | 
																 | 
																 | 
																        if(s->pict_type != AV_PICTURE_TYPE_B){ | 
															
														
														
													
														
															
																 | 
																 | 
																            r->last_pts = r->next_pts; | 
																 | 
																 | 
																            r->last_pts = r->next_pts; | 
															
														
														
													
														
															
																 | 
																 | 
																            r->next_pts = r->cur_pts; | 
																 | 
																 | 
																            r->next_pts = r->cur_pts; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        }else{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int refdist = GET_PTS_DIFF(r->next_pts, r->last_pts); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int dist0   = GET_PTS_DIFF(r->cur_pts,  r->last_pts); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            int dist1   = GET_PTS_DIFF(r->next_pts, r->cur_pts); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if(!refdist){ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                r->weight1 = r->weight2 = 8192; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            }else{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                r->weight1 = (dist0 << 14) / refdist; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                r->weight2 = (dist1 << 14) / refdist; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																        s->mb_x = s->mb_y = 0; | 
																 | 
																 | 
																        s->mb_x = s->mb_y = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |